

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 permisos de forma dinámica mediante Terraform
<a name="manage-aws-permission-sets-dynamically-by-using-terraform"></a>

*Vinicius Elias y Marcos Vinicius Pinto Jordao, Amazon Web Services*

## Resumen
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-summary"></a>

AWS IAM Identity Center mejora AWS Identity and Access Management (IAM) al proporcionar un centro centralizado para administrar el acceso de inicio de sesión único a las aplicaciones en la nube Cuentas de AWS y las aplicaciones en la nube. Sin embargo, la administración manual de los [conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) de IAM Identity Center puede resultar cada vez más compleja y propensa a errores a medida que su organización crece. Esta complejidad puede provocar posibles brechas de seguridad y sobrecarga administrativa.

Esta solución le permite administrar los conjuntos de permisos mediante la infraestructura como código (IaC) con una canalización de integración y entrega continuas (CI/CD) creada con Servicios de AWS nativos. Permite una integración perfecta del mecanismo de asignación de conjuntos de permisos con los eventos AWS Control Tower del ciclo de vida o con un entorno de [Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html). Este enfoque proporciona configuraciones de identidad dinámicas tanto para las nuevas como para las existentes Cuentas de AWS.

 EventBridge Las reglas de Amazon supervisan Cuenta de AWS la creación y las actualizaciones, lo que ayuda a que las configuraciones de identidad permanezcan sincronizadas con la estructura de la organización. Tras crear o actualizar las cuentas en AWS Control Tower o en AFT, se activa la canalización. Evalúa un conjunto de archivos JSON con definiciones de conjuntos de permisos y reglas de asignación. Luego, la canalización aplica y sincroniza la configuración en todas las cuentas.

A continuación, se enumeran las ventajas de este enfoque:
+ **Coherencia**: elimina las desviaciones de configuración manual en toda AWS la organización
+ **Auditabilidad**: mantiene un historial completo de todos los cambios en la administración de identidades.
+ **Escalabilidad**: aplica automáticamente las configuraciones a medida que su AWS entorno crece
+ **Seguridad**: reduce los errores humanos en la asignación de permisos.
+ **Conformidad**: facilita el cumplimiento de los requisitos reglamentarios mediante cambios documentados y reglas de asignación.

## Requisitos previos y limitaciones
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-prereqs"></a>
+ Un entorno de múltiples cuentas con AWS Control Tower y AWS Organizations configuración. Opcionalmente, puede usar AFT con AWS Control Tower.
+ Un administrador delegado del IAM Identity Center Cuenta de AWS para recibir la solución. Para obtener más información, consulte [Delegated administration](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html) en la documentación de IAM Identity Center.
+ Un repositorio del sistema de control de versiones (VCS) para gestionar el código principal. [Para ver un ejemplo, consulte el repositorio de la GitHub solución.](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline/tree/main/samples/basic)
+  AWS Recursos necesarios para la administración del backend de Terraform, como un bucket de Amazon Simple Storage Service (Amazon S3) y una tabla de Amazon DynamoDB.

**Limitaciones**
+ La canalización utiliza recursos AWS nativos y Terraform de código abierto. La canalización no está preparada para hacer llamadas a ecosistemas de terceros.
+ Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-architecture"></a>

En el siguiente diagrama se muestran los componentes y el flujo de trabajo de este patrón.

