Utilisation de politiques basées sur l'identité (politiques IAM) pour AWS Control Tower - AWS Control Tower

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de politiques basées sur l'identité (politiques IAM) pour AWS Control Tower

Cette rubrique fournit des exemples de politiques basées sur l'identité qui montrent comment un administrateur de compte peut associer des politiques d'autorisations aux identités IAM (c'est-à-dire aux utilisateurs, aux groupes et aux rôles) et ainsi accorder des autorisations pour effectuer des opérations sur les ressources de l'AWS Control Tower.

Important

Nous vous recommandons de consulter d'abord les rubriques d'introduction qui expliquent les concepts de base et les options disponibles pour gérer l'accès aux ressources de votre AWS Control Tower. Pour plus d’informations, consultez Présentation de la gestion des autorisations d'accès à vos ressources AWS Control Tower.

AWS ControlTowerAdmin rôle

Ce rôle permet à AWS Control Tower d'accéder à l'infrastructure essentielle au maintien de la zone d'atterrissage. Le AWS ControlTowerAdmin rôle nécessite une politique gérée attachée et une politique de confiance de rôle pour le rôle IAM. Une politique de confiance dans les rôles est une politique basée sur les ressources, qui spécifie quels principaux peuvent assumer le rôle.

Voici un exemple d'extrait de cette politique de confiance des rôles :

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

Pour créer ce rôle à partir de la AWS CLI et le placer dans un fichier appelétrust.json, voici un exemple de commande CLI :

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

Ce rôle nécessite deux politiques IAM.

  1. Une politique en ligne, par exemple :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeAvailabilityZones", "Resource": "*" } ] }
  2. La politique gérée qui suit, qui est laAWS ControlTowerServiceRolePolicy.

AWS ControlTowerServiceRolePolicy

AWS ControlTowerServiceRolePolicyIl s'agit d'une politique AWS gérée qui définit les autorisations pour créer et gérer les ressources de la tour de contrôle AWS, telles que les AWS CloudFormation stacksets et les instances de pile, les fichiers AWS CloudTrail journaux, un agrégateur de configuration pour AWS Control Tower, ainsi que les AWS Organizations comptes et les unités organisationnelles (UO) régis par AWS Control Tower.

Les mises à jour de cette politique gérée sont résumées dans le tableauPolitiques gérées pour AWS Control Tower.

Pour plus d'informations, consultez AWSControlTowerServiceRolePolicyle guide de référence des politiques gérées par AWS.

Nom de la politique gérée : AWS ControlTowerServiceRolePolicy

L'artefact JSON pour AWS ControlTowerServiceRolePolicy est le suivant :

{ "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" } } } ] }

Politique de confiance dans les rôles :

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

La politique en ligne est AWSControlTowerAdminPolicy la suivante :

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

AWS ControlTowerStackSetRole

AWS CloudFormation assume ce rôle pour déployer des ensembles de piles dans les comptes créés par AWS Control Tower. Stratégie en ligne :

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

Politique d’approbation

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

AWS ControlTowerCloudTrailRole

AWS Control Tower l'autorise CloudTrail en tant que bonne pratique et fournit ce rôle à CloudTrail. CloudTrailassume ce rôle pour créer et publier CloudTrail des journaux. Stratégie en ligne :

{ "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" } ] }

Politique d’approbation

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

AWSControlTowerBlueprintAccess exigences relatives aux rôles

AWS Control Tower vous demande de créer le AWSControlTowerBlueprintAccess rôle dans le compte Blueprint Hub désigné, au sein de la même organisation.

Nom de rôle

Le nom du rôle doit êtreAWSControlTowerBlueprintAccess.

Politique de confiance dans les rôles

Le rôle doit être configuré de manière à faire confiance aux principes suivants :

  • Le principal qui utilise AWS Control Tower dans le compte de gestion.

  • Le AWSControlTowerAdmin rôle dans le compte de gestion.

L'exemple suivant illustre une politique de confiance fondée sur le principe du moindre privilège. Lorsque vous établissez votre propre politique, remplacez le terme YourManagementAccountIdpar l'identifiant de compte réel de votre compte de gestion AWS Control Tower, et remplacez le terme YourControlTowerUserRolepar l'identifiant du rôle IAM pour votre compte de gestion.

{ "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": {} } ] }

Autorisations relatives aux rôles

Vous devez associer la politique gérée AWSServiceCatalogAdminFullAccessau rôle.

AWSServiceRoleForAWSControlTower

Ce rôle permet à AWS Control Tower d'accéder au compte Log Archive, au compte d'audit et aux comptes des membres, pour les opérations essentielles au maintien de la zone de landing zone, telles que la notification des ressources dérivées.

Le AWSServiceRoleForAWSControlTower rôle nécessite une politique gérée attachée et une politique de confiance de rôle pour le rôle IAM.

Politique gérée pour ce rôle : AWSControlTowerAccountServiceRolePolicy

Politique de confiance dans les rôles :

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

AWSControlTowerAccountServiceRolePolicy

Cette politique AWS gérée permet à AWS Control Tower d'appeler AWS des services qui fournissent une configuration de compte automatisée et une gouvernance centralisée en votre nom.

La politique contient les autorisations minimales permettant à AWS Control Tower de mettre en œuvre le transfert des AWS Security Hub résultats pour les ressources gérées par les contrôles Security Hub qui font partie de la norme gérée par le Security Hub Service : AWS Control Tower, et elle empêche les modifications qui limitent la capacité à gérer les comptes clients. Cela fait partie du processus de détection de la AWS Security Hub dérive de fond qui n'est pas directement initié par le client.

La politique donne l'autorisation de créer des EventBridge règles Amazon, en particulier pour les contrôles Security Hub, dans chaque compte membre, et ces règles doivent en spécifier une exacte EventPattern. De plus, une règle ne peut fonctionner que sur des règles gérées par notre directeur de service.

Principal du service : controltower.amazonaws.com

L'artefact JSON pour AWSControlTowerAccountServiceRolePolicy est le suivant :

{ "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" } ] }

Les mises à jour de cette politique gérée sont résumées dans le tableauPolitiques gérées pour AWS Control Tower.