タグを使用した AWS CodeBuild リソースへのアクセスのコントロール - AWS CodeBuild

タグを使用した AWS CodeBuild リソースへのアクセスのコントロール

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 条件キーを使用して、リソースへのアクセスをリソースタグに基づいてコントロールします。

JSON
{ "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 リクエストで渡すことができるタグをコントロールします

JSON
{ "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 アクションを拒否します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:BatchGetReportGroups", "codebuild:CreateReportGroup", "codebuild:DeleteReportGroup", "codebuild:ListReportGroups", "codebuild:ListReportsForReportGroup", "codebuild:UpdateReportGroup" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestedRegion": "us-east-1" } } } ] }
例 4: リソースタグに基づいて AWSCodeBuildDeveloperAccess への CodeBuild アクションを制限する

特定のタグが付けられていないすべてのレポートグループおよびプロジェクトに対する CodeBuild アクションを許可するポリシーを作成できます。たとえば、以下のポリシーでは、指定したタグが付けられたものを除くすべてのレポートグループとプロジェクトに AWSCodeBuildDeveloperAccess と同等のアクセス許可を付与します。

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