本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon CodeBuild 条件键
Amazon 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.large
或m5.large
计算实例类型的队列。
{ "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
环境变量。有关多值上下文键,请参阅单值与多值上下文键。
{ "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
。
{ "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" } } }] }