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.
Valide e implemente automáticamente las políticas y funciones de IAM en una cuenta de AWS mediante CodePipeline IAM Access Analyzer y macros de AWS CloudFormation
Creado por Helton Ribeiro (AWS) y Guilherme Simoes (AWS)
Resumen
Aviso: AWS ya no CodeCommit está disponible para nuevos clientes. Los clientes actuales de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. Más información
Este patrón describe los pasos y proporciona código para crear un proceso de implementación que permita a sus equipos de desarrollo crear políticas y roles de AWS Identity and Access Management (IAM) en sus cuentas de Amazon Web Services (AWS). Este enfoque ayuda a su organización a reducir los gastos generales de sus equipos operativos y a acelerar el proceso de implementación. También ayuda a sus desarrolladores a crear roles y políticas de IAM que sean compatibles con sus controles de gobierno y seguridad actuales.
El enfoque de este patrón utiliza AWS Identity and Access Management Access Analyzer para validar las políticas de IAM que desea adjuntar a las funciones de IAM y utiliza AWS CloudFormation para implementar las funciones de IAM. Sin embargo, en lugar de editar directamente el archivo de CloudFormation plantilla de AWS, su equipo de desarrollo crea políticas y funciones de IAM con formato JSON. Una CloudFormation macro de AWS transforma estos archivos de políticas con formato JSON en tipos de recursos de AWS CloudFormation IAM antes de comenzar la implementación.
La canalización de implementación (RolesPipeline
) tiene las etapas de origen, validación e implementación. Durante la fase de origen, su equipo de desarrollo envía los archivos JSON que contienen la definición de las funciones y políticas de IAM a un repositorio de AWS CodeCommit . CodeBuild A continuación, AWS ejecuta un script para validar esos archivos y los copia en un bucket de Amazon Simple Storage Service (Amazon S3). Como sus equipos de desarrollo no tienen acceso directo al archivo de CloudFormation plantilla de AWS almacenado en un depósito de S3 independiente, deben seguir el proceso de creación y validación de archivos JSON.
Por último, durante la fase de implementación, AWS CodeDeploy utiliza una CloudFormation pila de AWS para actualizar o eliminar las políticas y funciones de IAM de una cuenta.
importante
El flujo de trabajo de este patrón es una prueba de concepto (POC) y le recomendamos que solo lo utilice en un entorno de prueba. Si desea utilizar el enfoque de este patrón en un entorno de producción, consulte las Prácticas recomendadas de seguridad en IAM en la documentación de IAM y realice los cambios necesarios en sus roles de IAM y en los servicios de AWS.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa.
Un bucket de S3 nuevo o existente para la canalización
RolesPipeline
. Asegúrese de que las credenciales de acceso que está utilizando tengan permisos para cargar objetos en este bucket.Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada. Para obtener más información, consulte Instalar, actualizar y desinstalar la CLI de AWS en la documentación de la CLI de AWS.
CLI de AWS Serverless Application Model (AWS SAM), instalada y configurada. Para obtener más información al respecto, consulte Instalación de la CLI de AWS SAM en la documentación de AWS SAM.
Python 3, instalado en su máquina local. Para obtener más información, consulte la documentación de Python
. Un cliente Git, Instalado y configurado.
El GitHub
IAM roles pipeline
repositorio, clonado en su máquina local.Políticas y roles de IAM con formato JSON existentes. Para obtener más información al respecto, consulta el ReadMe
archivo en el IAM roles pipeline
repositorio de Github.Su equipo de desarrolladores no debe tener permisos para editar los CodeDeploy recursos de AWS CodePipeline y de esta solución. CodeBuild
Limitaciones
El flujo de trabajo de este patrón es una prueba de concepto (POC) y le recomendamos que solo lo utilice en un entorno de prueba. Si desea utilizar el enfoque de este patrón en un entorno de producción, consulte las Prácticas recomendadas de seguridad en IAM en la documentación de IAM y realice los cambios necesarios en sus roles de IAM y en los servicios de AWS.
Arquitectura
En el siguiente diagrama, se muestra cómo validar e implementar automáticamente las funciones y políticas de IAM en una cuenta mediante el uso de CodePipeline macros de AWS y IAM Access Analyzer. CloudFormation

En el diagrama, se muestra el siguiente flujo de trabajo:
Un desarrollador escribe archivos JSON que contienen las definiciones de las políticas y los roles de IAM. El desarrollador envía el código a un CodeCommit repositorio y, a CodePipeline continuación, inicia la canalización.
RolesPipeline
CodeBuild valida los archivos JSON mediante IAM Access Analyzer. Si se detecta algún problema de seguridad o relacionado con errores, se detiene el proceso de implementación.
Si no se detecta ningún problema de seguridad o relacionado con errores, los archivos JSON se envían al bucket de S3
RolesBucket
.A continuación, una CloudFormation macro de AWS implementada como una función de AWS Lambda lee los archivos JSON del
RolesBucket
bucket y los transforma en tipos de recursos de AWS CloudFormation IAM.Una CloudFormation pila de AWS predefinida instala, actualiza o elimina las políticas y funciones de IAM de la cuenta.
Automatizar y escalar
CloudFormation Las plantillas de AWS que implementan automáticamente este patrón se proporcionan en el repositorio de canalización de roles de GitHub IAM
Herramientas
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.
IAM Access Analyzer le ayuda a identificar los recursos de su organización y sus cuentas, como buckets de S3 o roles de IAM, que se comparten con una entidad externa. Esto le ayuda a identificar el acceso no deseado a sus recursos y datos.
AWS Serverless Application Model (AWS SAM) es un marco de código abierto que permite crear aplicaciones sin servidor en la nube de AWS.
Código
El código fuente y las plantillas de este patrón están disponibles en el repositorio de la canalización de roles de GitHub IAM
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clone el repositorio de muestra. | Clona el repositorio de canalización de roles de GitHub IAM | Desarrollador de aplicaciones, AWS general |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implemente la canalización. |
| Desarrollador de aplicaciones, AWS general |
Clone el repositorio de la canalización. |
| Desarrollador de aplicaciones, AWS general |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Pruebe la RolesPipeline canalización con políticas y funciones de IAM válidas. |
| Desarrollador de aplicaciones, AWS general |
Pruebe la RolesPipeline canalización con políticas y funciones de IAM no válidas. |
| Desarrollador de aplicaciones, AWS general |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Prepárese para la limpieza. | Vacíe los buckets de S3 y, a continuación, ejecute el comando | Desarrollador de aplicaciones, AWS general |
Elimine la RolesStack pila. |
| Desarrollador de aplicaciones, AWS general |
Elimine la RolesPipeline pila. | Para eliminar la CloudFormation pila de | Desarrollador de aplicaciones, AWS general |
Recursos relacionados
IAM Access Analyzer: validación de políticas
(Blog de noticias de AWS) Uso de CloudFormation macros de AWS para realizar un procesamiento personalizado en plantillas ( CloudFormation documentación de AWS)
Creación de funciones Lambda con Python (documentación de AWS Lambda)