Uso de políticas basadas en identidad (políticas de IAM) para AWS Control Tower - AWS Control Tower

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.

Uso de políticas basadas en identidad (políticas de IAM) para AWS Control Tower

En este tema se proporcionan ejemplos de políticas basadas en la identidad que demuestran cómo un administrador de cuentas puede adjuntar políticas de permisos a las identidades de IAM (es decir, usuarios, grupos y funciones) y, de ese modo, conceder permisos para realizar operaciones en los recursos de la Torre de Control Tower de AWS.

importante

Le recomendamos que consulte primero los temas introductorios en los que se explican los conceptos básicos y las opciones disponibles para administrar el acceso a los recursos de la Torre de Control de AWS. Para obtener más información, consulte Información general sobre la administración de los permisos de acceso a los recursos de la Torre de Control de AWS.

AWS ControlTowerAdmin rol

Esta función proporciona a AWS Control Tower acceso a la infraestructura fundamental para el mantenimiento de la landing zone. El AWS ControlTowerAdmin rol requiere una política administrada adjunta y una política de confianza del rol para el rol de IAM. Una política de confianza de roles es una política basada en los recursos que especifica qué directores pueden asumir la función.

A continuación, se muestra un fragmento de ejemplo de esta política de confianza de roles:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "controltower.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Para crear este rol desde la AWS CLI y colocarlo en un archivo llamadotrust.json, este es un ejemplo de comando CLI:

aws iam create-role --role-name AWSControlTowerAdmin --path /service-role/ --assume-role-policy-document file://trust.json

Esta función requiere dos políticas de IAM.

  1. Una política en línea, por ejemplo:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeAvailabilityZones", "Resource": "*" } ] }
  2. La política gestionada que sigue, que es laAWS ControlTowerServiceRolePolicy.

AWS ControlTowerServiceRolePolicy

AWS ControlTowerServiceRolePolicySe trata de una política AWS administrada que define los permisos para crear y administrar los recursos de la Torre de Control de AWS, como AWS CloudFormation conjuntos de pilas e instancias apiladas, archivos de AWS CloudTrail registro, un agregador de configuraciones para la Torre de Control de AWS, así como AWS Organizations cuentas y unidades organizativas (OU) que se rigen por la Torre de Control de AWS.

Las actualizaciones de esta política gestionada se resumen en la tabla. Políticas administradas para AWS Control Tower

Para obtener más información, consulte AWSControlTowerServiceRolePolicyla Guía de referencia de políticas administradas de AWS.

Nombre de la política administrada: AWS ControlTowerServiceRolePolicy

