AWS Control Tower 如何使用角色来创建和管理账户
一般而言,角色是 AWS 中身份和访问管理(IAM)的一部分。有关 AWS 中 IAM 和角色的一般信息,请参阅《AWS IAM 用户指南》中的 IAM 角色主题。
角色和账户创建
AWS Control Tower 通过调用 AWS Organizations 的 CreateAccount API 来创建客户的账户。在 AWS Organizations 创建此账户时,会在该账户中创建一个角色,AWS Control Tower 通过向 API 传递参数来为其命名。角色的名称为 AWSControlTowerExecution。
AWS Control Tower 会接管 Account Factory 创建的所有账户的 AWSControlTowerExecution 角色。使用此角色,AWS Control Tower 可建立账户基准并实施强制性(和任何其他已启用的)控件,这会导致创建其他角色。进而可将这些角色用于其他服务,如 AWS Config。
注意
为账户设置基准意味着为该账户配置资源,包括 Account Factory 模板(有时也称为蓝图)和控件。作为部署模板的一部分,基准建立过程还会在账户上设置集中式日志记录和安全审核角色。AWS Control Tower 基准包含在您应用于每个已注册账户的角色中。
有关账户和资源的更多信息,请参阅 关于 AWS Control Tower 中的 AWS 账户。
AWS Control Tower 如何聚合非托管 OU 和账户中的 AWS Config 规则
AWS Control Tower 管理账户可以创建一个组织级聚合器,帮助检测外部 AWS Config 规则,这样 AWS Control Tower 就无需访问非托管账户。AWS Control Tower 控制台会显示您针对给定账户应用了多少条外部创建的 AWS Config 规则。您可以在账户详细信息页面的外部 Config 规则合规性选项卡中查看有关这些外部规则的详细信息。
为了创建聚合器,AWS Control Tower 添加了一个角色,该角色具有描述组织并列出其下账户所需的权限。AWSControlTowerConfigAggregatorRoleForOrganizations 角色需要 AWSConfigRoleForOrganizations 托管策略以及与 config.amazonaws.com 的信任关系。
以下是附加到该角色的 IAM 策略(JSON 构件):
下面是 AWSControlTowerConfigAggregatorRoleForOrganizations 信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
要在管理账户中部署此功能,需要在托管策略 AWSControlTowerServiceRolePolicy 中添加以下权限,该策略由 AWSControlTowerAdmin 角色在创建 AWS Config 聚合器时使用:
已创建的新资源:AWSControlTowerConfigAggregatorRoleForOrganizations 和 aws-controltower-ConfigAggregatorForOrganizations
准备就绪后,您可以单独注册账户,也可以通过注册 OU 将其注册为组。注册账户后,如果您在 AWS Config 中创建规则,AWS Control Tower 就会检测到新规则。聚合器会显示外部规则的数量,并提供指向 AWS Config 控制台的链接,您可以在其中查看账户的每条外部规则的详细信息。使用 AWS Config 控制台和 AWS Control Tower 控制台中的信息来确定您是否针对账户启用了适当的控件。
AWS Control Tower 审计账户的编程角色和信任关系
您可以登录审计账户并承担一个角色,以便以编程方式审查其他账户。审计账户不支持手动登录到其他账户。
审计账户支持通过仅授予 AWS Lambda 函数的一些角色,对其他账户进行编程访问。出于安全考虑,这些角色与其他角色之间存在信任关系,这意味着使用这些角色的条件是严格定义的。
AWS Control Tower 堆栈 StackSet-AWSControlTowerBP-BASELINE-ROLES 会在审计账户中创建以下仅限编程的跨账户 IAM 角色:
-
aws-controltower-AdministratorExecutionRole
-
aws-controltower-ReadOnlyExecutionRole
AWS Control Tower 堆栈 StackSet-AWSControlTowerSecurityResources 会在审计账户中创建以下仅限编程的跨账户 IAM 角色:
-
aws-controltower-AuditAdministratorRole
-
aws-controltower-AuditReadOnlyRole
ReadOnlyExecutionRole: 请注意,此角色允许审计账户读取整个组织内 Amazon S3 存储桶中的对象(与之形成对比的是,SecurityAudit 策略仅允许访问元数据)。
aws-controltower-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-controltower-AuditAdministratorRole:
-
只能由 AWS Lambda 服务代入。
-
有权对名称以字符串 log 开头的 Amazon S3 对象执行读取 (Get) 和写入 (Put) 操作
附加策略:
1. AWSLambdaExecute – AWS 托管式策略
2. AssumeRole-aws-controltower-AuditAdministratorRole – 内联策略 – 由 AWS Control Tower 创建,构件如下。
以下构件显示了 aws-controltower-AuditAdministratorRole 的信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws-controltower-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-controltower-AuditReadOnlyRole:
-
只能由 AWS Lambda 服务代入。
-
有权对名称以字符串 log 开头的 Amazon S3 对象执行读取 (Get) 和写入 (Put) 操作
附加策略:
1. AWSLambdaExecute – AWS 托管式策略
2. AssumeRole-aws-controltower-AuditReadOnlyRole - 内联策略 - 由 AWS Control Tower 创建,构件如下。
以下构件显示了 aws-controltower-AuditAdministratorRole 的信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
使用 IAM 角色自动预置账户
要以自动化程度更高的方式配置 Account Factory 账户,您可以在 AWS Control Tower 管理账户中创建 Lambda 函数,该账户在成员账户中担任 AWSControlTowerExecution 角色
如果使用 Lambda 函数预置账户,则执行此工作的身份必须具有以下 IAM 权限策略以及 AWSServiceCatalogEndUserFullAccess。
AWS Control Tower Account Factory 需要权限 sso:GetPeregrineStatus、sso:ProvisionApplicationInstanceForAWSAccount、sso:ProvisionApplicationProfileForAWSAccountInstance 和 sso:ProvisionSAMLProvide,才能与 AWS IAM Identity Center 进行交互。