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 AWS Organizations las políticas como código mediante AWS CodePipeline Amazon Bedrock
Andre Cavalcante y Mariana Pessoa de Queiroz, Amazon Web Services
Resumen
Puede usar las políticas de autorización AWS Organizations para configurar y administrar de forma centralizada el acceso de los principales y los recursos de las cuentas de sus miembros. Las políticas de control de servicios (SCPs) definen los permisos máximos disponibles para los roles y usuarios AWS Identity and Access Management (IAM) de su organización. Las políticas de control de recursos (RCPs) definen los permisos máximos disponibles para los recursos de su organización.
Este patrón le ayuda a gestionar SCPs la infraestructura RCPs como código (IaC) que se despliega mediante un proceso de integración y despliegue continuos (CI/CD). Al utilizar Terraform AWS CloudFormation o Hashicorp para gestionar estas políticas, puede reducir la carga asociada a la creación y el mantenimiento de varias políticas de autorización.
Este patrón incluye las siguientes características:
Puede crear, eliminar y actualizar las políticas de autorización mediante archivos de manifiesto (
scp-management.jsonyrcp-management.json).Trabaja con barreras de protección en lugar de políticas. Las barreras de protección y sus objetivos se definen en los archivos de manifiesto.
La canalización, que utiliza AWS CodeBuild y AWS CodePipeline, fusiona y optimiza las barreras de protección de los archivos de manifiesto. Para cada declaración del archivo de manifiesto, la canalización combina las barreras de protección en una única SCP o RCP y, a continuación, las aplica a los objetivos definidos.
AWS Organizations aplica las políticas a sus objetivos. Un objetivo puede ser una Cuenta de AWS unidad organizativa (OU), un entorno (que es un grupo de cuentas o lo OUs que definas en el
environments.jsonarchivo) o un grupo de cuentas que comparten una AWS etiqueta.Amazon Bedrock lee los registros de la canalización y resume todos los cambios de política.
La canalización requiere una aprobación manual. El aprobador puede revisar el resumen ejecutivo que Amazon Bedrock ha preparado, lo que lo ayuda a entender los cambios.
Requisitos previos y limitaciones
Requisitos previos
Múltiples Cuentas de AWS que se administran como una organización en AWS Organizations. A fin de obtener más información, consulte Creación de una organización.
Las funciones SCP y RCP están habilitadas en. AWS Organizations Para obtener más información, consulte Enabling a policy type.
La versión 1.9.8 o posterior de Terraform instalada
. Si no va a implementar esta solución a través de una canalización de Terraform, el archivo de estado de Terraform debe almacenarse
en un depósito de Amazon Simple Storage Service (Amazon S3) en el Cuenta de AWS lugar donde vaya a implementar la canalización de administración de políticas. La versión 3.13.3 o posterior de Python instalada
.
Limitaciones
No puede usar este patrón para administrar SCPs o RCPs crear fuera de esta CI/CD canalización. Sin embargo, puede recrear las políticas existentes a través de la canalización. Para obtener más información, consulte Migración de las políticas existentes a la canalización en la sección Información adicional de este patrón.
El número de cuentas y las políticas de cada cuenta están sujetos a las cuotas y los límites de servicio aplicables AWS Organizations. OUs
Este patrón no se puede utilizar para configurar políticas de administración AWS Organizations, como las políticas de respaldo, las políticas de etiquetas, las políticas de aplicaciones de chat o las políticas declarativas.
Arquitectura
En el siguiente diagrama se muestra el flujo de trabajo del proceso de administración de políticas y sus recursos asociados.

