本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建和配置组织
在本教程中,您将创建您的组织并使用两个 AWS 成员帐户对其进行配置。您可以在组织中创建其中一个成员账户,然后邀请另一个账户加入您的组织。接下来,您可以使用允许列表方法指定账户管理员只能委派明确列出的服务和操作。这允许管理员在允许贵公司的其他任何人使用新服务之前对其进行验证。 AWS 这样,如果 AWS 引入了新服务,则在管理员将该服务添加到相应策略的允许列表之前,该服务仍处于禁止状态。本教程还向您展示了如何使用拒绝列表来确保成员账户中的任何用户都无法更改 AWS CloudTrail 创建的审核日志的配置。
下图演示了本教程的主要步骤。
         
             
         
    
本教程中的任何步骤都不会给您的 AWS 账单带来费用。 AWS Organizations 是一项免费服务。
        先决条件
        本教程假设您有权访问两个现有的 AWS 账户 (在本教程中创建了第三个),并且您可以以管理员身份登录每个。
        教程使用的账户如下:
        
             
             
             
        - 
                111111111111– 您用于创建组织的账户。此账户将成为管理账户。此账户的所有者的电子邮件地址为OrgAccount111@example.com。
 
- 
                222222222222– 您邀请作为成员账户加入组织的账户。此账户的所有者的电子邮件地址为member222@example.com。
 
- 
                333333333333– 您作为组织成员创建的账户。此账户的所有者的电子邮件地址为member333@example.com。
 
 
        使用与您的测试账户关联的值替换以上值。我们建议您不要为本教程使用生产账户。
     
        步骤 1:创建组织
        在此步骤中,您将以管理员身份登录账户 111111111111,使用该账户作为管理账户创建组织,然后邀请现有账户 222222222222 作为成员账户加入。
        
            - AWS Management Console
- 
                    
                
您现在拥有一个组织,并且您的账户是其唯一成员。这是组织的管理账户。
         
            邀请现有账户加入组织
            现在您已拥有一个组织,您可以开始向其中填充账户。在本部分的步骤中,您将邀请现有账户作为组织成员加入。
            
                - AWS Management Console
- 
                        邀请现有账户加入- 
                                导航到AWS 账户页面,然后选择 Add an AWS 账户(添加亚马逊云科技账户)。 
- 
                                在 “添加 AWS 账户页面” 上,选择 “邀请现有用户” AWS 账户。 
- 
                                在 Email address or account ID of an AWS 账户 to invite (待邀请亚马逊云科技账户的电子邮件地址和账户 ID) 框中,输入待邀请账户的拥有者的电子邮件地址,类似于以下内容:member222@example.com。或者,如果您知道 AWS 账户 身份证号,则可以改为输入。
 
- 
                                在 Message to include in the invitation email message (要包含在邀请电子邮件中的信息) 框中键入所需的任何文本。此文本会包含在发送到账户所有者的电子邮件中。 
- 
                                选择 “发送邀请”。 AWS Organizations 向账户所有者发送邀请。 如果有错误消息指示,请将其展开。如果错误指示您超出了组织的账户限制或因组织仍在初始化而无法添加账户,请在创建组织后等待一个小时,然后重试。如果错误仍然存在,请联系 AWS
Support。 
- 
                                对于本教程,您现在需要接受自己的邀请。执行以下操作之一可在控制台中打开 Invitations 页面: 
- 
                                在AWS 账户页面上,选择 Accept (接受),然后选择 Confirm (确认)。 邀请回执可能会延迟,在您能接受邀请前,可能需要等待一段时间。 
- 
                                注销成员账户,然后以管理账户管理员的身份登录。 
 
创建成员账户
            在本节的步骤中,您将创建 AWS 账户 自动成为组织成员的。在本教程中,我们将此账户称为 333333333333。
            
                - AWS Management Console
- 
                        创建成员账户- 
                                在 AWS Organizations 控制台的AWS 账户页面上,选择添加 AWS 账户。 
- 
                                在 Add an AWS 账户(添加亚马逊云科技账户) 页面上,选择 Create an AWS 账户(创建亚马逊云科技账户)。 
