选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

CodeBuild 配置角色创建

聚焦模式
CodeBuild 配置角色创建 - AWS Proton

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

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

基础设施即代码 (IaaC) 工具(如 AWS CloudFormation 和 Terraform)需要对许多不同类型的资源的权限。 AWS 例如,如果 IaaC 模板声明一个 Amazon S3 存储桶,它需要具有创建、读取、更新和删除 Amazon S3 存储桶的权限。将角色限制为所需的最低权限被视为一种安全最佳实践。考虑到 AWS 资源的广度,为Iaac模板创建最低权限策略具有挑战性,尤其是当这些模板管理的资源以后可能会发生变化时。例如,在最近对由管理的模板进行编辑时 AWS Proton,您添加了RDS数据库资源。

配置正确的权限有助于顺利部署 IaC。 AWS Proton CodeBuild Provisioning 在客户账户中的 CodeBuild 项目中执行客户提供的任意CLI命令。通常,这些命令使用基础设施即代码 (IaaC) 工具(例如 AWS CDK)创建和删除基础设施。当部署模板使用 CodeBuild 预配的 AWS 资源时, AWS 将在由 AWS管理的 CodeBuild 项目中开始构建。角色被传递给 CodeBuild,该角色 CodeBuild 假设执行命令。此角色称为 CodeBuild 配置角色,由客户提供,包含配置基础架构所需的权限。它本来只能由假设 CodeBuild ,甚至 AWS Proton 无法假设。

创建角色

预 CodeBuild 配角色可以在IAM控制台中创建,也可以在中创建 AWS CLI。要在 AWS CLI中创建该角色,请运行以下命令:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess

它还会附加AWSProtonCodeBuildProvisioningBasicAccess,其中包含 CodeBuild 服务运行构建所需的最低权限。

如果您更喜欢使用控制台,请在创建角色时确保满足以下条件:

  1. 对于可信实体,选择 AWS 服务,然后选择 CodeBuild。

  2. 在“添加权限”步骤中,选择 AWSProtonCodeBuildProvisioningBasicAccess 以及您希望附加的任何其他策略。

管理员访问权限

如果您将AdministratorAccess策略附加到 CodeBuild 配置角色,它将保证任何 IaaC 模板都不会因为缺乏权限而失败。这也意味着任何能够创建环境模板或服务模板的人都可以执行管理员级别的操作,即使该用户不是管理员也是如此。 AWS Proton 不建议与 CodeBuild 配置角色AdministatorAccess一起使用。如果您决定与 CodeBuild 置备角色AdministratorAccess一起使用,请在沙盒环境中使用。

您可以在IAM控制台AdministratorAccess中使用或通过执行以下命令来创建角色:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
创建最小范围的角色

如果要创建具有最低权限的角色,可以使用多种方法:

  • 使用管理员权限进行部署,然后缩小角色范围。我们建议使用IAM访问分析器

  • 使用托管策略授予您计划使用的服务的访问权限。

AWS CDK

如果您 AWS CDK 与一起使用 AWS Proton,并且已经cdk bootstrap在每个环境账户/区域上运行过,则已经存在一个角色。cdk deploy在这种情况下,请将以下策略附加到 CodeBuild 配置角色:

{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }
自定义 VPC

如果您决定 CodeBuild 在自定义模式下运行VPC,则需要在 CodeBuild 角色中拥有以下权限:

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }

您也可以使用 AmazonEC2FullAccess 托管策略,但其中可能包含您不需要的权限。使用以下方法附加托管策略CLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

下一主题:

服务

上一主题:

客户托管
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。