
Cloudsplaining é uma ferramenta de Avaliação de Segurança AWS IAM que identifica violações do princípio do menor privilégio e gera um relatório priorizado por risco.
Cloudsplaining é uma ferramenta de avaliação de segurança do AWS IAM que identifica violações do princípio do menor privilégio e gera um relatório HTML priorizado por risco.
Para documentação completa, consulte o projeto no ReadTheDocs.
O Cloudsplaining identifica violações do princípio do menor privilégio em políticas IAM da AWS e gera um relatório HTML elegante. Ele pode verificar todas as políticas em sua conta AWS, em várias contas AWS ou pode verificar um único arquivo de política.
Ele ajuda a identificar ações IAM que não aproveitam restrições de recursos. Também auxilia na priorização do processo de remediação, sinalizando políticas IAM que apresentam os seguintes riscos à conta AWS em questão, sem restrição:
s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)O Cloudsplaining também identifica Roles IAM que podem ser assumidas por Serviços de Computação da AWS (como EC2, ECS, EKS ou Lambda), pois podem apresentar maior risco do que roles definidas por usuários – especialmente se o serviço de computação AWS estiver em uma instância que está direta ou indiretamente exposta à internet. Sinalizar essas roles é particularmente útil para testadores de penetração (ou invasores) em determinados cenários. Por exemplo, se um invasor obtiver privilégios para executar ssm:SendCommand e houver instâncias EC2 privilegiadas com o agente SSM instalado, ele poderá efetivamente ter os privilégios dessas instâncias EC2. A Execução Remota de Códigos por meio do AWS Systems Manager Agent já era um caminho conhecido de escalada/exploração, mas o Cloudsplaining pode facilitar o processo de identificação desses casos. Veja o relatório de exemplo para alguns exemplos.
Você também pode especificar um arquivo de exclusão personalizado para filtrar resultados que são Falsos Positivos por diversos motivos. Por exemplo, Políticas de Usuário são permissivas por design, enquanto roles de Sistema são geralmente mais restritivas. Você também pode ter exclusões específicas para a estratégia de múltiplas contas ou arquitetura de aplicações AWS da sua organização.
O Policy Sentry revelou que é possível, finalmente, escrever políticas IAM de acordo com o princípio do menor privilégio de forma escalável. Antes do lançamento do Policy Sentry, era muito fácil encontrar documentos de política IAM sem restrições de recursos. Considere a política abaixo, que permite ao principal IAM (um role ou usuário) executar s3:PutObject em qualquer bucket S3 na conta AWS:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*"
}
]
}
Isso é ruim. Idealmente, o acesso deve ser restrito de acordo com ARNs de recursos, assim:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Policy Sentry torna isso realmente fácil. Uma vez que os desenvolvedores de Infrastructure as Code ou Administradores AWS ganhem familiaridade com a ferramenta (que é bastante fácil de usar), descobrimos que a adoção começa muito rapidamente. No entanto, se você tem usado AWS, provavelmente há um grande backlog de políticas IAM que poderiam ser melhoradas. Se você tem centenas de contas AWS com dezenas de políticas em cada uma, como podemos restringir essas contas AWS identificando programaticamente as políticas que devem ser corrigidas?
Foi por isso que escrevemos o Cloudsplaining.
Cloudsplaining identifica violações do princípio do menor privilégio em políticas IAM da AWS e gera um relatório HTML bonito. Ele pode escanear todas as políticas na sua conta AWS, em várias contas AWS, ou pode escanear um único arquivo de política.
brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining
#### Pip3```bash
pip3 install --user cloudsplaining
cloudsplaining a partir da linha de comando executando cloudsplaining --help.Para habilitar o completamento do Bash, coloque isto em seu .bashrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"
Para habilitar o autocompletar ZSH, coloque isto no seu .zshrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
Você também pode analisar um único arquivo de política para identificar riscos em vez de uma conta inteira.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json
A saída incluirá uma descrição do achado e uma lista das ações do IAM que não utilizam restrições de recursos.
A saída será semelhante ao seguinte:```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