- 
                                对于 AWS 账户 name (亚马逊云科技账户名称),输入账户的名称,例如 MainApp
                                    Account。
 
- 
                                对于 Email address of the account's root user (账户根用户的电子邮件),输入代表账户接收通信的人员的电子邮件地址。此值必须全局唯一。任何两个账户不能具有相同的电子邮件地址。例如,您可能会使用类似于 mainapp@example.com的内容。
 
- 
                                对于 IAM role name,您可以将此处留空以自动使用 OrganizationAccountAccessRole的默认角色名称,也可以提供自己的名称。此角色使您在以管理账户中 IAM 用户的身份登录时能够访问新成员账户。对于本教程,将此字段留空可指示 AWS Organizations
创建具有默认名称的角色。
 
- 
                                选择创建 AWS 账户。您可能需要等待片刻再刷新页面,才能看到新账户显示在AWS 账户页面上。 如果您收到一个错误,它指明您超出了组织的账户限制或因组织仍在初始化而无法添加账户,请在创建组织后等待一个小时,然后重试。如果错误仍然存在,请联系 AWS
Support。 
 
步骤 2:创建组织单元 
        在本节的步骤中,您将创建组织单位 (OUs) 并将您的成员帐户放入其中。在完成后,您的层次结构类似于下图所示。管理账户将保留在根中。一个成员帐户移至生产 OU,另一个成员帐户移至 O  MainApp  U,后者是 Production 的子账户。
        
        
            - AWS Management Console
- 
                    要创建和填充  OUs在随后的步骤中,您可以与对象交互,您可以选择对象本身的名称或对象旁边的单选按钮。 后续步骤会让您选择单选按钮,以便您随后可以通过选择菜单来对关联的对象执行操作。 
- 
                            在 AWS Organizations 控制台中,导航到AWS 账户页面。 
- 
                            选中 Root (根) 容器旁的复选框 
                                     
                                         。 。
 
- 
                            选择操作下拉列表,然后在组织单位中,选择新建。 
- 
                            在 Create organizational unit in Root (在根中创建组织部门) 页面上,为 Organizational unit name (组织部门名称) 输入 Production,然后选择 Create organizational unit (创建组织部门)。
 
- 
                            选中您的新 Production OU 旁边的复选框 
                                     
                                         。 。
 
- 
                            选择 Actions (操作),然后在 Organizational unit (组织部门) 中,选择 Create new (新建)。 
- 
                            在 Create organizational unit in Production (在生产中创建组织部门) 页面上,为次要 OU 名称输入 MainApp,然后选择 Create organizational unit (创建组织部门)。
 现在,您可以将您的成员帐户转移到这些帐户中 OUs。 
- 
                            返回到AWS 账户页面,然后选择 Production OU 旁边的三角形 
                                     
                                         ,以展开该 OU 的树形图。这会将 MainAppOU 显示为生产的子项。 ,以展开该 OU 的树形图。这会将 MainAppOU 显示为生产的子项。
 
- 
                            在 333333333333 旁边,选中复选框 
                                     
                                         (而不是其名称),选择操作,然后在 AWS 账户 下选择移动。 (而不是其名称),选择操作,然后在 AWS 账户 下选择移动。
 
- 
                            在  AWS 账户 “移动” 333333333333” 页面上,选择 “制作” 旁边的三角形将其展开。在旁边 MainApp,选择单选按钮
                                     
                                         (不是其名称),然后选择移动 AWS 账户。 (不是其名称),然后选择移动 AWS 账户。
 
- 
                            在 222222222222 旁边,选中复选框 
                                     
                                         (而不是其名称),选择操作,然后在 AWS 账户 下选择移动。 (而不是其名称),选择操作,然后在 AWS 账户 下选择移动。
 
- 
                            在移动 AWS 账户 “22222222222222” 页面上,在 “制作” 旁边,选择单选按钮(不是其名称),然后选择 “移动”。 AWS 账户 
 
