Genere dinámicamente una política de IAM con IAM Access Analyzer mediante Step Functions - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Genere dinámicamente una política de IAM con IAM Access Analyzer mediante Step Functions

Creado por Thomas Scott (AWS), Adil El Kanabi (AWS), Koen van Blijderveen (AWS) y Rafal Pawlaszek (AWS)

Repositorio de código: Generador de políticas de roles de Automated IAM Access Analyzer

Entorno: PoC o piloto

Tecnologías: seguridad, identidad, conformidad; sin servidor

Servicios de AWS: Analizador de acceso de AWS IAM; AWS Lambda; AWS Step Functions; AWS Identity and Access Management

Resumen

El privilegio mínimo es la práctica recomendada de seguridad que consiste en conceder los permisos mínimos necesarios para realizar una tarea. Implementar el acceso con privilegios mínimos en una cuenta de Amazon Web Services (AWS) que ya está activa puede resultar difícil, ya que no se quiere impedir que los usuarios realicen sus tareas laborales cambiando sus permisos de forma involuntaria. Para poder implementar cambios en la política de IAM de AWS Identity and Access Management, debe entender qué acciones y recursos están llevando a cabo los usuarios de la cuenta.

Este patrón está diseñado para ayudarle a aplicar el principio del acceso con privilegio mínimo, sin bloquear ni ralentizar la productividad del equipo. Describe cómo usar IAM Access Analyzer y AWS Step Functions para generar dinámicamente una política de up-to-date IAM para su función, en función de las acciones que se están realizando actualmente en la cuenta. La nueva política está diseñada para permitir la actividad actual, pero eliminar cualquier privilegio elevado e innecesario. Puede personalizar la política generada definiendo reglas de autorización y denegación, y la solución integra sus reglas personalizadas.

Este patrón incluye opciones para implementar la solución con AWS Cloud Development Kit (AWS CDK) o HashiCorp CDK for Terraform (CDKTF). A continuación, puede asociar la nueva política al rol mediante una canalización de integración y entrega continuas (CI/CD). Si tiene una arquitectura de varias cuentas, puede implementar esta solución en cualquier cuenta en la que desee generar políticas de IAM actualizadas para los roles, lo que aumentará la seguridad de todo su entorno de nube de AWS.

Requisitos previos y limitaciones

Requisitos previos 

Limitaciones

  • Este patrón no aplica la nueva política de IAM al rol. Al final de esta solución, la nueva política de IAM se almacena en un CodeCommit repositorio. Puede utilizar una canalización de CI/CD para aplicar políticas a los roles de su cuenta.

Arquitectura

Arquitectura de destino

El flujo de trabajo de Step Functions genera una nueva política y la almacena en CodeCommit.
  1. Una regla de EventBridge eventos de Amazon programada regularmente inicia un flujo de trabajo de Step Functions. Este programa de regeneración se define como parte de la configuración de esta solución.

  2. En el flujo de trabajo de Step Functions, una función Lambda genera los intervalos de fechas que se utilizarán al analizar la actividad de la cuenta en los CloudTrail registros.

  3. El siguiente paso del flujo de trabajo llama a la API de IAM Access Analyzer para empezar a generar la política.

  4. Con el nombre de recurso de Amazon (ARN) del rol que especificó durante la configuración, IAM Access Analyzer analiza los CloudTrail registros para detectar actividad dentro de la tasa de fechas especificada. En función de la actividad, IAM Access Analyzer genera una política de IAM que solo permite las acciones y los servicios que utilice el rol durante el intervalo de fechas especificado. Cuando se completa este paso, se genera un identificador de trabajo.

  5. El siguiente paso del flujo de trabajo comprueba el ID del trabajo cada 30 segundos. Cuando se detecta el identificador de trabajo, este paso lo utiliza para llamar a la API de IAM Access Analyzer y recuperar la nueva política de IAM. IAM Access Analyzer devuelve la política como un archivo JSON.

  6. El siguiente paso del flujo de trabajo coloca el archivo <IAM role name>/policy.json en un bucket de Amazon Simple Storage Service (Amazon S3). Defina este bucket de S3 como parte de la configuración de esta solución.

  7. Una notificación de eventos de Amazon S3 inicia una función de Lambda.

  8. La función Lambda recupera la política del bucket de S3, integra las reglas personalizadas que defina en los archivos allow.json y deny.json y, a continuación, envía la política actualizada a. CodeCommit Usted define el CodeCommit repositorio, la rama y la ruta de la carpeta como parte de la configuración de esta solución.

