Gestione los conjuntos de permisos del AWS IAM Identity Center como código mediante AWS CodePipeline - 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.

Gestione los conjuntos de permisos del AWS IAM Identity Center como código mediante AWS CodePipeline

Creado por Andre Cavalcante (AWS) y Claison Amorim (AWS)

Repositorio de código: -pipeline aws-iam-identity-center

Entorno: producción

Tecnologías: seguridad, identidad, cumplimiento; DevOps

Servicios de AWS: AWS CodeBuild; AWS CodeCommit CodePipeline; AWS IAM Identity Center

Resumen

AWS IAM Identity Center (sucesor de AWS Single Sign-On) le ayuda a administrar de forma centralizada el acceso de inicio de sesión único (SSO) a todas las cuentas y aplicaciones 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. IAM Identity Center ofrece una experiencia de administración unificada para definir, personalizar y asignar un acceso detallado a su entorno de AWS mediante conjuntos de permisos. Los conjuntos de permisos se aplican a los usuarios y grupos federados de su almacén de identidades de AWS IAM Identity Center o de su IdP externo.

Este patrón le ayuda a administrar los conjuntos de permisos del 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 asignaciones de conjuntos de permisos de destino a cuentas de AWS, unidades organizativas (OU) o la raíz de la organización.

Para gestionar los permisos y las asignaciones del IAM Identity Center como código, esta solución implementa una canalización de integración y entrega continuas (CI/CD) que utiliza AWS, AWS y CodeCommit AWS. CodeBuild CodePipeline Usted administra los conjuntos de permisos y las asignaciones en plantillas JSON que almacena en el repositorio. CodeCommit 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 función de AWS Lambda. La función de Lambda inicia la canalización de CI/CD que actualiza los conjuntos de permisos y las asignaciones en IAM Identity Center.

Requisitos previos y limitaciones

Requisitos previos 

  • Un entorno de varias cuentas gestionado como una organización en AWS Organizations. A fin de obtener más información, consulte Creación de una organización.

  • IAM Identity Center, habilitado y configurado con una fuente de identidad. Para obtener más información, consulte Introducción en la documentación de IAM Identity Center.

  • Una cuenta de miembro que está registrada como administrador delegado del IAM Identity Center. Para obtener instrucciones, consulte Registrar una cuenta de miembro en la documentación del IAM Identity Center.

  • Permisos para implementar CloudFormation pilas de AWS 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 Controlar el acceso en la documentación. CloudFormation

  • Un bucket de Amazon Simple Storage Service (Amazon S3) en el administrador delegado del Identity Center para cargar el código del artefacto. Para ver instrucciones, consulte Crear un bucket.

  • El ID de la cuenta de gestión de la organización. Para obtener instrucciones, consulte Encontrar el ID de su cuenta de AWS.

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, los ID de asignación y los tipos e ID de entidad principal del IAM Identity Center no se pueden modificar después de la implementación.

  • Este patrón le ayuda a crear y administrar permisos personalizados. No puede usar este patrón para administrar o asignar permisos predefinidos.

  • Este patrón no se puede usar para administrar un conjunto de permisos para la cuenta de administración de la organización.

Arquitectura

Pila de tecnología

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • AWS Identity Center

  • AWS Lambda

  • AWS Organizations

Arquitectura de destino

Uso de la canalización de CI/CD y el CodeCommit repositorio de AWS para administrar los conjuntos de permisos en AWS IAM Identity Center.

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

  1. Un usuario realiza uno de los siguientes cambios:

    1. Realiza uno o más cambios en el repositorio CodeCommit

    2. Modifica las cuentas de la unidad organizativa (OU) de AWS Organizations

  2. Si el usuario ha realizado un cambio en el CodeCommit repositorio, la CodeChange EventBridge regla detecta el cambio e inicia una función Lambda en la cuenta de administrador delegado de IAM Identity Center. La regla no reacciona a los cambios en determinados archivos del repositorio, como el archivo README.md.

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

  3. La función Lambda iniciada inicia la canalización de CI/CD. CodePipeline

  4. CodePipeline inicia el proyecto. CodebuildTemplateValidation CodeBuild

  5. El CodebuildTemplateValidation CodeBuild proyecto utiliza un script de Python en el CodeCommit repositorio para validar las plantillas del conjunto de permisos. CodeBuild valida lo siguiente:

    • Los nombres de conjunto de permisos son únicos.

    • Los ID de la declaración de asignación (Sid) son únicos.

    • 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 recurso de Amazon (ARN) de las políticas administradas son válidos.

  6. El CodebuildPermissionSet CodeBuild proyecto utiliza AWS SDK for 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.

  7. El CodebuildAssignments CodeBuild proyecto utiliza Terraform para eliminar, crear o actualizar las asignaciones en el Centro de Identidad de IAM. Los archivos de estado del backend de Terraform se almacenan en un bucket de S3 en la misma cuenta.

  8. CodeBuild asume una función de lookup IAM en la cuenta de administración de la organización. Llama a las API de las organizaciones y de identitystore para enumerar los recursos necesarios para conceder o revocar permisos.

  9. CodeBuild actualiza los conjuntos de permisos y las asignaciones en el Centro de identidades de IAM.

