AWS CodeBuild 条件键 - AWS CodeBuild

AWS CodeBuild 条件键

AWS CodeBuild 提供一组条件键,您可以在 IAM 策略中使用这些条件键,以便在项目和实例集等 CodeBuild 资源上强制执行组织策略。条件键涵盖了大部分 CodeBuild API 请求上下文,包括网络设置、凭证配置和计算限制。

对您的项目和实例集强制执行 VPC 连接设置

此策略支持调用者在创建 CodeBuild 项目和实例集时使用选定的 VPC、子网和安全组。有关多值上下文键的更多信息,请参阅单值和多值上下文键

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

防止对项目 buildspec 进行未经授权的修改

此策略不支持调用方覆盖 buildspecOverride 字段中的 buildspec。

注意

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

JSON
{ "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 计算实例类型构建的实例集。

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

控制环境变量设置

此策略支持调用方将 STAGE 环境变量覆盖为 BETAGAMMA。它还显式拒绝将 STAGE 覆盖为 PRODUCTION,并拒绝覆盖 MY_APP_VERSION 环境变量。有关多值上下文键,请参阅单值和多值上下文键

JSON
{ "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 创建具有特定源位置的项目。

JSON
{ "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.vpcId": "false" } } }] }