Herramientas

Servicios de AWS

  • AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.

  • Kit de herramientas de AWS CDK es un kit de desarrollo en la nube de línea de comandos que ayuda a interactuar con la aplicación AWS Cloud Development Kit (AWS CDK).

  • AWS le CloudTrail ayuda a auditar la gobernanza, el cumplimiento y el riesgo operativo de su cuenta de AWS.

  • AWS CodeCommit es un servicio de control de versiones que le ayuda a almacenar y gestionar repositorios de Git de forma privada, sin necesidad de gestionar su propio sistema de control de código fuente.

  • La interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.

  • AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos. Este patrón utiliza el analizador de acceso de IAM, una función de IAM, para analizar sus CloudTrail registros e identificar las acciones y los servicios que ha utilizado una entidad de IAM (usuario o rol) y, a continuación, generar una política de IAM basada en esa actividad.

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

  • AWS Step Functions es un servicio de orquestación sin servidor que le permite combinar funciones de Lambda AWS y otros servicios de AWS para crear aplicaciones esenciales desde el punto de vista empresarial. En este patrón, utiliza las integraciones de servicios del SDK de AWS en Step Functions para llamar a las acciones de la API de servicio desde su flujo de trabajo.

Otras herramientas

  • CDK para Terraform (CDKTF) le ayuda a definir la infraestructura como código (IaC) mediante el uso de idiomas de programación comunes, como Python y Typescript.

  • Lerna es un sistema de compilación para administrar y publicar varios paquetes JavaScript o TypeScript paquetes desde el mismo repositorio.

  • Node.js es un entorno de JavaScript ejecución basado en eventos diseñado para crear aplicaciones de red escalables.

  • npm es un registro de software que se ejecuta en un entorno Node.js y se utiliza para compartir o tomar prestados paquetes y administrar la implementación de paquetes privados.

Repositorio de código

El código de este patrón está disponible en el repositorio del generador de políticas de roles de GitHub Automated IAM Access Analyzer.

Epics

TareaDescripciónHabilidades requeridas

Clone el repositorio.

El siguiente comando clona el repositorio Automated IAM Access Analyze Role Policy Generator ()GitHub.

git clone https://github.com/aws-samples/automated-iam-access-analyzer.git
Desarrollador de aplicaciones

Instale Lerna.

El siguiente comando instala Lerna.

npm i -g lerna
Desarrollador de aplicaciones

Configure las dependencias.

Ingrese el siguiente comando para instalar las dependencias del repositorio.

cd automated-iam-access-advisor/ npm install && npm run bootstrap
Desarrollador de aplicaciones

Crear el código.

El siguiente comando prueba, compila y prepara los paquetes zip de las funciones de Lambda.

npm run test:code npm run build:code npm run pack:code
Desarrollador de aplicaciones

Construya los constructos.

El siguiente comando crea la infraestructura que sintetiza las aplicaciones, tanto para el CDK como para el CDKTF de AWS.

npm run build:infra

Configure todos los permisos personalizados.

En la carpeta repo del repositorio clonado, edite los archivos allow.json y deny.json para definir los permisos personalizados para el rol. Si los archivos allow.json y deny.json contienen el mismo permiso, se aplica el permiso de denegación.

