Usando políticas baseadas em identidade (políticas do IAM) para o AWS Control Tower - AWS Control Tower

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando políticas baseadas em identidade (políticas do IAM) para o AWS Control Tower

Este tópico fornece exemplos de políticas baseadas em identidade que demonstram como um administrador de conta pode anexar políticas de permissões às identidades do IAM (ou seja, usuários, grupos e funções) e, assim, conceder permissões para realizar operações nos recursos do AWS Control Tower.

Importante

Recomendamos que você primeiro analise os tópicos introdutórios que explicam os conceitos básicos e as opções disponíveis para gerenciar o acesso aos seus recursos do AWS Control Tower. Para ter mais informações, consulte Visão geral do gerenciamento de permissões de acesso aos seus recursos do AWS Control Tower.

AWSControlTowerAdmin papel

Essa função fornece ao AWS Control Tower acesso à infraestrutura essencial para a manutenção da landing zone. A AWSControlTowerAdmin função exige uma política gerenciada anexada e uma política de confiança de função para a função do IAM. Uma política de confiança de função é uma política baseada em recursos, especificando quais diretores podem assumir a função.

Aqui está um exemplo de trecho dessa política de confiança de funções:

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

Para criar essa função a partir da AWS CLI e colocá-la em um arquivo chamadotrust.json, veja um exemplo de comando da CLI:

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

Essa função exige duas políticas do IAM.

  1. Uma política em linha, por exemplo:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeAvailabilityZones", "Resource": "*" } ] }
  2. A política gerenciada a seguir, que é AWSControlTowerServiceRolePolicy a.

AWSControlTowerServiceRolePolicy

AWSControlTowerServiceRolePolicyÉ uma política AWSgerenciada que define permissões para criar e gerenciar recursos da AWS Control Tower, como AWS CloudFormation conjuntos de pilhas e instâncias de pilha, arquivos de AWS CloudTrail log, um agregador de configuração para a AWS Control Tower, bem como AWS Organizations contas e unidades organizacionais (OUs) que são governadas pela AWS Control Tower.

As atualizações dessa política gerenciada estão resumidas na tabela,Políticas gerenciadas para o AWS Control Tower.

Para obter mais informações, consulte o Guia AWSControlTowerServiceRolePolicyde referência de políticas gerenciadas da AWS.

Nome da política gerenciada: AWSControlTowerServiceRolePolicy

O artefato JSON para AWSControlTowerServiceRolePolicy é o seguinte:

{ "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 confiança da função:

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

A política em linha éAWSControlTowerAdminPolicy:

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

AWSControlTowerStackSetRole

AWS CloudFormation assume essa função para implantar conjuntos de pilhas em contas criadas pelo AWS Control Tower. Política em linha:

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

Política de confiança

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

AWSControlTowerCloudTrailRole

O AWS Control Tower habilita, CloudTrail como melhor prática, e fornece essa função para CloudTrail. CloudTrailassume essa função para criar e publicar CloudTrail registros. Política em linha:

{ "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 confiança

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

AWSControlTowerBlueprintAccess requisitos de função

O AWS Control Tower exige que você crie a AWSControlTowerBlueprintAccess função na conta designada do blueprint hub, dentro da mesma organização.

Nome da função

O tipo de função deve ser AWSControlTowerBlueprintAccess.

Política de confiança de funções

A função deve ser configurada para confiar nos seguintes princípios:

  • O diretor que usa o AWS Control Tower na conta de gerenciamento.

  • A AWSControlTowerAdmin função na conta de gerenciamento.

O exemplo a seguir mostra uma política de confiança com privilégios mínimos:

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

Permissões de função

Você deve anexar a política gerenciada AWSServiceCatalogAdminFullAccessà função.

AWSServiceRoleForAWSControlTower

Essa função fornece ao AWS Control Tower acesso à conta do Log Archive, à conta de auditoria e às contas de membros para operações essenciais para a manutenção da landing zone, como notificar você sobre recursos desviados.

A AWSServiceRoleForAWSControlTower função exige uma política gerenciada anexada e uma política de confiança de função para a função do IAM.

Política gerenciada para essa função: AWSControlTowerAccountServiceRolePolicy

Política de confiança da função:

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

AWSControlTowerAccountServiceRolePolicy

Essa política AWSgerenciada permite que o AWS Control Tower chame AWS serviços que fornecem configuração automatizada de contas e governança centralizada em seu nome.

A política contém as permissões mínimas para a Torre de Controle da AWS implementar o encaminhamento de AWS Security Hub descobertas para recursos gerenciados pelos controles do Security Hub que fazem parte do padrão gerenciado pelo serviço do Security Hub: AWS Control Tower, e evita alterações que restringem a capacidade de gerenciar contas de clientes. É parte do processo de detecção de AWS Security Hub desvios em segundo plano que não é iniciado diretamente pelo cliente.

A política dá permissões para criar EventBridge regras da Amazon, especificamente para controles do Security Hub, em cada conta de membro, e essas regras devem especificar uma exata EventPattern. Além disso, uma regra pode operar somente em regras gerenciadas por nosso diretor de serviço.

Principal do serviço: controltower.amazonaws.com

O artefato JSON para AWSControlTowerAccountServiceRolePolicy é o seguinte:

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

As atualizações dessa política gerenciada estão resumidas na tabela,Políticas gerenciadas para o AWS Control Tower.