

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.

# Administre los conjuntos de AWS IAM Identity Center permisos como código mediante AWS CodePipeline
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline"></a>

*Andre Cavalcante y Claison Amorim, Amazon Web Services*

## Resumen
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-summary"></a>

AWS IAM Identity Center le ayuda a gestionar de forma centralizada el acceso mediante el inicio de sesión único (SSO) a todas sus aplicaciones. Cuentas de AWS Puede crear y administrar identidades de usuario en IAM Identity Center, o puede conectar una fuente de identidades existente, como un dominio de Microsoft Active Directory o un proveedor de identidades (IdP) externo. [El IAM Identity Center ofrece una experiencia de administración unificada para definir, personalizar y asignar un acceso detallado a su entorno mediante conjuntos de permisos. AWS](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) Los conjuntos de permisos se aplican a los usuarios y grupos federados de su almacén de identidades de IAM Identity Center o de su IdP externo.

Este patrón lo ayuda a administrar los conjuntos de permisos de IAM Identity Center como código en su entorno de cuentas múltiples que se administra como una organización en AWS Organizations. Con este patrón, puede lograr lo siguiente:
+ Crear, eliminar y actualizar conjuntos de permisos
+ Cree, actualice o elimine las asignaciones de conjuntos de permisos a los destinatarios Cuentas de AWS, a las unidades organizativas (OUs) o a la raíz de su organización.

Para gestionar los permisos y las asignaciones del IAM Identity Center como código, esta solución implementa un proceso de integración y entrega continuas (CI/CD) que utiliza y. AWS CodeBuild AWS CodePipeline Los conjuntos de permisos y las asignaciones se administran en plantillas JSON que se almacenan en un repositorio remoto. Cuando EventBridge las reglas de Amazon detectan un cambio en el repositorio o detectan modificaciones en las cuentas de la unidad organizativa de destino, se inicia una AWS Lambda función. La función Lambda inicia la CI/CD canalización que actualiza los conjuntos de permisos y las asignaciones en IAM Identity Center.

## Requisitos previos y limitaciones
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-prereqs"></a>

