
Limpeza de contas com permissões excessivas na infraestrutura GCP em escala.
CureIAM é um mecanismo fácil de usar, confiável e de alto desempenho para aplicação do Princípio do Menor Privilégio na infraestrutura em nuvem GCP. Ele permite que equipes de DevOps e Segurança limpem rapidamente contas na infraestrutura GCP que receberam permissões além do necessário. CureIAM obtém recomendações e insights do GCP IAM Recommender, os pontua e aplica essas recomendações automaticamente diariamente. Ele cuida do agendamento e de todos os outros aspectos da execução desses jobs de aplicação em escala. Foi construído sobre as APIs do GCP IAM Recommender e o framework Cloudmarker.
Descubra o que torna o CureIAM escalável e pronto para produção.
safe_to_apply_score, risk_score, over_privilege_score. Cada pontuação tem uma finalidade diferente. safe_to_apply_score identifica a capacidade de aplicar a recomendação automaticamente, com base no limite definido no arquivo de configuração CureIAM.yaml.Como o CureIAM é construído em Python, você pode executá-lo localmente com estes comandos. Antes de executar, certifique-se de ter um arquivo de configuração pronto em um dos seguintes locais: /etc/CureIAM.yaml, ~/.CureIAM.yaml, ~/CureIAM.yaml ou CureIAM.yaml, e que haja um arquivo JSON de conta de serviço presente no diretório atual, preferencialmente com o nome cureiamSA.json. Esta chave privada da SA pode ter qualquer nome, mas para a construção da imagem Docker, é preferível usar este nome. Certifique-se de referenciar este arquivo na configuração do GCP cloud.
# Instalar dependências necessárias
$ pip install -r requirements.txt
# Executar CureIAM agora
$ python -m CureIAM -n
# Executar CureIAM como agendador
$ python -m CureIAM
# Ver ajuda do CureIAM
$ python -m CureIAM --help
O CureIAM também pode ser executado em um ambiente Docker (completamente opcional) e pode ser usado para CI/CD com implantação em cluster K8s.
# Construir imagem Docker a partir do Dockerfile
$ docker build -t cureiam .
# Executar a imagem como agendador
$ docker run -d cureiam
# Executar a imagem agora
$ docker run -f cureiam -m cureiam -n
O arquivo de configuração CureIAM.yaml é o coração do mecanismo CureIAM. Tudo o que o mecanismo faz é baseado no pipeline configurado neste arquivo. Vamos dividi-lo em diferentes seções para simplificar a visualização.
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"
Esta subseção da configuração usa o módulo de logging Rich e agenda o CureIAM para executar diariamente às 16:00.
plugins do CureIAM.yaml. Você pode pensar nesta seção como uma declaração para diferentes plugins. 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
Cada uma dessas declarações de plugin deve ter o seguinte formato:
plugins:
<nome-do-plugin>:
plugin: <caminho-da-classe-em-python>
params:
param1: val1
param2: val2
Por exemplo, para o plugin CureIAM.stores.esstore.EsStore, que é este arquivo e a classe EsStore. Todos os parâmetros definidos no yaml devem corresponder à declaração na função __init__() da mesma classe do plugin.
audits:
IAMAudit:
clouds:
- gcpCloud
processors:
- gcpIamProcessor
stores:
- filestore
- esstore
A partir disso, podem ser criadas múltiplas auditorias. A criada aqui é denominada IAMAudit com três plugins em uso: gcpCloud, gcpIamProcessor, filestores e esstore. Observe que são os mesmos nomes de plugins definidos no Passo 2. Novamente, isso é como definir o pipeline, não executá-lo de fato. Ele será considerado para execução com a definição do próximo passo.
CureIAM para executar as auditorias definidas no passo anterior. run:
- IAMAudits
E isso completa toda a configuração do CureIAM. Você pode encontrar o exemplo completo aqui. Este conceito de pipeline orientado por configuração é herdado do framework Cloudmarker.
O JSON indexado no Elasticsearch usando o plugin Elasticsearch store pode ser usado para gerar dashboards no Kibana.
[Por favor, faça isso!] Estamos abertos a qualquer tipo de contribuição para melhorar a funcionalidade principal e a documentação do CureIAM. Em caso de dúvida, faça um PR!
Equipe de Segurança do Produto Gojek ❤️
<>
=============
Adicionando a versão nas bibliotecas para evitar problemas de compatibilidade reversa.
Executando docker compose: docker-compose -f docker_compose_es.yaml up
mode_scan: true
mode_enforce: false