

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

# 의 보안 AWS CodeBuild
<a name="security"></a>

의 클라우드 보안 AWS 이 최우선 순위입니다. AWS 고객은 보안에 가장 민감한 조직의 요구 사항을 충족하도록 구축된 데이터 센터 및 네트워크 아키텍처의 이점을 누릴 수 있습니다.

보안은 AWS 와 사용자 간의 공동 책임입니다. [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)은 이를 클라우드*의* 보안과 클라우드 *내* 보안으로 설명합니다.
+ **클라우드 보안 **- AWS 는에서 AWS 서비스를 실행하는 인프라를 보호할 책임이 있습니다 AWS 클라우드. AWS 또한는 안전하게 사용할 수 있는 서비스를 제공합니다. 서드 파티 감사자는 정기적으로 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/)의 일환으로 보안 효과를 테스트하고 검증합니다. 에 적용되는 규정 준수 프로그램에 대한 자세한 내용은 [AWS 규정 준수 프로그램 제공 범위 내 서비스를](https://aws.amazon.com/compliance/services-in-scope/) AWS CodeBuild참조하세요.
+ **클라우드의 보안** - 사용자의 책임은 사용하는 AWS 서비스에 따라 결정됩니다. 또한 귀하는 데이터의 민감도, 회사 요구 사항, 관련 법률 및 규정을 비롯한 기타 요소에 대해서도 책임이 있습니다.

이 설명서는 CodeBuild를 사용할 때 공동 책임 모델을 적용하는 방법을 이해하는 데 도움이 됩니다. 다음 주제에서는 보안 및 규정 준수 목적에 맞게 CodeBuild를 구성하는 방법을 보여줍니다. 또한 CodeBuild 리소스를 모니터링하고 보호하는 데 도움이 되는 다른 AWS 서비스를 사용하는 방법을 알아봅니다.

**Topics**
+ [

# 의 데이터 보호 AWS CodeBuild
](data-protection.md)
+ [

# 의 자격 증명 및 액세스 관리 AWS CodeBuild
](auth-and-access-control.md)
+ [

# 에 대한 규정 준수 검증 AWS CodeBuild
](compliance-validation.md)
+ [

# 의 복원력 AWS CodeBuild
](codebuild-disaster-recovery-resiliency.md)
+ [

# 의 인프라 보안 AWS CodeBuild
](infrastructure-security.md)
+ [

# CodeBuild에서 소스 공급자에 액세스
](access-tokens.md)
+ [

# 교차 서비스 혼동된 대리인 방지
](cross-service-confused-deputy-prevention.md)

# 의 데이터 보호 AWS CodeBuild
<a name="data-protection"></a>

 AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)의 데이터 보호에 적용됩니다 AWS CodeBuild. 이 모델에 설명된 대로 AWS 는 모든를 실행하는 글로벌 인프라를 보호할 책임이 있습니다 AWS 클라우드. 사용자는 이 인프라에 호스팅되는 콘텐츠에 대한 통제 권한을 유지할 책임이 있습니다. 사용하는 AWS 서비스 의 보안 구성과 관리 태스크에 대한 책임도 사용자에게 있습니다. 데이터 프라이버시에 관한 자세한 내용은 [데이터 프라이버시 FAQ](https://aws.amazon.com/compliance/data-privacy-faq/)를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은 *AWS 보안 블로그*의 [AWS 공동 책임 모델 및 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 블로그 게시물을 참조하세요.

데이터 보호를 위해 자격 증명을 보호하고 AWS 계정 AWS IAM Identity Center 또는 AWS Identity and Access Management (IAM)를 사용하여 개별 사용자를 설정하는 것이 좋습니다. 이렇게 하면 개별 사용자에게 자신의 직무를 충실히 이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.
+ 각 계정에 다중 인증(MFA)을 사용합니다.
+ SSL/TLS를 사용하여 AWS 리소스와 통신합니다. TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ 를 사용하여 API 및 사용자 활동 로깅을 설정합니다 AWS CloudTrail. CloudTrail 추적을 사용하여 AWS 활동을 캡처하는 방법에 대한 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [ CloudTrail 추적 작업을](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) 참조하세요.
+ 내의 모든 기본 보안 제어와 함께 AWS 암호화 솔루션을 사용합니다 AWS 서비스.
+ Amazon S3에 저장된 민감한 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리형 보안 서비스를 사용합니다.
+ 명령줄 인터페이스 또는 API를 AWS 통해에 액세스할 때 FIPS 140-3 검증 암호화 모듈이 필요한 경우 FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 [연방 정보 처리 표준(FIPS) 140-3](https://aws.amazon.com/compliance/fips/)을 참조하세요.

고객의 이메일 주소와 같은 기밀 정보나 중요한 정보는 태그나 **이름** 필드와 같은 자유 형식 텍스트 필드에 입력하지 않는 것이 좋습니다. 여기에는 CodeBuild 또는 기타 AWS 서비스 에서 콘솔 AWS CLI, API 또는 AWS SDKs를 사용하여 작업하는 경우가 포함됩니다. 이름에 사용되는 태그 또는 자유 형식 텍스트 필드에 입력하는 모든 데이터는 청구 또는 진단 로그에 사용될 수 있습니다. 외부 서버에 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 보안 인증 정보를 URL에 포함시켜서는 안 됩니다.

 중요한 정보를 보호하기 위해 CodeBuild 로그에 다음 항목이 숨겨져 있습니다.
+  CodeBuild 프로젝트 환경 변수 또는 buildspec `env/parameter-store` 섹션의 Parameter Store를 사용하여 지정된 문자열. 자세한 내용은 Amazon EC2 Systems Manager 사용 설명서의 [Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) 및 [Systems Manager Parameter Store 콘솔 연습](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-walk.html#sysman-paramstore-console)을 참조하세요.**
+  AWS Secrets Manager CodeBuild 프로젝트 환경 변수 또는 buildspec `env/secrets-manager` 섹션에서를 사용하여 지정된 문자열입니다. 자세한 내용은 [키 관리](security-key-management.md) 단원을 참조하십시오.

데이터 보호에 대한 자세한 내용은 *AWS 보안 블로그*의 [AWS 공동 책임 모델 및 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 블로그 게시물을 참조하세요.

**Topics**
+ [

# 데이터 암호화
](security-encryption.md)
+ [

# 키 관리
](security-key-management.md)
+ [

# 트래픽 개인 정보 보호
](security-traffic-privacy.md)

# 데이터 암호화
<a name="security-encryption"></a>

암호화는 CodeBuild 보안의 중요한 부분입니다. 일부 암호화(예: 전송 중인 데이터 암호화)는 기본으로 제공되며 어떠한 것도 필요하지 않습니다. 기타 암호화(예: 유휴 상태의 데이터 암호화)는 프로젝트나 빌드 생성 시 구성할 수 있습니다.
+ **유휴 데이터 암호화** - 캐시, 로그, 내보낸 원시 테스트 보고서 데이터 파일, 빌드 결과와 같은 빌드 아티팩트는 기본적으로를 사용하여 암호화됩니다 AWS 관리형 키. 이러한 KMS 키를 사용하지 않으려면 고객 관리형 키를 생성하고 구성해야 합니다. [KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) 및 [AWS 키 관리 서비스 개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)에 대한 자세한 내용은AWS Key Management Service 사용 설명서를 참조하세요.**
  + CodeBuild가 빌드 출력 아티팩트를 암호화하는 데 사용하는 AWS KMS 키의 식별자를 `CODEBUILD_KMS_KEY_ID` 환경 변수에 저장할 수 있습니다. 자세한 내용은 [빌드 환경의 환경 변수](build-env-ref-env-vars.md) 섹션을 참조하세요.
  + 빌드 프로젝트 생성 시 고객 관리형 키를 지정할 수 있습니다. 자세한 내용은 [Set the Encryption Key Using the Console](create-project.md#encryptionkey-console) 및 [CLI를 사용하여 암호화 키 설정](create-project.md#cli.encryptionkey)을 참조하세요.

  빌드 플릿의 Amazon Elastic Block Store 볼륨은 기본적으로를 사용하여 암호화됩니다 AWS 관리형 키.
+ **전송 중 데이터 암호화** - 고객과 CodeBuild 간 및 CodeBuild와 다운스트림 종속성 간의 모든 통신은 서명 버전 4 서명 프로세스를 사용하여 서명된 TLS 연결을 사용하여 보호됩니다. 모든 CodeBuild 엔드포인트는에서 관리하는 SHA-256 인증서를 사용합니다 AWS Private Certificate Authority. 자세한 내용은 [서명 버전 4 서명 프로세스](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 및 [ACM PCA란 무엇입니까](https://docs.aws.amazon.com/privateca/latest/userguide/)를 참조하십시오.
+ **빌드 아티팩트 암호화** - 빌드 프로젝트와 관련된 CodeBuild 서비스 역할이 빌드 출력 아티팩트를 암호화하려면 KMS 키에 대한 액세스 권한이 필요합니다. 기본적으로 CodeBuild는 AWS 계정에서 Amazon S3 AWS 관리형 키 용를 사용합니다. 이 AWS 관리형 키를 사용하지 않으려면 고객 관리형 키를 생성 및 구성해야 합니다. 자세한 내용은 *AWS KMS 개발자 안내서*의 [빌드 출력 암호화](setting-up-kms.md) 및 [키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)을 참조하세요.

# 키 관리
<a name="security-key-management"></a>

암호화를 통해 콘텐츠의 무단 사용을 방지할 수 있습니다. 암호화 키를에 저장 AWS Secrets Manager한 다음 빌드 프로젝트와 연결된 CodeBuild 서비스 역할에 Secrets Manager 계정에서 암호화 키를 가져올 수 있는 권한을 부여합니다. 자세한 내용은 [고객 관리형 키를 사용하여 빌드 출력 암호화](setting-up-kms.md), [에서 빌드 프로젝트 생성AWS CodeBuild](create-project.md), [수동으로 AWS CodeBuild 빌드 실행](run-build.md) 및 [자습서: 보안 암호 저장 및 검색](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html)을 참조하십시오.

빌드 명령에서 `CODEBUILD_KMS_KEY_ID` 환경 변수를 사용하여 AWS KMS 키 식별자를 가져옵니다. 자세한 내용은 [빌드 환경의 환경 변수](build-env-ref-env-vars.md) 단원을 참조하십시오.

Secrets Manager를 사용하여 런타임 환경에 사용된 도커 이미지를 저장하는 프라이빗 레지스트리의 보안 인증을 보호할 수 있습니다. 자세한 내용은 [CodeBuild용 AWS Secrets Manager 샘플이 포함된 프라이빗 레지스트리](sample-private-registry.md) 단원을 참조하십시오.

# 트래픽 개인 정보 보호
<a name="security-traffic-privacy"></a>

인터페이스 VPC 엔드포인트를 사용하도록 CodeBuild를 구성하여 빌드의 보안을 향상할 수 있습니다. 이를 위해 인터넷 게이트웨이, NAT 디바이스 또는 가상 프라이빗 게이트웨이가 필요 없습니다. 또한 PrivateLink를 구성하는 것이 필수는 아니지만 구성하는 것이 좋습니다. 자세한 내용은 [VPC 엔드포인트 사용](use-vpc-endpoints-with-codebuild.md) 단원을 참조하십시오. PrivateLink 및 VPC 엔드포인트에 대한 자세한 내용은 [AWS PrivateLink](https://aws.amazon.com/privatelink/) 및 [PrivateLink를 통한 AWS 서비스 액세스](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html#what-is-privatelink)를 참조하세요.

# 의 자격 증명 및 액세스 관리 AWS CodeBuild
<a name="auth-and-access-control"></a>

에 액세스하려면 자격 증명이 AWS CodeBuild 필요합니다. 이러한 자격 증명에는 S3 버킷에 빌드 아티팩트를 저장 및 검색하고 빌드에 대한 Amazon CloudWatch Logs를 보는 등 AWS 리소스에 액세스할 수 있는 권한이 있어야 합니다. 다음 섹션에서는 [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)(IAM) 및 CodeBuild를 사용하여 리소스에 대한 액세스를 보호할 수 있는 방법에 대한 세부 정보를 제공합니다.

# AWS CodeBuild 리소스에 대한 액세스 권한 관리 개요
<a name="auth-and-access-control-iam-access-control-identity-based"></a>

모든 AWS 리소스는 AWS 계정이 소유하며, 리소스를 생성하거나 액세스할 수 있는 권한은 권한 정책에 의해 관리됩니다. 계정 관리자는 IAM ID(사용자, 그룹 및 역할)에 권한 정책을 연결할 수 있습니다.

**참고**  
계정 관리자 또는 관리자 사용자는 관리자 권한이 있는 사용자입니다. 자세한 설명은 *IAM 사용자 가이드*의 [IAM 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 섹션을 참조하십시오.

권한을 부여할 때는 권한을 부여 받을 사용자, 사용자가 액세스할 수 있는 리소스 및 해당 리소스에 수행할 수 있는 작업을 결정합니다.

**Topics**
+ [

## AWS CodeBuild 리소스 및 작업
](#arn-formats)
+ [

## 리소스 소유권 이해
](#understanding-resource-ownership)
+ [

## 리소스 액세스 관리
](#managing-access-resources)
+ [

## 정책 요소 지정: 작업, 효과, 보안 주체
](#actions-effects-principals)

## AWS CodeBuild 리소스 및 작업
<a name="arn-formats"></a>

에서 AWS CodeBuild기본 리소스는 빌드 프로젝트입니다. 정책에서 Amazon 리소스 이름(ARN)을 사용하여 정책이 적용되는 리소스를 식별합니다. 빌드도 리소스이며 빌드에는 이와 연결된 ARN이 들어 있습니다. 자세한 내용은의 [Amazon 리소스 이름(ARN) 및 AWS 서비스 네임스페이스](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)를 참조하세요*Amazon Web Services 일반 참조*.


| 리소스 유형 | ARN 형식 | 
| --- | --- | 
| 빌드 프로젝트 |  `arn:aws:codebuild:region-ID:account-ID:project/project-name`  | 
| 빌드 |  `arn:aws:codebuild:region-ID:account-ID:build/build-ID`  | 
| 보고서 그룹 | arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name | 
| Report | arn:aws:codebuild:region-ID:account-ID:report/report-ID | 
| 플릿 |  `arn:aws:codebuild:region-ID:account-ID:fleet/fleet-ID`  | 
|  모든 CodeBuild 리소스  |  `arn:aws:codebuild:*`  | 
|  지정된 AWS 리전에서 지정된 계정이 소유한 모든 CodeBuild 리소스  |  `arn:aws:codebuild:region-ID:account-ID:*`  | 

**중요**  
예약 용량 기능을 사용할 때 소스 파일, Docker 계층, 빌드스펙에 지정된 캐시된 디렉터리를 포함하여 플릿 인스턴스에 캐시된 데이터를 동일한 계정 내의 다른 프로젝트에서 액세스할 수 있습니다. 이는 의도적으로 설계된 것이며 동일한 계정 내의 프로젝트가 플릿 인스턴스를 공유할 수 있도록 허용합니다.

**참고**  
대부분의 AWS 서비스는 콜론(:) 또는 슬래시(/)를 ARNs. 그러나 CodeBuild는 리소스 패턴 및 규칙에서 정확한 일치를 사용합니다. 따라서 이벤트 패턴을 만들 때 리소스에서 ARN 구문이 일치하도록 정확한 문자를 사용해야 합니다.

예를 들어, 명령문에서 다음과 같이 ARN을 사용하여 특정 빌드 프로젝트(*myBuildProject*)를 지정할 수 있습니다.

```
"Resource": "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject"
```

모든 리소스를 지정해야 하거나, API 작업이 ARN을 지원하지 않는 경우 다음과 같이 `Resource` 요소에 와일드카드 문자(\$1)를 사용합니다.

```
"Resource": "*"
```

일부 CodeBuild API 작업에서는 여러 리소스 사용을 허용합니다(예: `BatchGetProjects`). 명령문 하나에 여러 리소스를 지정하려면 다음과 같이 각 ARN을 쉼표로 구분합니다.

```
"Resource": [
  "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject",
  "arn:aws:codebuild:us-east-2:123456789012:project/myOtherBuildProject"
]
```

CodeBuild는 CodeBuild 리소스를 처리하기 위한 작업 모음을 제공합니다. 목록을 보려면 [AWS CodeBuild 권한 참조](auth-and-access-control-permissions-reference.md) 섹션을 참조하세요.

## 리소스 소유권 이해
<a name="understanding-resource-ownership"></a>

 AWS 계정은 누가 리소스를 생성했는지에 관계없이 계정에 생성된 리소스를 소유합니다. 특히 리소스 소유자는 리소스 생성 요청을 인증하는 AWS [보안 주체 엔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)터티(즉, 루트 계정, 사용자 또는 IAM 역할)의 계정입니다. 다음 예제에서는 이러한 작동 방법을 설명합니다.
+  AWS 계정의 루트 계정 자격 증명을 사용하여 규칙을 생성하는 경우 AWS 계정은 CodeBuild 리소스의 소유자입니다.
+  AWS 계정에서 사용자를 생성하고 해당 사용자에게 CodeBuild 리소스를 생성할 수 있는 권한을 부여하는 경우 사용자는 CodeBuild 리소스를 생성할 수 있습니다. 하지만 사용자가 속한 AWS 계정이 CodeBuild 리소스를 소유합니다.
+  AWS 계정에서 CodeBuild 리소스를 생성할 권한이 있는 IAM 역할을 생성하는 경우 해당 역할을 수임할 수 있는 사람은 누구나 CodeBuild 리소스를 생성할 수 있습니다. 역할이 속한 AWS 계정이 CodeBuild 리소스를 소유합니다.

## 리소스 액세스 관리
<a name="managing-access-resources"></a>

권한 정책은 누가 어떤 리소스에 액세스 할 수 있는지를 나타냅니다.

**참고**  
이 섹션에서는 AWS CodeBuild에서 IAM을 사용하는 방법에 대해 설명하며, IAM 서비스에 대한 자세한 내용은 다루지 않습니다. IAM 설명서의 전체 내용은 *IAM 사용자 안내서*의 [IAM이란?](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)을 참조하세요. IAM 정책 구문과 설명에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS IAM 정책 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) 섹션을 참조하세요.

IAM 보안 인증에 연결된 정책을 보안 인증 기반 정책(IAM 정책)이라고 합니다. 리소스에 연결된 정책을 리소스 기반 정책이라고 합니다. CodeBuild는 계정 리소스 공유를 위해 자격 증명 기반 정책과 특정 읽기 전용 API에 대한 리소스 기반 정책을 지원합니다.

### S3 버킷에 대한 보안 액세스
<a name="secure-s3-buckets"></a>

IAM 역할에 다음 권한을 포함시켜 CodeBuild 프로젝트와 연결된 S3 버킷이 사용자 또는 사용자가 신뢰할 수 있는 사람의 소유인지 확인할 것을 적극 권장합니다. 이러한 권한은 AWS 관리형 정책 및 역할에 포함되지 않습니다. 사용자가 직접 추가해야 합니다.
+  `s3:GetBucketAcl` 
+  `s3:GetBucketLocation` 

프로젝트에서 사용되는 S3 버킷 소유자가 변경될 경우에는 사용자가 해당 버킷을 아직도 소유하고 있는지 확인하고 아닐 경우에는 사용자의 IAM 역할에 권한을 업데이트해야 합니다. 자세한 내용은 [사용자가 CodeBuild와 상호 작용하도록 허용](setting-up-service-permissions-group.md) 및 [CodeBuild가 다른 AWS 서비스와 상호 작용하도록 허용](setting-up-service-role.md) 섹션을 참조하세요.

## 정책 요소 지정: 작업, 효과, 보안 주체
<a name="actions-effects-principals"></a>

각 AWS CodeBuild 리소스에 대해 서비스는 API 작업 세트를 정의합니다. 이러한 API 작업에 대한 권한을 부여하기 위해 CodeBuild에서는 정책에서 지정할 수 있는 작업을 정의합니다. 일부 API 작업에서는 API 작업을 수행하기 위해 복수의 작업에 대한 권한이 필요할 수 있습니다. 자세한 내용은 [AWS CodeBuild 리소스 및 작업](#arn-formats) 및 [AWS CodeBuild 권한 참조](auth-and-access-control-permissions-reference.md) 섹션을 참조하세요.

다음은 기본 정책 요소입니다.
+ **리소스** – Amazon 리소스 이름(ARN)을 사용하여 정책을 적용할 리소스를 식별합니다.
+ **작업** – 작업 키워드를 사용하여 허용 또는 거부할 리소스 작업을 식별합니다. 예를 들어, `codebuild:CreateProject` 권한은 사용자에게 `CreateProject` 작업 수행 권한을 제공합니다.
+ **효과** – 사용자가 작업을 요청하는 경우 효과(허용 또는 거부)를 지정합니다. 명시적으로 리소스에 대한 액세스 권한을 부여(허용)하지 않는 경우, 액세스는 묵시적으로 거부됩니다. 리소스에 대한 액세스를 명시적으로 거부할 수도 있습니다. 다른 정책에서 액세스 권한을 부여하더라도 사용자가 해당 리소스에 액세스할 수 없도록 하려고 할 때 이러한 작업을 수행할 수 있습니다.
+ **보안 주체** – 자격 증명 기반 정책(IAM 정책)에서 정책이 연결되는 사용자는 암시적인 보안 주체입니다. 리소스 기반 정책의 경우 사용자, 계정, 서비스 또는 권한의 수신자인 기타 엔터티를 지정합니다.

IAM 정책 구문과 설명에 대한 자세한 내용은 *IAM 사용자 안내서*의 [AWS IAM 정책 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)를 참조하세요.

모든 CodeBuild API 작업과 해당 작업이 적용되는 리소스를 보여 주는 표는 [AWS CodeBuild 권한 참조](auth-and-access-control-permissions-reference.md) 섹션을 참조하세요.

# 에 대한 자격 증명 기반 정책 사용 AWS CodeBuild
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

이 주제에서는 자격 증명 기반 정책의 예를 통해 계정 관리자가 IAM 자격 증명(사용자, 그룹, 역할)에 권한 정책을 연결해 AWS CodeBuild 리소스에 대한 작업 수행 권한을 부여하는 방법을 보여줍니다.

**중요**  
CodeBuild 리소스에 대한 액세스 관리를 위해 제공되는 기본 개념과 옵션 설명에 대한 소개 주제 부분을 먼저 읽어 보세요. 자세한 내용은 [AWS CodeBuild 리소스에 대한 액세스 권한 관리 개요](auth-and-access-control-iam-access-control-identity-based.md) 단원을 참조하십시오.

**Topics**
+ [

## AWS CodeBuild 콘솔을 사용하는 데 필요한 권한
](#console-permissions)
+ [

## 가 Amazon Elastic Container Registry AWS CodeBuild 에 연결하는 데 필요한 권한
](#ecr-policies)
+ [

## AWS CodeBuild 콘솔이 소스 공급자에 연결하는 데 필요한 권한
](#console-policies)
+ [

## AWS 에 대한 관리형(미리 정의된) 정책 AWS CodeBuild
](#managed-policies)
+ [

## CodeBuild 관리형 정책 및 알림
](#notifications-permissions)
+ [

## AWS 관리형 정책에 대한 CodeBuild 업데이트
](#security-iam-awsmanpol-updates)
+ [

## 고객 관리형 정책 예제
](#customer-managed-policies)

다음은 `us-east-2`라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 `123456789012` 계정의 `my` 리전에 있는 빌드 프로젝트에 대해서만 정보를 가져오도록 허용하는 권한 정책의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetProjects",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

## AWS CodeBuild 콘솔을 사용하는 데 필요한 권한
<a name="console-permissions"></a>

 AWS CodeBuild 콘솔을 사용하는 사용자에게는 AWS 계정의 다른 AWS 리소스를 설명할 수 있는 최소 권한 집합이 있어야 합니다. 사용자에게는 다음 서비스에 대한 권한이 있어야 합니다.
+ AWS CodeBuild
+ Amazon CloudWatch
+ CodeCommit( AWS CodeCommit 리포지토리에 소스 코드를 저장하는 경우)
+ Amazon Elastic Container Registry(Amazon ECR)(Amazon ECR 리포지토리의 도커 이미지를 사용하는 빌드 환경을 사용하는 경우)
**참고**  
2022년 7월 26일부로 기본 IAM 정책이 업데이트되었습니다. 자세한 내용은 [가 Amazon Elastic Container Registry AWS CodeBuild 에 연결하는 데 필요한 권한](#ecr-policies) 단원을 참조하십시오.
+ Amazon Elastic Container Service(Amazon ECS)(Amazon ECR 리포지토리의 도커 이미지를 사용하는 빌드 환경을 사용하는 경우)
+ AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Storage Service(Amazon S3)

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔이 의도대로 작동하지 않습니다.

## 가 Amazon Elastic Container Registry AWS CodeBuild 에 연결하는 데 필요한 권한
<a name="ecr-policies"></a>

2022년 7월 26일부터 AWS CodeBuild 는 Amazon ECR 권한에 대한 기본 IAM 정책을 업데이트했습니다. 다음 권한은 기본 정책에서 제거되었습니다.

```
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
```

2022년 7월 26일 이전에 생성된 CodeBuild 프로젝트의 경우 다음 Amazon ECR 정책으로 정책을 업데이트하는 것이 좋습니다.

```
"Action": [
    "ecr:BatchCheckLayerAvailability",
    "ecr:GetDownloadUrlForLayer",
    "ecr:BatchGetImage"
]
```

정책 업데이트에 대한 자세한 내용은 [사용자가 CodeBuild와 상호 작용하도록 허용](setting-up-service-permissions-group.md) 섹션을 참조하세요.

## AWS CodeBuild 콘솔이 소스 공급자에 연결하는 데 필요한 권한
<a name="console-policies"></a>

 AWS CodeBuild 콘솔은 다음 API 작업을 사용하여 소스 공급자(예: GitHub 리포지토리)에 연결합니다.
+ `codebuild:ListConnectedOAuthAccounts`
+ `codebuild:ListRepositories`
+ `codebuild:PersistOAuthToken`
+ `codebuild:ImportSourceCredentials`

 AWS CodeBuild 콘솔을 사용하여 소스 공급자(예: GitHub 리포지토리)를 빌드 프로젝트와 연결할 수 있습니다. 이렇게 하려면 먼저 AWS CodeBuild 콘솔에 액세스하는 데 사용하는 사용자와 연결된 IAM 액세스 정책에 이전 API 작업을 추가해야 합니다.

`ListConnectedOAuthAccounts`, `ListRepositories` 및 `PersistOAuthToken` API 작업은 코드로 호출되는 것이 아닙니다. 따라서 이러한 API 작업은 AWS CLI 및 AWS SDKs에 포함되지 않습니다.

## AWS 에 대한 관리형(미리 정의된) 정책 AWS CodeBuild
<a name="managed-policies"></a>

AWS 는에서 생성하고 관리하는 독립 실행형 IAM 정책을 제공하여 많은 일반적인 사용 사례를 처리합니다 AWS. 이러한 AWS 관리형 정책은 일반적인 사용 사례에 필요한 권한을 부여하므로 필요한 권한을 조사할 필요가 없습니다. CodeBuild의 관리형 정책은 해당 정책을 부여받은 사용자의 책임에 필요한 IAM, AWS CodeCommit Amazon EC2, Amazon ECR, Amazon SNS 및 Amazon CloudWatch Events와 같은 다른 서비스에서 작업을 수행할 수 있는 권한도 제공합니다. 예를 들면 `AWSCodeBuildAdminAccess` 정책은 관리 수준의 사용자 정책으로, 이 정책을 통해 사용자가 프로젝트 관련 이벤트(이름에 `arn:aws:codebuild:`라는 접두사가 붙은 주제)에 대한 알림을 위한 프로젝트 빌드 및 Amazon SNS 주제에 대한 CloudWatch 이벤트 규칙을 생성 및 관리하고 CodeBuild에서 프로젝트 및 보고서 그룹을 관리할 수 있습니다. 자세한 내용은 *IAM 사용자 안내서*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)을 참조하세요.

계정의 사용자에게 연결할 수 있는 다음 AWS 관리형 정책은에 고유합니다 AWS CodeBuild.

**AWSCodeBuildAdminAccess**  
CodeBuild 빌드 프로세스를 관리하는 데 필요한 권한을 비롯하여 CodeBuild에 대한 전체 액세스 권한을 제공합니다.

**AWSCodeBuildDeveloperAccess**  
CodeBuild에 대한 액세스 권한을 제공하지만 빌드 프로젝트 관리는 허용하지 않습니다.

**AWSCodeBuildReadOnlyAccess**  
CodeBuild에 대한 읽기 전용 액세스 권한을 제공합니다.

CodeBuild가 생성하는 빌드 출력 아티팩트에 액세스하려면 `AmazonS3ReadOnlyAccess`라는 AWS 관리형 정책도 연결해야 합니다.

CodeBuild 서비스 역할을 생성하고 관리하려면 라는 AWS 관리형 정책도 연결해야 합니다`IAMFullAccess`.

CodeBuild 작업 및 리소스에 대한 권한을 허용하는 고유의 사용자 지정 IAM 정책을 생성할 수도 있습니다. 해당 권한이 필요한 사용자 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다.

**Topics**
+ [

### AWSCodeBuildAdminAccess
](#admin-access-policy)
+ [

### AWSCodeBuildDeveloperAccess
](#developer-access-policy)
+ [

### AWSCodeBuildReadOnlyAccess
](#read-only-access-policy)

### AWSCodeBuildAdminAccess
<a name="admin-access-policy"></a>

`AWSCodeBuildAdminAccess` 정책은 CodeBuild 빌드 프로세스를 관리하는 데 필요한 권한을 비롯하여 CodeBuild에 대한 전체 액세스 권한을 제공합니다. 이 정책은 관리자 수준 사용자에게만 적용하여 프로젝트 및 보고서 그룹을 삭제하는 기능을 포함하여 AWS 계정의 CodeBuild 프로젝트, 보고서 그룹 및 관련 리소스에 대한 전체 제어 권한을 부여합니다.

전체 관리형 정책은 IAM 관리형 정책 참조의 [ AWSCodeBuildAdminAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildAdminAccess.html)를 참조하세요.

### AWSCodeBuildDeveloperAccess
<a name="developer-access-policy"></a>

`AWSCodeBuildDeveloperAccess` 정책은 CodeBuild의 모든 기능과 프로젝트 및 보고서 그룹 관련 리소스에 액세스할 수 있도록 합니다. 이 정책은 사용자가 CodeBuild 프로젝트나 보고서 그룹 또는 CloudWatch Events와 같은 다른 AWS 서비스의 관련 리소스를 삭제하도록 허용하지 않습니다. 이 정책은 대부분의 사용자에게 적용하는 것이 좋습니다.

전체 관리형 정책은 IAM 관리형 정책 참조의 [ AWSCodeBuildDeveloperAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildDeveloperAccess.html)를 참조하세요.

### AWSCodeBuildReadOnlyAccess
<a name="read-only-access-policy"></a>

이 `AWSCodeBuildReadOnlyAccess` 정책은 CodeBuild 및 다른 AWS 서비스의 관련 리소스에 대한 읽기 전용 액세스 권한을 부여합니다. 빌드를 보고 실행하고 프로젝트를 보고 보고서 그룹을 볼 수 있지만 변경할 수 없는 사용자에게 이 정책을 적용하십시오.

전체 관리형 정책은 IAM 관리형 정책 참조의 [ AWSCodeBuildReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildReadOnlyAccess.xml)를 참조하세요.

## CodeBuild 관리형 정책 및 알림
<a name="notifications-permissions"></a>

CodeBuild에서는 프로젝트를 빌드하는 데 중요한 변경 사항을 사용자에게 알릴 수 있는 알림을 지원합니다. CodeBuild에 대한 관리형 정책에는 알림 기능에 대한 정책 설명이 포함되어 있습니다. 자세한 내용은 [알림이란 무엇입니까?](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html)를 참조하세요.

### 읽기 전용 관리형 정책의 알림과 관련된 권한
<a name="notifications-readonly"></a>

`AWSCodeBuildReadOnlyAccess` 관리형 정책에는 알림에 대한 읽기 전용 액세스를 허용하는 다음 설명이 포함되어 있습니다. 이 관리형 정책이 적용된 사용자는 리소스에 대한 알림을 볼 수 있지만 리소스를 생성, 관리 또는 구독할 수는 없습니다.

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListEventTypes",
            "codestar-notifications:ListTargets"
        ],
        "Resource": "*"
    }
```

### 다른 관리형 정책의 알림과 관련된 권한
<a name="notifications-otheraccess"></a>

`AWSCodeBuildDeveloperAccess` 관리형 정책에는 사용자가 알림을 생성, 편집 및 구독할 수 있도록 허용하는 다음 설명이 포함되어 있습니다. 사용자는 알림 규칙을 삭제하거나 리소스에 대한 태그를 관리할 수는 없습니다.

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

IAM 및 알림에 대한 자세한 내용은 [AWS CodeStar 알림에 대한 Identity and Access Management](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)를 참조하세요.

## AWS 관리형 정책에 대한 CodeBuild 업데이트
<a name="security-iam-awsmanpol-updates"></a>

이 서비스가 이러한 변경 사항을 추적하기 시작한 이후부터 CodeBuild의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다. 이 페이지의 변경 사항에 대한 자동 알림을 받아보려면 [AWS CodeBuild 사용 설명서 문서 기록](history.md)에서 RSS 피드를 구독하세요.




| 변경 | 설명 | Date | 
| --- | --- | --- | 
|  `AWSCodeBuildAdminAccess` 및 `AWSCodeBuildDeveloperAccess` – 기존 정책에 대한 업데이트  |  CodeBuild는 세션 관리자 대화형 빌드 디버깅을 지원하기 위해 이러한 정책에 `ssmmessages:OpenDataChannel` 권한을 추가했습니다. 이제 `AWSCodeBuildAdminAccess` 및 `AWSCodeBuildDeveloperAccess` 정책에 Session Manager 세션 리소스(`arn:aws:ssm:*:*:session/*`)에 대한 `ssmmessages:OpenDataChannel` 작업이 포함되어이 WebSocket API에서 SigV4 적용을 지원합니다.  | 2025년 12월 1일 | 
|  `AWSCodeBuildAdminAccess`, `AWSCodeBuildDeveloperAccess` 및 `AWSCodeBuildReadOnlyAccess` - 기존 정책 업데이트  |  CodeBuild는 리소스를 이러한 정책으로 업데이트했습니다. `AWSCodeBuildAdminAccess`, `AWSCodeBuildDeveloperAccess`, `AWSCodeBuildReadOnlyAccess` 정책이 기존 리소스를 업데이트하도록 변경되었습니다. 원본 리소스 `arn:aws:codebuild:*`이 `arn:aws:codebuild:*:*:project/*`로 업데이트되었습니다.  | 2024년 11월 15일 | 
|  `AWSCodeBuildAdminAccess`, `AWSCodeBuildDeveloperAccess` 및 `AWSCodeBuildReadOnlyAccess` - 기존 정책 업데이트  |  CodeBuild는 AWS CodeConnections 리브랜딩을 지원하기 위해 이러한 정책에 리소스를 추가했습니다. `AWSCodeBuildAdminAccess`, `AWSCodeBuildDeveloperAccess` 및 `AWSCodeBuildReadOnlyAccess` 정책이 `arn:aws:codeconnections:*:*:*` 리소스를 추가하도록 변경되었습니다.  | 2024년 4월 18일 | 
|  `AWSCodeBuildAdminAccess` 및 `AWSCodeBuildDeveloperAccess` - 기존 정책 업데이트  |  CodeBuild는 채팅 애플리케이션에서 Amazon Q Developer를 사용하는 추가 알림 유형을 지원하기 위해 이러한 정책에 권한을 추가했습니다. `AWSCodeBuildAdminAccess` 및 `AWSCodeBuildDeveloperAccess` 정책이 권한, `chatbot:ListMicrosoftTeamsChannelConfigurations`를 추가하도록 변경되었습니다.  | 2023년 5월 16일 | 
|  CodeBuild가 변경 내용 추적을 시작함  |  CodeBuild가 AWS 관리형 정책에 대한 변경 사항 추적을 시작했습니다.  | 2021년 5월 16일 | 

## 고객 관리형 정책 예제
<a name="customer-managed-policies"></a>

이 섹션에서는 AWS CodeBuild 작업에 대한 권한을 부여하는 사용자 정책의 예를 제공합니다. 이러한 정책은 CodeBuild API, AWS SDKs 또는를 사용할 때 작동합니다 AWS CLI. 콘솔을 사용하는 경우 콘솔별 추가 권한을 부여해야 합니다. 자세한 내용은 [AWS CodeBuild 콘솔을 사용하는 데 필요한 권한](#console-permissions) 단원을 참조하세요.

다음 샘플 IAM 정책을 사용하여 사용자 및 역할에 대한 CodeBuild 액세스를 제한할 수 있습니다.

**Topics**
+ [

### 사용자가 빌드 프로젝트에 대한 정보를 가져오도록 허용
](#customer-managed-policies-example-batch-get-projects)
+ [

### 사용자가 플릿에 대한 정보를 가져오도록 허용
](#customer-managed-policies-get-information-about-fleets)
+ [

### 사용자가 보고서 그룹에 대한 정보를 가져오도록 허용
](#customer-managed-policies-get-information-about-report-group)
+ [

### 사용자가 보고서에 대한 정보를 가져오도록 허용
](#customer-managed-policies-get-information-about-reports)
+ [

### 사용자가 빌드 프로젝트를 생성하도록 허용
](#customer-managed-policies-example-create-project)
+ [

### 사용자가 플릿을 생성하도록 허용
](#customer-managed-policies-example-create-fleet)
+ [

### 사용자가 보고서 그룹을 생성하도록 허용
](#customer-managed-policies-example-create-report-group)
+ [

### 사용자가 플릿을 삭제하도록 허용
](#customer-managed-policies-example-delete-fleet)
+ [

### 사용자가 보고서 그룹을 삭제하도록 허용
](#customer-managed-policies-example-delete-report-group)
+ [

### 사용자가 보고서를 삭제하도록 허용
](#customer-managed-policies-example-delete-report)
+ [

### 사용자가 빌드 프로젝트를 삭제하도록 허용
](#customer-managed-policies-example-delete-project)
+ [

### 사용자가 빌드 프로젝트 이름 목록을 가져오도록 허용
](#customer-managed-policies-example-list-projects)
+ [

### 사용자가 빌드 프로젝트에 대한 정보를 변경하도록 허용
](#customer-managed-policies-example-update-project)
+ [

### 사용자가 플릿을 변경하도록 허용
](#customer-managed-policies-example-change-fleet)
+ [

### 사용자가 보고서 그룹을 변경하도록 허용
](#customer-managed-policies-example-change-report-group)
+ [

### 사용자가 빌드에 대한 정보를 가져오도록 허용
](#customer-managed-policies-example-batch-get-builds)
+ [

### 사용자가 빌드 프로젝트의 빌드 ID 목록을 가져오도록 허용
](#customer-managed-policies-example-list-builds-for-project)
+ [

### 사용자가 빌드 ID 목록을 가져오도록 허용
](#customer-managed-policies-example-list-builds)
+ [

### 사용자가 플릿 목록을 가져오도록 허용
](#customer-managed-policies-example-get-list-of-fleets)
+ [

### 사용자가 보고서 그룹 목록을 가져오도록 허용
](#customer-managed-policies-example-get-list-of-report-groups)
+ [

### 사용자가 보고서 목록을 가져오도록 허용
](#customer-managed-policies-example-get-list-of-reports)
+ [

### 사용자가 보고서 그룹에 대한 보고서 목록을 가져오도록 허용
](#customer-managed-policies-example-get-list-of-reports-for-report-group)
+ [

### 사용자가 보고서에 대한 테스트 케이스 목록을 가져오도록 허용
](#customer-managed-policies-example-get-list-of-test-cases-for-report)
+ [

### 사용자가 빌드 실행을 시작하도록 허용
](#customer-managed-policies-example-start-build)
+ [

### 사용자가 빌드 중지를 시도하도록 허용
](#customer-managed-policies-example-stop-build)
+ [

### 사용자가 빌드 삭제를 시도하도록 허용
](#customer-managed-policies-example-delete-builds)
+ [

### 사용자가 CodeBuild에서 관리하는 도커 이미지에 대한 정보를 가져오도록 허용
](#customer-managed-policies-example-list-curated-environment-images)
+ [

### 사용자가 플릿 서비스 역할에 대한 권한 정책을 추가하도록 허용
](#customer-managed-policies-example-permission-policy-fleet-service-role)
+ [

### VPC 네트워크 인터페이스를 생성하는 데 필요한 AWS 서비스에 대한 CodeBuild 액세스 허용
](#customer-managed-policies-example-create-vpc-network-interface)
+ [

### 거부 문을 사용하여 AWS CodeBuild 가 소스 공급자와의 연결을 끊지 않도록 방지
](#customer-managed-policies-example-deny-disconnect)

### 사용자가 빌드 프로젝트에 대한 정보를 가져오도록 허용
<a name="customer-managed-policies-example-batch-get-projects"></a>

다음은 `us-east-2`라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 `123456789012` 계정의 `my` 리전에 있는 빌드 프로젝트에 대한 정보를 가져오도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetProjects",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"      
    }
  ]
}
```

------

### 사용자가 플릿에 대한 정보를 가져오도록 허용
<a name="customer-managed-policies-get-information-about-fleets"></a>

다음 예제 정책 설명을 통해 사용자는 `123456789012` 계정의 `us-east-2` 리전에서 플릿에 대한 정보를 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetFleets",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 사용자가 보고서 그룹에 대한 정보를 가져오도록 허용
<a name="customer-managed-policies-get-information-about-report-group"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서 그룹에 대한 정보를 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReportGroups",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 보고서에 대한 정보를 가져오도록 허용
<a name="customer-managed-policies-get-information-about-reports"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서에 대한 정보를 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReports",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 빌드 프로젝트를 생성하도록 허용
<a name="customer-managed-policies-example-create-project"></a>

다음은 사용자에게 모든 이름의 빌드 프로젝트를 생성하도록 허용하지만, `123456789012` 계정의 `us-east-2` 리전에만 있어야 하며, 지정된 CodeBuild 서비스 역할만 사용해야 하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/CodeBuildServiceRole"
    }
  ]
}
```

------

다음은 사용자에게 모든 이름의 빌드 프로젝트를 생성하도록 허용하지만, `123456789012` 계정의 `us-east-2` 리전에만 있어야 하며, 지정된 CodeBuild 서비스 역할만 사용해야 하는 정책 설명의 예입니다. 또한 사용자가 다른 서비스가 AWS CodeBuild 아닌 에서만 지정된 AWS 서비스 역할을 사용할 수 있도록 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/CodeBuildServiceRole",
      "Condition": {
          "StringEquals": {"iam:PassedToService": "codebuild.amazonaws.com"}
      }
    }
  ]
}
```

------

### 사용자가 플릿을 생성하도록 허용
<a name="customer-managed-policies-example-create-fleet"></a>

다음 예제 정책 설명을 통해 사용자는 `123456789012` 계정의 `us-east-2` 리전에서 플릿을 생성할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 사용자가 보고서 그룹을 생성하도록 허용
<a name="customer-managed-policies-example-create-report-group"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서 그룹을 생성할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 플릿을 삭제하도록 허용
<a name="customer-managed-policies-example-delete-fleet"></a>

다음 예제 정책 설명을 통해 사용자는 `123456789012` 계정의 `us-east-2` 리전에서 플릿을 삭제할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 사용자가 보고서 그룹을 삭제하도록 허용
<a name="customer-managed-policies-example-delete-report-group"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서 그룹을 삭제할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 보고서를 삭제하도록 허용
<a name="customer-managed-policies-example-delete-report"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서를 삭제할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReport",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 빌드 프로젝트를 삭제하도록 허용
<a name="customer-managed-policies-example-delete-project"></a>

다음은 `us-east-2`라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 `123456789012` 계정의 `my` 리전에 있는 빌드 프로젝트를 삭제하도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 사용자가 빌드 프로젝트 이름 목록을 가져오도록 허용
<a name="customer-managed-policies-example-list-projects"></a>

다음은 사용자가 동일한 계정의 빌드 프로젝트 이름 목록을 가져오도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListProjects",
      "Resource": "*"
    }
  ]
}
```

------

### 사용자가 빌드 프로젝트에 대한 정보를 변경하도록 허용
<a name="customer-managed-policies-example-update-project"></a>

다음은 사용자에게 모든 이름의 빌드 프로젝트에 대한 정보를 변경하도록 허용하지만, `123456789012` 계정의 `us-east-2` 리전에만 있어야 하며, 지정된 AWS CodeBuild 서비스 역할만 사용해야 하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/CodeBuildServiceRole"
    }
  ]
}
```

------

### 사용자가 플릿을 변경하도록 허용
<a name="customer-managed-policies-example-change-fleet"></a>

다음 예제 정책 설명을 통해 사용자는 `123456789012` 계정의 `us-east-2` 리전에서 플릿을 변경할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 사용자가 보고서 그룹을 변경하도록 허용
<a name="customer-managed-policies-example-change-report-group"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서 그룹을 변경할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 빌드에 대한 정보를 가져오도록 허용
<a name="customer-managed-policies-example-batch-get-builds"></a>

다음은 `us-east-2` 및 `123456789012`라는 이름의 빌드 프로젝트에 대해 사용자가 `my-build-project` 계정의 `my-other-build-project` 리전에 있는 빌드에 대한 정보를 가져오도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetBuilds",
      "Resource": [
        "arn:aws:codebuild:us-east-2:111122223333:project/my-build-project",
        "arn:aws:codebuild:us-east-2:111122223333:project/my-other-build-project"
      ]
    }
  ]
}
```

------

### 사용자가 빌드 프로젝트의 빌드 ID 목록을 가져오도록 허용
<a name="customer-managed-policies-example-list-builds-for-project"></a>

다음은 `us-east-2` 및 `123456789012`라는 이름의 빌드 프로젝트에 대해 사용자가 `my-build-project` 계정의 `my-other-build-project` 리전에 있는 빌드 ID 목록을 가져오도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListBuildsForProject",
      "Resource": [
        "arn:aws:codebuild:us-east-2:111122223333:project/my-build-project",
        "arn:aws:codebuild:us-east-2:111122223333:project/my-other-build-project"
      ]
    }
  ]
}
```

------

### 사용자가 빌드 ID 목록을 가져오도록 허용
<a name="customer-managed-policies-example-list-builds"></a>

다음은 사용자가 동일한 계정의 모든 빌드 ID 목록을 가져오도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListBuilds",
      "Resource": "*"
    }
  ]
}
```

------

### 사용자가 플릿 목록을 가져오도록 허용
<a name="customer-managed-policies-example-get-list-of-fleets"></a>

다음 예제 정책 설명을 통해 사용자는 `123456789012` 계정의 `us-east-2` 리전에서 플릿 목록을 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListFleets",
      "Resource": "*"
    }
  ]
}
```

------

### 사용자가 보고서 그룹 목록을 가져오도록 허용
<a name="customer-managed-policies-example-get-list-of-report-groups"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서 그룹 목록을 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReportGroups",
      "Resource": "*"
    }
  ]
}
```

------

### 사용자가 보고서 목록을 가져오도록 허용
<a name="customer-managed-policies-example-get-list-of-reports"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서 목록을 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReports",
      "Resource": "*"
    }
  ]
}
```

------

### 사용자가 보고서 그룹에 대한 보고서 목록을 가져오도록 허용
<a name="customer-managed-policies-example-get-list-of-reports-for-report-group"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서 그룹에 대한 보고서 목록을 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReportsForReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 보고서에 대한 테스트 케이스 목록을 가져오도록 허용
<a name="customer-managed-policies-example-get-list-of-test-cases-for-report"></a>

다음 예제 정책 설명을 통해 사용자는 계정 `123456789012`의 `us-east-2` 리전에서 보고서에 대한 테스트 케이스 목록을 가져올 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DescribeTestCases",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 사용자가 빌드 실행을 시작하도록 허용
<a name="customer-managed-policies-example-start-build"></a>

다음은 `us-east-2`라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 `123456789012` 계정의 `my` 리전에 있는 빌드를 실행하도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:StartBuild",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 사용자가 빌드 중지를 시도하도록 허용
<a name="customer-managed-policies-example-stop-build"></a>

다음은 `us-east-2`라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 `123456789012` 계정의 `my` 리전에 있는 빌드만 실행 중지를 시도하도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:StopBuild",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 사용자가 빌드 삭제를 시도하도록 허용
<a name="customer-managed-policies-example-delete-builds"></a>

다음은 이름이 `my`로 시작하는 빌드 프로젝트에 대해 사용자가 `123456789012` 계정의 `us-east-2` 리전에 있는 빌드만 삭제하려고 시도하는 것을 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchDeleteBuilds",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 사용자가 CodeBuild에서 관리하는 도커 이미지에 대한 정보를 가져오도록 허용
<a name="customer-managed-policies-example-list-curated-environment-images"></a>

다음은 사용자가 CodeBuild가 관리하는 모든 도커 이미지에 대한 정보를 가져오도록 허용하는 정책 설명의 예입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListCuratedEnvironmentImages",
      "Resource": "*"
    }
  ]
}
```

------

### 사용자가 플릿 서비스 역할에 대한 권한 정책을 추가하도록 허용
<a name="customer-managed-policies-example-permission-policy-fleet-service-role"></a>

다음 리소스 정책 문 예제에서는 사용자가 플릿 서비스 역할에 대한 VPC 권한 정책을 추가할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeBuildFleetVpcCreateNI",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1",
                "arn:aws:ec2:us-west-2:111122223333:security-group/security-group-id-1",
                "arn:aws:ec2:us-west-2:111122223333:network-interface/*"
            ]
        },
        {
            "Sid": "CodeBuildFleetVpcPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CodeBuildFleetVpcNIPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": "arn:aws:ec2:us-west-2:111122223333:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1"
                    ]
                }
            }
        }
    ]
}
```

------

다음 예제 리소스 정책 문을 사용하면 사용자가 플릿 서비스 역할에 대한 사용자 지정 Amazon Managed Image(AMI) 권한 정책을 추가할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeImages",
            "Resource": "*"
        } 
    ]
}
```

------

다음 신뢰 정책 문 예제에서는 사용자가 플릿 서비스 역할에 대한 권한 정책을 추가할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CodeBuildFleetVPCTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "codebuild.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

### VPC 네트워크 인터페이스를 생성하는 데 필요한 AWS 서비스에 대한 CodeBuild 액세스 허용
<a name="customer-managed-policies-example-create-vpc-network-interface"></a>

다음 정책 설명 예제는 두 개의 서브넷이 있는 VPC에서 네트워크 인터페이스를 생성할 수 있는 AWS CodeBuild 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": "arn:aws:ec2:us-west-2:111122223333:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:AuthorizedService": "codebuild.amazonaws.com"
                },
                "ArnEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1",
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-2"
                    ]
                }
            }
        }
    ]
}
```

------

### 거부 문을 사용하여 AWS CodeBuild 가 소스 공급자와의 연결을 끊지 않도록 방지
<a name="customer-managed-policies-example-deny-disconnect"></a>

 다음 예제 정책 명령문은 거부문을 사용하여 AWS CodeBuild 가 소스 공급자 연결을 해제하지 않도록 합니다. `codebuild:PersistOAuthToken` 및 `codebuild:ImportSourceCredentials`의 역인 `codebuild:DeleteOAuthToken`을 사용하여 소스 공급자와 연결합니다. 자세한 내용은 [AWS CodeBuild 콘솔이 소스 공급자에 연결하는 데 필요한 권한](#console-policies) 단원을 참조하십시오.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "codebuild:DeleteOAuthToken",
      "Resource": "*"
    }
  ]
}
```

------

# AWS CodeBuild 권한 참조
<a name="auth-and-access-control-permissions-reference"></a>

 AWS CodeBuild 정책에서 AWS전체 조건 키를 사용하여 조건을 표시할 수 있습니다. 목록은 IAM 사용 설명서에서 [사용 가능한 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)를 참조하세요.**

정책의 `Action` 필드에 작업을 지정합니다. 작업을 지정하려면 `codebuild:` 접두사 다음에 API 작업 이름을 사용합니다(예: `codebuild:CreateProject` 및 `codebuild:StartBuild`). 문장 하나에 여러 작업을 지정하려면 쉼표로 구분합니다(예: `"Action": [ "codebuild:CreateProject", "codebuild:StartBuild" ]`).

**와일드카드 문자 사용**

정책의 `Resource` 필드에 리소스 값으로 와일드카드 문자(\$1)를 사용하거나 사용하지 않고 ARN을 지정합니다. 와일드카드를 사용하여 여러 작업 또는 리소스를 지정할 수 있습니다. 예를 들어, `codebuild:*`는 모든 CodeBuild 작업을 지정하고, `codebuild:Batch*`는 `Batch`라는 단어로 시작하는 모든 CodeBuild 작업을 지정합니다. 다음 정책은 이름이 `my`로 시작되는 모든 빌드 프로젝트에 대한 액세스 권한을 부여합니다.

```
arn:aws:codebuild:us-east-2:123456789012:project/my*
```<a name="actions-related-to-objects-table"></a>CodeBuild API 작업 및 작업에 필요한 권한

BatchDeleteBuilds  
 **작업:** `codebuild:BatchDeleteBuilds`   
빌드를 삭제하는 데 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

BatchGetBuilds  
 **작업:** `codebuild:BatchGetBuilds`   
빌드에 대한 정보를 가져오는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

BatchGetProjects  
 **작업:** `codebuild:BatchGetProjects`   
빌드 프로젝트에 대한 정보를 가져오는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

BatchGetReportGroups  
 **작업:** `codebuild:BatchGetReportGroups`   
보고서 그룹에 대한 정보를 가져오는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

BatchGetReports  
 **작업:** `codebuild:BatchGetReports`   
보고서에 대한 정보를 가져오는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

BatchPutTestCases ¹  
 **작업:** `codebuild:BatchPutTestCases`   
테스트 보고서를 생성하거나 업데이트하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

CreateProject  
 **작업:** `codebuild:CreateProject`, `iam:PassRole`   
빌드 프로젝트를 생성하는 권한이 필요합니다.  
 **리소스:**   
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

CreateReport ¹  
 **작업:** `codebuild:CreateReport`   
테스트 보고서를 생성하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

CreateReportGroup  
 **작업:** `codebuild:CreateReportGroup`   
보고서 그룹을 만드는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

CreateWebhook  
 **작업:** `codebuild:CreateWebhook`   
Webhook를 생성하는 데 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

DeleteProject  
 **작업:** `codebuild:DeleteProject`   
CodeBuild 프로젝트를 삭제하는 데 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

DeleteReports  
 **작업:** `codebuild:DeleteReport`   
규칙을 삭제하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

DeleteReportGroup  
 **작업:** `codebuild:DeleteReportGroup`   
보고서 그룹을 삭제하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

DeleteSourceCredentials  
 **작업:** `codebuild:DeleteSourceCredentials`   
GitHub나 GitHub Enterprise Server, Bitbucket 리포지토리의 자격 증명 정보가 포함된 일단의 `SourceCredentialsInfo` 객체를 삭제하는 데 필요합니다.  
 **리소스:** `*` 

DeleteWebhook  
 **작업:** `codebuild:DeleteWebhook`   
Webhook를 생성하는 데 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

DescribeTestCases  
 **작업:** `codebuild:DescribeTestCases`   
테스트 케이스의 페이지 매김 목록을 반환하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

ImportSourceCredentials  
 **작업:** `codebuild:ImportSourceCredentials`   
GitHub나 GitHub Enterprise Server, Bitbucket 리포지토리의 자격 증명 정보가 포함된 일단의 `SourceCredentialsInfo` 객체를 가져오는 데 필요합니다.  
 **리소스:** `*` 

InvalidateProjectCache  
 **작업:** `codebuild:InvalidateProjectCache`   
프로젝트용 캐시를 재설정하는 데 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

ListBuildBatches  
 **작업:** `codebuild:ListBuildBatches`   
빌드 배치 ID 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `*` 

ListBuildBatchesForProject  
 **작업:** `codebuild:ListBuildBatchesForProject`   
특정 프로젝트의 빌드 배치 ID 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name` 

ListBuilds  
 **작업:** `codebuild:ListBuilds`   
빌드 ID 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `*` 

ListBuildsForProject  
 **작업:** `codebuild:ListBuildsForProject`   
빌드 프로젝트의 빌드 ID 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

ListCuratedEnvironmentImages  
 **작업:** `codebuild:ListCuratedEnvironmentImages`   
 AWS CodeBuild가 관리하는 모든 도커 이미지에 대한 정보를 가져오는 권한이 필요합니다.  
 **리소스:** `*`(필요, 단, 주소 지정 가능한 AWS 리소스는 제외) 

ListProjects  
 **작업:** `codebuild:ListProjects`   
빌드 프로젝트 이름 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `*` 

ListReportGroups  
 **작업:** `codebuild:ListReportGroups`   
보고서 그룹 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `*` 

ListReports  
 **작업:** `codebuild:ListReports`   
보고서 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `*` 

ListReportsForReportGroup  
 **작업:** `codebuild:ListReportsForReportGroup`   
보고서 그룹에 대한 보고서 목록을 가져오는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

RetryBuild  
**작업:** `codebuild:RetryBuild`   
빌드를 재시도하는 데 필요합니다.  
**리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name `

StartBuild  
 **작업:** `codebuild:StartBuild`   
빌드 실행을 시작하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

StopBuild  
 **작업:** `codebuild:StopBuild`   
빌드 실행 중지를 시도할 수 있는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

UpdateProject  
 **작업:** `codebuild:UpdateProject`, `iam:PassRole`   
빌드에 대한 정보를 변경하는 권한이 필요합니다.  
 **리소스:**   
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

UpdateProjectVisibility  <a name="UpdateProjectVisibility"></a>
 **작업:** `codebuild:UpdateProjectVisibility`, `iam:PassRole`   
프로젝트 빌드의 퍼블릭 가시성을 변경하는 데 필요합니다.  
 **리소스:**   
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

UpdateReport ¹  
 **작업:** `codebuild:UpdateReport`   
테스트 보고서를 생성하거나 업데이트하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

UpdateReportGroup  
 **작업:** `codebuild:UpdateReportGroup`   
보고서 그룹을 업데이트하는 권한이 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

UpdateWebhook  
 **작업:** `codebuild:UpdateWebhook`   
Webhook를 업데이트하는 데 필요합니다.  
 **리소스:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

¹ 권한에만 사용됩니다. 이 작업에 대한 API가 없습니다.

# 태그를 사용하여 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"
            }
         }
      }
   ]
}
```

# 콘솔에서 리소스 보기
<a name="console-resources"></a>

 AWS CodeBuild 콘솔에는 로그인한 AWS 리전의 AWS 계정에 대한 리포지토리 목록을 표시할 수 있는 `ListRepositories` 권한이 필요합니다. 또한 콘솔에는 리소스의 대/소문자를 구분하지 않고 빠르게 검색할 수 있는 **Go to resource(리소스로 이동)** 기능이 포함되어 있습니다. 이 검색은 로그인한 AWS 리전의 계정 AWS 에서 수행됩니다. 다음 서비스에 표시되는 리소스는 다음과 같습니다.
+ AWS CodeBuild: 빌드 프로젝트
+ AWS CodeCommit: 리포지토리
+ AWS CodeDeploy: 애플리케이션
+ AWS CodePipeline: 파이프라인

모든 서비스의 리소스에서 이 검색을 수행하려면 다음 권한이 있어야 합니다.
+ CodeBuild: `ListProjects`
+ CodeCommit: `ListRepositories`
+ CodeDeploy: `ListApplications`
+ CodePipeline: `ListPipelines`

해당 서비스에 대한 권한이 없는 경우 서비스의 리소스에 대한 결과가 반환되지 않습니다. 리소스를 볼 수 있는 권한이 있더라도 해당 리소스 보기에 대한 명시적 `Deny`가 있으면 일부 리소스가 반환되지 않습니다.

# 에 대한 규정 준수 검증 AWS CodeBuild
<a name="compliance-validation"></a>

 AWS 서비스 가 특정 규정 준수 프로그램의 범위 내에 있는지 알아보려면 [AWS 서비스 규정 준수 프로그램 범위 내](https://aws.amazon.com/compliance/services-in-scope/)를 참조하고 관심 있는 규정 준수 프로그램을 선택합니다. 일반 정보는 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/).

를 사용하여 타사 감사 보고서를 다운로드할 수 있습니다 AWS Artifact. 자세한 내용은 [에서 보고서 다운로드 AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)에서 .

사용 시 규정 준수 책임은 데이터의 민감도, 회사의 규정 준수 목표, 관련 법률 및 규정에 따라 AWS 서비스 결정됩니다. 사용 시 규정 준수 책임에 대한 자세한 내용은 [AWS 보안 설명서를](https://docs.aws.amazon.com/security/) AWS 서비스참조하세요.

# 의 복원력 AWS CodeBuild
<a name="codebuild-disaster-recovery-resiliency"></a>

 AWS 글로벌 인프라는 AWS 리전 및 가용 영역을 중심으로 구축됩니다. AWS 리전은 물리적으로 분리되고 격리된 여러 가용 영역을 제공하며,이 가용 영역은 지연 시간이 짧고 처리량이 높으며 중복성이 높은 네트워킹과 연결됩니다. 가용 영역을 사용하면 중단 없이 가용 영역 간에 자동으로 장애 조치가 이루어지는 애플리케이션 및 데이터베이스를 설계하고 운영할 수 있습니다. 가용 영역은 기존의 단일 또는 복수 데이터 센터 인프라보다 가용성, 내결함성, 확장성이 뛰어납니다.

 AWS 리전 및 가용 영역에 대한 자세한 내용은 [AWS 글로벌 인프라를](https://aws.amazon.com/about-aws/global-infrastructure/) 참조하세요.

# 의 인프라 보안 AWS CodeBuild
<a name="infrastructure-security"></a>

관리형 서비스인는 AWS 글로벌 네트워크 보안으로 보호 AWS CodeBuild 됩니다. AWS 보안 서비스 및가 인프라를 AWS 보호하는 방법에 대한 자세한 내용은 [AWS 클라우드 보안을](https://aws.amazon.com/security/) 참조하세요. 인프라 보안 모범 사례를 사용하여 환경을 설계하려면 *보안 원칙 AWS Well‐Architected Framework*의 [인프라 보호를](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) 참조하세요 AWS .

 AWS 에서 게시한 API 호출을 사용하여 네트워크를 통해 CodeBuild에 액세스합니다. 클라이언트는 다음을 지원해야 합니다.
+ Transport Layer Security(TLS). TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ DHE(Ephemeral Diffie-Hellman) 또는 ECDHE(Elliptic Curve Ephemeral Diffie-Hellman)와 같은 완전 전송 보안(PFS)이 포함된 암호 제품군. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

# CodeBuild에서 소스 공급자에 액세스
<a name="access-tokens"></a>

GitHub 또는 GitHub Enterprise Server에서는 개인 액세스 토큰, Secrets Manager 보안 암호, 연결 또는 OAuth 앱을 사용하여 소스 공급자에 액세스합니다. Bitbucket의 경우 액세스 토큰, 앱 암호, Secrets Manager 보안 암호, 연결 또는 OAuth 앱을 사용하여 소스 공급자에 액세스합니다.

**Topics**
+ [

# Secrets Manager 보안 암호에 토큰 생성 및 저장
](asm-create-secret.md)
+ [

# CodeBuild의 GitHub 및 GitHub Enterprise Server 액세스
](access-tokens-github-overview.md)
+ [

# CodeBuild의 Bitbucket 액세스
](access-tokens-bitbucket-overview.md)
+ [

# CodeBuild의 GitLab 액세스
](access-tokens-gitlab-overview.md)

# Secrets Manager 보안 암호에 토큰 생성 및 저장
<a name="asm-create-secret"></a>

Secrets Manager를 사용하여 액세스 토큰을 저장하기로 선택한 경우 기존 보안 암호 연결을 사용하거나 새 보안 암호를 생성할 수 있습니다. 새 보안 암호를 생성하려면 다음을 수행합니다.

------
#### [ AWS Management Console ]

**에서 Secrets Manager 보안 암호를 생성하려면 AWS Management Console**

1. **소스 공급자**에서 **Bitbucket**, **GitHub** 또는 **GitHub Enterprise**를 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + **기본 소스 자격 증명**을 선택하여 계정의 기본 소스 자격 증명을 사용하여 모든 프로젝트에 적용합니다.

     1. 소스 공급자에 연결되지 않은 경우 **기본 소스 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **CodeConnections** 이외의 자격 증명 유형을 선택합니다.

     1. **서비스**에서 **Secrets Manager**를 선택하고 **보안 암호**에서 **새 보안 암호**를 선택합니다.

     1. **보안 암호 이름**에 대해 보안 암호 이름을 입력합니다.

     1. **보안 암호 설명- 선택 사항**에 보안 암호에 대한 설명을 입력합니다.

     1. 선택한 소스 공급자에 따라 토큰 또는 사용자 이름 및 앱 암호를 입력하고 **저장**을 선택합니다.
   + **사용자 지정 소스 자격 증명**을 선택하여 사용자 지정 소스 자격 증명을 사용하여 계정의 기본 설정을 재정의합니다.

     1. **자격 증명 유형**에서 **CodeConnections** 이외의 자격 증명 유형을 선택합니다.

     1. **연결**에서 **보안 암호 생성**을 선택합니다.

     1. **보안 암호 이름**에 대해 보안 암호 이름을 입력합니다.

     1. **보안 암호 설명- 선택 사항**에 보안 암호에 대한 설명을 입력합니다.

     1. 선택한 소스 공급자에 따라 토큰 또는 사용자 이름 및 앱 암호를 입력하고 **생성**을 선택합니다.

------
#### [ AWS CLI ]

**에서 Secrets Manager 보안 암호를 생성하려면 AWS CLI**
+ 터미널(Linux, macOS, Unix) 또는 명령 프롬프트(Windows)를 엽니다. AWS CLI 를 사용하여 Secrets Manager **create-secret** 명령을 실행합니다.

  ```
  aws secretsmanager create-secret --region <aws-region> \
              --name '<secret-name>' \
              --description '<secret-description>' \
              --secret-string '{
                  "ServerType":"<server-type>",
                  "AuthType":"<auth-type>",
                  "Token":"<token>"
                  }' \
              --tags Key=codebuild:source,Value='' \
                  Key=codebuild:source:type,Value=<type> \
                  Key=codebuild:source:provider,Value=<provider>
  ```

  CodeBuild가 수락하는 Secrets Manager 보안 암호는 CodeBuild 프로젝트와 동일한 계정 및 AWS 리전에 있어야 하며 다음 JSON 형식이어야 합니다.

  ```
  {
              "ServerType": ServerType,
              "AuthType: AuthType,
              "Token": string,
              "Username": string // Optional and is only used for Bitbucket app password
          }
  ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/asm-create-secret.html)

  또한 CodeBuild는 보안 암호에 다음 리소스 태그를 사용하여 프로젝트를 생성하거나 편집할 때 보안 암호를 쉽게 선택할 수 있도록 합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/asm-create-secret.html)

------

# CodeBuild의 GitHub 및 GitHub Enterprise Server 액세스
<a name="access-tokens-github-overview"></a>

GitHub의 경우 개인 액세스 토큰, OAuth 앱, Secrets Manager 보안 암호 또는 GitHub 앱 연결을 사용하여 소스 공급자에 액세스할 수 있습니다. GitHub Enterprise Server에서는 개인 액세스 토큰, Secrets Manager 암호 또는 GitHub 앱 연결을 사용하여 소스 공급자에 액세스할 수 있습니다.

**Topics**
+ [

# GitHub 및 GitHub Enterprise Server에 대한 GitHub 앱 연결
](connections-github-app.md)
+ [

# GitHub 및 GitHub Enterprise Server 액세스 토큰
](access-tokens-github.md)
+ [

# GitHub OAuth 앱
](oauth-app-github.md)

# GitHub 및 GitHub Enterprise Server에 대한 GitHub 앱 연결
<a name="connections-github-app"></a>

GitHub 앱을 사용하여 CodeBuild에 연결할 수 있습니다. GitHub 앱 연결은 [AWS CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html)를 통해 지원됩니다

소스 공급자 액세스를 사용하면 [CreateWebhook](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CreateWebhook.html)를 사용하여 [GitHub Webhook 이벤트](github-webhook.md)에 가입하여 빌드를 트리거하거나 CodeBuild에서 [자습서: CodeBuild 호스팅 GitHub Action 실행기 구성](action-runner.md)를 사용할 수 있습니다.

**참고**  
CodeConnections는 CodeBuild보다 적은 리전에서 사용할 수 있습니다. CodeBuild에서 리전 간 연결을 사용할 수 있습니다. 옵트인 리전에서 생성된 연결은 다른 리전에서 사용할 수 없습니다. 자세한 내용은 [AWS CodeConnections 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/codestar_connections.html)을 참조하세요.

**Topics**
+ [

## 1단계: GitHub 앱에 대한 연결 생성(콘솔)
](#connections-github-console)
+ [

## 2단계: CodeBuild 프로젝트에 연결을 사용할 IAM 역할 액세스 권한 부여
](#connections-github-role-access)
+ [

## 3단계: 새 연결을 사용하도록 CodeBuild 구성
](#connections-github-account-credential)
+ [GitHub 앱 문제 해결](#connections-github-troubleshooting)

## 1단계: GitHub 앱에 대한 연결 생성(콘솔)
<a name="connections-github-console"></a>

다음 단계를 통해 CodeBuild 콘솔을 사용하여 GitHub의 프로젝트에 대한 연결을 추가할 수 있습니다.

**GitHub에 대한 연결을 생성하려면**
+ *개발자 도구 사용 설명서*의 [GitHub에 대한 연결 생성](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)을 위한 지침을 따릅니다.

**참고**  
계정에서 기존 연결을 생성하거나 사용하는 대신 다른 AWS 계정에서 공유된 연결을 사용할 수 있습니다. 자세한 내용은 [AWS 계정과 연결 공유](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-share.html)를 참조하세요.

## 2단계: CodeBuild 프로젝트에 연결을 사용할 IAM 역할 액세스 권한 부여
<a name="connections-github-role-access"></a>

연결에서 제공한 GitHub 토큰을 사용할 수 있는 IAM 역할 액세스 권한을 CodeBuild 프로젝트에 부여할 수 있습니다.

**CodeBuild 프로젝트에 IAM 역할 액세스 권한을 부여하려면**

1. CodeBuild 프로젝트의 [CodeBuild가 다른 AWS 서비스와 상호 작용하도록 허용](setting-up-service-role.md)에 대한 지침에 따라 CodeBuild 프로젝트의 IAM 역할을 생성합니다.

1. 지침에 따라 CodeBuild 프로젝트 역할에 다음 IAM 정책을 추가하여 연결에 대한 액세스 권한을 부여합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "codeconnections:GetConnectionToken",
                   "codeconnections:GetConnection"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/Service*"
               ]
           }
       ]
   }
   ```

------

## 3단계: 새 연결을 사용하도록 CodeBuild 구성
<a name="connections-github-account-credential"></a>

연결을 계정 수준 자격 증명으로 구성하고 프로젝트에서 사용할 수 있습니다.

------
#### [ AWS Management Console ]

**에서 연결을 계정 수준 자격 증명으로 구성하려면 AWS Management Console**

1. **소스 공급자**에서 **GitHub**를 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + **기본 소스 자격 증명**을 선택하여 계정의 기본 소스 자격 증명을 사용하여 모든 프로젝트에 적용합니다.

     1. GitHub에 연결되지 않은 경우 **기본 소스 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **GitHub 앱**을 선택합니다.

     1. **연결**에서 기존 연결을 선택하거나 연결을 새로 생성합니다.
   + **사용자 지정 소스 자격 증명**을 선택하여 사용자 지정 소스 자격 증명을 사용하여 계정의 기본 설정을 재정의합니다.

     1. **자격 증명 유형**에서 **GitHub 앱**을 선택합니다.

     1. **연결**에서 기존 연결을 선택하거나 연결을 새로 생성합니다.

------
#### [ AWS CLI ]

**에서 연결을 계정 수준 자격 증명으로 구성하려면 AWS CLI**
+ 터미널(Linux, macOS, Unix) 또는 명령 프롬프트(Windows)를 엽니다. AWS CLI 를 사용하여 `--token` 연결에 대해 `--auth-type`, `--server-type`및를 지정하여 **import-source-credentials** 명령을 실행합니다.

  다음 명령을 사용합니다.

  ```
  aws codebuild import-source-credentials --auth-type CODECONNECTIONS --server-type GITHUB --token <connection-arn>
  ```

------

CodeBuild 프로젝트에 여러 토큰을 설정할 수도 있습니다. 자세한 내용은 [여러 토큰을 소스 수준 자격 증명으로 구성](multiple-access-tokens.md#asm-source-credential) 단원을 참조하십시오.

## GitHub 앱을 사용한 문제 해결
<a name="connections-github-troubleshooting"></a>

다음 정보는 GitHub App과 관련된 문제를 해결하는 데 도움이 될 수 있습니다.

**Topics**
+ [

### 원치 않는 리전에 GitHub용 AWS 커넥터 앱 설치
](#connections-github-troubleshooting.undesired-region)
+ [

### GitHub 앱 연결에는 리포지토리에 대한 액세스 권한이 없습니다.
](#connections-github-troubleshooting.repo-access)
+ [

### AWS 서비스의 IAM 역할에 필요한 IAM 권한이 없습니다.
](#connections-github-troubleshooting.iam-permissions)

### 원치 않는 리전에 GitHub용 AWS 커넥터 앱 설치
<a name="connections-github-troubleshooting.undesired-region"></a>

**문제:** GitHub Marketplace에서 GitHub용 AWS 커넥터를 설치했지만 원치 않는 리전에서 연결이 생성되었습니다. GitHub 웹 사이트에서 앱을 재구성하려고 하면 앱이 이미 GitHub 계정에 설치되어 있기 때문에 작동하지 않습니다.

**가능한 원인:** 앱이 GitHub 계정에 이미 설치되어 있으므로 앱 권한만 재구성할 수 있습니다.

**권장 솔루션:** 원하는 리전의 설치 ID로 새 연결을 생성할 수 있습니다.

1. [https://console.aws.amazon.com/codesuite/settings/connections](https://console.aws.amazon.com/codesuite/settings/connections) CodeConnections 콘솔을 열고 AWS 콘솔 탐색 모음에서 리전 선택기를 사용하여 원하는 리전으로 이동합니다.

1. *개발자 도구 사용 설명서*의 [GitHub에 대한 연결 생성](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)을 위한 지침을 따릅니다.
**참고**  
 AWS Connector for GitHub 앱을 이미 설치했으므로 새 앱을 설치하는 대신 선택할 수 있습니다.

### GitHub 앱 연결에는 리포지토리에 대한 액세스 권한이 없습니다.
<a name="connections-github-troubleshooting.repo-access"></a>

**문제:** CodeBuild 또는 CodePipeline과 같은 연결을 사용하는 AWS 서비스는 리포지토리에 액세스할 수 없거나 리포지토리가 존재하지 않는다고 보고합니다. 몇 가지 가능한 오류 메시지는 다음과 같습니다.
+ `Authentication required for primary source.`
+ `Unable to create webhook at this time. Please try again later.`
+ `Failed to create webhook. GitHub API limit reached. Please try again later.`

***가능한 원인:** GitHub 앱을 사용하고 웹후크 권한 범위를 부여하지 않았을 수 있습니다.*  
**권장 솔루션:** 필요한 권한 범위를 부여하려면 [검토하거나 수정하려는 GitHub 앱으로 이동](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#navigating-to-the-github-app-you-want-to-review-or-modify)의 지침에 따라 설치된 앱을 구성합니다. 권한 섹션에서 앱에 웹후크 권한이 없는 것을 확인할 수 있으며 새로 요청된 권한을 검토할 수 있는 옵션이 있습니다. 새 권한을 검토하고 수락합니다. 자세한 내용은 [GitHub 앱에 대한 업데이트된 권한 승인](https://docs.github.com/en/apps/using-github-apps/approving-updated-permissions-for-a-github-app)을 참조하세요.

***가능한 원인:** 연결이 예상대로 작동했지만 갑자기 리포지토리에 액세스할 수 없습니다.*  
**가능한 솔루션:** 먼저 [권한 부여](https://docs.github.com/en/apps/using-github-apps/reviewing-and-revoking-authorization-of-github-apps) 및 [설치](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps)를 검토하여 시작한 다음 GitHub 앱이 권한 부여 및 설치되었는지 확인합니다. GitHub 앱 설치가 일시 중지된 경우 일시 중지를 해제해야 합니다. GitHub 앱이 [UAT(사용자 액세스 토큰)](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user) 연결에 대해 승인되지 않았거나 [IAT(설치 액세스 토큰)](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation) 연결에 설치되지 않은 경우 기존 연결을 더 이상 사용할 수 없으므로 새 연결을 생성해야 합니다. GitHub 앱을 다시 설치해도 이전 설치와 연결된 이전 연결은 복원되지 않습니다.  
**가능한 솔루션:** 연결이 UAT 연결인 경우 여러 CodeBuild 동시 빌드 실행에 사용되는 것과 같이 연결이 동시에 사용되지 않는지 확인합니다. 이는 GitHub가 연결에 의해 만료되는 토큰이 새로 고쳐지면 이전에 발급된 UAT를 즉시 무효화하기 때문입니다. 여러 동시 CodeBuild 빌드에 UAT 연결을 사용해야 하는 경우 여러 연결을 생성하고 각 연결을 독립적으로 사용할 수 있습니다.  
**가능한 솔루션:** 지난 6개월 동안 UAT 연결을 사용하지 않은 경우 GitHub에서 연결이 무효화됩니다. 이를 수정하려면 새로운 연결을 생성합니다.

***가능한 원인:** 앱을 설치하지 않고 UAT 연결을 사용했을 수 있습니다.*  
**권장 솔루션:** UAT 연결을 생성하면 GitHub 앱 설치와 연결을 연결할 필요가 없지만 리포지토리에 액세스하려면 설치가 필요합니다. 지침에 따라 [설치를 검토](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps)하여 GitHub 앱이 설치되어 있는지 확인합니다. 설치되지 않은 경우 [GitHub 앱 페이지](https://github.com/marketplace/aws-connector-for-github)로 이동하여 앱을 설치합니다. UAT의 액세스에 대한 자세한 내용은 [사용자 액세스 토큰 정보](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#about-user-access-tokens)를 참조하세요.

### AWS 서비스의 IAM 역할에 필요한 IAM 권한이 없습니다.
<a name="connections-github-troubleshooting.iam-permissions"></a>

**문제:** 다음 오류 메시지 중 하나가 표시됩니다.
+ `Access denied to connection <connection-arn>`
+ `Failed to get access token from <connection-arn>`

**권장 솔루션:** 일반적으로 CodePipeline 또는 CodeBuild와 같은 AWS 서비스와의 연결을 사용합니다. AWS 서비스에 IAM 역할을 부여하면 AWS 서비스는 역할의 권한을 사용하여 사용자를 대신하여 작업할 수 있습니다. IAM 역할에 필요한 권한이 있는지 확인합니다. 필요한 IAM 권한에 대한 자세한 내용은 *개발자 도구 콘솔 사용 설명서*의 알림 및 [ CodeConnections에 대한 연결 및 ID 및 액세스 관리를 사용하기 위한 CodeBuild 프로젝트 IAM 역할 액세스 권한 부여](#connections-github-role-access)를 참조하세요. [AWS CodeStar CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/security-iam.html) 

# GitHub 및 GitHub Enterprise Server 액세스 토큰
<a name="access-tokens-github"></a>

## 액세스 토큰 사전 조건
<a name="access-tokens-github-prereqs"></a>

시작하기 전에 GitHub 액세스 토큰에 적절한 권한 범위를 추가해야 합니다.

GitHub의 경우 개인용 액세스 토큰 범위가 다음과 같아야 합니다.
+ **repo**: 프라이빗 리포지토리의 전체 제어를 부여합니다.
+ **repo:status**: 퍼블릭 및 프라이빗 리포지토리 커밋 상태에 대한 읽기/쓰기 권한을 부여합니다.
+ **admin:repo\$1hook**: 리포지토리 후크의 전체 제어를 부여합니다. 토큰에 `repo` 범위가 있을 경우 이 범위가 필요하지 않습니다.
+ **admin:org\$1hook**: 조직 후크를 완전히 제어할 수 있습니다. 이 범위는 조직 웹후크 기능을 사용하는 경우에만 필요합니다.

자세한 내용은 GitHub 웹사이트의 [OAuth 앱에 대한 범위 이해](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)를 참조하십시오.

세분화된 개인 액세스 토큰을 사용하는 경우 사용 사례에 따라 개인 액세스 토큰에 다음 권한이 필요할 수 있습니다.
+ **목차: 읽기 전용**: 프라이빗 리포지토리에 대한 액세스 권한을 부여합니다. 프라이빗 리포지토리를 소스로 사용하는 경우 이 권한이 필요합니다.
+ **커밋 상태: 읽기 및 쓰기:** 커밋 상태를 생성할 수 있는 권한을 부여합니다. 프로젝트에 웹후크가 설정되어 있거나 보고서 빌드 상태 기능이 활성화된 경우 이 권한이 필요합니다.
+ **웹후크: 읽기 및 쓰기:** 웹후크를 관리할 수 있는 권한을 부여합니다. 프로젝트에 웹후크가 설정된 경우 이 권한이 필요합니다.
+ **pull 요청: 읽기 전용**: pull 요청에 액세스할 수 있는 권한을 부여합니다. 이 권한은 웹후크에 pull 요청 이벤트에 대한 `FILE_PATH` 필터가 있는 경우 필요합니다.
+ **관리: 읽기 및 쓰기:** CodeBuild에서 자체 호스팅 GitHub Action 실행기 기능을 사용하는 경우 이 권한이 필요합니다. 자세한 내용은 [리포지토리에 대한 등록 토큰 생성](https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#create-a-registration-token-for-a-repository) 및 [자습서: CodeBuild 호스팅 GitHub Action 실행기 구성](action-runner.md) 섹션을 참조하세요.

**참고**  
조직 리포지토리에 액세스하려면 조직을 액세스 토큰의 리소스 소유자로 지정해야 합니다.

자세한 내용은 GitHub 웹 사이트의 [ 세분화된 개인 액세스 토큰에 필요한 권한을](https://docs.github.com/en/rest/authentication/permissions-required-for-fine-grained-personal-access-tokens?apiVersion=2022-11-28) 참조하세요.

## 액세스 토큰을 사용하여 GitHub에 연결(콘솔)
<a name="access-tokens-github-console"></a>

콘솔에서 액세스 토큰을 사용하여 프로젝트를 GitHub에 연결하려면 프로젝트를 생성할 때 다음과 같이 합니다. 자세한 내용은 [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console) 단원을 참조하세요.

1. **소스 공급자**에서 **GitHub**를 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + 계정 자격 증명을 사용하여 모든 프로젝트에 계정의 기본 소스 자격 증명을 적용하려면 선택합니다.

     1. GitHub에 연결되지 않은 경우 **계정 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **개인 액세스 토큰**을 선택합니다.
   + **서비스**에 계정 수준 자격 증명을 사용하기로 선택한 경우 토큰을 저장하는 데 사용할 서비스를 선택하고 다음을 수행합니다.

     1. **Secrets Manager**를 사용하도록 선택한 경우 기존 보안 암호 연결을 사용하거나 새 보안 암호를 생성하고 **저장**을 선택할 수 있습니다. 새 암호를 생성하는 방법에 대한 자세한 정보는 [Secrets Manager 보안 암호에 토큰 생성 및 저장](asm-create-secret.md) 섹션을 참조하세요.

     1. **CodeBuild**를 사용하도록 선택한 경우 GitHub 개인 액세스 토큰을 입력하고 **저장**을 선택합니다.
   + 사용자 지정 소스 자격 증명을 사용하여 계정의 자격 증명 설정을 재정의하려면 **이 프로젝트에 대해서만 자격 증명 재정의 사용**을 선택합니다.

     1. 채워진 자격 증명 목록에서 **개인 액세스 토큰** 아래의 옵션 중 하나를 선택합니다.

     1. 설명에서 **새 개인 액세스 토큰 연결 생성**을 선택하여 새 개인 액세스 토큰을 생성할 수도 있습니다.

## 액세스 토큰을 사용하여 GitHub에 연결(CLI)
<a name="access-tokens-github-cli"></a>

다음 단계에 따라를 사용하여 액세스 토큰 AWS CLI 을 사용하여 프로젝트를 GitHub에 연결합니다. 와 AWS CLI 함께를 사용하는 방법에 대한 자세한 내용은 단원을 AWS CodeBuild참조하십시오[명령줄 참조](cmd-ref.md).

1. **import-source-credentials** 명령을 실행합니다.

   ```
   aws codebuild import-source-credentials --generate-cli-skeleton
   ```

   JSON 형식 데이터가 출력에 표시됩니다. 가 설치된 로컬 컴퓨터 또는 인스턴스의 위치에 있는 파일(예: `import-source-credentials.json`)에 데이터를 복사 AWS CLI 합니다. 복사된 데이터를 다음과 같이 수정하고 결과를 저장합니다.

   ```
   {
       "serverType": "server-type",
       "authType": "auth-type",
       "shouldOverwrite": "should-overwrite",
       "token": "token",
       "username": "username"
       }
   ```

   다음을 바꿉니다.
   + *server-type*: 필수 값. 이 자격 증명에 사용되는 소스 공급자. 유효한 값은 GITHUB, BITBUCKET, GITHUB\$1ENTERPRISE, GITLAB 및 GITLAB\$1SELF\$1MANAGED입니다.
   + *auth-type*: 필수 값. 리포지토리에 연결하는 데 사용되는 인증 유형입니다. 유효한 값은 OAUTH, BASIC\$1AUTH, Personal\$1ACCESS\$1TOKEN, CODECONNECTIONS 및 SECRETS\$1MANAGER입니다. GitHub의 경우 PERSONAL\$1ACCESS\$1TOKEN만 허용됩니다. BASIC\$1AUTH는 Bitbucket 앱 암호로만 허용됩니다.
   + *should-overwrite*: 선택적 값입니다. 리포지토리 소스 자격 증명을 덮어쓰지 않도록 하려면 `false`로 설정합니다. 리포지토리 소스 자격 증명을 덮어쓰려면 `true`로 설정합니다. 기본값은 `true`입니다.
   + *token*: 필수 값. GitHub 또는 GitHub Enterprise Server에서는 개인용 액세스 토큰을 말합니다. Bitbucket의 경우 개인 액세스 토큰 또는 앱 암호입니다. 인증 유형 CODECONNECTIONS의 경우 연결 ARN입니다. 인증 유형 SECRETS\$1MANAGER의 경우 보안 암호 ARN입니다.
   + *username*: 선택 사항 값. GitHub 및 GitHub Enterprise Server 소스 공급자의 경우 이 파라미터가 무시됩니다.

1. 액세스 토큰으로 계정에 연결하려면 1단계에서 저장한 `import-source-credentials.json` 파일이 있는 디렉터리로 이동한 후 **import-source-credentials** 명령을 다시 실행합니다.

   ```
   aws codebuild import-source-credentials --cli-input-json file://import-source-credentials.json
   ```

   JSON 형식 데이터와 Amazon 리소스 이름(ARN)이 출력에 표시됩니다.

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```
**참고**  
**import-source-credentials** 명령을 동일한 서버 유형과 인증 유형으로 다시 실행하면 저장된 액세스 토큰이 업데이트됩니다.

   계정을 액세스 토큰과 연결한 후 `create-project`를 사용하여 CodeBuild 프로젝트를 생성할 수 있습니다. 자세한 내용은 [빌드 프로젝트 생성(AWS CLI)](create-project.md#create-project-cli) 단원을 참조하십시오.

1. 연결된 액세스 토큰을 보려면 **list-source-credentials** 명령을 실행합니다.

   ```
   aws codebuild list-source-credentials
   ```

   JSON 형식의 `sourceCredentialsInfos` 객체가 출력에 표시됩니다.

   ```
   {
           "sourceCredentialsInfos": [
               {
                   "authType": "auth-type",
                   "serverType": "server-type", 
                   "arn": "arn"
               }
           ]
       }
   ```

   `sourceCredentialsObject`에는 연결된 소스 자격 증명 정보 목록이 포함되어 있습니다.
   + `authType`은 자격 증명에서 사용하는 인증 유형입니다. `OAUTH`, `BASIC_AUTH`, `PERSONAL_ACCESS_TOKEN`, `CODECONNECTIONS` 또는 `SECRETS_MANAGER`일 수 있습니다.
   + `serverType`은 소스 공급자의 유형입니다. `GITHUB`, `GITHUB_ENTERPRISE`, `BITBUCKET`, `GITLAB` 또는 `GITLAB_SELF_MANAGED`일 수 있습니다.
   + `arn`은 토큰의 ARN입니다.

1. 소스 공급자와의 연결을 해제하고 액세스 토큰을 삭제하려면 해당 ARN을 지정하여 **delete-source-credentials** 명령을 실행합니다.

   ```
   aws codebuild delete-source-credentials --arn arn-of-your-credentials
   ```

   JSON 형식의 데이터가 반환되고 삭제된 자격 증명의 ARN이 표시됩니다.

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```

# GitHub OAuth 앱
<a name="oauth-app-github"></a>

## OAuth를 사용하여 GitHub 연결(콘솔)
<a name="oauth-app-github-console"></a>

콘솔에서 OAuth 앱을 사용하여 프로젝트를 GitHub에 연결하려면 프로젝트를 생성할 때 다음과 같이 합니다. 자세한 내용은 [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console) 단원을 참조하세요.

1. **소스 공급자**에서 **GitHub**를 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + 계정 자격 증명을 사용하여 모든 프로젝트에 계정의 기본 소스 자격 증명을 적용하려면 선택합니다.

     1. GitHub에 연결되지 않은 경우 **계정 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **OAuth 앱**을 선택합니다.
   + **서비스**에 계정 수준 자격 증명을 사용하기로 선택한 경우 토큰을 저장하는 데 사용할 서비스를 선택하고 다음을 수행합니다.

     1. **Secrets Manager**를 사용하도록 선택한 경우 기존 보안 암호 연결을 사용하거나 새 보안 암호를 생성하고 **저장**을 선택할 수 있습니다. 새 암호를 생성하는 방법에 대한 자세한 정보는 [Secrets Manager 보안 암호에 토큰 생성 및 저장](asm-create-secret.md) 섹션을 참조하세요.

     1. **CodeBuild**를 사용하도록 선택한 경우 **저장**을 선택합니다.
   + 사용자 지정 소스 자격 증명을 사용하여 계정의 자격 증명 설정을 재정의하려면 **이 프로젝트에 대해서만 자격 증명 재정의 사용**을 선택합니다.

     1. 채워진 자격 증명 목록에서 **OAuth 앱** 아래의 옵션 중 하나를 선택합니다.

     1. 설명에서 **새 OAuth 앱 토큰 연결 생성**을 선택하여 새 OAuth 앱 토큰을 생성할 수도 있습니다.

승인된 OAuth 앱을 검토하려면 GitHub의 [애플리케이션](https://github.com/settings/applications)으로 이동하여 [aws-codesuite](https://github.com/aws-codesuite)에서 소유한 `AWS CodeBuild (region)`이라는 애플리케이션이 나열되어 있는지 확인합니다.

# CodeBuild의 Bitbucket 액세스
<a name="access-tokens-bitbucket-overview"></a>

Bitbucket의 경우 액세스 토큰, 앱 암호, Secrets Manager 암호 또는 OAuth 앱을 사용하여 소스 공급자에 액세스합니다.

**Topics**
+ [

# Bitbucket 앱 연결
](connections-bitbucket-app.md)
+ [

# Bitbucket 앱 암호 또는 액세스 토큰
](access-tokens-bitbucket.md)
+ [

# Bitbucket OAuth 앱
](oauth-app-bitbucket.md)

# Bitbucket 앱 연결
<a name="connections-bitbucket-app"></a>

Bitbucket을 사용하여 CodeBuild에 연결할 수 있습니다. Bitbucket 앱 연결은 [AWS CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html)를 통해 지원됩니다.

**참고**  
CodeConnections는 CodeBuild보다 적은 리전에서 사용할 수 있습니다. CodeBuild에서 리전 간 연결을 사용할 수 있습니다. 옵트인 리전에서 생성된 연결은 다른 리전에서 사용할 수 없습니다. 자세한 내용은 [AWS CodeConnections 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/codestar_connections.html)을 참조하세요.

**Topics**
+ [

## 1단계:Bitbucket에 대한 연결 생성(콘솔)
](#connections-bitbucket-console)
+ [

## 2단계: CodeBuild 프로젝트에 연결을 사용할 IAM 역할 액세스 권한 부여
](#connections-bitbucket-role-access)
+ [

## 3단계: 새 연결을 사용하도록 CodeBuild 구성
](#connections-bitbucket-account-credential)

## 1단계:Bitbucket에 대한 연결 생성(콘솔)
<a name="connections-bitbucket-console"></a>

다음 단계를 통해 CodeBuild 콘솔을 사용하여 Bitbucket의 프로젝트에 대한 연결을 추가할 수 있습니다.

**Bitbucket에 대한 연결을 생성하려면**
+ *개발자 도구 사용 설명서*의 [Bitbucket에 대한 연결 생성](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-bitbucket.html)을 위한 지침을 따릅니다.

**참고**  
계정에서 기존 연결을 생성하거나 사용하는 대신 다른 AWS 계정에서 공유된 연결을 사용할 수 있습니다. 자세한 내용은 [AWS 계정과 연결 공유](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-share.html)를 참조하세요.

## 2단계: CodeBuild 프로젝트에 연결을 사용할 IAM 역할 액세스 권한 부여
<a name="connections-bitbucket-role-access"></a>

연결에서 제공한 Bitbucket 토큰을 사용할 수 있는 IAM 역할 액세스 권한을 CodeBuild 프로젝트에 부여할 수 있습니다.

**CodeBuild 프로젝트에 IAM 역할 액세스 권한을 부여하려면**

1. CodeBuild 프로젝트의 [CodeBuild가 다른 AWS 서비스와 상호 작용하도록 허용](setting-up-service-role.md)에 대한 지침에 따라 CodeBuild 프로젝트의 IAM 역할을 생성합니다.

1. 지침에 따라 CodeBuild 프로젝트 역할에 다음 IAM 정책을 추가하여 연결에 대한 액세스 권한을 부여합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "codeconnections:GetConnectionToken",
                   "codeconnections:GetConnection"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/Service*"
               ]
           }
       ]
   }
   ```

------

## 3단계: 새 연결을 사용하도록 CodeBuild 구성
<a name="connections-bitbucket-account-credential"></a>

연결을 계정 수준 자격 증명으로 구성하고 프로젝트에서 사용할 수 있습니다.

------
#### [ AWS Management Console ]

**에서 연결을 계정 수준 자격 증명으로 구성하려면 AWS Management Console**

1. **소스 공급자**에서 **Bitbucket**을 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + **기본 소스 자격 증명**을 선택하여 계정의 기본 소스 자격 증명을 사용하여 모든 프로젝트에 적용합니다.

     1. Bitbucket에 연결되지 않은 경우 **기본 소스 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **CodeConnections**를 선택합니다.

     1. **연결**에서 기존 연결을 선택하거나 연결을 새로 생성합니다.
   + **사용자 지정 소스 자격 증명**을 선택하여 사용자 지정 소스 자격 증명을 사용하여 계정의 기본 설정을 재정의합니다.

     1. **자격 증명 유형**에서 **CodeConnections**를 선택합니다.

     1. **연결**에서 기존 연결을 선택하거나 연결을 새로 생성합니다.

------
#### [ AWS CLI ]

**에서 연결을 계정 수준 자격 증명으로 구성하려면 AWS CLI**
+ 터미널(Linux, macOS, Unix) 또는 명령 프롬프트(Windows)를 엽니다. AWS CLI 를 사용하여 `--token` 연결에 대해 `--auth-type`, `--server-type`및를 지정하여 **import-source-credentials** 명령을 실행합니다.

  다음 명령을 사용합니다.

  ```
  aws codebuild import-source-credentials --auth-type CODECONNECTIONS --server-type BITBUCKET --token <connection-arn>
  ```

------

CodeBuild 프로젝트에서 여러 토큰을 설정하는 방법에 대한 자세한 내용은 [여러 토큰을 소스 수준 자격 증명으로 구성](multiple-access-tokens.md#asm-source-credential) 섹션을 참조하세요.

# Bitbucket 앱 암호 또는 액세스 토큰
<a name="access-tokens-bitbucket"></a>

## 사전 조건
<a name="access-tokens-bitbucket-prerequisites"></a>

시작하기 전에 Bitbucket 앱 암호 또는 액세스 토큰에 적절한 권한 범위를 추가해야 합니다.

Bitbucket의 경우 앱 암호 또는 액세스 토큰의 범위가 다음과 같아야 합니다.
+ **repository:read**: 권한 있는 사용자가 액세스할 수 있는 모든 리포지토리에 대한 읽기 액세스 권한을 부여합니다.
+ **pullrequest:read**: pull 요청에 대한 읽기 액세스를 부여합니다. 프로젝트에 Bitbucket 웹후크가 있는 경우 앱 암호 또는 액세스 토큰이 이 범위를 가져야 합니다.
+ **webhook**: Webhook에 대한 액세스를 부여합니다. 프로젝트에 웹후크 작업이 있는 경우 앱 암호 또는 액세스 토큰이 범위를 가져야 합니다.
+ **계정**: 사용자의 계정 정보에 대한 읽기 액세스 권한을 부여합니다.

자세한 내용은 Bitbucket 웹사이트의 [Bitbucket 클라우드 REST API에 대한 범위](https://developer.atlassian.com/cloud/bitbucket/bitbucket-cloud-rest-api-scopes/) 및 [Bitbucket 클라우드의 OAuth](https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html)를 참조하십시오.

## 앱 암호로 Bitbucket에 연결(콘솔)
<a name="access-tokens-bitbucket-password-console"></a>

콘솔에서 앱 암호를 사용하여 프로젝트를 Bitbucket에 연결하려면 프로젝트를 생성할 때 다음과 같이 합니다. 자세한 내용은 [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console) 단원을 참조하세요.

1. **소스 공급자**에서 **Bitbucket**을 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + 계정 자격 증명을 사용하여 모든 프로젝트에 계정의 기본 소스 자격 증명을 적용하려면 선택합니다.

     1. Bitbucket에 연결되지 않은 경우 **계정 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **앱 암호**를 선택합니다.
   + **서비스**에 계정 수준 자격 증명을 사용하기로 선택한 경우 토큰을 저장하는 데 사용할 서비스를 선택하고 다음을 수행합니다.

     1. **Secrets Manager**를 사용하도록 선택한 경우 기존 보안 암호 연결을 사용하거나 새 보안 암호를 생성하고 **저장**을 선택할 수 있습니다. 새 암호를 생성하는 방법에 대한 자세한 정보는 [Secrets Manager 보안 암호에 토큰 생성 및 저장](asm-create-secret.md) 섹션을 참조하세요.

     1. **CodeBuild**를 사용하도록 선택한 경우 Bitbucket 사용자 이름과 앱 암호를 입력한 다음 **저장**을 선택합니다.
   + 사용자 지정 소스 자격 증명을 사용하여 계정의 자격 증명 설정을 재정의하려면 **이 프로젝트에 대해서만 자격 증명 재정의 사용**을 선택합니다.

     1. 채워진 자격 증명 목록에서 **앱 암호** 아래의 옵션 중 하나를 선택합니다.

     1. 설명에서 **새 앱 암호 연결 생성**을 선택하여 새 앱 암호 토큰을 생성할 수도 있습니다.

## 액세스 토큰을 사용하여 Bitbucket에 연결(콘솔)
<a name="access-tokens-bitbucket-console"></a>

콘솔에서 액세스 토큰을 사용하여 프로젝트를 Bitbucket에 연결하려면 프로젝트를 생성할 때 다음과 같이 합니다. 자세한 내용은 [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console) 단원을 참조하세요.

1. **소스 공급자**에서 **Bitbucket**을 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + 계정 자격 증명을 사용하여 모든 프로젝트에 계정의 기본 소스 자격 증명을 적용하려면 선택합니다.

     1. Bitbucket에 연결되지 않은 경우 **계정 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **개인 액세스 토큰**을 선택합니다.
   + **서비스**에 계정 수준 자격 증명을 사용하기로 선택한 경우 토큰을 저장하는 데 사용할 서비스를 선택하고 다음을 수행합니다.

     1. **Secrets Manager**를 사용하도록 선택한 경우 기존 보안 암호 연결을 사용하거나 새 보안 암호를 생성하고 **저장**을 선택할 수 있습니다. 새 암호를 생성하는 방법에 대한 자세한 정보는 [Secrets Manager 보안 암호에 토큰 생성 및 저장](asm-create-secret.md) 섹션을 참조하세요.

     1. **CodeBuild**를 사용하도록 선택한 경우 Bitbucket 개인 액세스 토큰을 입력하고 **저장**을 선택합니다.
   + 사용자 지정 소스 자격 증명을 사용하여 계정의 자격 증명 설정을 재정의하려면 **이 프로젝트에 대해서만 자격 증명 재정의 사용**을 선택합니다.

     1. 채워진 자격 증명 목록에서 **개인 액세스 토큰** 아래의 옵션 중 하나를 선택합니다.

     1. 설명에서 **새 개인 액세스 토큰 연결 생성**을 선택하여 새 개인 액세스 토큰을 생성할 수도 있습니다.

## 앱 암호 또는 액세스 토큰을 사용하여 Bitbucket에 연결(CLI)
<a name="access-tokens-bitbucket-cli"></a>

다음 단계에 따라 AWS CLI 를 사용하여 앱 암호 또는 액세스 토큰을 사용하여 프로젝트를 Bitbucket에 연결합니다. 와 AWS CLI 함께를 사용하는 방법에 대한 자세한 내용은 단원을 AWS CodeBuild참조하십시오[명령줄 참조](cmd-ref.md).

1. **import-source-credentials** 명령을 실행합니다.

   ```
   aws codebuild import-source-credentials --generate-cli-skeleton
   ```

   JSON 형식 데이터가 출력에 표시됩니다. 가 설치된 로컬 컴퓨터 또는 인스턴스의 위치에 있는 파일(예: `import-source-credentials.json`)에 데이터를 복사 AWS CLI 합니다. 복사된 데이터를 다음과 같이 수정하고 결과를 저장합니다.

   ```
   {
       "serverType": "BITBUCKET",
       "authType": "auth-type",
       "shouldOverwrite": "should-overwrite",
       "token": "token",
       "username": "username"
       }
   ```

   다음을 바꿉니다.
   + *server-type*: 필수 값. 이 자격 증명에 사용되는 소스 공급자. 유효한 값은 GITHUB, BITBUCKET, GITHUB\$1ENTERPRISE, GITLAB 및 GITLAB\$1SELF\$1MANAGED입니다.
   + *auth-type*: 필수 값. 리포지토리에 연결하는 데 사용되는 인증 유형입니다. 유효한 값은 OAUTH, BASIC\$1AUTH, Personal\$1ACCESS\$1TOKEN, CODECONNECTIONS 및 SECRETS\$1MANAGER입니다. GitHub의 경우 PERSONAL\$1ACCESS\$1TOKEN만 허용됩니다. BASIC\$1AUTH는 Bitbucket 앱 암호로만 허용됩니다.
   + *should-overwrite*: 선택적 값입니다. 리포지토리 소스 자격 증명을 덮어쓰지 않도록 하려면 `false`로 설정합니다. 리포지토리 소스 자격 증명을 덮어쓰려면 `true`로 설정합니다. 기본값은 `true`입니다.
   + *token*: 필수 값. GitHub 또는 GitHub Enterprise Server에서는 개인용 액세스 토큰을 말합니다. Bitbucket의 경우 개인 액세스 토큰 또는 앱 암호입니다. 인증 유형 CODECONNECTIONS의 경우 연결 ARN입니다. 인증 유형 SECRETS\$1MANAGER의 경우 보안 암호 ARN입니다.
   + *username*: 선택 사항 값. GitHub 및 GitHub Enterprise Server 소스 공급자의 경우 이 파라미터가 무시됩니다.

1. 앱 암호 또는 액세스 토큰으로 계정에 연결하려면 1단계에서 저장한 `import-source-credentials.json` 파일이 있는 디렉터리로 이동한 후 **import-source-credentials** 명령을 다시 실행합니다.

   ```
   aws codebuild import-source-credentials --cli-input-json file://import-source-credentials.json
   ```

   JSON 형식 데이터와 Amazon 리소스 이름(ARN)이 출력에 표시됩니다.

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```
**참고**  
**import-source-credentials** 명령을 동일한 서버 유형과 인증 유형으로 다시 실행하면 저장된 액세스 토큰이 업데이트됩니다.

   계정이 앱 암호에 연결된 후 `create-project`를 사용하여 CodeBuild 프로젝트를 생성할 수 있습니다. 자세한 내용은 [빌드 프로젝트 생성(AWS CLI)](create-project.md#create-project-cli) 단원을 참조하십시오.

1. 연결된 앱 암호 또는 액세스 토큰을 보려면 **list-source-credentials** 명령을 실행합니다.

   ```
   aws codebuild list-source-credentials
   ```

   JSON 형식의 `sourceCredentialsInfos` 객체가 출력에 표시됩니다.

   ```
   {
           "sourceCredentialsInfos": [
               {
                   "authType": "auth-type",
                   "serverType": "BITBUCKET", 
                   "arn": "arn"
               }
           ]
       }
   ```

   `sourceCredentialsObject`에는 연결된 소스 자격 증명 정보 목록이 포함되어 있습니다.
   + `authType`은 자격 증명에서 사용하는 인증 유형입니다. `OAUTH`, `BASIC_AUTH`, `PERSONAL_ACCESS_TOKEN`, `CODECONNECTIONS` 또는 `SECRETS_MANAGER`일 수 있습니다.
   + `serverType`은 소스 공급자의 유형입니다. `GITHUB`, `GITHUB_ENTERPRISE`, `BITBUCKET`, `GITLAB` 또는 `GITLAB_SELF_MANAGED`일 수 있습니다.
   + `arn`은 토큰의 ARN입니다.

1. 소스 공급자와의 연결을 해제하고 앱 암호 또는 액세스 토큰을 삭제하려면 해당 ARN을 지정하여 **delete-source-credentials** 명령을 실행합니다.

   ```
   aws codebuild delete-source-credentials --arn arn-of-your-credentials
   ```

   JSON 형식의 데이터가 반환되고 삭제된 자격 증명의 ARN이 표시됩니다.

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```

# Bitbucket OAuth 앱
<a name="oauth-app-bitbucket"></a>

## OAuth를 사용하여 Bitbucket 연결(콘솔)
<a name="oauth-app-bitbucket-console"></a>

콘솔에서 OAuth 앱을 사용하여 프로젝트를 Bitbucket에 연결하려면 프로젝트를 생성할 때 다음과 같이 합니다. 자세한 내용은 [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console) 단원을 참조하세요.

1. **소스 공급자**에서 **Bitbucket**을 선택합니다.

1. **자격 증명**에서 다음 중 하나를 수행합니다.
   + 계정 자격 증명을 사용하여 모든 프로젝트에 계정의 기본 소스 자격 증명을 적용하려면 선택합니다.

     1. Bitbucket에 연결되지 않은 경우 **계정 자격 증명 관리**를 선택합니다.

     1. **자격 증명 유형**에서 **OAuth 앱**을 선택합니다.
   + **서비스**에 계정 수준 자격 증명을 사용하기로 선택한 경우 토큰을 저장하는 데 사용할 서비스를 선택하고 다음을 수행합니다.

     1. **Secrets Manager**를 사용하도록 선택한 경우 기존 보안 암호 연결을 사용하거나 새 보안 암호를 생성하고 **저장**을 선택할 수 있습니다. 새 암호를 생성하는 방법에 대한 자세한 정보는 [Secrets Manager 보안 암호에 토큰 생성 및 저장](asm-create-secret.md) 섹션을 참조하세요.

     1. **CodeBuild**를 사용하도록 선택한 경우 **저장**을 선택합니다.
   + 사용자 지정 소스 자격 증명을 사용하여 계정의 자격 증명 설정을 재정의하려면 **이 프로젝트에 대해서만 자격 증명 재정의 사용**을 선택합니다.

     1. 채워진 자격 증명 목록에서 **OAuth 앱** 아래의 옵션 중 하나를 선택합니다.

     1. 설명에서 **새 OAuth 앱 토큰 연결 생성**을 선택하여 새 OAuth 앱 토큰을 생성할 수도 있습니다.

승인된 OAuth 앱을 검토하려면 Bitbucket에서 [애플리케이션 권한 부여](https://bitbucket.org/account/settings/app-authorizations/)로 이동하여 `AWS CodeBuild (region)` 이름이 지정된 애플리케이션이 나열되었는지 확인합니다.

# CodeBuild의 GitLab 액세스
<a name="access-tokens-gitlab-overview"></a>

GitLab의 경우 GitLab 연결을 사용하여 소스 공급자에 액세스합니다.

**Topics**
+ [

## GitLab에 CodeBuild 연결
](#connections-gitlab)

## GitLab에 CodeBuild 연결
<a name="connections-gitlab"></a>

연결을 사용하면를 사용하여 타사 공급자를 AWS 리소스와 연결하는 구성을 승인하고 설정할 수 있습니다 AWS CodeConnections. 타사 리포지토리를 빌드 프로젝트의 소스로 연결하려면 연결을 사용합니다.

CodeBuild에서 GitLab 또는 GitLab Self Managed 소스 공급자를 추가하려면 다음 중 하나를 선택할 수 있습니다.
+ CodeBuild 콘솔 **빌드 프로젝트 생성** 마법사 또는 **소스 편집** 페이지를 사용하여 **GitLab** 또는 **GitLab Self Managed** 공급자 옵션을 선택합니다. 소스 공급자를 추가하려면 [GitLab에 대한 연결 생성(콘솔)](#connections-gitlab-console) 섹션을 참조하세요. 콘솔을 사용하면 연결 리소스를 만들 수 있습니다.
+ 연결 리소스를 생성하려면 [GitLab에 대한 연결 생성(CLI)](#connections-gitlab-cli) 섹션을 참조하여 CLI를 사용하여 연결 리소스를 생성합니다.

**참고**  
**설정**의 개발자 도구 콘솔을 사용하여 연결을 생성할 수도 있습니다. [연결 생성](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create.html)을 참조하세요.

**참고**  
GitLab에서 이 연결 설치를 승인하면 계정에 액세스하여 데이터를 처리할 수 있는 권한을 서비스에 부여하고 언제든지 애플리케이션을 제거하여 권한을 취소할 수 있습니다.

### GitLab에 대한 연결 생성
<a name="connections-gitlab-create"></a>

이 섹션에서는 GitLab을 CodeBuild에 연결하는 방법을 설명합니다. GitLab 연결에 대한 자세한 정보는 [GitLab에 CodeBuild 연결](#connections-gitlab) 섹션을 참조하세요.

시작하기 전:
+ GitLab 계정이 이미 생성되어 있어야 합니다.
**참고**  
연결은 연결을 만들고 권한을 부여하는 데 사용된 계정이 소유한 리포지토리에 대한 액세스 권한만 제공합니다.
**참고**  
GitLab에서 **소유자** 역할을 가진 리포지토리에 대한 연결을 생성한 다음 CodeBuild와 같은 리소스가 있는 리포지토리에서 해당 연결을 사용할 수 있습니다. 그룹 내 리포지토리의 경우 그룹 소유자가 아니어도 됩니다.
+ 빌드 프로젝트에 대한 소스를 지정하려면 GitLab에서 리포지토리가 이미 생성되어 있어야 합니다.

**Topics**
+ [

#### GitLab에 대한 연결 생성(콘솔)
](#connections-gitlab-console)
+ [

#### GitLab에 대한 연결 생성(CLI)
](#connections-gitlab-cli)

#### GitLab에 대한 연결 생성(콘솔)
<a name="connections-gitlab-console"></a>

다음 단계를 사용하여 CodeBuild 콘솔을 사용하여 GitLab의 프로젝트(리포지토리)에 대한 연결을 추가할 수 있습니다.

**참고**  
계정에서 기존 연결을 생성하거나 사용하는 대신 다른 AWS 계정에서 공유된 연결을 사용할 수 있습니다. 자세한 내용은 [AWS 계정과 연결 공유](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-share.html)를 참조하세요.

**빌드 프로젝트를 생성하거나 편집하려면**

1. CodeBuild 콘솔에 로그인합니다.

1. 다음 중 하나를 선택합니다.
   + 빌드 프로젝트 생성을 선택합니다. [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console)의 단계에 따라 첫 번째 화면을 완료하고 **소스** 섹션의 **소스 공급자**에서 **GitLab**을 선택합니다.
   + 기존 빌드 프로젝트를 편집하려면 선택합니다. **편집**을 선택한 다음 **소스**를 선택합니다. **소스 편집** 페이지의 **소스 공급자**에서 **GitLab**을 선택합니다.

1. 다음 중 하나를 선택합니다.
   + **연결**에서 **기본 연결**을 선택합니다. 기본 연결은 모든 프로젝트에서 기본 GitLab 연결을 적용합니다.
   + **연결**에서 **사용자 지정 연결**을 선택합니다. 사용자 지정 연결은 계정의 기본 설정을 재정의하는 사용자 지정 GitLab 연결을 적용합니다.

1. 다음 중 하나를 수행하세요.
   + **기본 연결** 또는 **사용자 지정 연결**에서 공급자와의 연결을 아직 생성하지 않은 경우 **새 GitLab 연결 생성**을 선택합니다. 5단계로 이동하여 연결을 생성합니다.
   + **연결**에서 공급자와의 연결을 이미 생성한 경우 연결을 선택합니다. 10단계로 이동합니다.
**참고**  
GitLab 연결이 생성되기 전에 팝업 창을 닫으면 페이지를 새로 고쳐야 합니다.

1. GitLab 리포지토리에 대한 연결을 생성하려면 **공급자 선택**에서 **GitLab**을 선택합니다. [**연결 이름(Connection name)**]에 생성하려는 연결의 이름을 입력합니다. **GitLab에 연결**을 선택합니다.  
![\[GitLab에 대해 선택한 연결 옵션을 보여주는 콘솔 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/connections-create-gitlab.png)

1. GitLab의 로그인 페이지가 표시되면 자격 증명을 사용하여 로그인한 다음 **로그인**을 선택합니다.

1. 처음 연결을 승인하는 경우에는 GitLab 계정에 액세스하기 위한 연결 승인을 요청하는 메시지와 함께 권한 부여 페이지가 표시됩니다.

   **Authorize**를 선택합니다.  
![\[GitLab 계정의 연결 승인 메시지를 보여주는 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/gitlab-authorization.png)

1. 브라우저가 연결 콘솔 페이지로 돌아갑니다. **GitLab 연결 설정**에서 **연결 이름**에 새 연결이 표시됩니다.

1. **연결**을 선택합니다.

   GitLab 연결이 성공적으로 생성되면 성공 배너가 상단에 표시됩니다.

1. **빌드 프로젝트 생성** 페이지의 **기본 연결** 또는 **사용자 지정 연결** 드롭다운 목록에서 연결 ARN이 나열되어 있는지 확인합니다. 나열되지 않은 경우 새로 고침 버튼을 선택하여 표시합니다.

1. **리포지토리**에서 네임스페이스와 함께 프로젝트 경로를 지정하여 GitLab의 프로젝트 이름을 선택합니다. 예를 들어 그룹 수준 리포지토리의 경우 리포지토리 이름을 `group-name/repository-name` 형식으로 입력합니다. 경로와 네임스페이스에 대한 자세한 내용은 [https://docs.gitlab.com/ee/api/projects.html\$1get-single-project](https://docs.gitlab.com/ee/api/projects.html#get-single-project)의 `path_with_namespace` 필드를 참조하세요. GitLab의 네임스페이스에 대한 자세한 내용은 [https://docs.gitlab.com/ee/user/namespace/](https://docs.gitlab.com/ee/user/namespace/)를 참조하세요.
**참고**  
GitLab에 있는 그룹의 경우 네임스페이스를 사용하여 프로젝트 경로를 수동으로 지정해야 합니다. 예를 들어 그룹 `mygroup`의 `myrepo`라는 리포지토리의 경우 `mygroup/myrepo` 형식으로 입력합니다. GitLab의 URL에서 네임스페이스를 사용하여 프로젝트 경로를 찾을 수 있습니다.

   

1. **소스 버전 - 선택 사항**에서 pull 요청, 분기, 커밋 ID, 태그 또는 참조와 커밋 ID를 입력합니다. 자세한 내용은 [를 사용한 소스 버전 샘플 AWS CodeBuild](sample-source-version.md) 단원을 참조하십시오.
**참고**  
`811dd1ba1aba14473856cee38308caed7190c0d` 또는 `5392f7`과 같이 커밋 ID처럼 보이지 않는 Git 분기 이름을 선택하는 것이 좋습니다. 이렇게 하면 실제 커밋과 Git 체크아웃이 충돌하는 것을 방지할 수 있습니다.

   

1. **Git 복제 깊이 - 선택 사항**에서 이력이 지정된 커밋 수로 잘린 부분 복제를 생성할 수 있습니다. 전체 복제가 필요할 경우 **전체**를 선택합니다.

1. **빌드 상태 - 선택 사항**에서 빌드 시작 및 완료 상태가 소스 공급자에게 보고되도록 하려면 **빌드가 시작되고 완료될 때 소스 공급자에게 빌드 상태 보고**를 선택합니다.

   소스 공급자에게 빌드 상태를 보고하려면 소스 공급자와 연결된 사용자에게 리포지토리에 대한 쓰기 권한이 있어야 합니다. 사용자에게 쓰기 권한이 없는 경우 빌드 상태를 업데이트할 수 없습니다. 자세한 내용은 [소스 공급자 액세스](access-tokens.md) 단원을 참조하십시오.

#### GitLab에 대한 연결 생성(CLI)
<a name="connections-gitlab-cli"></a>

 AWS Command Line Interface (AWS CLI)를 사용하여 연결을 생성할 수 있습니다.

이렇게 하려면 **create-connection** 명령을 사용합니다.

**중요**  
 AWS CLI 또는를 통해 생성된 연결 AWS CloudFormation 은 기본적으로 `PENDING` 상태입니다. CLI 또는 와의 연결을 생성한 후 콘솔을 CloudFormation사용하여 연결을 편집하여 상태를 로 설정합니다`AVAILABLE`.

**연결을 생성하는 방법**
+ [GitLab(CLI)에 대한 연결 생성](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-gitlab.html#connections-create-gitlab-cli)을 위한 *개발자 도구 콘솔 사용 설명서*의 지침을 따릅니다.

# 교차 서비스 혼동된 대리인 방지
<a name="cross-service-confused-deputy-prevention"></a>

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. 에서 AWS교차 서비스 가장은 혼동된 대리자 문제를 초래할 수 있습니다. 교차 서비스 가장은 한 서비스(*직접 호출하는 서비스*)가 다른 서비스(*직접 호출되는 서비스*)를 직접 호출할 때 발생할 수 있습니다. 직접 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS 에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 위탁자를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다.

리소스 정책에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 컨텍스트 키를 사용하여 리소스에 다른 서비스를 AWS CodeBuild 제공하는 권한을 제한하는 것이 좋습니다. 하나의 리소스만 교차 서비스 액세스와 연결되도록 허용하려는 경우 `aws:SourceArn`을 사용하세요. 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`을(를) 사용합니다.

혼동된 대리자 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모르거나 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드 문자(`*`)를 포함한 `aws:SourceArn` 글로벌 조건 컨텍스트 키를 사용합니다. 예를 들어 `arn:aws:codebuild:*:123456789012:*`입니다.

만약 `aws:SourceArn` 값에 Amazon S3 버킷 ARN과 같은 계정 ID가 포함되어 있지 않은 경우, 권한을 제한하려면 두 글로벌 조건 컨텍스트 키를 모두 사용해야 합니다.

`aws:SourceArn`의 값은 CodeBuild 프로젝트 ARN이어야 합니다.

다음 예는 CodeBuild에서 `aws:SourceArn` 및 `aws:SourceAccount` 전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여 줍니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "codebuild.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject"
                }
            }
        }
    ]
}
```

------