**Requisitos previos **
+ Un entorno de varias cuentas administrado como una organización en AWS Organizations. A fin de obtener más información, consulte [Creación de una organización](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html).
+ IAM Identity Center, habilitado y configurado con una fuente de identidad. Para obtener más información, consulte [Introducción](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) en la documentación de IAM Identity Center.
+ Una cuenta de miembro que está registrada como administrador delegado para lo siguiente: Servicios de AWS
  + IAM Identity Center: para obtener instrucciones, consulte [Register a member account](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html#delegated-admin-how-to-register) en la documentación de IAM Identity Center.
  + AWS Organizations — Para obtener instrucciones, consulte [Administrador delegado](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_delegate_policies.html) para. AWS Organizations Esta cuenta debe tener permisos para enumerar y describir las cuentas y OUs.
**nota**  
Debe usar la misma cuenta de administrador delegado para ambos servicios.
+ Permisos para implementar AWS CloudFormation pilas en la cuenta de administrador delegado del IAM Identity Center y en la cuenta de administración de la organización. Para obtener más información, consulte [Control del acceso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) en la documentación. CloudFormation 
+ Un bucket de Amazon Simple Storage Service (Amazon S3) en la cuenta de administrador delegado de IAM Identity Center. Carga el código del artefacto en este bucket. Para obtener instrucciones, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la documentación de Amazon S3.
+ El ID de la cuenta de gestión de la organización. Para obtener instrucciones, consulte [Cómo encontrar su Cuenta de AWS ID](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindAccountId).
+ Un repositorio en tu servidor de código fuente, como GitHub.

**Limitaciones**
+ Este patrón no se puede usar para administrar o asignar conjuntos de permisos para entornos de una sola cuenta o para cuentas que no se administran como una organización en AWS Organizations.
+ Los nombres de los conjuntos de permisos IDs, la asignación y los tipos principales del centro de identidad de IAM IDs no se pueden modificar después de la implementación.
+ Este patrón le ayuda a crear y administrar [permisos personalizados](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetcustom.html). No puede usar este patrón para administrar o asignar [permisos predefinidos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetpredefined.html).
+ Este patrón no se puede usar para administrar un conjunto de permisos para la cuenta de administración de la organización.

## Arquitectura
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-architecture"></a>

**Arquitectura de destino**

![Uso de una CI/CD canalización para administrar los conjuntos de permisos en el IAM Identity Center.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/419aaa80-1b97-402d-9c74-c1b8c1ddd1cb/images/1f143bc4-c2c6-4ab6-8615-742fec617f18.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. Un usuario realiza uno de los siguientes cambios:
   + Realiza uno o más cambios en el repositorio remoto, como GitHub
   + Modifica las cuentas de la OU en AWS Organizations

1. Si el usuario confirmó un cambio en el repositorio remoto de la ramificación principal, se inicia la canalización. 

   Si el usuario modificó las cuentas de la OU, la `MoveAccount` EventBridge regla detecta el cambio e inicia una función Lambda en la cuenta de administración de la organización.

1. La función Lambda iniciada inicia la CI/CD canalización en. CodePipeline

1. CodePipeline inicia el `TemplateValidation` CodeBuild proyecto. El `TemplateValidation` CodeBuild proyecto utiliza un script de Python en el repositorio remoto para validar las plantillas del conjunto de permisos. CodeBuild valida lo siguiente:
   + Los nombres de conjunto de permisos son únicos.
   + La sentencia de asignación IDs (`Sid`) es única.
   + Las definiciones de política figuran en el parámetro `CustomPolicy` y son válidas. (Esta validación utiliza AWS Identity and Access Management Access Analyzer.)
   + Los nombres de recursos de Amazon (ARNs) de las políticas gestionadas son válidos.

1. El grupo de `PermissionSet` acciones del `Deploy` CodeBuild proyecto se utiliza AWS SDK para Python (Boto3) para eliminar, crear o actualizar los conjuntos de permisos en el Centro de identidades de IAM. Solo se ven afectados los conjuntos de permisos con la etiqueta `SSOPipeline:true`. Todos los conjuntos de permisos que se administran a través de esta canalización tienen esta etiqueta.

1. El grupo de `Assignments` acciones del `Deploy` CodeBuild proyecto utiliza Terraform para eliminar, crear o actualizar las asignaciones en el IAM Identity Center. Los archivos de estado del backend de Terraform se almacenan en un bucket de Amazon S3 en la misma cuenta.

1. CodeBuild actualiza los conjuntos de permisos y las asignaciones en el Centro de Identidad de IAM.

**Automatización y escala**

Como todas las cuentas nuevas en un entorno de múltiples cuentas se trasladan a una unidad organizativa específica AWS Organizations, esta solución se ejecuta automáticamente y concede los conjuntos de permisos necesarios a todas las cuentas que especifiques en las plantillas de asignación. No se necesitan automatizaciones ni acciones de escalado adicionales.

En entornos de gran tamaño, la cantidad de solicitudes de API al IAM Identity Center puede provocar que esta solución se ejecute más lentamente. Terraform y Boto3 gestionan automáticamente la limitación para minimizar cualquier degradación del rendimiento.

## Tools (Herramientas)
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-tools"></a>

**Servicios de AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el mundo Cuentas de AWS . Regiones de AWS
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) es un servicio de compilación completamente administrado que le permite compilar código fuente, poner en marcha pruebas unitarias y producir artefactos listos para implementar. 
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) permite diseñar y configurar rápidamente las diferentes etapas de un proceso de lanzamiento de software y automatizar los pasos necesarios para lanzar los cambios en el software de manera continua.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, AWS Lambda funciones, puntos finales de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)le ayuda a gestionar de forma centralizada el acceso mediante inicio de sesión único (SSO) a todas sus aplicaciones y a las de la nube. Cuentas de AWS 
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)es un servicio de administración de cuentas que le ayuda a consolidar múltiples cuentas Cuentas de AWS en una organización que puede crear y administrar de forma centralizada.
+ [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)es un kit de desarrollo de software que le ayuda a integrar su aplicación, biblioteca o script de Python con Servicios de AWS.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Repositorio de código**