步骤 3:创建服务控制策略
        在本节的步骤中,您将创建三个服务控制策略 (SCPs),并将它们附加到根目录和上, OUs 以限制组织账户中的用户可以执行的操作。第一个 SCP 可防止任何成员账户中的任何人创建或修改您配置的任何 AWS CloudTrail 日志。管理账户不受任何 SCP 的影响,因此在应用  CloudTrail  SCP 之后,必须使用管理账户创建所有日志。
         
            在根中为组织启用服务控制策略类型
            您必须先为组织启用策略类型,然后才能附加任何类型的策略到该根或根中的任何 OU。默认情况下未启用策略类型。本部分的步骤将向您演示如何为组织启用服务控制策略 (SCP) 类型。
            
                - AWS Management Console
- 
                        
                    
创建你的  SCPs
            现在,您的组织中已启用服务控制策略,您可以创建本教程所需的三个策略。
            
                - AWS Management Console
- 
                        创建第一个阻止 CloudTrail 配置操作的 SCP- 
                                导航到策略页面,然后选择服务控制策略。 
- 
                                在 Service control policies (服务控制策略) 页面上,选择 Create policy (创建策略)。 
- 
                                对于 Policy name,输入 Block
                                        CloudTrail Configuration Actions。
 
- 
                                在 “策略” 部分的右侧服务列表中,选择 CloudTrail 该服务。然后选择以下操作:AddTags、CreateTrail、DeleteTrail、RemoveTagsStartLogging、StopLogging、和UpdateTrail。 
- 
                                仍然在右侧窗格中,选择 “添加资源”,CloudTrail然后指定 “所有资源”。选择添加资源。 左侧的策略语句应与以下内容类似。 JSON - JSON
- 
     
- 
        
- 
             
                
                {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1234567890123",
            "Effect": "Deny",
            "Action": [
                "cloudtrail:AddTags",
                "cloudtrail:CreateTrail",
                "cloudtrail:DeleteTrail",
                "cloudtrail:RemoveTags",
                "cloudtrail:StartLogging",
                "cloudtrail:StopLogging",
                "cloudtrail:UpdateTrail"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
 
 
 
 
- 
                                选择创建策略。 
 
第二条策略定义一个允许列表,其中包含您要为生产 OU 中的用户和角色启用的所有服务和操作。完成后,生产 OU 中的用户只能 访问列出的服务和操作。
            
                - AWS Management Console
- 
                        创建第二个策略,该策略将允许生产 OU 的已批准服务- 
                                在 Service control policies (服务控制策略) 页面上,选择 Create policy (创建策略)。 
- 
                                对于 Policy name,输入 Allow
                                        List for All Approved Services。
 
- 
                                将光标置于 Policy (策略) 部分的右窗格中,并粘贴一个与以下内容类似的策略。 JSON - JSON
- 
     
- 
        
- 
             
                
                {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1111111111111",
            "Effect": "Allow",
            "Action": [ 
                "ec2:*",
                "elasticloadbalancing:*",
                "codecommit:*",
                "cloudtrail:*",
                "codedeploy:*"
              ],
            "Resource": [ "*" ]
        }
    ]
}
 
 
 
 
- 
                                选择创建策略。 
 
最终策略提供了禁止在  MainApp  OU 中使用的服务的拒绝列表。在本教程中,您将屏蔽组织单位中的任何账户访问亚马逊 DynamoDB。MainApp
            
                - AWS Management Console
- 
                        创建第三个拒绝访问无法在  MainApp  OU 中使用的服务的策略- 
                                在 Service control policies (服务控制策略) 页面上,选择 Create policy (创建策略)。 
- 
                                对于 Policy name,输入 Deny
                                        List for MainApp Prohibited Services。
 
- 
                                在左侧的 Policy (策略) 部分中,选择服务的 Amazon DynamoDB。对于操作,选择 All actions (所有操作)。 
- 
                                仍在左侧窗格中,选择 Add resource (添加资源) 并指定 DynamoDB 和 All Resources (所有资源)。选择添加资源。 右侧的策略语句将更新为与以下内容类似的内容。 JSON - JSON
- 
     
- 
        
- 
             
                
                {
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [ "dynamodb:*" ],
      "Resource": [ "*" ]
    }
  ]
}
 
 
 
 
- 
                                选择 Create policy (创建策略) 保存 SCP。 
 
将它们附加 SCPs 到你的  OUs
            现在,您的根已 SCPs 存在并已启用,您可以将它们附加到根和 OUs。
            
                - AWS Management Console