Administrador de AWS, desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Implemente la pila de CDK de AWS.

El siguiente comando implementa la infraestructura a través de AWS CloudFormation. Defina los siguientes parámetros:

  • <NAME_OF_ROLE>: el ARN del rol de IAM para el que está creando una nueva política.

  • <TRAIL_ARN>— El ARN del registro en el que CloudTrail se almacena la actividad del rol.

  • <CRON_EXPRESSION_TO_RUN_SOLUTION>: la expresión Cron que define el programa de regeneración de la política. El flujo de trabajo de Step Functions se ejecuta según esta programación.

  • <TRAIL_LOOKBACK>: el período, en días, para echar un vistazo a la trayectoria al evaluar los permisos de los roles.

cd infra/cdk cdk deploy —-parameters roleArn=<NAME_OF_ROLE> \ —-parameters trailArn=<TRAIL_ARN> \ --parameters schedule=<CRON_EXPRESSION_TO_RUN_SOLUTION> \ [ --parameters trailLookBack=<TRAIL_LOOKBACK> ]

Nota: Los corchetes indican los parámetros opcionales.

Desarrollador de aplicaciones

(Opcional) Espere a que aparezca la nueva política.

Si el registro no contiene una cantidad razonable de actividad histórica para el rol, espere hasta que esté seguro de que hay suficiente actividad registrada como para que IAM Access Analyzer genere una política precisa. Si el rol ha estado activo en la cuenta durante un período de tiempo suficiente, es posible que este período de espera no sea necesario.

Administrador de AWS

Revise manualmente la política generada.

En tu CodeCommit repositorio, revisa el archivo.json <ROLE_ARN>generado para confirmar que los permisos de autorización y denegación son adecuados para el rol.

Administrador de AWS
TareaDescripciónHabilidades requeridas

Sintetice la plantilla Terraform.

El siguiente comando sintetiza la plantilla de Terraform.

lerna exec cdktf synth --scope @aiaa/tfm
Desarrollador de aplicaciones

Implementar la plantilla Terraform.

El siguiente comando navega hasta el directorio que contiene la infraestructura definida por CDKTF.

cd infra/cdktf

El siguiente comando implementa la infraestructura en la cuenta de AWS de destino. Defina los siguientes parámetros:

  • <account_ID>: el ID de la cuenta de destino.

  • <region>: la región de AWS de destino.

  • <selected_role_ARN>: el ARN del rol de IAM para el que está creando una nueva política.

  • <trail_ARN>— El ARN del registro en el que CloudTrail se almacena la actividad del rol.

  • <schedule_expression>: la expresión Cron que define el programa de regeneración de la política. El flujo de trabajo de Step Functions se ejecuta según esta programación.

  • <trail_look_back>: el período, en días, para echar un vistazo a la trayectoria al evaluar los permisos de los roles.

TF_VAR_accountId=<account_ID> \ TF_VAR_region=<region> \ TF_VAR_roleArns=<selected_role_ARN> \ TF_VAR_trailArn=<trail_ARN> \ TF_VAR_schedule=<schedule_expression> \ [ TF_VAR_trailLookBack=<trail_look_back> ] \ cdktf deploy

Nota: Los corchetes indican los parámetros opcionales.

Desarrollador de aplicaciones

(Opcional) Espere a que aparezca la nueva política.

Si el registro no contiene una cantidad razonable de actividad histórica para el rol, espere hasta que esté seguro de que hay suficiente actividad registrada como para que IAM Access Analyzer genere una política precisa. Si el rol ha estado activo en la cuenta durante un período de tiempo suficiente, es posible que este período de espera no sea necesario.

Administrador de AWS

Revise manualmente la política generada.

En tu CodeCommit repositorio, revisa el archivo.json <ROLE_ARN>generado para confirmar que los permisos de autorización y denegación son adecuados para el rol.

Administrador de AWS

Recursos relacionados

Recursos de AWS

Otros recursos