Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
repokid — Privilegio minimo AWS per distribuzione distribuita e ad alta velocità | Kitploit
Strumenti/GitHubGitHub/netflix/repokid
Sicurezza dell'Infrastruttura CloudAnalisi delle VulnerabilitàAudit di ConfigurazioneSicurezza CloudDevSecOpsGestione Identità e Accessi (IAM)
GitHubnetflix/repokid

repokid

Privilegio minimo AWS per distribuzione distribuita e ad alta velocità

Vedi Repository
1.1k105155 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Repokid

NetflixOSS Lifecycle Build Status PyPI version Coverage Status Discord chat

Repokid Logo

Repokid utilizza Access Advisor fornito da Aardvark per rimuovere dalle policy inline dei ruoli IAM in un account AWS i permessi che concedono accesso a servizi non utilizzati.

Per Iniziare

Installazione

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

DynamoDB

Avrai bisogno di una tabella DynamoDB chiamata repokid_roles (specifica l'account e l'endpoint in dynamo_db nel file di configurazione).

La tabella deve avere le seguenti proprietà:

  • RoleId (stringa) come chiave primaria di partizione, nessuna chiave primaria di ordinamento
  • Un indice secondario globale chiamato Account con una chiave primaria di partizione Account e RoleId e Account come attributi proiettati
  • Un indice secondario globale chiamato RoleName con una chiave primaria di partizione RoleName e RoleId e RoleName come attributi proiettati

Per lo sviluppo, puoi eseguire Dynamo in locale.

Per eseguire in locale:

docker-compose up

L'endpoint per DynamoDB sarà http://localhost:8000. Un pannello di amministrazione di DynamoDB si trova a http://localhost:8001.

Se esegui la versione di sviluppo, la tabella e l'indice verranno creati automaticamente per te.

Permessi IAM

Repokid necessita di un ruolo IAM in ogni account che verrà interrogato. Inoltre, Repokid deve essere avviato con un ruolo o un utente che possa eseguire sts:AssumeRole nei diversi ruoli dell'account.

RepokidInstanceProfile:

  • Creane solo uno.
  • Deve avere la capacità di chiamare sts:AssumeRole in tutti i RepokidRole.
  • Permessi DynamoDB per la tabella repokid_roles e tutti gli indici (specificati nella sottosezione assume_role di dynamo_db nella configurazione) e la capacità di eseguire dynamodb:ListTables

RepokidRole:

  • Deve esistere in ogni account da gestire con repokid.
  • Deve avere una politica di trust che permetta RepokidInstanceProfile.
  • Il nome deve essere specificato in connection_iam nel file di configurazione.
  • Ha questi permessi:
{
 "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": "*"
   }
 ]
}

Quindi, se stai monitorando n account, avrai sempre bisogno di n+1 ruoli. (n RepokidRole e 1 RepokidInstanceProfile).

Modifica di config.json

Eseguendo repokid config config.json viene creato un file che dovrai modificare. Trova e aggiorna questi campi:

  • dynamodb: Se usi Dynamo in locale, imposta l'endpoint su http://localhost:8010. Se usi Dynamo ospitato su AWS, imposta region, assume_role e account_number.
  • aardvark_api_location: La posizione della tua API REST Aardvark. Qualcosa come https://aardvark.yourcompany.net/api/1/advisors
  • connection_iam: Imposta assume_role su RepokidRole, o come l'hai chiamato.

Configurazione Opzionale

Repokid utilizza filtri per decidere quali ruoli sono candidati per essere ripuliti. I filtri possono essere configurati per adattarsi al tuo ambiente come descritto di seguito.

Filtro Blocca elenco (Blocklist Filter)

I ruoli possono essere esclusi aggiungendoli al filtro Blocklist. Un motivo comune per escludere un ruolo è se il carico di lavoro corrispondente esegue azioni occasionali che potrebbero non essere state osservate ma sono note come necessarie. Ci sono due modi per escludere un ruolo:

  • Escludere il nome del ruolo per tutti gli account: aggiungilo a un elenco nella configurazione filter_config.BlocklistFilter.all
  • Escludere il nome del ruolo per un account specifico: aggiungilo a un elenco nella configurazione filter_config.BlocklistFilter.<ACCOUNT_NUMBER>

I blocca elenco possono anche essere mantenuti in un file S3 blocklist. Devono essere nella forma seguente:

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

Filtro Esclusivo (Exclusive Filter)

Se preferisci ripulire solo determinati ruoli, puoi usare il Filtro Esclusivo. Forse vuoi considerare solo i ruoli utilizzati in produzione o da certi team. Per selezionare i ruoli da ripulire, puoi elencare i loro nomi nei file di configurazione. Sono supportati anche i pattern glob in stile shell. La selezione dei ruoli può essere specificata per singolo account o globalmente. Per attivare questo filtro inserisci "repokid.filters.exclusive:ExclusiveFilter" nella sezione active_filters del file di configurazione. Per configurarlo, puoi iniziare con il file di configurazione generato automaticamente, che ha un esempio di configurazione nella sezione "filter_config":

"ExclusiveFilter": {
                   "all": [
                     "<GLOB_PATTERN>"
                     ],
                   "<ACCOUNT_NUMBER>": [
                     "<GLOB_PATTERN>"
                    ]
                   }

Filtro Età (Age Filter)

Per impostazione predefinita, il filtro età esclude i ruoli più giovani di 90 giorni. Per modificarlo, modifica l'impostazione di configurazione: filter_config.AgeFilter.minimum_age.

Filtri Attivi (Active Filters)

È possibile creare nuovi filtri per supportare logiche interne. Da Netflix ne abbiamo diversi specifici per i nostri casi d'uso. Per renderli attivi, assicurati che siano nel percorso Python e aggiungili nella configurazione all'elenco nella sezione active_filters.

Estendere Repokid

Hook

Repokid è estendibile tramite hook che vengono chiamati prima, durante e dopo varie operazioni come elencato di seguito.

Nome HookContesto
AFTER_REPOruolo, errori
AFTER_REPO_ROLESruoli, errori
BEFORE_REPO_ROLESnumero_account, ruoli
AFTER_SCHEDULE_REPOruoli
DURING_REPOABLE_CALCULATIONrole_id, arn, account_number, role_name, permessi_potenzialmente_ripulibili, eta_minima
DURING_REPOABLE_CALCULATION_BATCHlotto_ruoli, permessi_potenzialmente_ripulibili, eta_minima

Gli hook devono aderire alla seguente interfaccia:

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:
    """Le funzioni hook vengono chiamate con un dict contenente le chiavi elencate sopra in base all'hook di destinazione.
    Qualsiasi modifica apportata all'input e restituita nell'output verrà passata alle successive funzioni hook.
    """
    ...
Scarica lo strumento