本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建权限边界
部署权限集后,您可以建立权限边界。此权限边界是一种机制,仅向开发、测试、启动和管理您的云基础设施的用户授予 IAM 访问权限。这些用户只能执行策略和权限边界允许的操作。
您可以在 AWS CloudFormation 模板中定义权限边界,然后使用将模板部署 CloudFormation StackSets 到多个账户。这有助于您通过单一操作在整个组织中建立和维护标准化策略。有关更多信息和说明,请参阅使用 AWS CloudFormation StackSets(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 控制台仪表板具有只读访问权限。
-
用户可以通过托AWSProtonDeveloperAccess AWS 管策略配置新环境。 AWS Proton
-
用户可以通过AWSServiceCatalogEndUserFullAccess AWS 托管策略从 Service Catalog 中配置产品。
-
用户可以通过内联策略验证和估算任何 CloudFormation 模板的成本。
-
通过使用 CloudFormationRoleIAM 角色,用户可以创建、更新或删除任何以 app/ 开头的 CloudFormation 堆栈。
-
用户可以使用 CloudFormation 创建、更新或删除以 app/ 开头的 IAM 角色。I PermissionsBoundaryAM 策略可防止用户升级其权限。
-
用户只能通过使用来配置亚马逊 AWS Lambda、亚马逊 EventBridge CloudWatch、亚马逊简单存储服务 (Amazon S3) Simple Storage S3 和 Amazon API Gateway 资源。 CloudFormation
下图显示了授权用户(例如开发人员)如何使用本指南中介绍的权限集、IAM 角色和权限边界在成员账户中创建新的 IAM 角色:
-
用户在 IAM 身份中心进行身份验证并担任 I DeveloperAccessAM 角色。
-
用户启动
cloudformation:CreateStack
操作并担任 CloudFormationRoleIAM 角色。 -
用户启动
iam:CreateRole
操作并使用创建新 CloudFormation 的 IAM 角色。 -
I PermissionsBoundaryAM 策略将应用于新的 IAM 角色。

该CloudFormationRole角色已附加AdministratorAccess托管策略,但由于 PermissionsBoundaryIAM 策略,该CloudFormationRole角色的有效权限将与该PermissionsBoundary策略相同。该PermissionsBoundary策略在允许iam:CreateRole
操作时会引用自身,从而确保只有在应用权限边界时才能创建角色。