Cont AWS rol Tower 如何使用角色来创建和管理账户 - AWS Control Tower

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Cont AWS rol Tower 如何使用角色来创建和管理账户

通常,角色是身份和访问管理 (IAM) 的一部分 AWS。 有关IAM和角色的一般信息 AWS,请参阅中的IAM角色主题 AWS IAM用户指南

角色和账户创建

AWSControl Tower 通过调用 of 来创建客户的账户 CreateAccount API AWS Organizations。 什么时候 AWS Organizations 创建此账户,并在该账户中创建一个角色,Cont AWS rol Tower 通过向传递参数来命名该角色API。角色的名称为 AWSControlTowerExecution

AWSControl Tower 接管了 Account Factory 创建的所有账户的AWSControlTowerExecution角色。使用此角色,Cont AWS rol Tower 可以为账户设定基准并应用必须(以及任何其他已启用)控件,从而创建其他角色。这些角色反过来又被其他服务使用,例如 AWS Config.

注意

为账户设置基准就是设置其资源,包括Account Factory模板(有时也称为蓝图)和控件。作为模板部署的一部分,基准流程还会为账户设置集中日志和安全审计角色。AWSControl Tower 基准包含在您应用于每个注册账户的角色中。

有关账户和资源的更多信息,请参阅在 Cont AWS rol Tower AWS 账户 中简介

Cont AWS rol Tower 是如何汇总的 AWS Config 非托管OUs和账户中的规则

Cont AWS rol Tower 管理账户创建组织级聚合器,该聚合器可帮助检测外部聚合器 AWS Config 规则,这样 Cont AWS rol Tower 就无需获得对非托管帐户的访问权限。Cont AWS rol Tower 控制台显示了多少是外部创建的 AWS Config 你为给定账户设定的规则。您可以在账户详情页面的 External Config 规则合规性选项卡中查看有关这些外部规则的详细信息

为了创建聚合器,Cont AWS rol Tower 会添加一个角色,该角色具有描述组织并列出该组织下的账户所需的权限。该AWSControlTowerConfigAggregatorRoleForOrganizations角色需要AWSConfigRoleForOrganizations托管策略和与的信任关系config.amazonaws.com

以下是附加到该角色的IAM策略(JSON构件):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:ListAccounts", "organizations:DescribeOrganization", "organizations:ListAWSServiceAccessForOrganization" ], "Resource": "*" } ] }

以下是AWSControlTowerConfigAggregatorRoleForOrganizations信任关系:

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

要在管理账户中部署此功能,需要在托管策略中添加以下权限AWSControlTowerServiceRolePolicy,该AWSControlTowerAdmin角色在创建托管策略时将使用这些权限 AWS Config 聚合器:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "config:PutConfigurationAggregator", "config:DeleteConfigurationAggregator", "iam:PassRole" ], "Resource": [ "arn:aws:iam:::role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations", "arn:aws:config:::config-aggregator/" ] }, { "Effect": "Allow", "Action": "organizations:EnableAWSServiceAccess", "Resource": "*" } ] }

已创建新资源:AWSControlTowerConfigAggregatorRoleForOrganizationsaws-controltower-ConfigAggregatorForOrganizations

准备就绪后,您可以单独注册帐户,也可以通过注册 OU 将其注册为群组。注册账户后,如果您在中创建规则 AWS Config,Cont AWS rol Tower 会检测到新规则。聚合器显示外部规则的数量并提供指向外部规则的链接 AWS Config 控制台,您可以在其中查看您账户的每条外部规则的详细信息。使用中的信息 AWS Config 控制台和 Cont AWS rol Tower 控制台,以确定您是否为该帐户启用了相应的控件。

Cont AWS rol Tower 审计账户的编程角色和信任关系

您可以登录审计账户并扮演以编程方式审核其他账户的角色。审计账户不支持手动登录到其他账户。

通过向其授予的某些角色,审计账户允许您以编程方式访问其他账户 AWS 仅限 Lambda 函数。出于安全考虑,这些角色与其他角色之间存在信任关系,这意味着使用这些角色的条件是严格定义的。

Cont AWS rol Tower 堆栈在审计账户中StackSet-AWSControlTowerBP-BASELINE-ROLES创建以下仅限编程的跨账户IAM角色:

  • aws-控制塔-AdministratorExecutionRole

  • aws-控制塔-ReadOnlyExecutionRole

Cont AWS rol Tower 堆栈在审计账户中StackSet-AWSControlTowerSecurityResources创建以下仅限编程的跨账户IAM角色:

  • aws-控制塔-AuditAdministratorRole

  • aws-控制塔-AuditReadOnlyRole