En el diagrama, se muestra el siguiente flujo de trabajo:
Un usuario confirma los cambios en los archivos de manifiesto
scp-management.jsonorcp-management.jsonde la ramificación principal del repositorio remoto.El cambio en la
mainsucursal inicia la entrada de la canalización. AWS CodePipelineCodePipeline inicia el
Validate-PlanCodeBuild proyecto. Este proyecto utiliza un script de Python en el repositorio remoto para validar las políticas y los archivos de manifiesto de políticas. Este CodeBuild proyecto hace lo siguiente:Comprueba que los archivos de manifiesto de SCP y RCP contienen una declaración única IDs ()
Sid.Utiliza los scripts
scp-policy-processor/main.pyyrcp-policy-processor/main.pyde Python para concatenar las barreras de protección de la carpeta de barreras de protección en una sola política RCP o SCP. Combina barreras de protección que tienen los mismos valores deResource,ActionyCondition.Se utiliza AWS Identity and Access Management Access Analyzer para validar la política final optimizada. Si hay algún resultado, la canalización se detiene.
Crea archivos
scps.jsonyrcps.json, que Terraform utiliza para crear recursos.Ejecuta el comando
terraform plan, que crea un plan de ejecución de Terraform.
(Opcional) El
Validate-PlanCodeBuild proyecto usa elbedrock-prompt/prompt.pyscript para enviar un mensaje a Amazon Bedrock. La petición se define en el archivobedrock-prompt/prompt.txt. Amazon Bedrock utiliza Anthropic Claude Sonnet 3.5 para generar un resumen de los cambios propuestos mediante el análisis de los registros de Terraform y Python.CodePipeline utiliza un tema del Amazon Simple Notification Service (Amazon SNS) para notificar a los aprobadores que los cambios deben revisarse. Si Amazon Bedrock generó un resumen de cambios, la notificación incluye este resumen.
Un aprobador de políticas aprueba la acción en. CodePipeline Si Amazon Bedrock generó un resumen de cambios, el aprobador puede revisarlo CodePipeline antes de aprobarlo.
CodePipeline inicia el proyecto.
ApplyCodeBuild Este proyecto usa Terraform para aplicar los cambios de RCP y SCP. AWS Organizations
La plantilla de IaC asociada a esta arquitectura también implementa los siguientes recursos que respaldan la canalización de administración de políticas:
Un depósito de Amazon S3 para almacenar los CodePipeline artefactos y los scripts, como
scp-policy-processor/main.pybedrock-prompt/prompt.pyUna clave AWS Key Management Service (AWS KMS) que cifra los recursos creados por esta solución
Tools (Herramientas)
Servicios de AWS
Amazon Bedrock es un servicio de IA totalmente administrado que pone a disposición de los usuarios muchos modelos fundacionales de alto rendimiento a través de una API unificada.
AWS CodeBuild 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 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 Organizationses un servicio de administración de cuentas que le ayuda a consolidar múltiples cuentas Cuentas de AWS en una organización que usted crea y administra de forma centralizada.
AWS SDK para Python (Boto3)
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) 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
HashiCorp Terraform
es una herramienta de IaC que le ayuda a usar código para aprovisionar y administrar la infraestructura y los recursos de la nube.
Repositorio de código
El código de este patrón está disponible en el organizations-policy-pipelinesample-repository son los siguientes:
En la carpeta
environments,environments.jsoncontiene una lista de entornos. Los entornos son un grupo de objetivos y pueden contener Cuenta de AWS IDs o unidades organizativas (OUs).En la carpeta
rcp-management:La
guardrailscarpeta contiene las barandillas individuales para su RCPsLa
policiescarpeta contiene a la persona RCPsEl archivo de
rcp-management.jsonmanifiesto le ayuda a gestionar las barandillas RCP, completas RCPs, y sus objetivos asociados.
En la carpeta
scp-management:La
guardrailscarpeta contiene las barandillas individuales de su SCPsLa
policiescarpeta contiene a la persona SCPsEl archivo de
scp-management.jsonmanifiesto le ayuda a gestionar las barandillas SCP, completas SCPs, y sus objetivos asociados.
La
utilscarpeta contiene scripts que pueden ayudarte a migrar los actuales SCPs y a gestionarlos a RCPs lo largo del proceso. Para obtener más información, consulte la sección Información adicional de este patrón.
Prácticas recomendadas
Antes de configurar la canalización, te recomendamos que compruebes que no has alcanzado los límites de tus AWS Organizations cuotas.
Le recomendamos que utilice la cuenta AWS Organizations de administración solo para las tareas que se deben realizar en esa cuenta. Para obtener más información, consulte Best practices for the management account.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Creación de un repositorio. | Cree un repositorio desde el que su equipo de operaciones de seguridad administre las políticas. Utilice uno de los proveedores de repositorios de terceros AWS CodeConnections compatibles. | DevOps ingeniero |
Delegar la administración de políticas. | Delegue la administración de AWS Organizations las políticas a la cuenta de miembro en la que vaya a implementar la canalización. Para obtener instrucciones, consulte Crear una política de delegación basada en recursos con. AWS Organizations Para ver un ejemplo de política, consulte Política de delegación basada en recursos de ejemplo en la sección Información adicional de este patrón. | Administrador de AWS |
(Opcional) Habilitar el modelo fundacional. | Si desea generar resúmenes de los cambios en la política, habilite el acceso al modelo básico Anthropic Claude 3.5 Sonnet en Amazon Bedrock, Cuenta de AWS donde vaya a implementar la canalización. Para obtener instrucciones, consulte Add or remove access to Amazon Bedrock foundation models. | AWS general |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clonar el repositorio. | Introduzca el siguiente comando para clonar el repositorio desde: organizations-policy-pipeline
| DevOps ingeniero |
Definir el método de implementación. |
| DevOps ingeniero |
Implemente la canalización. |
| DevOps ingeniero, Terraform |
Conectar el repositorio remoto. | En el paso anterior, Terraform creó una CodeConnections conexión con el repositorio de terceros. En la consola de herramientas para desarrolladores de AWS | AWS DevOps |
Suscríbase al tema de Amazon SNS. | Terraform creó un tema de Amazon SNS. Suscriba un punto de conexión al tema y confirme la suscripción para que los aprobadores reciban notificaciones sobre las acciones de aprobación pendientes en la canalización. Para obtener instrucciones, consulte Creating a subscription to an Amazon SNS topic. | AWS general |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Completar el repositorio remoto. | Desde el repositorio clonado, copie el contenido de la carpeta | DevOps ingeniero |
Definir sus entornos. |
| DevOps ingeniero |
Definir sus barreras de protección. |
| DevOps ingeniero |
Definir sus políticas. |
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configurar los archivos de manifiesto. |
| DevOps ingeniero |
Iniciar la canalización. | Confirme y envíe los cambios a la ramificación del repositorio remoto que definió en el archivo | DevOps ingeniero |
Aprobar los cambios. | Cuando se complete el
| AWS general, aprobador de políticas |
Valide la implementación. |
| AWS general |
Resolución de problemas
| Problema | Solución |
|---|---|
Errores del archivo de manifiesto en la fase | En la salida de la canalización, aparece el mensaje “Errores de canalización en la fase de validación y planificación de los archivos de manifiesto” si hay algún error en los archivos
|
Resultados del analizador de acceso de IAM en la fase | En la salida de la canalización, aparece el mensaje “Resultados en el analizador de acceso de IAM durante la fase de validación y planificación” si hay algún error en las definiciones de las políticas o las barreras de protección. Este patrón utiliza el analizador de acceso de IAM para validar la política final. Haga lo siguiente:
|
Recursos relacionados
Referencia de los elementos de la política de JSON de IAM (documentación de IAM)
Políticas de control de recursos (AWS Organizations documentación)
Políticas de control de servicios (AWS Organizations documentación)
Add or remove access to Amazon Bedrock foundation models (documentación de Amazon Bedrock)
Apruebe o rechace una acción de aprobación en CodePipeline (CodePipeline documentación)
Información adicional
Política de delegación basada en recursos de ejemplo
El siguiente es un ejemplo de política de delegación basada en recursos para. AWS Organizations Permite que la cuenta de administración delegada administre SCPs y RCPs para la organización. En el siguiente ejemplo de política, sustituya <MEMBER_ACCOUNT_ID> por el ID de la cuenta en la que va a implementar la canalización de administración de políticas.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegationToAudit", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<MEMBER_ACCOUNT_ID>:root" }, "Action": [ "organizations:ListTargetsForPolicy", "organizations:CreatePolicy", "organizations:DeletePolicy", "organizations:AttachPolicy", "organizations:DetachPolicy", "organizations:DisablePolicyType", "organizations:EnablePolicyType", "organizations:UpdatePolicy", "organizations:DescribeEffectivePolicy", "organizations:DescribePolicy", "organizations:DescribeResourcePolicy" ], "Resource": "*" } ] }
Migración de las políticas existentes a la canalización
Si ya existe SCPs o RCPs si desea migrar y administrar a través de esta canalización, puede usar los scripts de Python en la sample-repository/utils carpeta del repositorio de código. Estos scripts incluyen:
check-if-scp-exists-in-env.py: este script comprueba si una política específica se aplica a algún objetivo de un entorno específico, que define en el archivoenvironments.json. Ingrese el siguiente comando para ejecutar este script:python3 check-if-scp-exists-in-env.py \ --policy-type <POLICY_TYPE> \ --policy-name <POLICY_NAME> \ --env-id <ENV_ID>Sustituya lo siguiente en este comando:
<POLICY_TYPE>esscporrcp<POLICY_NAME>es el nombre de la SCP o la RCP.<ENV_ID>es el ID del entorno que definió en el archivoenvironments.json.
create-environments.py— Este script crea un archivo environments.json basado en el entorno actual SCPs y RCPs en su entorno. Excluye las políticas implementadas a través de. AWS Control Tower Ingrese el siguiente comando para ejecutar este script, donde<POLICY_TYPE>esscporcp:python create-environments.py --policy-type <POLICY_TYPE>verify-policies-capacity.py— Este script comprueba cada entorno que defina para determinar cuánta capacidad queda para cada cuota relacionada con las AWS Organizations políticas. Defina los entornos para comprobarlos en el archivoenvironments.json. Ingrese el siguiente comando para ejecutar este script, donde<POLICY_TYPE>esscporcp:python verify-policies-capacity.py --policy-type <POLICY_TYPE>