

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

# 创建权限边界
<a name="creating-a-permissions-boundary"></a>

部署权限集后，您可以建立权限边界。此*权限边界*是一种机制，仅向开发、测试、启动和管理您的云基础设施的用户授予 IAM 访问权限。这些用户只能执行策略和权限边界允许的操作。

您可以在 AWS CloudFormation 模板中定义权限边界，然后使用将模板部署 CloudFormation StackSets 到多个账户。这有助于您通过单一操作在整个组织中建立和维护标准化策略。有关更多信息和说明，请参阅[使用 AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)（CloudFormation 文档）。

以下 CloudFormation 模板预置了一个 IAM 角色并创建了充当权限边界的 IAM 策略。您可以使用堆栈集将此模板部署到组织中的所有成员账户。

```
CloudFormationRole:
  Type: "AWS::IAM::Role"
  Properties:
    AssumeRolePolicyDocument:
      Version: "2012-10-17"
      Statement:
        Effect: Allow
        Principal:
          Service: !Sub "cloudformation.${AWS::URLSuffix}"
        Action: "sts:AssumeRole"
        Condition:
          StringEquals:
            "aws:SourceAccount": !Ref "AWS::AccountId"
    Description: !Sub "DO NOT DELETE - Used by CloudFormation. Created by CloudFormation ${AWS::StackId}"
    ManagedPolicyArns:
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess"
    PermissionsBoundary: !Ref DeveloperBoundary
    RoleName: CloudFormationRole

DeveloperBoundary:
  Type: "AWS::IAM::ManagedPolicy"
  Properties:
    Description: Permission boundary for developers
    ManagedPolicyName: PermissionsBoundary
    PolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Sid: AllowModifyIamRolesWithBoundary
          Effect: Allow
          Action:
            - "iam:AttachRolePolicy"
            - "iam:CreateRole"
            - "iam:DeleteRolePolicy"
            - "iam:DetachRolePolicy"
            - "iam:PutRolePermissionsBoundary"
            - "iam:PutRolePolicy"
          Resource: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/app/*"
          Condition:
            ArnEquals:
              "iam:PermissionsBoundary": !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:policy/PermissionsBoundary"
        - Sid: AllowModifyIamRoles
          Effect: Allow
          Action:
            - "iam:DeleteRole"
            - "iam:TagRole"
            - "iam:UntagRole"
            - "iam:UpdateAssumeRolePolicy"
            - "iam:UpdateRole"
            - "iam:UpdateRoleDescription"
          Resource: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/app/*"
        - Sid: OverlyPermissiveAllowedServices
          Effect: Allow
          Action:
            - "lambda:*"
            - "apigateway:*"
            - "events:*"
            - "s3:*"
            - "logs:*"
          Resource: "*"
```

**CloudFormationRole**角色、**PermissionsBoundary**策略和**DeveloperAccess**权限集共同授予以下权限：
+ 通过**ReadOnlyAccess** AWS 托管策略 AWS 服务，用户对大多数内容具有只读访问权限。
+ 用户可以通过访问 AWS 管理策略**AWSSupport访问**未解决的支持案例。
+ 通过**AWSBillingReadOnlyAccess** AWS 托管策略，用户对 AWS Billing 控制台仪表板具有只读访问权限。
+ 用户可以通过**AWSServiceCatalogEndUserFullAccess** AWS 托管策略从 Service Catalog 中配置产品。
+ 用户可以通过内联策略验证和估算任何 CloudFormation 模板的成本。
+ 通过使用 **CloudFormationRole**IAM 角色，用户可以创建、更新或删除任何以 **app/** 开头的 CloudFormation 堆栈。
+ 用户可以使用 CloudFormation 创建、更新或删除以 **app/** 开头的 IAM 角色。I **PermissionsBoundary**AM 策略可防止用户升级其权限。
+ 用户只能通过使用来配置亚马逊 AWS Lambda、亚马逊 EventBridge CloudWatch、亚马逊简单存储服务 (Amazon S3) Simple Storage S3 和 Amazon API Gateway 资源。 CloudFormation

下图显示了授权用户（例如开发人员）如何使用本指南中介绍的权限集、IAM 角色和权限边界在成员账户中创建新的 IAM 角色：

1. 用户在 IAM 身份中心进行身份验证并担任 I **DeveloperAccess**AM 角色。

1. 用户启动`cloudformation:CreateStack`操作并担任 **CloudFormationRole**IAM 角色。

1. 用户启动`iam:CreateRole`操作并使用创建新 CloudFormation 的 IAM 角色。

1. I **PermissionsBoundary**AM 策略将应用于新的 IAM 角色。



![\[创建 IAM 角色的用户受成员账户中权限边界的约束\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/transitioning-to-multiple-aws-accounts/images/2_create-iam-role.png)


该**CloudFormationRole**角色已附加[AdministratorAccess](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)托管策略，但由于 **PermissionsBoundary**IAM 策略，该**CloudFormationRole**角色的有效权限将与该**PermissionsBoundary**策略相同。该**PermissionsBoundary**策略在允许`iam:CreateRole`操作时会引用自身，从而确保只有在应用权限边界时才能创建角色。