ReadOnlyExecutionRole:请注意,此角色允许审计账户在整个组织中读取 Amazon S3 存储桶中的对象(与仅允许访问元数据的SecurityAudit策略形成鲜明对比)。

aws-控制塔-: AdministratorExecutionRole
  • 拥有管理员权限

  • 无法从控制台进行假设

  • 只能由审计账户中的角色担任 — aws-controltower-AuditAdministratorRole

以下构件显示了的信任关系aws-controltower-AdministratorExecutionRole。占位符号012345678901将替换为您的审计账户的Audit_acct_ID数字。

{   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "AWS": "arn:aws:iam::012345678901:role/aws-controltower-AuditAdministratorRole"       },       "Action": "sts:AssumeRole"     }   ] }
aws-控制塔-: AuditAdministratorRole
  • 可以由以下假设 AWS 仅限 Lambda 服务

  • 有权对名称以字符串日志开头的 Amazon S3 对象执行读取 (获取) 和写入 (Put) 操作

附加政策:

1. AWSLambdaExecute— AWS 托管策略

2. AssumeRole-aws-controltower-AuditAdministratorRole — 内联策略 — 由 Contro AWS l Tower 创建,随之而来的是工件。

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

以下构件显示了以下对象的信任关系aws-controltower-AuditAdministratorRole

{   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "Service": "lambda.amazonaws.com"       },       "Action": "sts:AssumeRole"     }   ] }
aws-控制塔-: ReadOnlyExecutionRole
  • 无法从控制台进行假设

  • 只能由审计账户中的另一个角色担任 — AuditReadOnlyRole

以下构件显示了的信任关系aws-controltower-ReadOnlyExecutionRole。占位符号012345678901将替换为您的审计账户的Audit_acct_ID数字。

{   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "AWS": "arn:aws:iam::012345678901:role/aws-controltower-AuditReadOnlyRole "       },       "Action": "sts:AssumeRole"     }   ] }
aws-控制塔-: AuditReadOnlyRole
  • 可以由以下假设 AWS 仅限 Lambda 服务

  • 有权对名称以字符串日志开头的 Amazon S3 对象执行读取 (获取) 和写入 (Put) 操作

附加政策:

1. AWSLambdaExecute— AWS 托管策略

2. AssumeRole-aws-controltower-AuditReadOnlyRole — 内联策略 — 由 Contro AWS l Tower 创建,随之而来的是工件。

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

以下构件显示了以下对象的信任关系aws-controltower-AuditAdministratorRole

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

使用IAM角色自动配置账户

要以更自动化的方式配置 Account Factory 账户,您可以在 Cont AWS rol Tower 管理账户中创建 Lambda 函数,该账户在成员账户中AWSControlTowerExecution担任该角色。然后,管理账户使用该角色在每个成员账户中执行所需的配置步骤。

如果您使用 Lambda 函数配置账户,则执行此项工作的身份除此之外还必须具有以下IAM权限策略。AWSServiceCatalogEndUserFullAccess

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSControlTowerAccountFactoryAccess", "Effect": "Allow", "Action": [ "sso:GetProfile", "sso:CreateProfile", "sso:UpdateProfile", "sso:AssociateProfile", "sso:CreateApplicationInstance", "sso:GetSSOStatus", "sso:GetTrust", "sso:CreateTrust", "sso:UpdateTrust", "sso:GetPeregrineStatus", "sso:GetApplicationInstance", "sso:ListDirectoryAssociations", "sso:ListPermissionSets", "sso:GetPermissionSet", "sso:ProvisionApplicationInstanceForAWSAccount", "sso:ProvisionApplicationProfileForAWSAccountInstance", "sso:ProvisionSAMLProvider", "sso:ListProfileAssociations", "sso-directory:ListMembersInGroup", "sso-directory:AddMemberToGroup", "sso-directory:SearchGroups", "sso-directory:SearchGroupsWithGroupName", "sso-directory:SearchUsers", "sso-directory:CreateUser", "sso-directory:DescribeGroups", "sso-directory:DescribeDirectory", "sso-directory:GetUserPoolInfo", "controltower:CreateManagedAccount", "controltower:DescribeManagedAccount", "controltower:DeregisterManagedAccount", "s3:GetObject", "organizations:describeOrganization", "sso:DescribeRegisteredRegions" ], "Resource": "*" } ] }

Cont AWS rol Tower Acco sso:ProvisionSAMLProvide unt Factory 需要权限sso:GetPeregrineStatussso:ProvisionApplicationProfileForAWSAccountInstance、、和才能与之交互 sso:ProvisionApplicationInstanceForAWSAccount AWS IAM身份中心。