
Очистка учетных записей по разрешениям в инфраструктуре GCP в масштабе
CureIAM — это простой в использовании, надежный и производительный механизм для обеспечения принципа наименьших привилегий в облачной инфраструктуре GCP. Он позволяет командам DevOps и безопасности быстро очищать аккаунты в GCP, которым были предоставлены избыточные разрешения. CureIAM получает рекомендации и аналитику от GCP IAM Recommender, оценивает их и автоматически применяет эти рекомендации на ежедневной основе. Он берет на себя планирование и все остальные аспекты выполнения таких задач по применению политик в масштабе. CureIAM построен на основе API GCP IAM Recommender и фреймворка Cloudmarker.
Узнайте, что делает CureIAM масштабируемым и готовым к промышленной эксплуатации.
safe_to_apply_score, risk_score, over_privilege_score. Каждая оценка служит своей цели. safe_to_apply_score определяет возможность автоматического применения рекомендации на основе порога, заданного в конфигурационном файле CureIAM.yaml.Поскольку CureIAM написан на Python, вы можете запустить его локально с помощью этих команд. Перед запуском убедитесь, что у вас есть готовый конфигурационный файл в одном из следующих мест: /etc/CureIAM.yaml, ~/.CureIAM.yaml, ~/CureIAM.yaml или CureIAM.yaml, а также JSON-файл сервисного аккаунта в текущем каталоге с именем, желательно, cureiamSA.json. Этот закрытый ключ SA может называться как угодно, но для сборки Docker-образа предпочтительно использовать это имя. Убедитесь, что в конфигурации для облака GCP указан этот файл.
# Установка необходимых зависимостей
$ pip install -r requirements.txt
# Запуск CureIAM сейчас
$ python -m CureIAM -n
# Запуск процесса CureIAM в режиме планировщика
$ python -m CureIAM
# Просмотр справки CureIAM
$ python -m CureIAM --help
CureIAM также можно запустить в среде Docker — это полностью опционально и может использоваться для CI/CD с развертыванием в кластере K8s.
# Сборка Docker-образа из Dockerfile
$ docker build -t cureiam .
# Запуск образа в режиме планировщика
$ docker run -d cureiam
# Запуск образа сейчас
$ docker run -f cureiam -m cureiam -n
Конфигурационный файл CureIAM.yaml является сердцем движка CureIAM. Всё, что делает движок, основано на конвейере, настроенном в этом файле. Давайте разберем его на разделы, чтобы конфигурация выглядела проще.
logger:
version: 1
disable_existing_loggers: false
formatters:
verysimple:
format: >-
[%(process)s]
%(name)s:%(lineno)d - %(message)s
datefmt: "%Y-%m-%d %H:%M:%S"
handlers:
rich_console:
class: rich.logging.RichHandler
formatter: verysimple
file:
class: logging.handlers.TimedRotatingFileHandler
formatter: simple
filename: /tmp/CureIAM.log
when: midnight
encoding: utf8
backupCount: 5
loggers:
adal-python:
level: INFO
root:
level: INFO
handlers:
- rich_console
- file
schedule: "16:00"
Этот подраздел конфигурации использует модуль логирования Rich и планирует запуск CureIAM ежедневно в 16:00.
plugins файла CureIAM.yaml. Этот раздел можно рассматривать как объявление различных плагинов. plugins:
gcpCloud:
plugin: CureIAM.plugins.gcp.gcpcloud.GCPCloudIAMRecommendations
params:
key_file_path: cureiamSA.json
filestore:
plugin: CureIAM.plugins.files.filestore.FileStore
gcpIamProcessor:
plugin: CureIAM.plugins.gcp.gcpcloudiam.GCPIAMRecommendationProcessor
params:
mode_scan: true
mode_enforce: true
enforcer:
key_file_path: cureiamSA.json
allowlist_projects:
- alpha
blocklist_projects:
- beta
blocklist_accounts:
- [email protected]
allowlist_account_types:
- user
- group
- serviceAccount
blocklist_account_types:
- None
min_safe_to_apply_score_user: 0
min_safe_to_apply_score_group: 0
min_safe_to_apply_score_SA: 50
esstore:
plugin: CureIAM.plugins.elastic.esstore.EsStore
params:
# Change http to https later if your elastic are using https
scheme: http
host: es-host.com
port: 9200
index: cureiam-stg
username: security
password: securepassword
Каждое объявление плагина должно быть в таком виде:
plugins:
<plugin-name>:
plugin: <class-name-as-python-path>
params:
param1: val1
param2: val2
Например, для плагина CureIAM.stores.esstore.EsStore (это файл и класс EsStore). Все параметры, определённые в YAML, должны соответствовать объявлению в функции __init__() того же класса плагина.
audits:
IAMAudit:
clouds:
- gcpCloud
processors:
- gcpIamProcessor
stores:
- filestore
- esstore
Можно создать несколько аудитов. В данном примере создан аудит с именем IAMAudit, использующий три плагина: gcpCloud, gcpIamProcessor, filestores и esstore. Обратите внимание, что это те же имена плагинов, которые были определены в шаге 2. Это снова похоже на объявление конвейера, а не его запуск. Фактический запуск будет определён на следующем шаге.
run:
- IAMAudits
На этом конфигурация CureIAM завершена. Полный пример можно найти здесь. Концепция конфигурируемого конвейера унаследована из фреймворка Cloudmarker.
JSON, который индексируется в Elasticsearch с помощью плагина хранилища Elasticsearch, можно использовать для создания панели мониторинга в Kibana.
[Пожалуйста, участвуйте!] Мы ищем любые виды вклада для улучшения основной функциональности и документации CureIAM. Если сомневаетесь, создавайте PR!
Команда безопасности продукта Gojek ❤️
<>
=============
Добавление версий в библиотеки для предотвращения проблем обратной совместимости.
Запуск docker compose: docker-compose -f docker_compose_es.yaml up
mode_scan: true
mode_enforce: false