

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# タグを使用して AWS CodeBuild リソースへのアクセスを制御する
<a name="auth-and-access-control-using-tags"></a>

IAM ポリシーステートメントの条件は、CodeBuild プロジェクトベースのアクションに対するアクセス許可を指定するために使用できる構文の一部です。プロジェクトに関連付けられたタグに基づいてプロジェクトに対するアクションを許可または拒否するポリシーを作成し、これらのポリシーを、ユーザーの管理用に設定した IAM グループに適用できます。コンソールまたは を使用してプロジェクトにタグを適用する方法については AWS CLI、「」を参照してください[でのビルドプロジェクトの作成AWS CodeBuild](create-project.md)。CodeBuild SDK を使用したタグの適用については、*CodeBuild API リファレンス*の[「CreateProject」](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CreateProject.html#API_CreateProject_RequestSyntax)および[「タグ」を参照してください。](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Tag.html)。タグを使用して AWS リソースへのアクセスを制御する方法については、*IAM ユーザーガイド*の[「リソースタグを使用した AWS リソースへのアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)」を参照してください。

**重要**  
リザーブドキャパシティ機能を使用すると、ソースファイル、Docker レイヤー、buildspec で指定されキャッシュされたディレクトリなどを含む、フリートインスタンスにキャッシュされたデータに、同じアカウント内の他のプロジェクトからアクセスできます。これは設計によるもので、同じアカウント内のプロジェクトがフリートインスタンスを共有できるようにしています。

**Example 例 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"
        }
      }
    }
  ]
}
```

**Example 例 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"]
        }
      }
    }
  ]
}
```

**Example 例 3: リソースタグに基づいてレポートグループのアクションを拒否または許可する**  
これらのリソースに関連付けられた AWS タグに基づいて CodeBuild リソース (プロジェクトおよびレポートグループ) に対するアクションを許可または拒否するポリシーを作成し、それらのポリシーをユーザーの管理用に設定した IAM グループに適用できます。たとえば、 AWS タグキー`Status`とキー値が のレポートグループですべての CodeBuild アクションを拒否するポリシーを作成し`Secret`、そのポリシーを一般的な開発者 (*開発者*) 用に作成した 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": {
        "StringLike": {
          "aws:RequestedRegion": "us-east-1"
        }
      }
    }
  ]
}
```

**Example 例 4: リソースタグに基づいて AWSCodeBuildDeveloperAccess への CodeBuild アクションを制限する**  
特定のタグが付けられていないすべてのレポートグループおよびプロジェクトに対する CodeBuild アクションを許可するポリシーを作成できます。たとえば、以下のポリシーでは、指定したタグが付けられたものを除くすべてのレポートグループとプロジェクトに [AWSCodeBuildDeveloperAccess](auth-and-access-control-iam-identity-based-access-control.md#developer-access-policy) と同等のアクセス許可を付与します。    
****  

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