Cloudsplaining — это инструмент оценки безопасности AWS IAM, который выявляет нарушения принципа наименьших привилегий и генерирует отчет с приоритетом по рискам.
Cloudsplaining — это инструмент для оценки безопасности AWS IAM, который выявляет нарушения принципа минимальных привилегий и генерирует HTML-отчёт с приоритизацией рисков.
Полную документацию можно найти в проекте на ReadTheDocs.
Cloudsplaining выявляет нарушения принципа минимальных привилегий в политиках AWS IAM и генерирует наглядный HTML-отчёт. Он может сканировать все политики в вашем аккаунте AWS, в нескольких аккаунтах AWS или один файл политики.
Инструмент помогает найти IAM-действия, в которых не используются ограничения ресурсов. Он также помогает расставить приоритеты при устранении уязвимостей, помечая политики IAM, которые создают следующие риски для аккаунта AWS без каких-либо ограничений:
s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)Cloudsplaining также находит роли IAM, которые могут быть использованы вычислительными сервисами AWS (такими как EC2, ECS, EKS или Lambda). Такие роли могут представлять больший риск, чем роли пользователей, особенно если вычислительный сервис AWS работает на инстансе, прямо или косвенно доступном из интернета. Обозначение таких ролей особенно полезно для пентестеров (или атакующих) в определённых сценариях. Например, если злоумышленник получает права на выполнение ssm:SendCommand и существуют привилегированные EC2-инстансы с установленным агентом SSM, он может фактически получить их привилегии. Удалённое выполнение кода через агент AWS Systems Manager уже было известным путём повышения привилегий/эксплуатации, но Cloudsplaining может упростить выявление таких случаев. См. пример отчёта.
Вы также можете указать собственный файл исключений, чтобы отфильтровать результаты, которые являются ложными срабатываниями по разным причинам. Например, пользовательские политики по замыслу разрешительные, тогда как системные роли обычно более ограничительные. У вас также могут быть исключения, специфичные для стратегии работы с несколькими аккаунтами или архитектуры приложений AWS.
Policy Sentry показал нам, что наконец-то стало возможным масштабируемо создавать политики IAM в соответствии с принципом минимальных привилегий. До выхода Policy Sentry было слишком легко найти документы политик IAM, в которых отсутствовали ограничения ресурсов. Рассмотрим политику ниже, которая позволяет субъекту IAM (роли или пользователю) выполнять s3:PutObject для любого S3-бакета в аккаунте AWS:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*"
}
]
}
Это плохо. В идеале доступ должен быть ограничен в соответствии с ARN ресурсов, например, так:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Policy Sentry делает это действительно простым. Как только разработчики Infrastructure as Code или администраторы AWS ознакомятся с этим инструментом (который довольно прост в использовании), мы заметили, что внедрение начинается очень быстро. Однако, если вы уже используете AWS, вероятно, у вас есть большой объем невыполненных задач по политикам IAM, которые можно было бы улучшить. Если у вас есть сотни учетных записей AWS с десятками политик в каждой, как можно защитить эти учетные записи AWS, программно выявляя политики, которые следует исправить?
Вот почему мы написали Cloudsplaining.
Cloudsplaining выявляет нарушения принципа наименьших привилегий в политиках AWS IAM и генерирует красивый HTML-отчет. Он может сканировать все политики в вашей учетной записи AWS, в нескольких учетных записях AWS или сканировать один файл политики.
brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining
#### Pip3```bash
pip3 install --user cloudsplaining
cloudsplaining из командной строки, выполнив cloudsplaining --help.Чтобы включить автодополнение Bash, добавьте это в ваш .bashrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"
Чтобы включить автодополнение ZSH, добавьте это в ваш .zshrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
Вы также можете отсканировать один файл политики для выявления рисков вместо целой учетной записи.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json
Результат будет включать описание находки и список IAM actions, которые не используют ограничения ресурсов.
Результат будет выглядеть следующим образом:```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