使用标签控制对 Amazon CodeBuild 资源的访问 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用标签控制对 Amazon CodeBuild 资源的访问

IAM 策略声明中的条件是语法的一部分,您可以使用该语法为 CodeBuild 基于项目的操作指定权限。您可以创建一个策略(该策略基于与项目关联的标签来允许或拒绝对这些项目执行操作),然后将该策略应用于为管理用户而配置的 IAM 组。有关使用控制台或将标签应用于项目的信息 Amazon CLI,请参阅在 Amazon CodeBuild 中创建构建项目。有关使用 CodeBuild SDK 应用标签的信息,请参阅 CodeBuildAPI 参考中的CreateProject 标签。有关使用标签控制 Amazon 资源访问的信息,请参阅 IAM 用户指南中的使用 Amazon 资源标签控制对资源的访问权限。

例 示例 1:根据资源标签限制 CodeBuild 项目操作

以下示例拒绝对用键 Environment、键值 Production 标记的项目执行所有 BatchGetProjects 操作。除了托管用户策略,用户的管理员还必须将此 IAM 策略附加到未经授权的用户。aws:ResourceTag 条件键用于基于其标签控制对资源的访问。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:BatchGetProjects" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:ResourceTag/Environment": "Production" } } } ] }
例 示例 2:根据请求标签限制 CodeBuild 项目操作

如果请求包含键为 Environment、键值为 Production 的标签,则以下策略拒绝用户对 CreateProject 操作的权限。此外,该策略将阻止这些未经授权的用户修改项目,方法是使用 aws:TagKeys 条件键在请求包含键为 Environment 的标签时不允许 UpdateProject。除了托管用户策略之外,管理员还必须将此 IAM 策略附加到无权执行这些操作的用户。aws:RequestTag 条件键用于控制可以在 IAM 请求中传递哪些标签

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:CreateProject" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:RequestTag/Environment": "Production" } } }, { "Effect": "Deny", "Action": [ "codebuild:UpdateProject" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Environment"] } } } ] }
例 示例 3:根据资源标签拒绝或允许对报告组执行操作

您可以根据与资源(项目和报告组)关联的 Amazon 标签创建允许或拒绝对这些 CodeBuild 资源(项目和报告组)执行操作的策略,然后将这些策略应用于您为管理用户而配置的 IAM 群组。例如,您可以创建一个策略,拒绝对 Amazon 标签键Status和密钥值为的任何报告组 CodeBuild 执行所有操作Secret,然后将该策略应用于您为普通开发人员(开发人员)创建的 IAM 群组。然后,您需要确保使用这些带有标签的报告组的开发人员不是该常规 Developers 组的成员,而是属于未应用限制性策略的其他 IAM 组 (SecretDevelopers)。

以下示例拒绝对标有密钥Status和键值的报表组 CodeBuild 执行所有操作Secret

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Deny", "Action" : [ "codebuild:BatchGetReportGroups," "codebuild:CreateReportGroup", "codebuild:DeleteReportGroup", "codebuild:ListReportGroups", "codebuild:ListReportsForReportGroup", "codebuild:UpdateReportGroup" ] "Resource" : "*", "Condition" : { "StringEquals" : "aws:ResourceTag/Status": "Secret" } } ] }
例 示例 4:将 CodeBuild 操作限制为 AWSCodeBuildDeveloperAccess 基于资源标签

您可以创建允许对未使用特定标签标记的所有报告组和项目执行 CodeBuild 操作的策略。例如,以下策略为除了使用指定标签标记的报告组和项目以外的所有其他报告组和项目提供与 AWSCodeBuildDeveloperAccess 等效的权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StartBuild", "codebuild:StopBuild", "codebuild:BatchGet*", "codebuild:GetResourcePolicy", "codebuild:DescribeTestCases", "codebuild:List*", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "codecommit:ListBranches", "cloudwatch:GetMetricStatistics", "events:DescribeRule", "events:ListTargetsByRule", "events:ListRuleNamesByTarget", "logs:GetLogEvents", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } } ] }