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

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

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

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

例 示例 1:限制CodeBuild基于资源标签的项目操作

以下示例拒绝对用键 Environment、键值 Production 标记的项目执行所有 BatchGetProjects 操作。除托管用户策略之外,用户的管理员还必须将此 IAM 策略附加到未经授权的 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:根据资源标签拒绝或允许对报告组执行操作

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

以下示例拒绝对用键 Status 和键值 Secret 标记的报告组执行所有 CodeBuild 操作:

{ "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" } } } ] }