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

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

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

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

以下示例拒绝所有 BatchGetProjects 标记关键项目的项目的操作 Environment 的关键价值 Production...用户的管理员必须附加此信息 IAM 除非已管理用户政策以外,还有权限政策未经授权 IAM 用户。aws:ResourceTag 条件键用于基于其标签控制对资源的访问。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:BatchGetProjects" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:ResourceTag/Environment": "Production" } } } ] }

例 示例 2 限制 CodeBuild 根据请求标签的项目操作

以下策略拒绝用户授权访问 CreateProject 如果请求包含标签的密钥中有一个标签 Environment 关键价值 Production...此外,该策略还使得这些未授权用户使用 aws:TagKeys 不允许的条件键 UpdateProject 如果请求包含标签的密钥 Environment...管理员必须附加此信息 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 资源关联的 AWS 标签来允许或拒绝对这些资源(项目和报告组)执行操作的策略,然后将该策略应用于为管理 IAM 用户而配置的 IAM 组。例如,您可以创建一个拒绝所有策略的策略 CodeBuild 任何报告组的操作 AWS 标签键 Status 以及关键价值 Secret,然后将该策略应用到您为一般开发人员创建的IAM组(Developers)。然后您需要确保在标签的报告组上工作的开发人员不是该常规的成员 Developers 但是属于不同的组别 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 AWS的操作CodeBuild根据资源标签开发人员访问

您可以创建策略以允许对未使用特定标签标记的所有报告组和项目执行 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" } } } ] }