Cloudsplaining è uno strumento di valutazione della sicurezza AWS IAM che identifica le violazioni del principio del minimo privilegio e genera un report prioritizzato per il rischio.
Cloudsplaining è uno strumento di valutazione della sicurezza IAM AWS che identifica violazioni del principio del minimo privilegio e genera un report HTML con priorità di rischio.
Per la documentazione completa, visita il progetto su ReadTheDocs.
Cloudsplaining identifica le violazioni del principio del minimo privilegio nelle policy IAM AWS e genera un report HTML di bell'aspetto. Può scansionare tutte le policy nel tuo account AWS, su più account AWS, o può scansionare un singolo file di policy.
Aiuta a identificare le azioni IAM che non sfruttano i vincoli delle risorse. Aiuta inoltre a dare priorità al processo di remediation segnalando le policy IAM che presentano i seguenti rischi per l'account AWS in questione senza restrizioni:
s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)Cloudsplaining identifica anche i Ruoli IAM che possono essere assunti da Servizi di Calcolo AWS (come EC2, ECS, EKS o Lambda), poiché possono presentare un rischio maggiore rispetto ai ruoli definiti dall'utente - specialmente se il servizio di calcolo AWS si trova su un'istanza direttamente o indirettamente esposta a internet. Segnalare questi ruoli è particolarmente utile per penetration tester (o aggressori) in determinati scenari. Ad esempio, se un aggressore ottiene i privilegi per eseguire ssm:SendCommand e ci sono istanze EC2 privilegiate con l'agente SSM installato, può effettivamente avere i privilegi di quelle istanze EC2. L'esecuzione remota di codice tramite AWS Systems Manager Agent era già un percorso noto di escalation/sfruttamento, ma Cloudsplaining può rendere più facile il processo di identificazione di questi casi. Vedi il report di esempio per alcuni esempi.
Puoi anche specificare un file di esclusioni personalizzato per filtrare i risultati che sono falsi positivi per vari motivi. Ad esempio, le Policy Utente sono permissive per progettazione, mentre i ruoli di Sistema sono generalmente più restrittivi. Potresti anche avere esclusioni specifiche per la strategia multi-account della tua organizzazione o per l'architettura delle applicazioni AWS.
Policy Sentry ci ha rivelato che è possibile finalmente scrivere policy IAM secondo il principio del minimo privilegio in modo scalabile. Prima del rilascio di Policy Sentry, era fin troppo facile trovare documenti di policy IAM privi di vincoli sulle risorse. Considera la policy seguente, che consente al principale IAM (un ruolo o un utente) di eseguire s3:PutObject su qualsiasi bucket S3 nell'account AWS:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*"
}
]
}
Questo è male. Idealmente, l'accesso dovrebbe essere limitato in base agli ARN delle risorse, come segue:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Policy Sentry rende tutto molto semplice. Una volta che gli sviluppatori di Infrastructure as Code o gli amministratori AWS acquisiscono familiarità con lo strumento (che è abbastanza facile da usare), abbiamo scoperto che l'adozione inizia molto rapidamente. Tuttavia, se hai utilizzato AWS, probabilmente c'è un arretrato molto grande di policy IAM che potrebbero beneficiare di un miglioramento. Se hai centinaia di account AWS con dozzine di policy ciascuno, come possiamo blindare quegli account AWS identificando programmaticamente le policy che dovrebbero essere corrette?
Ecco perché abbiamo scritto Cloudsplaining.
Cloudsplaining identifica le violazioni del principio del minimo privilegio nelle policy IAM AWS e genera un bel report HTML. Può scansionare tutte le policy nel tuo account AWS, su più account AWS, oppure scansionare un singolo file di policy.
brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining
#### Pip3```bash
pip3 install --user cloudsplaining
cloudsplaining dalla riga di comando lanciando cloudsplaining --help.Per abilitare il completamento Bash, inserisci questo nel tuo .bashrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"
Per abilitare il completamento di ZSH, metti questo nel tuo .zshrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
Puoi anche scansionare un singolo file policy per identificare i rischi invece di un intero account.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json
L'output includerà una descrizione del finding e un elenco delle azioni IAM che non sfruttano vincoli di risorsa.
L'output sarà simile al seguente:```console
Issue found: Data Exfiltration
Actions: s3:GetObject
Issue found: Resource Exposure
Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention, s3:DeleteAccessPointPolicy, s3:DeleteBucketPolicy, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccessPointPolicy, s3:PutAccountPublicAccessBlock, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutObjectAcl, s3:PutObjectVersionAcl