- 
                        将策略附加到根目录和  OUs- 
                                导航到AWS 账户页面。 
- 
                                在AWS 账户页面上,选择 Root (根)(其名称,而不是单选按钮)导航到其详细信息页面。 
- 
                                在 Root (根) 详细信息页面上,选择 Policies (策略) 选项卡,然后在 Service Control Policies (服务控制策略) 下,选择 Attach (附加)。 
- 
                                在 Attach a service control policy (附加服务控制策略) 页面上,选择名为 Block
                                        CloudTrail Configuration Actions的 SCP 旁边的单选按钮,然后选择 Attach (附加)。在本教程中,您将它附加到根目录,以便它影响所有成员帐户,以防止任何人更改您的配置 CloudTrail方式。
 根详细信息页面 “策略” 选项卡现在显示 SCPs两个已附加到根目录:您刚刚附加的根目录和默认 FullAWSAccessSCP。
 
- 
                                导航回AWS 账户页面,然后选择 Production OU(它的名称,而不是单选按钮)导航到其详细信息页面。 
- 
                                在 Production OU 的详细信息页面上,选择 Policies (策略) 选项卡。 
- 
                                在 Service Control Policies (服务控制策略) 下,选择 Attach (附加)。 
- 
                                在 Attach a service control policy (附加服务控制策略) 页面上,选择 Allow List for All
                                        Approved Services旁边的单选按钮,然后选择 Attach (附加)。这允许 Production OU 的成员账户中的用户或角色访问批准的服务。
 
- 
                                再次选择 “策略” 选项卡,查看 SCPs 两个策略已附加到 OU:您刚刚附加的策略和默认 FullAWSAccessSCP。但是,由于FullAWSAccessSCP 同时也是允许所有服务和操作的允许列表,您现在必须分离此 SCP 以确保只允许您批准的服务。
 
- 
                                要从生产 OU 中移除默认策略,请选择 “完整” 单选按钮AWSAccess,选择 “分离”,然后在确认对话框中选择 “分离策略”。 删除此默认策略之后,Production OU 下的所有成员账户都将立即失去对不在允许列表 SCP(您已在前一步中附加)中的所有操作和服务的访问权。任何使用未包含在所有批准服务的允许列表 SCP 中的操作的请求都将被拒绝。即使账户中的管理员通过将 IAM 权限策略附加到其中一个成员账户中的用户来授予对其他服务的访问权限,情况依然如此。 
- 
                                现在,您可以附加名为 SCPDeny List for MainApp
                                        Prohibited services,以防止  MainApp  OU 中账户中的任何人使用任何受限服务。
 为此,请导航到AWS 账户页面,选择三角形图标以展开 Production O MainAppU 的分支,然后选择 OU(它的名称,而不是单选按钮)以导航到其内容。 
- 
                                在MainApp详细信息页面上,选择策略选项卡。 
- 
                                在 “服务控制策略” 下,选择 “附加”,然后在可用策略列表中,选择 “ MainApp 禁止服务的拒绝列表” 旁边的单选按钮,然后选择 “附加策略”。 
 
步骤 4:测试组织的策略
        现在,您可以使用任何成员账户中的用户身份登录,并尝试执行各种 AWS 操作:
        
             
             
             
        - 
                如果您以管理账户中用户的身份登录,则可以执行您的 IAM 权限策略允许的任何操作。 SCPs 不影响管理账户中的任何用户或角色,无论该账户位于哪个 root 或 OU 中。 
- 
                如果您以帐户 222222222222 中的用户身份登录,则可以执行允许列表允许的任何操作。 AWS Organizations 拒绝任何试图在不在允许列表中的任何服务中执行操作的尝试。此外, AWS Organizations 拒绝任何试图执行其中一个 CloudTrail 配置操作的尝试。 
- 
                如果您以 333333333333 账户中的用户身份登录,则可以执行允许列表允许且拒绝列表未阻止的任何操作。 AWS Organizations 将拒绝尝试执行允许列表策略中未列出的任何操作,并拒绝尝试执行拒绝列表策略中列出的任何操作。此外, AWS Organizations 拒绝任何试图执行其中一个 CloudTrail 配置操作的尝试。