IAM ポリシーステートメントの条件は、CodeBuild プロジェクトベースのアクションに対するアクセス許可を指定するために使用できる構文の一部です。プロジェクトに関連付けられたタグに基づいてプロジェクトに対するアクションを許可または拒否するポリシーを作成し、これらのポリシーを、ユーザーの管理用に設定した IAM グループに適用できます。コンソールまたは AWS CLI を使用したプロジェクトへのタグの適用については、「AWS CodeBuild でのビルドプロジェクトの作成」を参照してください。CodeBuild SDK を使用したタグの適用については、CodeBuild API リファレンスの「CreateProject」および「タグ」を参照してください。。AWS リソースへのアクセスを制御するタグの使用の詳細については、IAM ユーザーガイドの「リソースタグを使用した AWS リソースへのアクセスの制御」を参照してください。
重要
リザーブドキャパシティ機能を使用すると、ソースファイル、Docker レイヤー、buildspec で指定されキャッシュされたディレクトリなどを含む、フリートインスタンスにキャッシュされたデータに、同じアカウント内の他のプロジェクトからアクセスできます。これは設計によるもので、同じアカウント内のプロジェクトがフリートインスタンスを共有できるようにしています。
例 1: リソースタグに基づいてプロジェクトに対する CodeBuild アクションを制限する
次の例では、キー BatchGetProjects
とキー値 Environment
のタグが付いているプロジェクトに対するすべての Production
アクションを拒否します。ユーザーの管理者は、この 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 グループに適用できます。例えば、AWS タグキー Status
とキー値 Secret
を使用して、任意のレポートグループに対するすべての CodeBuild アクションを拒否するポリシーを作成し、一般的な開発者 (Developers
) 用に作成した IAM グループにそのポリシーを適用できます。次に、上記のタグ付けされたレポートグループに対して作業する開発者が一般的な 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: リソースタグに基づいて AWSCodeBuildDeveloperAccess への 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
"
}
}
}
]
}