AWS CodeBuild 条件键 - AWS CodeBuild

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

AWS CodeBuild 条件键

AWS CodeBuild 提供了一组条件密钥,您可以在 IAM 策略中使用这些条件密钥对项目和队列等 CodeBuild 资源强制执行组织策略。条件密钥涵盖了大多数 CodeBuild API 请求上下文,包括网络设置、凭据配置和计算限制。

对您的项目和队列强制执行 VPC 连接设置

此策略允许呼叫者在创建 CodeBuild 项目和队列时使用选定的 VPCs子网和安全组。有关多值上下文键的更多信息,请参阅单值与多值上下文键。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "codebuild:CreateProject", "codebuild:CreateFleet" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "codebuild:vpcConfig.vpcId": [ "vpc-01234567890abcdef", "vpc-abcdef01234567890" ], "codebuild:vpcConfig.subnets": [ "subnet-1234abcd", "subnet-5678abcd" ], "codebuild:vpcConfig.securityGroupIds": [ "sg-12345678abcdefghij", "sg-01234567abcdefghij" ] } } }] }

防止对项目构建规范进行未经授权的修改

此策略不允许调用者覆盖该buildspecOverride字段中的 buildspec。

注意

codebuild:source.buildspec条件键仅支持 Null 运算符来检查 API 字段是否存在。它不评估构建规范的内容。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "codebuild:StartBuild", "Resource": "*" }, { "Effect": "Deny", "Action": "codebuild:StartBuild", "Resource": "*", "Condition": { "Null": { "codebuild:source.buildspec": "false" } } }] }

限制编译版本的计算类型

此策略允许创建只能使用实例类型构建c5.largem5.large计算实例类型的队列。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "codebuild:CreateFleet", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "codebuild:computeConfiguration.instanceType": ["c5.large", "m5.large"] } } }] }

控制环境变量设置

此策略允许调用者将STAGE环境变量改为BETAGAMMA。它还明确拒绝重写 STAGEPRODUCTION,并拒绝覆盖MY_APP_VERSION环境变量。有关多值上下文键,请参阅单值与多值上下文键。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StartBuild" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "codebuild:environment.environmentVariables/STAGE.value": [ "BETA", "GAMMA" ] } } }, { "Effect": "Deny", "Action": [ "codebuild:StartBuild" ], "Resource": "*", "Condition": { "StringEquals": { "codebuild:environment.environmentVariables/STAGE.value": "PRODUCTION" }, "ForAnyValue:StringEquals": { "codebuild:environment.environmentVariables.name": [ "MY_APP_VERSION" ] } } } ] }

在条件键名称中使用变量

您可以在条件键名称中使用变量,例如secondarySources/${sourceIdentifier}.locationsecondaryArtifacts/${artifactIdentifier}.location,您可以在其中在 IAM 策略中指定辅助来源或次要项目标识符。以下策略允许调用者为辅助来源创建具有特定源位置的项目mySecondSource

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateProject", "Resource": "*", "Condition": { "StringEquals": { "codebuild:secondarySources/mySecondSource.location": "my-source-location" } } } ] }

检查 API 请求中是否存在属性

CodeBuild 支持条件键来检查 API 请求中是否存在某些字段。该策略在创建或更新项目时强制执行 VPC 要求。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "codebuild:CreateProject", "codebuild:UpdateProject" ], "Resource": "*", "Condition": { "Null": { "codebuild:vpcConfig": "false" } } }] }