
Limpia cuentas sobre permisos en infraestructura de GCP a escala.
CureIAM es un motor fácil de usar, fiable y de alto rendimiento para la aplicación del Principio de Mínimo Privilegio en la infraestructura en la nube de GCP. Permite a los equipos de DevOps y Seguridad limpiar rápidamente las cuentas en infraestructura GCP que tienen permisos otorgados más allá de los necesarios. CureIAM obtiene las recomendaciones y perspectivas del recomendador IAM de GCP, las puntúa y aplica esas recomendaciones automáticamente de forma diaria. Se encarga de la programación y todos los demás aspectos de ejecución de estos trabajos de aplicación a escala. Está construido sobre las APIs del recomendador IAM de GCP y el marco Cloudmarker.
Descubra qué hace que CureIAM sea escalable y de nivel de producción.
safe_to_apply_score, risk_score, over_privilege_score. Cada puntuación tiene un propósito diferente. Por ejemplo, safe_to_apply_score identifica la capacidad de aplicar la recomendación de forma automatizada, basándose en el umbral establecido en el archivo de configuración CureIAM.yaml.Dado que CureIAM está construido con Python, puede ejecutarlo localmente con estos comandos. Antes de ejecutarlo, asegúrese de tener un archivo de configuración listo en /etc/CureIAM.yaml, ~/.CureIAM.yaml, ~/CureIAM.yaml o CureIAM.yaml, y de que existe un archivo JSON de cuenta de servicio en el directorio actual con el nombre preferido cureiamSA.json. Esta clave privada de SA puede tener cualquier nombre, pero para la construcción de la imagen Docker se prefiere este nombre. Asegúrese de hacer referencia a este archivo en la configuración para la nube GCP.
# Instalar dependencias necesarias
$ pip install -r requirements.txt
# Ejecutar CureIAM ahora
$ python -m CureIAM -n
# Ejecutar el proceso de CureIAM como programador
$ python -m CureIAM
# Ver ayuda de CureIAM
$ python -m CureIAM --help
CureIAM también puede ejecutarse dentro de un entorno Docker, esto es completamente opcional y se puede usar para CI/CD con despliegue en clúster K8s.
# Construir imagen Docker desde el Dockerfile
$ docker build -t cureiam .
# Ejecutar la imagen, como programador
$ docker run -d cureiam
# Ejecutar la imagen ahora
$ docker run -f cureiam -m cureiam -n
El archivo de configuración CureIAM.yaml es el corazón del motor CureIAM. Todo lo que hace el motor se basa en la canalización configurada en este archivo. Vamos a desglosarlo en diferentes secciones para que la configuración parezca más sencilla.
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 subsección de configuración utiliza el módulo de registro Rich y programa CureIAM para que se ejecute diariamente a las 16:00.
plugins en CureIAM.yaml. Puede pensar en esta sección como la declaración de 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 una de estas declaraciones de plugin debe tener esta forma:
plugins:
<nombre-plugin>:
plugin: <nombre-clase-como-ruta-python>
params:
param1: val1
param2: val2
Por ejemplo, para el plugin CureIAM.stores.esstore.EsStore que es este archivo y la clase EsStore. Todos los parámetros definidos en yaml deben coincidir con la declaración en la función __init__() de la misma clase de plugin.
audits:
IAMAudit:
clouds:
- gcpCloud
processors:
- gcpIamProcessor
stores:
- filestore
- esstore
Se pueden crear múltiples auditorías a partir de esto. La creada aquí se llama IAMAudit con tres plugins en uso: gcpCloud, gcpIamProcessor, filestores y esstore. Note que estos son los mismos nombres de plugin definidos en el Paso 2. Nuevamente, esto es como definir la canalización, no ejecutarla realmente. Se considerará para su ejecución con la definición del siguiente paso.
CureIAM que ejecute las auditorías definidas en el paso anterior. run:
- IAMAudits
Y esto completa toda la configuración para CureIAM. Puede encontrar el ejemplo completo aquí. Este concepto de canalización controlada por configuración se hereda del marco Cloudmarker.
El JSON indexado en Elasticsearch mediante el plugin de almacenamiento Elasticsearch se puede utilizar para generar un panel en Kibana.
[¡Por favor, hágalo!] Buscamos cualquier tipo de contribución para mejorar la funcionalidad principal de CureIAM y su documentación. En caso de duda, ¡haga un PR!
Equipo de Seguridad de Producto de Gojek ❤️
<>
=============
Añadir la versión en las librerías para evitar problemas de compatibilidad inversa.
Ejecutar docker compose: docker-compose -f docker_compose_es.yaml up
mode_scan: true
mode_enforce: false