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
Creado por Andre Cavalcante (AWS) y Mariana Pessoa de Queiroz (AWS)
Resumen
Puede utilizar 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:
Las políticas de autorización se crean, eliminan y actualizan mediante archivos de manifiesto (
scp-management.json
yrcp-management.json
).Trabajas con barreras en lugar de políticas. Las barandillas 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 barandillas en un único 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.json
archivo) 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.
El oleoducto requiere una aprobación manual. El aprobador puede revisar el resumen ejecutivo que Amazon Bedrock ha preparado, lo que le 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 Habilitar un tipo de política.
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.
Limitaciones
No puede usar este patrón para administrar SCPs o RCPs crear fuera de esta canalización de CI/CD. 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.
La cantidad de cuentas y las políticas de cada cuenta están sujetas a las cuotas y los límites de servicio aplicables. OUs AWS Organizations
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
El siguiente diagrama 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
scp-management.json
o en los archivos dercp-management.json
manifiesto de la rama principal del repositorio remoto.El cambio en la
main
rama inicia la canalización. AWS CodePipelineCodePipeline inicia el
Validate-Plan
CodeBuild 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.py
yrcp-policy-processor/main.py
Python para concatenar las barandillas de la carpeta guardrails en una sola política de RCP o SCP. Combina barandas que tienen las mismas, y.Resource
Action
Condition
Se utiliza AWS Identity and Access Management Access Analyzer para validar la política final optimizada. Si hay algún hallazgo, el oleoducto se detiene.
Crea
scps.json
yrcps.json
archiva, que Terraform utiliza para crear recursos.Ejecuta el
terraform plan
comando, que crea un plan de ejecución de Terraform.
(Opcional) El
Validate-Plan
CodeBuild proyecto usa elbedrock-prompt/prompt.py
script para enviar un mensaje a Amazon Bedrock. El mensaje se define en elbedrock-prompt/prompt.txt
archivo. 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.
El responsable de la aprobación de la política 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.
Apply
CodeBuild Este proyecto usa Terraform para aplicar los cambios de RCP y SCP. AWS Organizations
La plantilla IaC asociada a esta arquitectura también incluye los siguientes recursos que respaldan el proceso de gestión de políticas:
Un depósito de Amazon S3 para almacenar los CodePipeline artefactos y los scripts, como
scp-policy-processor/main.py
ybedrock-prompt/prompt.py
Una clave AWS Key Management Service (AWS KMS) que cifra los recursos creados por esta solución
Herramientas
Servicios de AWS
Amazon Bedrock es un servicio de IA totalmente gestionado que permite utilizar muchos modelos básicos de alto rendimiento a través de una API unificada.
AWS CodeBuildes un servicio de compilación totalmente gestionado que le ayuda a compilar el código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación.
AWS CodePipelinele ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar los cambios de software de forma 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 puede crear y administrar 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 le 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
carpeta son los siguientes:
En la
environments
carpeta,environments.json
contiene una lista de entornos. Los entornos son un grupo de objetivos y pueden contener Cuenta de AWS IDs o unidades organizativas (OUs).En la
rcp-management
carpeta:La
guardrails
carpeta contiene las barandillas individuales para su RCPsLa
policies
carpeta contiene a la persona RCPsEl archivo de
rcp-management.json
manifiesto le ayuda a gestionar las barandillas RCP, completas RCPs, y sus objetivos asociados.
En la carpeta:
scp-management
La
guardrails
carpeta contiene las barandillas individuales para su SCPsLa
policies
carpeta contiene a la persona SCPsEl archivo de
scp-management.json
manifiesto le ayuda a gestionar las barandillas SCP, completas SCPs, y sus objetivos asociados.
La
utils
carpeta 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 Prácticas recomendadas para la cuenta de administración.
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 externos que lo AWS CodeConnections admiten. | DevOps ingeniero |
Delegar la administración de políticas. | Delega la administración de AWS Organizations las políticas en la cuenta de miembro en la que vayas 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 un ejemplo de política de delegación basada en recursos en la sección de información adicional de este patrón. | Administrador de AWS |
(Opcional) Habilite el modelo básico. | 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 Añadir o eliminar el acceso a los modelos de bases Amazon Bedrock. | AWS general |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clonar el repositorio. | Ingresa el siguiente comando para clonar el organizations-policy-pipeline
| DevOps ingeniero |
Defina su método de despliegue. |
| DevOps ingeniero |
Implemente la canalización. |
| DevOps ingeniero, Terraform |
Conecte el repositorio remoto. | En el paso anterior, Terraform creó una CodeConnections conexión con el repositorio de terceros. En la consola de AWS Developer Tools | AWS DevOps |
Suscríbase al tema de Amazon SNS. | Terraform creó un tema de Amazon SNS. Suscriba un punto final al tema y confirme la suscripción para que los aprobadores reciban notificaciones sobre las acciones de aprobación pendientes que se estén tramitando. Para obtener instrucciones, consulte el tema Creación de una suscripción a Amazon SNS. | AWS general |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Rellene el repositorio remoto. | Desde el repositorio clonado, copia el contenido de la | DevOps ingeniero |
Defina sus entornos. |
| DevOps ingeniero |
Defina sus barandillas. |
| DevOps ingeniero |
Defina sus políticas. |
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configure los archivos de manifiesto. |
| DevOps ingeniero |
Iniciar la canalización. | Confirme y envíe los cambios a la rama del repositorio remoto que haya definido en el | DevOps ingeniero |
Apruebe los cambios. | Cuando se complete el
| AWS general, aprobador de políticas |
Valide la implementación. |
| AWS general |
Solución de problemas
Problema | Solución |
---|---|
Manifieste los errores del archivo en la | En el resultado 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
|
Hallazgos del IAM Access Analyzer en la | En el resultado del proceso, aparece el mensaje «Hallazgos 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 de la política. Este patrón utiliza IAM Access Analyzer para validar la política final. Haga lo siguiente:
|
Recursos relacionados
Referencia de elementos de política de JSON (documentación de IAM)
Políticas de control de recursos (AWS Organizations documentación)
Políticas de control de servicios (AWS Organizations documentación)
Añadir o eliminar el acceso a los modelos de cimentación de Amazon Bedrock (documentación de Amazon Bedrock)
Apruebe o rechace una acción de aprobación en CodePipeline (documentación) CodePipeline
Información adicional
Ejemplo de política de delegación basada en recursos
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, <MEMBER_ACCOUNT_ID>
sustitúyalo por el ID de la cuenta en la que vas a implementar el proceso 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 usted defina en elenvironments.json
archivo. Introduzca 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>
esscp
orrcp
<POLICY_NAME>
es el nombre del SCP o del RCP<ENV_ID>
es el ID del entorno que ha definido en el archivoenvironments.json
create-environments.py
— Este script crea un archivo environments.json basado en el entorno actual SCPs y RCPs en el suyo. Excluye las políticas implementadas a través de. AWS Control Tower Introduzca el siguiente comando para ejecutar este script, donde<POLICY_TYPE>
estáscp
orcp
: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 AWS Organizations relacionada con las políticas. Usted define los entornos para registrarlos enenvironments.json
el archivo de entrada. Introduzca el siguiente comando para ejecutar este script, donde<POLICY_TYPE>
estáscp
orcp
:python verify-policies-capacity.py --policy-type <POLICY_TYPE>