

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 태그를 사용하여 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 계층, 빌드스펙에 지정된 캐시된 디렉터리를 포함하여 플릿 인스턴스에 캐시된 데이터를 동일한 계정 내의 다른 프로젝트에서 액세스할 수 있습니다. 이는 의도적으로 설계된 것이며 동일한 계정 내의 프로젝트가 플릿 인스턴스를 공유할 수 있도록 허용합니다.

**Example 예 1: 리소스 태그를 기준으로 CodeBuild 프로젝트 작업 제한**  
 다음 예제에서는 키 `Environment` 및 키 값 `Production`으로 태그 지정된 프로젝트에 대한 모든 `BatchGetProjects` 작업을 거부합니다. 고객의 관리자는 권한 없는 사용자에게 관리형 사용자 정책 외에도 IAM 정책을 연결해야 합니다. `aws:ResourceTag` 조건 키는 태그를 기반으로 리소스에 대한 액세스를 제어하는 데 사용됩니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:BatchGetProjects"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:ResourceTag/Environment": "Production"
        }
      }
    }
  ]
}
```

**Example 예 2: 요청 태그를 기준으로 CodeBuild 프로젝트 작업 제한**  
다음 정책은 요청에 키 `Environment` 및 키 값 `Production`을 사용하는 태그가 포함된 경우 `CreateProject` 작업에 대한 사용자 권한을 거부합니다. 또한 이 정책은 요청에 키 `Environment`를 사용하는 태그가 포함된 경우 `UpdateProject`를 허용하지 않도록 이러한 권한 없는 사용자가 `aws:TagKeys` 조건 키를 사용하여 프로젝트를 수정하는 것을 방지합니다. 관리자는 이러한 작업을 수행할 권한이 없는 사용자에게 관리형 사용자 정책 외에도 이 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 그룹에 해당 정책을 적용할 수 있습니다. 그런 다음, 태그가 지정된 보고서 그룹에 대해 작업하는 개발자가 일반 *개발자* 그룹에 속하지 않고, 대신에 제한 정책이 적용되지 않는 다른 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: 리소스 태그를 기준으로 CodeBuild 작업을 AWSCodeBuildDeveloperAccess로 제한**  
특정 태그가 지정되지 않은 모든 보고서 그룹 및 프로젝트에 대한 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"
            }
         }
      }
   ]
}
```