Automatizar y escalar

Como todas las cuentas nuevas en un entorno de varias cuentas se trasladan a una unidad organizativa específica de AWS Organizations, esta solución se ejecuta automáticamente y concede los conjuntos de permisos necesarios a todas las cuentas que especifique 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.

Herramientas

Servicios de AWS

  • AWS le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.

  • AWS CodeBuild es un servicio de compilación totalmente gestionado que le ayuda a compilar código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación. 

  • 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.

  • AWS le CodePipeline ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar cambios de software de forma continua.

  • Amazon EventBridge 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, las funciones de Lambda de AWS, los puntos de conexión de invocación HTTP que utilizan destinos de API o los buses de eventos de otras cuentas de AWS.

  • AWS IAM Identity Center le ayuda a gestionar de forma centralizada el acceso de inicio de sesión único (SSO) a todas sus cuentas y aplicaciones en la nube de AWS.

  • AWS Organizations es un servicio de administración de cuentas que le permite agrupar varias cuentas de AWS en una organización que usted crea y administra de manera centralizada.

  • AWS SDK para Python (Boto3) es un kit de desarrollo de software que permite integrar su aplicación, biblioteca o script de Python con los servicios de AWS.

  • 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.

Repositorio de código

El código de este patrón está disponible en el repositorio 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 CloudFormation plantillas de AWS para implementar la canalización de CI/CD y los recursos de AWS en las cuentas de destino.

Prácticas recomendadas

  • 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 deben ser los permisos, a qué cuentas o unidades organizativas debe aplicarse el conjunto de permisos y qué entidades principales (usuarios o grupos) del IAM Identity Center deberían verse afectados por el conjunto de permisos. Los nombres de los conjuntos de permisos, los ID de asociación y los tipos de entidad principal del IAM Identity Center no se pueden modificar tras la implementación.

  • 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 Otorgar privilegio mínimo y Prácticas recomendadas de seguridad en la documentación de IAM.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

En un shell de bash, ingrese el siguiente comando: Esto clona el repositorio aws-iam-identity-center-pipeline desde. GitHub

git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git
DevOps ingeniero

Defina los conjuntos de permisos.

  1. En el repositorio clonado, vaya a la carpeta templates/permissionsets y, a continuación, abra una de las plantillas disponibles.

  2. En el parámetro Name, especifique un nombre para el conjunto de permisos. Este valor debe ser único y no se puede cambiar después de la implementación.

  3. En el parámetro Description, describa brevemente el conjunto de permisos, como por ejemplo su caso de uso.

  4. En el parámetro SessionDuration, especifique el tiempo durante el que un usuario puede iniciar sesión en una cuenta de AWS. Utilice el formato de duración ISO-8601 (Wikipedia), por ejemplo, como PT4H durante 4 horas. Si no se define ningún valor, el valor predeterminado en IAM Identity Center es de 1 hora.

  5. Personalice las políticas del conjunto de permisos. Todos los parámetros siguientes son opcionales y se pueden modificar después de la implementación. Debe usar al menos uno de los parámetros para definir las políticas del conjunto de permisos:

    • En el ManagedPolicies parámetro, introduzca los ARN de cualquier política administrada de AWS que desee asignar.

    • En el parámetro CustomerManagedPolicies, introduzca los nombres de cualquier política administrada por el cliente que desee asignar. No utilice el ARN.

    • En el parámetro PermissionBoundary, haga lo siguiente para asignar un límite de permiso:

      • Si utiliza una política administrada de AWS como límite de permisos, en PolicyType introduzca AWS, y en Policy introduzca el ARN de la política.

      • Si utiliza una política administrada por el cliente como límite de permisos, en PolicyType, introduzca Customer, y en Policy, introduzca el nombre de la política. No utilice el ARN.

    • En el parámetro CustomPolicy, defina cualquier política personalizada con formato JSON que desee asignar. Para obtener más información acerca de la estructura de la política de JSON, consulte Información general de las políticas de JSON.

  6. Guarde y cierre la plantilla del conjunto de permisos. Le recomendamos que guarde el archivo con un nombre que coincida con el nombre del conjunto de permisos.

  7. Repita este proceso para crear tantos conjuntos de permisos como necesite su organización y elimine las plantillas de muestra que no sean necesarias.

DevOps ingeniero

