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.large 或 m5.large 计算实例类型构建的实例集。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "codebuild:CreateFleet",
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"codebuild:computeConfiguration.instanceType": ["c5.large", "m5.large"]
}
}
}]
}
控制环境变量设置
此策略支持调用方将 STAGE 环境变量覆盖为 BETA 或 GAMMA。它还显式拒绝将 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}.location 和 secondaryArtifacts/${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"
}
}
}]
}