El código de este patrón está disponible en el repositorio [aws-iam-identity-center-pipeline](https://github.com/aws-samples/aws-iam-identity-center-pipeline). La carpeta de plantillas del repositorio incluye plantillas de muestra tanto para los conjuntos de permisos como para las asignaciones. También incluye AWS CloudFormation plantillas para implementar la CI/CD canalización y AWS los recursos en las cuentas de destino.

## Prácticas recomendadas
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-best-practices"></a>
+ Antes de empezar a modificar el conjunto de permisos y las plantillas de asignación, le recomendamos que planifique los conjuntos de permisos para su organización. Tenga en cuenta cuáles deberían ser los permisos, a qué cuentas o OUs el conjunto de permisos debería aplicarse y qué entidades principales del centro de identidad de IAM (usuarios o grupos) deberían verse afectadas por el conjunto de permisos. Los nombres de los conjuntos de permisos IDs, la asociación y los tipos principales del centro de identidad de IAM IDs no se pueden modificar una vez implementados.
+ Cumpla con el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte las [mejores prácticas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) y [concesión de privilegios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) en la AWS Identity and Access Management documentación de IAM.

## Epics
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-epics"></a>

### Planificar conjuntos de permisos y asignaciones
<a name="plan-permission-sets-and-assignments"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio. | En un intérprete de comandos de bash, ingrese el siguiente comando. Esto clona el repositorio [aws-iam-identity-center-pipeline desde](https://github.com/aws-samples/aws-iam-identity-center-pipeline). GitHub<pre>git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git</pre> | DevOps ingeniero | 
| Defina los conjuntos de permisos. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps ingeniero | 
| Defina las asignaciones. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps ingeniero | 

### Implementación de los conjuntos de permisos y las asignaciones
<a name="deploy-the-permission-sets-and-assignments"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente los recursos en la cuenta de administrador delegado del IAM Identity Center. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps ingeniero | 
| Implemente los recursos en la cuenta AWS Organizations de administración. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps ingeniero | 
| Finalizar la configuración del repositorio remoto. | Cambie el estado de la AWS CodeConnections conexión de `PENDING` a`AVAILABLE`. Esta conexión se creó al implementar la CloudFormation pila. Para obtener instrucciones, consulte [Actualizar una conexión pendiente](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html) en la CodeConnections documentación.  | DevOps ingeniero | 
| Cargar archivos en el repositorio remoto. | Cargue todos los archivos que haya descargado del repositorio `aws-samples` y haya editado en los pasos anteriores al repositorio remoto. Los cambios en la ramificación `main` inician la canalización, que crea o actualiza los conjuntos de permisos y las asignaciones. | DevOps ingeniero | 

### Actualización de los conjuntos de permisos y las asignaciones
<a name="updating-the-permission-sets-and-assignments"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice los conjuntos de permisos y las asignaciones. | Cuando la EventBridge regla de `MoveAccount` Amazon detecta modificaciones en las cuentas de la organización, la CI/CD canalización se inicia automáticamente y actualiza los conjuntos de permisos. Por ejemplo, si añades una cuenta a una unidad organizativa especificada en el archivo JSON de asignaciones, la CI/CD canalización aplicará el conjunto de permisos a la nueva cuenta.<br />Si desea modificar los conjuntos de permisos y las asignaciones implementados, actualice los archivos JSON y, a continuación, confírmelos en el repositorio remoto. <br />Tenga en cuenta lo siguiente cuando utilice la CI/CD canalización para administrar conjuntos de permisos y asociaciones implementados anteriormente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps ingeniero | 

## Resolución de problemas
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Errores de acceso denegado | Confirme que tiene los permisos necesarios para implementar las CloudFormation plantillas y los recursos definidos en ellas. Para obtener más información, consulte [Controlar el acceso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) en la CloudFormation documentación. | 
| Errores de canalización en la fase de validación | Este error se muestra si hay algún error en el conjunto de permisos o en las plantillas de asignación.[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | 

## Recursos relacionados
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-resources"></a>
+ [Conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) (documentación del IAM Identity Center)