![\[Componentes y flujo de trabajo para administrar los conjuntos de permisos de AWS mediante Terraform.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/69dc79c7-b4cd-4ad0-b0d2-d58cf0c7adaa/images/649e299c-1142-405a-8982-4a6b2e595d53.png)


**AWS Control Tower los eventos fluyen**

La solución comienza con la integración de los eventos que provienen de AFT AWS Control Tower o de AFT. La elección entre un servicio u otro se lleva a cabo en el momento de la implementación mediante la definición de variables. Independientemente del método utilizado, la canalización se activa cada vez que se crea o actualiza una cuenta. La canalización reconcilia las políticas almacenadas en el repositorio de administración de conjuntos de permisos.

Los siguientes son los eventos AWS Control Tower del ciclo de vida:
+ `CreateManagedAccount`: cuando se crea una cuenta nueva.
+ `UpdateManagedAccount`: cuando se actualiza una cuenta existente.

**Enrutamiento de eventos**

EventBridge sirve como servicio central de procesamiento de eventos, capturando los eventos generados en la AWS Control Tower cuenta. Cuando se producen eventos, los dirige de EventBridge forma inteligente a un bus de eventos centralizado en la cuenta de la solución. AWS Control Tower los eventos del ciclo de vida siguen patrones de enrutamiento distintos. Si se define AFT como la fuente del evento, la cuenta de administración de AFT gestiona los eventos en lugar de la AWS Control Tower cuenta. Esta arquitectura basada en eventos permite respuestas automatizadas a los cambios organizativos sin intervención manual.

**Proceso de integración de AFT**

Cuando los eventos AWS Control Tower del ciclo de vida llegan a la cuenta de administración de la AFT, activan automáticamente varios procesos posteriores que son intrínsecos a la AFT. Una vez que se completa el flujo de trabajo de personalización de la cuenta de AFT, publica un mensaje en el tema dedicado de Amazon Simple Notification Service (Amazon SNS) `aft-notifications`. Ese tema activa la `aft-new-account-forward-event` AWS Lambda función que implementa esta solución. La función de Lambda envía el evento al bus de eventos de la cuenta de la solución, donde se utiliza para iniciar la canalización.

**Canalización de infraestructura como código**

La canalización de soluciones funciona como un mecanismo de implementación totalmente automatizado. El AWS CodePipeline servicio monitorea continuamente el repositorio para detectar cambios. Al detectar nuevas confirmaciones, inicia automáticamente el flujo de trabajo de implementación e inicia un proceso secuencial que incluye las fases de validación y ejecución. El sistema ejecuta `plan` las operaciones de Terraform para identificar los cambios propuestos, seguidas de los `apply` comandos de Terraform para implementar esos cambios en el AWS entorno. En particular, la canalización se ejecuta sin ninguna puerta de aprobación manual. Este enfoque permite implementar rápidamente los cambios en la infraestructura y, al mismo tiempo, mantener la auditabilidad mediante los registros de la canalización y los archivos de estado de Terraform.

La canalización se aprovecha AWS CodeBuild para ejecutar las operaciones de Terraform en un entorno controlado con los permisos adecuados. Mediante este enfoque de IaC, la canalización puede efectuar operaciones integrales de administración de permisos, tales como las siguientes:
+ Creación de conjuntos de permisos nuevos.
+ Actualización de conjuntos de permisos existentes.
+ Eliminación de conjuntos de permisos innecesarios.
+ Gestione la asignación de estos permisos entre las cuentas y los grupos de las AWS organizaciones.

Para mantener la coherencia de la infraestructura y evitar cambios conflictivos, la solución implementa el sistema de administración de estados del backend de Terraform mediante un bucket de Amazon S3 y una tabla dedicada de Amazon DynamoDB. Este enfoque proporciona una ubicación de almacenamiento persistente para los archivos de estado de Terraform y mecanismos de bloqueo de estado para evitar modificaciones simultáneas en los mismos recursos.

El código principal de Terraform usa el módulo oficial de AWS `permission-sets` Terraform. Este módulo puede administrar dinámicamente los conjuntos de permisos en IAM Identity Center basándose en plantillas de conjuntos de permisos.

**Administración de control de origen**

Las plantillas del conjunto de permisos (archivos JSON) residen en un sistema de control de versiones externo, por ejemplo GitHub, que proporciona un repositorio centralizado para las configuraciones de administración de identidades. Este enfoque establece una fuente única de información fiable para las definiciones de conjuntos de permisos y, al mismo tiempo, permite el desarrollo colaborativo mediante prácticas estándar de revisión del código. Los usuarios autorizados pueden confirmar cambios en estas plantillas siguiendo los procesos de administración de cambios organizativos. Estas confirmaciones son el principal desencadenante de la canalización de implementación automatizada, que inicia el proceso de actualización de la infraestructura.

Para ver un ejemplo de cómo configurar los conjuntos de permisos mediante el archivo JSON en el repositorio, consulte [Información adicional](#manage-aws-permission-sets-dynamically-by-using-terraform-additional).

## Tools (Herramientas)
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-tools"></a>

**Servicios 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 CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html)permite que AWS los recursos y servicios, por ejemplo CodePipeline, se conecten a repositorios de código externos, por ejemplo. GitHub
+ [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.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante comandos en el shell de la línea de comandos.
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)le ayuda a configurar y administrar un entorno de AWS múltiples cuentas, siguiendo las mejores prácticas prescriptivas.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
+ [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 de enlace de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [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 el inicio de sesión único (SSO) a todas sus aplicaciones y a las de la nube. Cuentas de AWS 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [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.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico. Permite las notificaciones push para los eventos de administración de cuentas, lo que garantiza que las partes pertinentes estén informadas de los cambios o acciones importantes que se produzcan en el sistema.
+ [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.

**Otras herramientas**
+ [Terraform](https://www.terraform.io/) es una herramienta de infraestructura como código (IaC) HashiCorp que le ayuda a crear y administrar recursos locales y en la nube.

**Repositorio de código**

[El código de este patrón está disponible en la organización AWS Samples y en el repositorio GitHub -sets-pipeline. sample-terraform-aws-permission](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline)

## Prácticas recomendadas
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-best-practices"></a>
+ Fije siempre las versiones de los módulos y proveedores de Terraform que se utilizan para ejecutar el código en producción.
+ Utilice una herramienta de análisis de código estático, como [Checkov](https://www.checkov.io/), para analizar el código y, a continuación, resolver los problemas de seguridad.
+ Siga 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 [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.

## Epics
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-epics"></a>

### Creación de los requisitos previos (opcional)
<a name="create-the-prerequisites-optional"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear los recursos del backend de Terraform. | Si aún no ha creado sus AWS recursos de backend de Terraform, siga estos pasos para crear un bucket de Amazon S3 (`s3-tf-backend-{ACCOUNT_ID}`) y una tabla de DynamoDB (). `ddb-tf-backend`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>aws s3api create-bucket --bucket s3-tf-backend-{ACCOUNT_ID}<br />aws s3api put-bucket-versioning --bucket s3-tf-backend-{ACCOUNT_ID} --versioning-configuration Status=Enabled<br />aws dynamodb create-table --table-name ddb-tf-backend --attribute-definitions AttributeName=LockID,AttributeType=S --key-schema AttributeName=LockID,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1</pre> | Administrador de AWS | 
| Cree un rol multicuenta. | Debe proporcionar una función de IAM multicuenta en la configuración del proveedor de `event-source-account` Terraform AWS . Si aún no ha creado este rol, siga estos pasos para crearlo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>aws iam create-role \<br />    --role-name CrossAccountRole \<br />    --assume-role-policy-document '{<br />        "Version": "2012-10-17",		 	 	 <br />        "Statement": [<br />            {<br />                "Effect": "Allow",<br />                "Principal": {<br />                    "AWS": "arn:aws:iam::{ACCOUNT_ID}:root"<br />                },<br />                "Action": "sts:AssumeRole"<br />            }<br />        ]<br />    }'</pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>aws iam attach-role-policy \<br />    --role-name CrossAccountRole \<br />    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess</pre>En este ejemplo, se utiliza la política de IAM AWS gestionada. [AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) Si lo prefiere, puede utilizar una política más específica. | Administrador de AWS | 

### Preparación del repositorio de conjuntos de permisos
<a name="prepare-the-permission-set-repository"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un repositorio dedicado. | En esta tarea se presupone que está utilizando GitHub. Cree un repositorio dedicado para almacenar el código principal de Terraform y los archivos JSON de la plantilla del conjunto de permisos. | DevOps ingeniero | 
| Preparar el código del conjunto de permisos. | Para obtener información sobre cómo estructurar los siguientes archivos, consulte el [código de ejemplo](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline/tree/main/samples/basic) en el repositorio de soluciones:├── main.tf├── outputs.tf├── providers.jinja└── templatesCopie el contenido, conserve los valores de `providers.jinja` y haga los ajustes necesarios en los demás archivos. Por ejemplo, agregue archivos de plantillas de conjuntos de permisos a `templates` o fije la versión del módulo `aws-ia/permission-sets/aws` en el archivo `main.tf`. | DevOps ingeniero | 
| Confirmar los cambios. | Confirme e inserte los cambios en el repositorio que creó anteriormente. Guarde el nombre del repositorio y su GitHub organización, por ejemplo,`myorg/aws-ps-pipeline`. | DevOps ingeniero | 

### Preparación del código de implementación
<a name="prepare-the-deployment-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargar el contenido. | Descargue (clone) el contenido del [repositorio](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline) de soluciones. | DevOps ingeniero | 
| Completar las variables. | Cree un archivo `terraform.tfvars` y agregue las siguientes variables necesarias:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>repository_name                 = "myorg/aws-ps-pipeline"<br />branch_name                     = "main"<br />vcs_provider                    = "github"<br />account_lifecycle_events_source = "CT"</pre>Para obtener información sobre opciones de variables adicionales, consulta el archivo [variables.tf](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline/blob/main/variables.tf) en el repositorio de este patrón. GitHub  | DevOps ingeniero | 
| Ajustar la configuración del backend de Terraform. | En el archivo `backend.tf`, sustituya los marcadores de posición por sus propios valores. Use el AWS Control Tower inicio Región de AWS y proporcione los nombres del bucket de Amazon S3 y la tabla de DynamoDB creados anteriormente.<pre>terraform {<br />  required_version = ">=1.6"<br />  backend "s3" {<br />    region         = "{region}"<br />    bucket         = "{bucket_name}"<br />    key            = "terraform.tfstate"<br />    dynamodb_table = "{table_name}"<br />    encrypt        = "true"<br />  }<br />}</pre>Si lo prefiere, puede usar su propia configuración de backend de Terraform. | DevOps ingeniero | 
| Ajustar la configuración del proveedor de Terraform. | En el archivo `providers.tf`, sustituya los marcadores de posición por su propia información. Utilice la región de AWS Control Tower origen y proporcione el ARN del rol de IAM multicuenta creado anteriormente para el proveedor. `event-source-account`<pre>provider "aws" {<br />  region = "{region}"<br />}<br /><br />provider "aws" {<br />  alias  = "event-source-account"<br />  region = "{region}"<br />  assume_role {<br />    role_arn = "{role_arn}"<br />  }<br />}<br /></pre> | DevOps ingeniero | 

### Implementación manual de la solución
<a name="deploy-the-solution-manually"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seleccione el Cuenta de AWS. | Le recomendamos implementar la solución en la cuenta de administrador delegado de IAM Identity Center. Sin embargo, también puede implementarlo en la cuenta AWS Organizations de administración.Para iniciar sesión en la cuenta seleccionada en la misma región que la instancia de IAM Identity Center, utilice la AWS CLI. Asegúrese de que el rol de IAM que está utilizando tiene permiso para asumir el rol que se especificó para el proveedor `event-source-account` en los pasos anteriores. Además, este rol debe tener acceso a los AWS recursos que se utilizan en la configuración del backend de Terraform. | Administrador de AWS | 
| Ejecutar Terraform manualmente. | Para inicializar, planificar y aplicar las configuraciones, ejecute los siguientes comandos de Terraform en el orden que aparecen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html) | DevOps ingeniero | 
| Compruebe los resultados de la implementación. | En la cuenta de administrador delegado de IAM Identity Center, compruebe que se haya creado la canalización de `aws-ps-pipeline`. Compruebe también que haya una AWS CodeConnections conexión con el estado **Pendiente**. | AWS DevOps | 
| Finalice la CodeConnections configuración. | Para finalizar la CodeConnections configuración, siga los siguientes pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)La canalización ahora debería tener acceso al repositorio de conjuntos de permisos.Para obtener instrucciones detalladas, consulte [Update a pending connection](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html) en la documentación de la consola de herramientas para desarrolladores.  | AWS DevOps | 

### Elección de un flujo de ejecución de canalizaciones para probar la solución
<a name="choose-a-pipeline-execution-flow-to-test-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute la canalización mediante AWS Control Tower las actualizaciones de AFT. | Una vez creada o modificada una cuenta mediante AWS Control Tower AFT (según el tipo de eventos del ciclo de vida que elijas), se inicia la canalización. | Administrador de AWS | 
| Cambiar el código para ejecutar la canalización. | Tras cambiar el código y confirmarlo en la rama `main`, se inicia la canalización. | AWS DevOps | 
| Ejecutar la canalización manualmente. | Para iniciar la canalización manualmente, utilice la función [de cambio de versión](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-rerun-manually.html) de AWS CodePipeline. | AWS DevOps | 

## Resolución de problemas
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Acceso denegado | Compruebe que cuente con los permisos necesarios para implementar la solución. | 
| CodeConnections problemas | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html) | 
| Problemas de ejecución de las canalizaciones | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html) | 
| Problemas de implementación de 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-permission-sets-dynamically-by-using-terraform.html) | 

## Recursos relacionados
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-resources"></a>

**Servicio de AWS documentación**
+ [AWS IAM Identity Center Guía del usuario](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
+ [Administre Cuentas de AWS con conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) (documentación del IAM Identity Center)

**Otros recursos**
+ [AWS Módulo de conjuntos de permisos](https://registry.terraform.io/modules/aws-ia/permission-sets/aws/latest) (Terraform)

## Información adicional
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-additional"></a>

**Archivo JSON con un ejemplo de conjunto de permisos**

En el siguiente ejemplo se muestra cómo configurar un conjunto de permisos mediante el archivo JSON del repositorio:

```
{
  "Name": "ps-billing", // Permission set identifier
  "Comment": "Sample permission set for billing access", // Comment to document the purpose of the permission set
  "Description": "Billing access in AWS", // Detailed description
  "SessionDuration": "PT4H", // Session duration = 4 hours (ISO 8601 format)
  "ManagedPolicies": [ // List of AWS IAM managed policies
    "arn:aws:iam::aws:policy/job-function/Billing",
    "arn:aws:iam::aws:policy/job-function/SupportUser",
    "arn:aws:iam::aws:policy/AWSSupportAccess",
    "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess"
  ],
  "CustomerPolicies": [], // References to IAM policies previously created
  "CustomPolicy": {}, // Inline IAM policy defined directly in the permission set
  "PermissionBoundary": {  // AWS or customer managed IAM policy to be used as boundary
    "ManagedPolicy": "",
    "CustomerPolicy": ""
  },
  "Assignments": [ // Define the assignment rules
    {
      "all_accounts": true, // Apply to ALL active AWS accounts in organization
      "principal": "G_BILLING_USERS", // Group/user name in Identity Center
      "type": "GROUP", // Can be "GROUP" or "USER"
      "account_id": [], // List of AWS account ID (empty since all_accounts=true)
      "account_ou": [], // List of AWS Organizational Unit IDs with target AWS accounts
      "account_tag": [] // List of tags (key:value) to match AWS Organization accounts tags
    }
  ]
}
```

Para obtener más información, consulte el esquema JSON en la documentación del [módulo AWS Permission Sets](https://registry.terraform.io/modules/aws-ia/permission-sets/aws/latest#json-file-templates) del sitio web de Terraform.

**Consejos**
+ Puede usar los [bloques de importación](https://developer.hashicorp.com/terraform/language/import) de Terraform para importar un conjunto de permisos existente a la solución.
+ Puede usar AFT para implementar la canalización del conjunto de AWS permisos en una cuenta delegada. Para obtener más información, consulte [AFT Blueprints](https://awslabs.github.io/aft-blueprints/index.html).