本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将基于身份的策略用于 Amazon CodeBuild
本主题提供了基于身份的策略的示例,这些示例展示了账户管理员如何将权限策略附加到 IAM 身份(即用户、组和角色),从而授予对 Amazon CodeBuild 资源执行操作的权限。
重要
我们建议您先阅读介绍性主题,这些主题解释了管理 CodeBuild 资源访问权限的基本概念和选项。有关更多信息,请参阅管理 Amazon CodeBuild 资源访问权限概述。
主题
以下是一个权限策略示例,仅允许用户在 123456789012
账户的 us-east-2
区域中获取任何以 my
名称开头的构建项目的相关信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetProjects", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }
使用 Amazon CodeBuild 控制台所需的权限
使用 Amazon CodeBuild 控制台的用户必须拥有允许该 Amazon 账户描述其他 Amazon 资源的最低权限集。您必须拥有来自以下服务的权限:
-
Amazon CodeBuild
-
亚马逊 CloudWatch
-
CodeCommit (如果您要将源代码存储在 Amazon CodeCommit 存储库中)
-
Amazon Elastic Container Registry (Amazon ECR)(如果您使用的构建环境依赖于 Amazon ECR 存储库中的 Docker 映像)
注意
截至 2022 年 7 月 26 日,默认 IAM 政策已更新。有关更多信息,请参阅 连接 Amazon 弹性容器注册表所需的权限 Amazon CodeBuild。
-
Amazon Elastic Container Service (Amazon ECS)(如果您使用的构建环境依赖于 Amazon ECR 存储库中的 Docker 映像)
-
Amazon Identity and Access Management (IAM)
-
Amazon Key Management Service (Amazon KMS)
-
Amazon Simple Storage Service (Amazon S3)
如果您创建比必需的最低权限更为严格的 IAM 策略,控制台将无法按预期正常运行。
连接 Amazon 弹性容器注册表所需的权限 Amazon CodeBuild
自 2022 年 7 月 26 日起, Amazon CodeBuild 已更新其亚马逊 ECR 权限的默认 IAM 政策。以下权限已从默认策略中删除:
"ecr:PutImage", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload"
对于在 2022 年 7 月 26 日之前创建的 CodeBuild 项目,我们建议您使用以下 Amazon ECR 政策更新您的政策:
"Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ]
有关更新您的策略的更多信息,请参阅向 IAM 组或用户添加 CodeBuild 访问权限。
Amazon CodeBuild 控制台连接源提供商所需的权限
Amazon CodeBuild 控制台使用以下 API 操作连接到源提供商(例如 GitHub 存储库)。
-
codebuild:ListConnectedOAuthAccounts
-
codebuild:ListRepositories
-
codebuild:PersistOAuthToken
-
codebuild:ImportSourceCredentials
您可以使用 Amazon CodeBuild 控制台将源提供程序(例如 GitHub 存储库)与您的构建项目相关联。为此,您必须先将前面的 API 操作添加到与您用于访问 Amazon CodeBuild 控制台的用户关联的 IAM 访问策略中。
ListConnectedOAuthAccounts
、ListRepositories
和 PersistOAuthToken
API 操作不应由您的代码调用。因此,这些 API 操作不包含在 Amazon CLI 和 Amazon
软件开发工具包中。
Amazon 的托管(预定义)策略 Amazon CodeBuild
Amazon 通过提供由创建和管理的独立 IAM 策略来解决许多常见用例 Amazon。这些 Amazon 托管策略为常见用例授予必要的权限,因此您可以不必调查需要哪些权限。的托管策略 CodeBuild 还提供在其他服务(例如 IAM、Amazon EC2、Amazon ECR Amazon CodeCommit、Amazon ECR、Amazon SNS 和 A CloudWatch mazon Events)中执行操作的权限,以履行已获得相关政策的用户的责任。例如,该AWSCodeBuildAdminAccess
策略是一个管理级别的用户策略,允许拥有此策略的用户创建和管理项目构建 CloudWatch的事件规则,为项目相关事件(名称前缀为的主题arn:aws:codebuild:
)创建和管理通知的 Amazon SNS 主题,以及管理中的项目和报告组。 CodeBuild有关更多信息,请参阅《IAM 用户指南》中的 Amazon 托管策略。
以下 Amazon 托管策略是特定的,您可以将其附加到账户中的用户 Amazon CodeBuild。
- AWSCodeBuildAdminAccess
-
提供完全访问权限, CodeBuild 包括管理 CodeBuild 生成项目的权限。
- AWSCodeBuildDeveloperAccess
-
提供对生成项目的访问权限, CodeBuild 但不允许管理生成项目。
- AWSCodeBuildReadOnlyAccess
-
提供对的只读访问权限 CodeBuild。
要访问 CodeBuild 创建的生成输出项目,还必须附加名为的 Amazon 托管策略AmazonS3ReadOnlyAccess
。
要创建和管理 CodeBuild 服务角色,还必须附加名为的 Amazon 托管策略IAMFullAccess
。
此外,您还可以创建您自己的自定义 IAM policy,以授予 CodeBuild 操作和资源的相关权限。您可以将这些自定义策略附加到需要这些权限的用户或组。
AWSCodeBuildAdminAccess
该AWSCodeBuildAdminAccess
策略提供对构建项目的完全访问权限 CodeBuild,包括管理 CodeBuild 生成项目的权限。此政策仅适用于管理员级别的用户,以授予他们对您 Amazon 账户中的 CodeBuild 项目、报告组和相关资源的完全控制权,包括删除项目和报告组的权限。
AWSCodeBuildAdminAccess
策略包含以下策略语句:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"codebuild:*",
"codecommit:GetBranch",
"codecommit:GetCommit",
"codecommit:GetRepository",
"codecommit:ListBranches",
"codecommit:ListRepositories",
"cloudwatch:GetMetricStatistics",
"ec2:DescribeVpcs",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"ecr:DescribeRepositories",
"ecr:ListImages",
"elasticfilesystem:DescribeFileSystems",
"events:DeleteRule",
"events:DescribeRule",
"events:DisableRule",
"events:EnableRule",
"events:ListTargetsByRule",
"events:ListRuleNamesByTarget",
"events:PutRule",
"events:PutTargets",
"events:RemoveTargets",
"logs:GetLogEvents",
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"logs:DeleteLogGroup"
],
"Effect": "Allow",
"Resource": "arn:aws:logs:*:*:log-group:/aws/codebuild/*:log-stream:*"
},
{
"Effect": "Allow",
"Action": [
"ssm:PutParameter"
],
"Resource": "arn:aws:ssm:*:*:parameter/CodeBuild/*"
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": "arn:aws:ecs:*:*:task/*/*"
},
{
"Sid": "CodeStarConnectionsReadWriteAccess",
"Effect": "Allow",
"Action": [
"codestar-connections:CreateConnection",
"codestar-connections:DeleteConnection",
"codestar-connections:UpdateConnectionInstallation",
"codestar-connections:TagResource",
"codestar-connections:UntagResource",
"codestar-connections:ListConnections",
"codestar-connections:ListInstallationTargets",
"codestar-connections:ListTagsForResource",
"codestar-connections:GetConnection",
"codestar-connections:GetIndividualAccessToken",
"codestar-connections:GetInstallationUrl",
"codestar-connections:PassConnection",
"codestar-connections:StartOAuthHandshake",
"codestar-connections:UseConnection"
],
"Resource": "arn:aws:codestar-connections:*:*:connection/*"
},
{
"Sid": "CodeStarNotificationsReadWriteAccess",
"Effect": "Allow",
"Action": [
"codestar-notifications:CreateNotificationRule",
"codestar-notifications:DescribeNotificationRule",
"codestar-notifications:UpdateNotificationRule",
"codestar-notifications:DeleteNotificationRule",
"codestar-notifications:Subscribe",
"codestar-notifications:Unsubscribe"
],
"Resource": "*",
"Condition": {
"StringLike": {
"codestar-notifications:NotificationsForResource": "arn:aws:codebuild:*"
}
}
},
{
"Sid": "CodeStarNotificationsListAccess",
"Effect": "Allow",
"Action": [
"codestar-notifications:ListNotificationRules",
"codestar-notifications:ListEventTypes",
"codestar-notifications:ListTargets",
"codestar-notifications:ListTagsforResource"
],
"Resource": "*"
},
{
"Sid": "CodeStarNotificationsSNSTopicCreateAccess",
"Effect": "Allow",
"Action": [
"sns:CreateTopic",
"sns:SetTopicAttributes"
],
"Resource": "arn:aws:sns:*:*:codestar-notifications*"
},
{
"Sid": "SNSTopicListAccess",
"Effect": "Allow",
"Action": [
"sns:ListTopics",
"sns:GetTopicAttributes"
],
"Resource": "*"
},
{
"Sid": "CodeStarNotificationsChatbotAccess",
"Effect": "Allow",
"Action": [
"chatbot:DescribeSlackChannelConfigurations",
"chatbot:ListMicrosoftTeamsChannelConfigurations"
],
"Resource": "*"
}
]
}
AWSCodeBuildDeveloperAccess
该AWSCodeBuildDeveloperAccess
策略允许访问项目 CodeBuild 和报表组相关资源的所有功能。此政策不允许用户删除 CodeBuild 项目或报告组,或者其他 Amazon 服务(例如 CloudWatch 活动)中的相关资源。建议对大多数用户应用此策略。
AWSCodeBuildDeveloperAccess
策略包含以下策略语句:
{
"Statement": [
{
"Action": [
"codebuild:StartBuild",
"codebuild:StopBuild",
"codebuild:StartBuildBatch",
"codebuild:StopBuildBatch",
"codebuild:RetryBuild",
"codebuild:RetryBuildBatch",
"codebuild:BatchGet*",
"codebuild:GetResourcePolicy",
"codebuild:DescribeTestCases",
"codebuild:DescribeCodeCoverages",
"codebuild:List*",
"codecommit:GetBranch",
"codecommit:GetCommit",
"codecommit:GetRepository",
"codecommit:ListBranches",
"cloudwatch:GetMetricStatistics",
"events:DescribeRule",
"events:ListTargetsByRule",
"events:ListRuleNamesByTarget",
"logs:GetLogEvents",
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssm:PutParameter"
],
"Resource": "arn:aws:ssm:*:*:parameter/CodeBuild/*"
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": "arn:aws:ecs:*:*:task/*/*"
},
{
"Sid": "CodeStarConnectionsUserAccess",
"Effect": "Allow",
"Action": [
"codestar-connections:ListConnections",
"codestar-connections:GetConnection"
],
"Resource": "arn:aws:codestar-connections:*:*:connection/*"
},
{
"Sid": "CodeStarNotificationsReadWriteAccess",
"Effect": "Allow",
"Action": [
"codestar-notifications:CreateNotificationRule",
"codestar-notifications:DescribeNotificationRule",
"codestar-notifications:UpdateNotificationRule",
"codestar-notifications:Subscribe",
"codestar-notifications:Unsubscribe"
],
"Resource": "*",
"Condition": {
"StringLike": {
"codestar-notifications:NotificationsForResource": "arn:aws:codebuild:*"
}
}
},
{
"Sid": "CodeStarNotificationsListAccess",
"Effect": "Allow",
"Action": [
"codestar-notifications:ListNotificationRules",
"codestar-notifications:ListEventTypes",
"codestar-notifications:ListTargets",
"codestar-notifications:ListTagsforResource"
],
"Resource": "*"
},
{
"Sid": "SNSTopicListAccess",
"Effect": "Allow",
"Action": [
"sns:ListTopics",
"sns:GetTopicAttributes"
],
"Resource": "*"
},
{
"Sid": "CodeStarNotificationsChatbotAccess",
"Effect": "Allow",
"Action": [
"chatbot:DescribeSlackChannelConfigurations",
"chatbot:ListMicrosoftTeamsChannelConfigurations"
],
"Resource": "*"
}
],
"Version": "2012-10-17"
}
AWSCodeBuildReadOnlyAccess
该AWSCodeBuildReadOnlyAccess
政策授予对 CodeBuild 其他 Amazon 服务中的相关资源的只读访问权限。将此策略应用于可以查看和运行构建、查看项目和查看报告组但无法对它们作出任何更改的用户。
AWSCodeBuildReadOnlyAccess
策略包含以下策略语句:
{
"Statement": [
{
"Action": [
"codebuild:BatchGet*",
"codebuild:GetResourcePolicy",
"codebuild:List*",
"codebuild:DescribeTestCases",
"codebuild:DescribeCodeCoverages",
"codecommit:GetBranch",
"codecommit:GetCommit",
"codecommit:GetRepository",
"cloudwatch:GetMetricStatistics",
"events:DescribeRule",
"events:ListTargetsByRule",
"events:ListRuleNamesByTarget",
"logs:GetLogEvents"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "CodeStarConnectionsUserAccess",
"Effect": "Allow",
"Action": [
"codestar-connections:ListConnections",
"codestar-connections:GetConnection"
],
"Resource": "arn:aws:codestar-connections:*:*:connection/*"
},
{
"Sid": "CodeStarNotificationsPowerUserAccess",
"Effect": "Allow",
"Action": [
"codestar-notifications:DescribeNotificationRule"
],
"Resource": "*",
"Condition": {
"StringLike": {
"codestar-notifications:NotificationsForResource": "arn:aws:codebuild:*"
}
}
},
{
"Sid": "CodeStarNotificationsListAccess",
"Effect": "Allow",
"Action": [
"codestar-notifications:ListNotificationRules",
"codestar-notifications:ListEventTypes",
"codestar-notifications:ListTargets"
],
"Resource": "*"
}
],
"Version": "2012-10-17"
}
CodeBuild 托管策略和通知
CodeBuild 支持通知,它可以通知用户生成项目的重要更改。的托管策略 CodeBuild 包括通知功能的策略声明。有关更多信息,请参阅什么是通知?。
完全访问托管策略中的通知的相关权限
AWSCodeBuildFullAccess
托管策略包含以下语句,以允许对通知进行完全访问。应用此托管策略的用户还可以创建和管理用于通知的 Amazon SNS 主题、为用户订阅和取消订阅主题、列出要选择作为通知规则目标的主题,以及列出为 Slack 配置的 Amazon Chatbot
客户端。
{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource", "codestar-notifications:ListEventTypes" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations", "chatbot:ListMicrosoftTeamsChannelConfigurations" ], "Resource": "*" }
只读托管策略中的通知的相关权限
AWSCodeBuildReadOnlyAccess
托管策略包含以下语句,以允许对通知进行只读访问。应用此托管策略的用户可以查看资源的通知,但无法创建、管理或订阅这些通知。
{ "Sid": "CodeStarNotificationsPowerUserAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets" ], "Resource": "*" }
其他托管策略中的通知的相关权限
AWSCodeBuildDeveloperAccess
托管策略包含以下语句,以允许用户创建、编辑和订阅通知。用户无法删除通知规则或管理资源的标签。
{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource", "codestar-notifications:ListEventTypes" ], "Resource": "*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations", "chatbot:ListMicrosoftTeamsChannelConfigurations" ], "Resource": "*" }
有关 IAM 和通知的更多信息,请参阅用于 AWS CodeStar 通知的 Identity and Access Management。
CodeBuild Amazon 托管策略的更新
查看 CodeBuild 自该服务开始跟踪这些更改以来 Amazon 托管策略更新的详细信息。要获得有关此页面更改的自动提示,请订阅 Amazon CodeBuild 用户指南文档历史记录 的 RSS 源。
更改 | 描述 | 日期 |
---|---|---|
|
CodeBuild 使用向这些策略添加了支持其他通知类型的权限 Amazon Chatbot。
|
2023 年 5 月 16 日 |
CodeBuild 开始跟踪更改 |
CodeBuild 开始跟踪其 Amazon 托管策略的更改。 |
2023 年 5 月 16 日 |
客户管理型策略示例
本节的用户策略示例介绍如何授予执行 Amazon CodeBuild 操作的权限。当您使用 CodeBuild API、 Amazon 软件开发工具包或 Amazon CLI时,这些策略会起作用。当您使用控制台时,您必须授予特定于控制台的其他权限。有关信息,请参阅 使用 Amazon CodeBuild 控制台所需的权限。
您可以使用以下示例 IAM 策略来限制您的用户和角色的 CodeBuild 访问权限。
主题
- 允许用户获取有关构建项目的信息
- 允许用户获取有关报告组的信息
- 允许用户获取有关报告的信息
- 允许用户创建构建项目
- 允许用户创建报告组
- 允许用户删除报告组
- 允许用户删除报告
- 允许用户删除构建项目
- 允许用户获取构建项目名称的列表
- 允许用户更改有关构建项目的信息
- 允许用户更改报告组
- 允许用户获取有关构建的信息
- 允许用户获取构建项目的构建 ID 的列表
- 允许用户获取构建 ID 的列表
- 允许用户获取报告组列表
- 允许用户获取报告列表
- 允许用户获取报告组的报告列表
- 允许用户获取报告的测试用例的列表
- 允许用户开始运行构建
- 允许用户尝试停止构建
- 允许用户尝试删除构建
- 允许用户获取有关由 CodeBuild 管理的 Docker 映像的信息
- 允许 CodeBuild 访问创建 VPC 网络接口所需的 Amazon 服务
- 使用 deny 语句防止 Amazon CodeBuild 与源提供商断开连接
允许用户获取有关构建项目的信息
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取任何以名称 my
开头的构建项目的信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetProjects", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }
允许用户获取有关报告组的信息
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取有关报告组的信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetReportGroups", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户获取有关报告的信息
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取有关报告的信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetReports", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户创建构建项目
以下示例策略声明允许用户使用任意名称创建构建项目,但只能在账户us-east-2
所在区域中创建构建项目,123456789012
并且只能使用指定的 CodeBuild 服务角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/CodeBuildServiceRole" } ] }
以下示例策略声明允许用户使用任何名称创建构建项目,但只能在账户us-east-2
所在区域中创建构建项目,123456789012
并且只能使用指定的 CodeBuild 服务角色。它还强制用户只能将指定的服务角色与任何其他服务一起使用, Amazon CodeBuild 而不能使用任何其他 Amazon 服务。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/CodeBuildServiceRole", "Condition": { "StringEquals": {"iam:PassedToService": "codebuild.amazonaws.com"} } } ] }}
允许用户创建报告组
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中创建报告组:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户删除报告组
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中删除报告组:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DeleteReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户删除报告
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中删除报告:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DeleteReport", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户删除构建项目
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中删除任何以名称 my
开头的构建项目:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DeleteProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }
允许用户获取构建项目名称的列表
以下示例策略语句允许用户获取同一账户的构建项目名称的列表:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListProjects", "Resource": "*" } ] }
允许用户更改有关构建项目的信息
以下示例策略语句仅允许用户在 123456789012
账户的 us-east-2
区域中更改有关使用任何名称的构建项目的信息,并且只能使用指定的 Amazon CodeBuild 服务角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:UpdateProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/CodeBuildServiceRole" } ] }
允许用户更改报告组
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中更改报告组:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:UpdateReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户获取有关构建的信息
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取名为 my-build-project
和 my-other-build-project
的构建项目的信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetBuilds", "Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/my-build-project", "arn:aws:codebuild:us-east-2:123456789012:project/my-other-build-project" ] } ] }
允许用户获取构建项目的构建 ID 的列表
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取名为 my-build-project
和 my-other-build-project
的构建项目的构建 ID 列表:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListBuildsForProject", "Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/my-build-project", "arn:aws:codebuild:us-east-2:123456789012:project/my-other-build-project" ] } ] }
允许用户获取构建 ID 的列表
以下示例策略语句允许用户获取同一账户的所有构建 ID 的列表:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListBuilds", "Resource": "*" } ] }
允许用户获取报告组列表
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取有关报告组的列表:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListReportGroups", "Resource": "*" } ] }
允许用户获取报告列表
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取有关报告的列表:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListReports", "Resource": "*" } ] }
允许用户获取报告组的报告列表
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取报告组的报告列表:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListReportsForReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户获取报告的测试用例的列表
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中获取报告的测试用例列表:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DescribeTestCases", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }
允许用户开始运行构建
以下示例策略语句允许用户在 123456789012
账户的 us-east-2
区域中运行任何以名称 my
开头的构建项目:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:StartBuild", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }
允许用户尝试停止构建
以下示例策略语句仅允许用户在 123456789012
账户的 us-east-2
区域中尝试停止任何以名称 my
开头的运行中构建项目:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:StopBuild", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }
允许用户尝试删除构建
以下示例策略语句仅允许用户在 123456789012
账户的 us-east-2
区域中尝试为任何以名称 my
开头的构建项目删除构建:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchDeleteBuilds", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }
允许用户获取有关由 CodeBuild 管理的 Docker 映像的信息
以下示例策略语句允许用户获取有关由 CodeBuild 管理的所有 Docker 映像的信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListCuratedEnvironmentImages", "Resource": "*" } ] }
允许 CodeBuild 访问创建 VPC 网络接口所需的 Amazon 服务
以下示例策略声明授予在具有两个子网的 VPC 中创建网络接口的 Amazon CodeBuild 权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "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" }, "ArnEquals": { "ec2:Subnet": [ "arn:aws:ec2:region
:account-id
:subnet/subnet-id-1", "arn:aws:ec2:region
:account-id
:subnet/subnet-id-2" ] } } } ] }
使用 deny 语句防止 Amazon CodeBuild 与源提供商断开连接
以下示例策略语句使用 Deny 语句阻止 Amazon CodeBuild 与源提供商断开连接。它使用 codebuild:DeleteOAuthToken
(codebuild:PersistOAuthToken
和 codebuild:ImportSourceCredentials
的倒数)连接到源提供商。有关更多信息,请参阅Amazon CodeBuild 控制台连接源提供商所需的权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "codebuild:DeleteOAuthToken", "Resource": "*" } ] }