Cloudsplaining es una herramienta de evaluación de seguridad de AWS IAM que identifica violaciones del principio de mínimo privilegio y genera un informe priorizado por riesgo.
Cloudsplaining es una herramienta de evaluación de seguridad de AWS IAM que identifica violaciones del principio de mínimo privilegio y genera un informe HTML priorizado por riesgo.
Para la documentación completa, visite el proyecto en ReadTheDocs.
Cloudsplaining identifica violaciones del principio de mínimo privilegio en políticas IAM de AWS y genera un informe HTML atractivo. Puede escanear todas las políticas en su cuenta de AWS, en múltiples cuentas de AWS, o puede escanear un único archivo de política.
Ayuda a identificar acciones de IAM que no aprovechan las restricciones de recursos. También ayuda a priorizar el proceso de remediación al marcar las políticas IAM que presentan los siguientes riesgos para la cuenta de AWS en cuestión sin restricción:
s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)Cloudsplaining también identifica roles IAM que pueden ser asumidos por servicios de cómputo de AWS (como EC2, ECS, EKS o Lambda), ya que pueden presentar un mayor riesgo que los roles definidos por el usuario, especialmente si el servicio de cómputo de AWS está en una instancia que está expuesta directa o indirectamente a internet. Marcar estos roles es especialmente útil para probadores de penetración (o atacantes) en ciertos escenarios. Por ejemplo, si un atacante obtiene privilegios para ejecutar ssm:SendCommand y hay instancias EC2 privilegiadas con el agente SSM instalado, puede tener efectivamente los privilegios de esas instancias EC2. La ejecución remota de código a través del agente de AWS Systems Manager ya era una ruta de escalada/explotación conocida, pero Cloudsplaining puede facilitar el proceso de identificar estos casos. Consulte el informe de ejemplo para algunos ejemplos.
También puede especificar un archivo de exclusiones personalizado para filtrar resultados que son falsos positivos por diversas razones. Por ejemplo, las políticas de usuario son permisivas por diseño, mientras que los roles de sistema son generalmente más restrictivos. También puede tener exclusiones específicas para la estrategia multi-cuenta de su organización o la arquitectura de aplicaciones de AWS.
Policy Sentry nos reveló que es posible finalmente escribir políticas IAM siguiendo el principio de mínimo privilegio de manera escalable. Antes de que se lanzara Policy Sentry, era demasiado fácil encontrar documentos de política IAM que carecieran de restricciones de recursos. Considere la política a continuación, que permite al principal IAM (un rol o usuario) ejecutar s3:PutObject en cualquier bucket S3 en la cuenta de AWS:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*"
}
]
}
Esto es malo. Idealmente, el acceso debería restringirse según los ARN de los recursos, así:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Policy Sentry hace que esto sea realmente fácil. Una vez que los desarrolladores de Infrastructure as Code o los administradores de AWS se familiaricen con la herramienta (que es bastante fácil de usar), hemos descubierto que la adopción comienza muy rápidamente. Sin embargo, si has estado usando AWS, probablemente haya una gran acumulación de políticas de IAM que podrían beneficiarse de una mejora. Si tienes cientos de cuentas de AWS con docenas de políticas en cada una, ¿cómo podemos asegurar esas cuentas de AWS identificando programáticamente las políticas que deberían arreglarse?
Por eso escribimos Cloudsplaining.
Cloudsplaining identifica violaciones del principio de mínimo privilegio en políticas de IAM de AWS y genera un bonito informe HTML. Puede escanear todas las políticas en tu cuenta de AWS, a través de múltiples cuentas de AWS, o puede escanear un único archivo de política.
brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining
#### Pip3```bash
pip3 install --user cloudsplaining
cloudsplaining desde la línea de comandos ejecutando cloudsplaining --help.Para habilitar el completado de Bash, pon esto en tu .bashrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"
Para habilitar el autocompletado de ZSH, coloca esto en tu .zshrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
También puedes escanear un único archivo de política para identificar riesgos en lugar de una cuenta completa.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json
El resultado incluirá una descripción del hallazgo y una lista de las acciones de IAM que no aprovechan las restricciones de recursos.
El resultado se parecerá a lo siguiente:```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