Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
repokid — AWS Menor Privilégio para Implantação Distribuída e de Alta Velocidade | Kitploit
Ferramentas/GitHubGitHub/netflix/repokid
Segurança de Infraestrutura em NuvemAnálise de VulnerabilidadesAuditoria de ConfiguraçãoSegurança na NuvemDevSecOpsGerenciamento de Identidade e Acesso (IAM)
GitHubnetflix/repokid

repokid

AWS Menor Privilégio para Implantação Distribuída e de Alta Velocidade

Ver Repositório
1.1k10515há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Repokid

NetflixOSS Lifecycle Build Status PyPI version Coverage Status Discord chat

Repokid Logo

O Repokid usa o Access Advisor fornecido pelo Aardvark para remover permissões que concedem acesso a serviços não utilizados das políticas inline de funções IAM em uma conta AWS.

Primeiros Passos

Instalação

mkvirtualenv repokid
git clone [email protected]:Netflix/repokid.git
cd repokid
pip install -e .
repokid config config.json

DynamoDB

Você precisará de uma tabela DynamoDB chamada repokid_roles (especifique conta e endpoint em dynamo_db no arquivo de configuração).

A tabela deve ter as seguintes propriedades:

  • RoleId (string) como chave de partição primária, sem chave de ordenação primária
  • Um índice secundário global chamado Account com uma chave de partição primária Account e RoleId e Account como atributos projetados
  • Um índice secundário global chamado RoleName com uma chave de partição primária RoleName e RoleId e RoleName como atributos projetados

Para desenvolvimento, você pode executar o dynamo localmente.

Para executar localmente:

docker-compose up

O endpoint para o DynamoDB será http://localhost:8000. Um painel de administração do DynamoDB pode ser encontrado em http://localhost:8001.

Se você executar a versão de desenvolvimento, a tabela e o índice serão criados automaticamente para você.

Permissões IAM

O Repokid precisa de uma função IAM em cada conta que será consultada. Além disso, o Repokid precisa ser iniciado com uma função ou usuário que possa chamar sts:AssumeRole nas funções das diferentes contas.

RepokidInstanceProfile:

  • Crie apenas uma.
  • Precisa da capacidade de chamar sts:AssumeRole em todas as RepokidRoles.
  • Permissões do DynamoDB para a tabela repokid_roles e todos os índices (especificados na subseção assume_role de dynamo_db no config) e a capacidade de executar dynamodb:ListTables

RepokidRole:

  • Deve existir em cada conta a ser gerenciada pelo repokid.
  • Deve ter uma política de confiança permitindo RepokidInstanceProfile.
  • O nome deve ser especificado em connection_iam no arquivo de configuração.
  • Tem estas permissões:
{
 "Version": "2012-10-17",
 "Statement": [
   {
     "Action": [
       "iam:DeleteInstanceProfile",
       "iam:DeleteRole",
       "iam:DeleteRolePolicy",
       "iam:GetAccountAuthorizationDetails",
       "iam:GetInstanceProfile",
       "iam:GetRole",
       "iam:GetRolePolicy",
       "iam:ListInstanceProfiles",
       "iam:ListInstanceProfilesForRole",
       "iam:ListRolePolicies",
       "iam:PutRolePolicy",
       "iam:UpdateRoleDescription"
     ],
     "Effect": "Allow",
     "Resource": "*"
   }
 ]
}

Portanto, se você está monitorando n contas, sempre precisará de n+1 funções. (n RepokidRoles e 1 RepokidInstanceProfile).

Editando config.json

Executar repokid config config.json cria um arquivo que você precisará editar. Encontre e atualize estes campos:

  • dynamodb: Se estiver usando dynamo localmente, defina o endpoint como http://localhost:8010. Se estiver usando dynamo hospedado na AWS, defina region, assume_role e account_number.
  • aardvark_api_location: A localização da sua API REST Aardvark. Algo como https://aardvark.yourcompany.net/api/1/advisors
  • connection_iam: Defina assume_role como RepokidRole, ou como você a chamou.

Configuração Opcional

O Repokid usa filtros para decidir quais funções são candidatas a serem reduzidas. Os filtros podem ser configurados para se adequar ao seu ambiente, conforme descrito abaixo.

Filtro de Lista de Bloqueio (Blocklist Filter)

Funções podem ser excluídas adicionando-as ao filtro Blocklist. Uma razão comum para excluir uma função é se a carga de trabalho correspondente realiza ações ocasionais que podem não ter sido observadas, mas são conhecidas como necessárias. Há duas maneiras de excluir uma função:

  • Excluir nome da função para todas as contas: adicione-a a uma lista no config filter_config.BlocklistFilter.all
  • Excluir nome da função para uma conta específica: adicione-a a uma lista no config filter_config.BlocklistFilter.<NUMERO_DA_CONTA>

As listas de bloqueio também podem ser mantidas em um arquivo S3 blocklist. Elas devem estar no seguinte formato:

{
  "arns": ["arn1", "arn2"],
  "names": {"role_name_1": ["all", "account_number_1"], "role_name_2": ["account_number_2", "account_number_3"]}
}

Filtro Exclusivo (Exclusive Filter)

Se você preferir reduzir apenas determinadas funções, pode usar o Filtro Exclusivo. Talvez você queira considerar apenas funções usadas em produção ou por certas equipes. Para selecionar funções para redução, você pode listar seus nomes nos arquivos de configuração. Padrões glob no estilo Shell também são suportados. A seleção de funções pode ser especificada por conta individual ou globalmente. Para ativar este filtro, coloque "repokid.filters.exclusive:ExclusiveFilter" na seção active_filters do arquivo de configuração. Para configurá-lo, você pode começar com o arquivo de configuração gerado automaticamente, que possui um exemplo de configuração na seção "filter_config":

"ExclusiveFilter": {
                   "all": [
                     "<PADRAO_GLOB>"
                     ],
                   "<NUMERO_DA_CONTA>": [
                     "<PADRAO_GLOB>"
                    ]
                   }

Filtro de Idade (Age Filter)

Por padrão, o filtro de idade exclui funções com menos de 90 dias. Para alterar isso, edite a configuração: filter_config.AgeFilter.minimum_age.

Filtros Ativos

Novos filtros podem ser criados para apoiar a lógica interna. Na Netflix, temos vários que são específicos para nossos casos de uso. Para ativá-los, certifique-se de que estejam no caminho Python e adicione-os no config à lista na seção active_filters.

Estendendo o Repokid

Hooks

O Repokid é extensível através de hooks que são chamados antes, durante e depois de várias operações, conforme listado abaixo.

Nome do HookContexto
AFTER_REPOrole, errors
AFTER_REPO_ROLESroles, errors
BEFORE_REPO_ROLESaccount_number, roles
AFTER_SCHEDULE_REPOroles
DURING_REPOABLE_CALCULATIONrole_id, arn, account_number, role_name, potentially_repoable_permissions, minimum_age
DURING_REPOABLE_CALCULATION_BATCHrole_batch, potentially_repoable_permissions, minimum_age

Os hooks devem aderir à seguinte interface:

from repokid.hooks import implements_hook
from repokid.types import RepokidHookInput, RepokidHookOutput

@implements_hook("TARGET_HOOK_NAME", 1)
def custom_hook(input_dict: RepokidHookInput) -> RepokidHookOutput:
    """As funções de hook são chamadas com um dicionário contendo as chaves listadas acima com base no hook alvo.
    Quaisquer mutações feitas na entrada e retornadas na saída serão passadas para funções de hook subsequentes.
    """
    ...
Baixar ferramenta