El artefacto JSON para AWS ControlTowerServiceRolePolicy es el siguiente:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:CreateStackInstances", "cloudformation:CreateStackSet", "cloudformation:DeleteStack", "cloudformation:DeleteStackInstances", "cloudformation:DeleteStackSet", "cloudformation:DescribeStackInstance", "cloudformation:DescribeStacks", "cloudformation:DescribeStackSet", "cloudformation:DescribeStackSetOperation", "cloudformation:ListStackInstances", "cloudformation:UpdateStack", "cloudformation:UpdateStackInstances", "cloudformation:UpdateStackSet" ], "Resource": [ "arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role" ] }, { "Effect": "Allow", "Action": [ "account:EnableRegion", "account:ListRegions", "account:GetRegionOptStatus" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:CreateStackInstances", "cloudformation:CreateStackSet", "cloudformation:DeleteStack", "cloudformation:DeleteStackInstances", "cloudformation:DeleteStackSet", "cloudformation:DescribeStackInstance", "cloudformation:DescribeStacks", "cloudformation:DescribeStackSet", "cloudformation:DescribeStackSetOperation", "cloudformation:GetTemplate", "cloudformation:ListStackInstances", "cloudformation:UpdateStack", "cloudformation:UpdateStackInstances", "cloudformation:UpdateStackSet" ], "Resource": [ "arn:aws:cloudformation:*:*:stack/AWSControlTower*/*", "arn:aws:cloudformation:*:*:stack/StackSet-AWSControlTower*/*", "arn:aws:cloudformation:*:*:stackset/AWSControlTower*:*", "arn:aws:cloudformation:*:*:stackset-target/AWSControlTower*/*" ] }, { "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:DeleteTrail", "cloudtrail:GetTrailStatus", "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:UpdateTrail", "cloudtrail:PutEventSelectors", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutRetentionPolicy" ], "Resource": [ "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "arn:aws:cloudtrail:*:*:trail/aws-controltower*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::aws-controltower*/*" ] }, { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSControlTowerExecution", "arn:aws:iam::*:role/AWSControlTowerBlueprintAccess" ] }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "ec2:DescribeAvailabilityZones", "iam:ListRoles", "logs:CreateLogGroup", "logs:DescribeLogGroups", "organizations:CreateAccount", "organizations:DescribeAccount", "organizations:DescribeCreateAccountStatus", "organizations:DescribeOrganization", "organizations:DescribeOrganizationalUnit", "organizations:DescribePolicy", "organizations:ListAccounts", "organizations:ListAccountsForParent", "organizations:ListAWSServiceAccessForOrganization", "organizations:ListChildren", "organizations:ListOrganizationalUnitsForParent", "organizations:ListParents", "organizations:ListPoliciesForTarget", "organizations:ListTargetsForPolicy", "organizations:ListRoots", "organizations:MoveAccount", "servicecatalog:AssociatePrincipalWithPortfolio" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetUser", "iam:ListAttachedRolePolicies", "iam:GetRolePolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/service-role/AWSControlTowerStackSetRole", "arn:aws:iam::*:role/service-role/AWSControlTowerCloudTrailRole", "arn:aws:iam::*:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations" ] }, { "Effect": "Allow", "Action": [ "config:DeleteConfigurationAggregator", "config:PutConfigurationAggregator", "config:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/aws-control-tower": "managed-by-control-tower" } } }, { "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringLike": { "organizations:ServicePrincipal": [ "config.amazonaws.com", "cloudtrail.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "cloudtrail.amazonaws.com" } } } ] }

Política de confianza de roles:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "controltower.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

La política en línea esAWSControlTowerAdminPolicy:

{ "Version": "2012-10-17", "Statement": [ { "Action": "ec2:DescribeAvailabilityZones", "Resource": "*", "Effect": "Allow" } ] }

AWS ControlTowerStackSetRole

AWS CloudFormation asume esta función para implementar conjuntos de pilas en las cuentas creadas por AWS Control Tower. Política insertada:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSControlTowerExecution" ], "Effect": "Allow" } ] }

Política de confianza

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWS ControlTowerCloudTrailRole

AWS Control Tower CloudTrail lo habilita como práctica recomendada y proporciona esta función a CloudTrail. CloudTrailasume esta función para crear y publicar CloudTrail registros. Política insertada:

{ "Version": "2012-10-17", "Statement": [ { "Action": "logs:CreateLogStream", "Resource": "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "Effect": "Allow" }, { "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "Effect": "Allow" } ] }

Política de confianza

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWSControlTowerBlueprintAccess requisitos de función

AWS Control Tower requiere que cree el AWSControlTowerBlueprintAccess rol en la cuenta de blueprint hub designada, dentro de la misma organización.

Nombre de rol

El nombre de rol debe ser AWSControlTowerBlueprintAccess.

Política de confianza de roles

El rol debe configurarse para confiar en los siguientes principios:

  • El director que usa AWS Control Tower en la cuenta de administración.

  • El AWSControlTowerAdmin rol en la cuenta de administración.

El siguiente ejemplo muestra una política de confianza de privilegios mínimos. Cuando cree su propia política, sustituya el término YourManagementAccountIdpor el ID de cuenta real de su cuenta de administración de AWS Control Tower y sustituya el término YourControlTowerUserRolepor el identificador de la función de IAM de su cuenta de administración.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::YourManagementAccountId:role/service-role/AWSControlTowerAdmin", "arn:aws:iam::YourManagementAccountId:role/YourControlTowerUserRole" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }

Permisos de rol

Debe adjuntar la política gestionada AWSServiceCatalogAdminFullAccessal rol.

AWSServiceRoleForAWSControlTower

Esta función proporciona a AWS Control Tower acceso a la cuenta de Log Archive, la cuenta de auditoría y las cuentas de los miembros para operaciones fundamentales para el mantenimiento de la landing zone, como la notificación de la desviación de recursos.

El AWSServiceRoleForAWSControlTower rol requiere una política administrada adjunta y una política de confianza de roles para el rol de IAM.

Política gestionada para este rol: AWSControlTowerAccountServiceRolePolicy

Política de confianza de roles:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "controltower.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWSControlTowerAccountServiceRolePolicy

Esta política AWS gestionada permite a AWS Control Tower llamar en su nombre a AWS los servicios que proporcionan una configuración de cuentas automatizada y un gobierno centralizado.

La política contiene los permisos mínimos para que la Torre de Control de AWS implemente el reenvío de AWS Security Hub hallazgos para los recursos administrados por los controles de Security Hub que forman parte del estándar administrado por el servicio Security Hub: AWS Control Tower, e impide cambios que restrinjan la capacidad de administrar las cuentas de los clientes. Forma parte de un proceso de detección de AWS Security Hub desviaciones en segundo plano y no lo inicia directamente el cliente.

La política otorga permisos para crear EventBridge reglas de Amazon, específicamente para los controles de Security Hub, en cada cuenta de miembro, y estas reglas deben especificar una exacta EventPattern. Además, una regla solo puede funcionar en las reglas administradas por nuestro director de servicio.

Director de servicio: controltower.amazonaws.com

El artefacto JSON para AWSControlTowerAccountServiceRolePolicy es el siguiente:

{ "Version": "2012-10-17", "Statement": [ { //For creating the managed rule "Sid": "AllowPutRuleOnSpecificSourcesAndDetailTypes", "Effect": "Allow", "Action": "events:PutRule", "Resource": "arn:aws:events:*:*:rule/*ControlTower*", "Condition": { "ForAnyValue:StringEquals": { "events:source": "aws.securityhub" }, "Null": { "events:detail-type": "false" }, "StringEquals": { "events:ManagedBy": "controltower.amazonaws.com", "events:detail-type": "Security Hub Findings - Imported" } } }, // Other operations to manage the managed rule { "Sid": "AllowOtherOperationsOnRulesManagedByControlTower", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:EnableRule", "events:DisableRule", "events:PutTargets", "events:RemoveTargets" ], "Resource": "arn:aws:events:*:*:rule/*ControlTower*", "Condition": { "StringEquals": { "events:ManagedBy": "controltower.amazonaws.com" } } }, // More managed rule permissions { "Sid": "AllowDescribeOperationsOnRulesManagedByControlTower", "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/*ControlTower*" }, // Add permission to publish the security notifications to SNS { "Sid": "AllowControlTowerToPublishSecurityNotifications", "Effect": "Allow", "Action": "sns:publish", "Resource": "arn:aws:sns:*:*:aws-controltower-AggregateSecurityNotifications", "Condition": { "StringEquals": { "aws:PrincipalAccount": "${aws:ResourceAccount}" } } }, // For drift verification { "Sid": "AllowActionsForSecurityHubIntegration", "Effect": "Allow", "Action": [ "securityhub:DescribeStandardsControls", "securityhub:GetEnabledStandards" ], "Resource": "arn:aws:securityhub:*:*:hub/default" } ] }

Las actualizaciones de esta política gestionada se resumen en la tabla,Políticas administradas para AWS Control Tower.