Defina las asignaciones.

  1. En el repositorio clonado, vaya a la carpeta templates/assignments y, a continuación, abra iam-identitycenter-assigments.json. En este archivo se describe cómo desea asignar los conjuntos de permisos a las cuentas o unidades organizativas de AWS.

  2. En el parámetro SID introduzca un identificador para la asignación. Este valor debe ser único y no se puede modificar después de la implementación.

  3. En el parámetro Target, defina las cuentas u organizaciones a las que desea aplicar el conjunto de permisos. Los valores válidos son los ID de cuenta, los ID de OU, los nombres de OU o root. root asigna el conjunto de permisos a todas las cuentas miembro de la organización, excluyendo la cuenta de administración. Introduzca los valores entre comillas dobles y separe los valores múltiples con comas. Para obtener instrucciones sobre cómo encontrar los identificadores, consulte Visualización de los detalles de una cuenta o Visualización de los detalles de una unidad organizativa.

  4. En el parámetro PrincipalType, introduzca el tipo de entidad principal del IAM Identity Center que se verá afectada por el conjunto de permisos. Los valores válidos son USER o GROUP. Este valor no se puede modificar después de la implementación.

  5. En el parámetro PrincipalID, introduzca el nombre del usuario o grupo del almacén de identidades del IAM Identity Center al que afectará el conjunto de permisos. Este valor no se puede modificar después de la implementación.

  6. En el parámetro PermissionSetName introduzca el nombre del conjunto de permisos que desea asignar.

  7. Repita los pasos del 2 al 6 para crear tantas asignaciones como necesite en este archivo. Normalmente, hay una asignación para cada conjunto de permisos. Elimine cualquier asignación de muestra que no sea necesaria.

  8. Guarde y cierre el archivo iam-identitycenter-assigments.json.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Cargue los archivos en un bucket de S3.

  1. Comprima el repositorio clonado en un archivo .zip.

  2. Inicie sesión en la cuenta de administrador delegado del IAM Identity Center.

  3. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  4. En el panel de navegación situado a la izquierda, elija Buckets.

  5. Seleccione el bucket que desea utilizar para implementar esta solución.

  6. Cargue el archivo .zip en el bucket de destino de S3. Para obtener instrucciones, consulte Carga de objetos.

DevOps ingeniero

Implemente los recursos en la cuenta de administrador delegado del IAM Identity Center.

  1. En la cuenta de administrador delegado del IAM Identity Center, abra la CloudFormation consola en https://console.aws.amazon.com/cloudformation/.

  2. Implemente la plantilla iam-identitycenter-pipeline.yaml. Asigne a la pila un nombre claro y descriptivo y actualice los parámetros según las instrucciones. Para obtener instrucciones, consulte Crear una pila en la CloudFormation documentación.

DevOps ingeniero

Implemente recursos en la cuenta de administración de AWS Organizations.

  1. Inicie sesión en la cuenta administrativa de la organización.

  2. Abra la CloudFormation consola en https://console.aws.amazon.com/cloudformation/.

  3. En la barra de navegación, elija el nombre de la región de AWS que aparece. A continuación, elija la región us-east-1. Esta región es necesaria para que la MoveAccount EventBridge regla pueda detectar los CloudTrail eventos de AWS asociados a los cambios en la organización.

  4. Implemente la plantilla iam-identitycenter-organization. Asigne a la pila un nombre claro y descriptivo y actualice los parámetros según las instrucciones. Para obtener instrucciones, consulte Crear una pila en la CloudFormation documentación.

DevOps ingeniero
TareaDescripciónHabilidades 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 canalización de CI/CD se inicia automáticamente y actualiza los conjuntos de permisos. Por ejemplo, si añade una cuenta a una unidad organizativa especificada en el archivo JSON de asignaciones, a continuación la canalización de CI/CD aplicará el conjunto de permisos a la nueva cuenta.

Si desea modificar los conjuntos de permisos y las asignaciones implementados, actualice los archivos JSON y, a continuación, consérvelos en el CodeCommit repositorio de la cuenta de administrador delegado del IAM Identity Center. Para obtener instrucciones, consulte Crear una confirmación en la CodeCommit documentación.

Tenga en cuenta lo siguiente cuando utilice la canalización de CI/CD para gestionar conjuntos de permisos y asociaciones implementados anteriormente:

  • Si cambia el nombre de un conjunto de permisos, la canalización de CI/CD elimina el conjunto de permisos original y crea uno nuevo.

  • Esta canalización administra solo los conjuntos de permisos que tienen la etiqueta SSOPipeline:true.

  • Puede tener varios conjuntos de permisos y plantillas de asignación en la misma carpeta del repositorio.

  • Si elimina una plantilla, la canalización eliminará la asignación o el conjunto de permisos.

  • Si elimina un bloque JSON de una asignación completa, la canalización eliminará la asignación del IAM Identity Center.

  • No puede eliminar un conjunto de permisos asignado a una cuenta de AWS. En primer lugar, debe anular la asignación del conjunto de permisos.

DevOps ingeniero

Resolución de problemas

ProblemaSolució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 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.

  1. En CodeBuild, consulte los detalles de la compilación.

  2. En el registro de compilación, busque el error de validación que proporciona más información sobre la causa del error de compilación.

  3. Actualice el conjunto de permisos o las plantillas de asignación y, a continuación, consérvelos en el repositorio.

  4. La canalización de CI/CD reinicia el proyecto. CodeBuild Supervise el estado para confirmar que se ha resuelto el error de validación.

Recursos relacionados