

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

# 의 보안 AWS CodePipeline
<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 CodePipeline참조하세요.
+ **클라우드의 보안** - 사용자의 책임은 사용하는 AWS 서비스에 따라 결정됩니다. 또한 귀하는 데이터의 민감도, 회사 요구 사항, 관련 법률 및 규정을 비롯한 기타 요소에 대해서도 책임이 있습니다.

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

**Topics**
+ [의 데이터 보호 AWS CodePipeline](data-protection.md)
+ [에 대한 자격 증명 및 액세스 관리 AWS CodePipeline](security-iam.md)
+ [CodePipeline에서 로깅 및 모니터링](incident-response.md)
+ [에 대한 규정 준수 검증 AWS CodePipeline](compliance-validation.md)
+ [의 복원력 AWS CodePipeline](disaster-recovery-resiliency.md)
+ [의 인프라 보안 AWS CodePipeline](infrastructure-security.md)
+ [보안 모범 사례](security-best-practices.md)

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

 AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)의 데이터 보호에 적용됩니다. 이 모델에 설명된 대로 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/)을 참조하세요.

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

다음 보안 모범 사례에서도 CodePipeline의 데이터 보호를 다룹니다.
+ [CodePipeline의 Amazon S3에 저장된 아티팩트에 대해 서버 측 암호화 구성](S3-artifact-encryption.md)
+ [AWS Secrets Manager 를 사용하여 데이터베이스 암호 또는 타사 API 키 추적](parameter-store-encryption.md)

## 인터네트워크 트래픽 개인 정보
<a name="inter-network-traffic-privacy"></a>

 Amazon VPC는 정의 AWS 서비스 한 가상 네트워크(*가상 프라이빗 클라우드*)에서 AWS 리소스를 시작하는 데 사용할 수 있는 입니다. CodePipeline은 프라이빗 IP 주소와 함께 탄력적 네트워크 인터페이스를 AWS 서비스 사용하는 간의 프라이빗 통신을 용이하게 하는 AWS 기술인 AWS PrivateLink로 구동되는 Amazon VPC 엔드포인트를 지원합니다. 즉, VPC의 프라이빗 엔드포인트를 통해 CodePipeline에 직접 연결하여 모든 트래픽을 VPC와 AWS 네트워크 내에 유지할 수 있습니다. 이전에는 VPC 내에서 실행 중인 애플리케이션에서 CodePipeline에 연결하기 위해 인터넷 접속이 필요했습니다. VPC를 사용하면 다음과 같은 네트워크 설정을 제어할 수 있습니다.
+ IP 주소 범위,
+ 서브넷,
+ 라우팅 테이블,
+ 네트워크 게이트웨이

VPC를 CodePipeline에 연결하려면 CodePipeline에 대해 인터페이스 VPC 엔드포인트를 정의하세요. 이 유형의 엔드포인트를 사용하여 VPC를 AWS 서비스에 연결할 수 있습니다. 이 엔드포인트를 이용하면 인터넷 게이트웨이나 NAT(네트워크 주소 변환) 인스턴스 또는 VPN 연결 없이도 CodePipeline에 안정적이고 확장 가능하게 연결됩니다. VPC 설정에 대한 자세한 내용은 [VPC 사용 설명서](https://docs.aws.amazon.com/vpc/latest/userguide/)를 참조하십시오.

## 저장 시 암호화
<a name="encryption-at-rest"></a>

CodePipeline의 데이터는를 사용하여 저장 시 암호화됩니다 AWS KMS keys. 코드 아티팩트는 고객 소유 S3 버킷에 저장되며 AWS 관리형 키 또는 고객 관리형 키로 암호화됩니다. 자세한 내용은 [CodePipeline의 Amazon S3에 저장된 아티팩트에 대해 서버 측 암호화 구성](S3-artifact-encryption.md) 단원을 참조하십시오.

## 전송 중 데이터 암호화
<a name="encryption-in-transit"></a>

모든 서비스 대 서비스 통신은 SSL/TLS를 사용하여 전송 중에 암호화됩니다.

## 암호화 키 관리
<a name="key-management"></a>

코드 아티팩트를 암호화하기 위한 기본 옵션을 선택하면 CodePipeline은 AWS 관리형 키를 사용합니다. 이를 변경하거나 삭제할 수 없습니다 AWS 관리형 키. 에서 고객 관리형 키를 사용하여 S3 버킷의 아티팩트를 암호화하거나 AWS KMS 해독하는 경우 필요에 따라이 고객 관리형 키를 변경하거나 교체할 수 있습니다.

**중요**  
CodePipeline은 대칭 KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 S3 버킷의 데이터를 암호화하지 마십시오.

**Topics**

# CodePipeline의 Amazon S3에 저장된 아티팩트에 대해 서버 측 암호화 구성
<a name="S3-artifact-encryption"></a>

Amazon S3 아티팩트에 대해 서버 측 암호화를 구성하는 방법은 2가지입니다.
+ CodePipeline은 파이프라인 생성 마법사를 사용하여 파이프라인을 생성할 AWS 관리형 키 때 S3 아티팩트 버킷과 기본값을 생성합니다. AWS 관리형 키 는 객체 데이터와 함께 암호화되며에서 관리합니다 AWS.
+ 자체 고객 관리형 키를 만들고 관리할 수 있습니다.

**중요**  
CodePipeline은 대칭 KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 S3 버킷의 데이터를 암호화하지 마십시오.

기본 S3 키를 사용 중이라면 이 AWS 관리형 키를 변경하거나 삭제할 수 없습니다. 에서 고객 관리형 키를 사용하여 S3 버킷의 아티팩트를 암호화하거나 AWS KMS 복호화하는 경우 필요에 따라이 고객 관리형 키를 변경하거나 교체할 수 있습니다.

Amazon S3는 버킷에 저장된 모든 객체에 대해 서버 측 암호화가 필요할 경우 사용할 수 있는 버킷 정책을 지원합니다. 예를 들어, 다음 버킷 정책은 요청에 SSE-KMS를 사용한 서버 측 암호화를 요청하는 `s3:PutObject` 헤더가 포함되지 않을 경우 모든 사용자에게 객체 업로드(`x-amz-server-side-encryption`) 권한을 거부합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "SSEAndSSLPolicy",
    "Statement": [
        {
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "aws:kms"
                }
            }
        },
        {
            "Sid": "DenyInsecureConnections",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]
}
```

------

서버 측 암호화에 대한 자세한 내용은 [서버 측 암호화를 사용하여 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) 및 (SSE-KMS)에 저장된 KMS 키를 사용한 서버 측 암호화를 사용하여 데이터 보호를 AWS KMS참조하세요. [AWS Key Management Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) 

에 대한 자세한 내용은 [AWS Key Management Service 개발자 안내서](https://docs.aws.amazon.com/kms/latest/developerguide/)를 AWS KMS참조하세요.

**Topics**
+ [보기 AWS 관리형 키](#S3-view-default-keys)
+ [CloudFormation 또는를 사용하여 S3 버킷에 대한 서버 측 암호화 구성 AWS CLI](#S3-rotate-customer-key)

## 보기 AWS 관리형 키
<a name="S3-view-default-keys"></a>

**파이프라인 생성** 마법사로 첫 번째 파이프라인을 만들 때 파이프라인을 만든 것과 동일한 리전에 S3 버킷이 생성됩니다. 버킷은 파이프라인 아티팩트를 저장하는 데 사용됩니다. 파이프라인을 실행하면 S3 버킷에서 아티팩트를 검색해서 배치합니다. 기본적으로 CodePipeline은 Amazon S3(`aws/s3`키) AWS 관리형 키 용를 AWS KMS 사용하여와 함께 서버 측 암호화를 사용합니다. AWS 관리형 키 이는 생성되어 AWS 계정에 저장됩니다. S3 버킷에서 아티팩트를 검색하면 CodePipeline이 동일한 SSE-KMS 프로세스를 이용해 아티팩트를 암호화합니다.

**에 대한 정보를 보려면 AWS 관리형 키**

1. 에 로그인 AWS Management Console 하고 AWS KMS 콘솔을 엽니다.

1. 시작 페이지가 나타나면 **지금 시작**을 선택합니다.

1. 서비스 탐색 창에서 **AWS 관리형 키**를 선택합니다.

1. 파이프라인의 리전을 선택합니다. 예를 들어 파이프라인이 `us-east-2`에 생성된 경우 필터는 미국 동부(오하이오)로 설정해야 합니다.

   CodePipeline에 사용할 수 있는 리전과 엔드포인트에 대한 자세한 내용은 [AWS CodePipeline 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/codepipeline.html)을 참조하세요.

1. 목록에서 파이프라인에 대해 사용된 별칭이 있는 키를 선택합니다(기본값: **aws/s3**). 키에 대한 기본 정보가 표시됩니다.



## CloudFormation 또는를 사용하여 S3 버킷에 대한 서버 측 암호화 구성 AWS CLI
<a name="S3-rotate-customer-key"></a>

 CloudFormation 또는를 사용하여 파이프라인 AWS CLI 을 생성하는 경우 서버 측 암호화를 수동으로 구성해야 합니다. 위의 버킷 정책 샘플을 사용한 후 자체 고객 관리형 키를 만듭니다. AWS 관리형 키대신 자체 키를 사용해도 됩니다. 자체 키를 선택해야 하는 몇 가지 이유는 다음과 같습니다.
+ 조직의 비즈니스 또는 보안 요건에 맞추기 위해 일정에 따라 키를 교체하고 싶습니다.
+ 다른 AWS 계정에 연결된 리소스를 사용하는 파이프라인을 만들고 싶습니다. 이때 고객 관리형 키를 사용해야 합니다. 자세한 내용은 [CodePipeline에서 다른 AWS 계정의 리소스를 사용하는 파이프라인 생성](pipelines-create-cross-account.md) 단원을 참조하십시오.

암호화 모범 사례에 따르면 암호화 키를 광범위하게 사용하지 않는 것이 좋습니다. 키를 정기적으로 교체하는 것이 좋습니다. AWS KMS 키에 대한 새 암호화 구성 요소를 생성하려면 고객 관리형 키를 생성한 다음 새 고객 관리형 키를 사용하도록 애플리케이션 또는 별칭을 변경할 수 있습니다. 또는 기존 고객 관리형 키에 대해 자동 키 교체를 활성화할 수 있습니다.

고객 관리 키를 교체하려면 [키 교체](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)를 참조하세요.

**중요**  
CodePipeline은 대칭 KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 S3 버킷의 데이터를 암호화하지 마십시오.

# AWS Secrets Manager 를 사용하여 데이터베이스 암호 또는 타사 API 키 추적
<a name="parameter-store-encryption"></a>

수명 주기 동안 AWS Secrets Manager 를 사용하여 데이터베이스 자격 증명, API 키 및 기타 **보안 암호를** 교체, 관리 및 검색하는 것이 좋습니다. Secrets Manager는 코드의 암호를 포함해 하드 코딩된 자격 증명을 Secrets Manager에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 직접 호출로 바꿀 수 있습니다. 자세한 내용은 [AWS Secrets Manager란 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하세요. *AWS Secrets Manager 사용 설명서*의 .

 CloudFormation 템플릿에 보안 암호인 파라미터(예: OAuth 자격 증명)를 전달하는 파이프라인의 경우 Secrets Manager에 저장한 보안 암호에 액세스하는 동적 참조를 템플릿에 포함해야 합니다. 참조 ID 패턴 및 예제는 *AWS CloudFormation 사용 설명서*의 [Secrets Manager 보안 암호](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-secretsmanager)를 참조하세요. 파이프라인의 GitHub Webhook에 대한 템플릿 스니펫에 동적 참조를 사용하는 예제의 경우, [Webhook 리소스 구성](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#aws-resource-codepipeline-webhook--examples) 단원을 참조하십시오.



## 다음 사항도 참조하세요.
<a name="related-resources-managing-secrets"></a>

다음 표에는 암호를 관리할 때 참조할 수 있는 관련 리소스가 나와 있습니다.
+ Secrets Manager는 Amazon RDS 암호 교체와 같이 데이터베이스 자격 증명을 자동으로 교체할 수 있습니다. 자세한 내용은 [AWS Secrets Manager 사용 설명서의 Secrets Manager 보안 암호 교체](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)를 참조하세요. *AWS * 
+  CloudFormation 템플릿에 Secrets Manager 동적 참조를 추가하는 방법에 대한 지침은 [https://aws.amazon.com/blogs/security/how-to-create-and-retrieve-secrets-managed-in-aws-secrets-manager-using-aws-cloudformation-template/](https://aws.amazon.com/blogs/security/how-to-create-and-retrieve-secrets-managed-in-aws-secrets-manager-using-aws-cloudformation-template/) 섹션을 참조하세요.

# 에 대한 자격 증명 및 액세스 관리 AWS CodePipeline
<a name="security-iam"></a>

AWS Identity and Access Management (IAM)는 관리자가 AWS 리소스에 대한 액세스를 안전하게 제어하는 데 도움이 AWS 서비스 되는 입니다. IAM 관리자는 어떤 사용자가 CodePipeline 리소스를 사용할 수 있는 인증(로그인) 및 권한(권한 있음)을 받을 수 있는지 제어합니다.**** IAM은 추가 비용 없이 사용할 수 AWS 서비스 있는 입니다.

**Topics**
+ [대상](#security_iam_audience)
+ [ID를 통한 인증](#security_iam_authentication)
+ [정책을 사용하여 액세스 관리](#security_iam_access-manage)
+ [AWS CodePipeline 에서 IAM을 사용하는 방법](security_iam_service-with-iam.md)
+ [AWS CodePipeline 자격 증명 기반 정책 예제](security_iam_id-based-policy-examples.md)
+ [AWS CodePipeline 리소스 기반 정책 예제](security_iam_resource-based-policy-examples.md)
+ [AWS CodePipeline 자격 증명 및 액세스 문제 해결](security_iam_troubleshoot.md)
+ [권한 참조](permissions-reference.md)
+ [CodePipeline 서비스 역할 관리](how-to-custom-role.md)

## 대상
<a name="security_iam_audience"></a>

 AWS Identity and Access Management (IAM)를 사용하는 방법은 역할에 따라 다릅니다.
+ **서비스 사용자** - 기능에 액세스할 수 없는 경우 관리자에게 권한 요청(참조[AWS CodePipeline 자격 증명 및 액세스 문제 해결](security_iam_troubleshoot.md))
+ **서비스 관리자** - 사용자 액세스 결정 및 권한 요청 제출([AWS CodePipeline 에서 IAM을 사용하는 방법](security_iam_service-with-iam.md) 참조)
+ **IAM 관리자** - 액세스를 관리하기 위한 정책 작성([AWS CodePipeline 자격 증명 기반 정책 예제](security_iam_id-based-policy-examples.md) 참조)

## ID를 통한 인증
<a name="security_iam_authentication"></a>

인증은 자격 증명 자격 증명을 AWS 사용하여에 로그인하는 방법입니다. AWS 계정 루트 사용자, IAM 사용자 또는 IAM 역할을 수임하여 인증해야 합니다.

 AWS IAM Identity Center (IAM Identity Center), Single Sign-On 인증 또는 Google/Facebook 자격 증명과 같은 자격 증명 소스의 자격 증명을 사용하여 페더레이션 자격 증명으로 로그인할 수 있습니다. 로그인하는 방법에 대한 자세한 내용은 *AWS Sign-In 사용 설명서*의 [AWS 계정에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 섹션을 참조하세요.

프로그래밍 방식 액세스를 위해는 요청에 암호화 방식으로 서명할 수 있는 SDK 및 CLI를 AWS 제공합니다. 자세한 내용은 *IAM 사용 설명서*의 [API 요청용AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) 섹션을 참조하세요.

### AWS 계정 루트 사용자
<a name="security_iam_authentication-rootuser"></a>

 를 생성할 때 모든 AWS 서비스 및 리소스에 대한 완전한 액세스 권한이 있는 AWS 계정 *theroot 사용자*라는 하나의 로그인 자격 증명으로 AWS 계정시작합니다. 일상적인 태스크에 루트 사용자를 사용하지 않을 것을 강력히 권장합니다. 루트 사용자가 필요한 작업 목록은 *IAM 사용자 설명서*의 [루트 사용자 자격 증명이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 참조하세요.

### IAM 사용자 및 그룹
<a name="security_iam_authentication-iamuser"></a>

*[IAM 사용자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*는 단일 개인 또는 애플리케이션에 대한 특정 권한을 가진 ID입니다. 장기 자격 증명이 있는 IAM 사용자 대신 임시 자격 증명을 사용하는 것이 좋습니다. 자세한 내용은 *IAM 사용 설명서*의 자격 [증명 공급자와의 페더레이션을 사용하여 임시 자격 증명을 AWS 사용하여에 액세스하도록 인간 사용자에게 요구](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)하기를 참조하세요.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)은 IAM 사용자 모음을 지정하고 대규모 사용자 집합에 대한 관리 권한을 더 쉽게 만듭니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자 사용 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) 섹션을 참조하세요.

### IAM 역할
<a name="security_iam_authentication-iamrole"></a>

*[IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*은 임시 자격 증명을 제공하는 특정 권한이 있는 자격 증명입니다. [사용자에서 IAM 역할(콘솔)로 전환하거나 또는 API 작업을 호출하여 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) 수임할 수 있습니다. AWS CLI AWS 자세한 내용은 *IAM 사용 설명서*의 [역할 수임 방법](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)을 참조하세요.

IAM 역할은 페더레이션 사용자 액세스, 임시 IAM 사용자 권한, 교차 계정 액세스, 교차 서비스 액세스 및 Amazon EC2에서 실행되는 애플리케이션에 유용합니다. 자세한 내용은 *IAM 사용 설명서*의 [교차 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

## 정책을 사용하여 액세스 관리
<a name="security_iam_access-manage"></a>

정책을 AWS 생성하고 자격 증명 또는 리소스에 연결하여 AWS 에서 액세스를 제어합니다. 정책은 자격 증명 또는 리소스와 연결될 때 권한을 정의합니다.는 보안 주체가 요청할 때 이러한 정책을 AWS 평가합니다. 대부분의 정책은에 JSON 문서 AWS 로 저장됩니다. JSON 정책 문서에 대한 자세한 내용은 *IAM 사용 설명서*의 [JSON 정책 개요](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) 섹션을 참조하세요.

정책을 사용하여 관리자는 어떤 **보안 주체**가 어떤 **리소스**에 대해 어떤 **조건**에서 **작업**을 수행할 수 있는지 정의하여 누가 무엇을 액세스할 수 있는지 지정합니다.

기본적으로 사용자 및 역할에는 어떠한 권한도 없습니다. IAM 관리자는 IAM 정책을 생성하고 사용자가 수임할 수 있는 역할에 추가합니다. IAM 정책은 작업을 수행하기 위해 사용하는 방법과 관계없이 작업에 대한 권한을 정의합니다.

### ID 기반 정책
<a name="security_iam_access-manage-id-based-policies"></a>

ID 기반 정책은 ID(사용자, 사용자 그룹 또는 역할)에 연결하는 JSON 권한 정책 문서입니다. 이러한 정책은 자격 증명이 수행할 수 있는 작업, 대상 리소스 및 이에 관한 조건을 제어합니다. ID 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*에서 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)를 참조하세요.

ID 기반 정책은 *인라인 정책*(단일 ID에 직접 포함) 또는 *관리형 정책*(여러 ID에 연결된 독립 실행형 정책)일 수 있습니다. 관리형 정책 또는 인라인 정책을 선택하는 방법을 알아보려면 *IAM 사용 설명서*의 [관리형 정책 및 인라인 정책 중에서 선택](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) 섹션을 참조하세요.

### 리소스 기반 정책
<a name="security_iam_access-manage-resource-based-policies"></a>

리소스 기반 정책은 리소스에 연결하는 JSON 정책 설명서입니다. 예를 들어 IAM *역할 신뢰 정책* 및 Amazon S3 *버킷 정책*이 있습니다. 리소스 기반 정책을 지원하는 서비스에서 서비스 관리자는 이러한 정책을 사용하여 특정 리소스에 대한 액세스를 통제할 수 있습니다. 리소스 기반 정책에서 [보안 주체를 지정](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)해야 합니다.

리소스 기반 정책은 해당 서비스에 있는 인라인 정책입니다. 리소스 기반 정책에서는 IAM의 AWS 관리형 정책을 사용할 수 없습니다.

### 기타 정책 유형
<a name="security_iam_access-manage-other-policies"></a>

AWS 는 보다 일반적인 정책 유형에서 부여한 최대 권한을 설정할 수 있는 추가 정책 유형을 지원합니다.
+ **권한 경계** - ID 기반 정책에서 IAM 엔터티에 부여할 수 있는 최대 권한을 설정합니다. 자세한 정보는 *IAM 사용 설명서*의 [IAM 엔터티의 권한 범위](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)를 참조하세요.
+ **서비스 제어 정책(SCP)** - AWS Organizations내 조직 또는 조직 단위에 대한 최대 권한을 지정합니다. 자세한 내용은AWS Organizations 사용 설명서의 [서비스 제어 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)을 참조하세요.**
+ **리소스 제어 정책(RCP)** – 계정의 리소스에 사용할 수 있는 최대 권한을 설정합니다. 자세한 내용은 *AWS Organizations 사용 설명서*의 [리소스 제어 정책(RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)을 참조하세요.
+ **세션 정책** – 역할 또는 페더레이션 사용자에 대해 임시 세션을 프로그래밍 방식으로 생성할 때 파라미터로 전달하는 고급 정책입니다. 자세한 내용은 *IAM 사용 설명서*의 [세션 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)을 참조하세요.

# AWS CodePipeline 에서 IAM을 사용하는 방법
<a name="security_iam_service-with-iam"></a>

IAM을 사용하여 CodePipeline에 대한 액세스를 관리하려면 먼저 어떤 IAM 기능을 CodePipeline에 사용할 수 있는지를 이해해야 합니다. CodePipeline 및 IAM으로 작업 AWS 서비스 하는 기타를 전체적으로 알아보려면 *IAM 사용 설명서*의 [AWS 서비스 IAM으로 작업하는](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 섹션을 참조하세요.

**Topics**
+ [CodePipeline 자격 증명 기반 정책](#security_iam_service-with-iam-id-based-policies)
+ [CodePipeline 리소스 기반 정책](#security_iam_service-with-iam-resource-based-policies)
+ [CodePipeline 태그 기반 권한 부여](#security_iam_service-with-iam-tags)
+ [CodePipeline IAM 역할](#security_iam_service-with-iam-roles)

## CodePipeline 자격 증명 기반 정책
<a name="security_iam_service-with-iam-id-based-policies"></a>

IAM ID 기반 정책을 사용하면 허용되거나 거부되는 작업과 리소스뿐 아니라 작업이 허용되거나 거부되는 조건을 지정할 수 있습니다. CodePipeline은 특정 작업, 리소스 및 조건 키를 지원합니다. JSON 정책에서 사용하는 모든 요소에 대해 알고 싶다면 *IAM 사용 설명서*의 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하세요.

### 작업
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

JSON 정책의 `Action`요소는 정책에서 액세스를 허용하거나 거부하는 데 사용할 수 있는 작업을 설명합니다. 연결된 작업을 수행할 수 있는 권한을 부여하기 위한 정책에 작업을 포함하세요.

CodePipeline의 정책 작업은 작업 앞에 `codepipeline:` 접두사를 사용합니다.

예를 들어 누군가에게 계정 내에 있는 기존 파이프라인을 볼 수 있는 권한을 부여하려면 정책에 `codepipeline:GetPipeline` 작업을 포함시킵니다. 정책 문에는 `Action` 또는 `NotAction` 요소가 포함되어야 합니다. CodePipeline은 이 서비스로 수행할 수 있는 작업을 설명하는 고유한 작업 세트를 정의합니다.

명령문 하나에 여러 태스크를 지정하려면 다음과 같이 쉼표로 구분합니다.

```
"Action": [
      "codepipeline:action1",
      "codepipeline:action2"
```

와일드카드(\$1)를 사용하여 여러 작업을 지정할 수 있습니다. 예를 들어, `Get`라는 단어로 시작하는 모든 작업을 지정하려면 다음 작업을 포함합니다.

```
"Action": "codepipeline:Get*"
```



CodePipeline 작업 목록에 대해서는 *IAM 사용 설명서*의 [AWS CodePipeline에서 정의한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodepipeline.html#awscodepipeline-actions-as-permissions)을 참조하세요.

### 리소스
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

`Resource` JSON 정책 요소는 작업이 적용되는 하나 이상의 객체를 지정합니다. 모범 사례에 따라 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)을 사용하여 리소스를 지정합니다. 리소스 수준 권한을 지원하지 않는 작업의 경우, 와일드카드(\$1)를 사용하여 해당 문이 모든 리소스에 적용됨을 나타냅니다.

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



#### 리소스 및 작업
<a name="ACP_ARN_Format"></a>

에서는 파이프라인이 기본 리소스입니다. 정책에서는 Amazon 리소스 이름(ARN)을 사용하여 정책이 적용되는 리소스를 식별합니다. 는 기본 리소스와 함께 사용할 수 있는 다른 리소스(예: 단계, 작업, 사용자 지정 작업)를 지원합니다. 이러한 리소스를 가리켜 하위 리소스라 합니다. 이러한 리소스와 하위 리소스에는 고유한 Amazon 리소스 이름(ARN)이 연결됩니다. ARNs에 대한 자세한 내용은의 [Amazon 리소스 이름(ARN) 및 AWS 서비스 네임스페이스](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)를 참조하세요*Amazon Web Services 일반 참조*. 파이프라인과 연결된 파이프라인 ARN을 가져오려면 콘솔의 **설정**에서 파이프라인 ARN을 찾을 수 있습니다. 자세한 내용은 [파이프라인 ARN 및 서비스 역할 ARN 보기(콘솔)](pipelines-settings-console.md) 단원을 참조하십시오.


| 리소스 유형 | ARN 형식 | 
| --- | --- | 
|  파이프라인  |  arn:aws:codepipeline:*region*:*account*:*pipeline-name*  | 
| 단계 |  arn:aws:codepipeline:*region*:*account*:*pipeline-name*/*stage-name*  | 
| 작업 |  arn:aws:codepipeline:*region*:*account*:*pipeline-name*/*stage-name*/*action-name*  | 
| 사용자 지정 작업 | arn:aws:codepipeline:region:account:actiontype:owner/category/provider/version | 
|  모든 리소스  |  arn:aws:codepipeline:\$1  | 
|  지정한 리전에서 지정한 계정이 소유한 모든 리소스  |  arn:aws:codepipeline:*region*:*account*:\$1  | 

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

에는 리소스 수준 권한을 지원하는 API 호출이 있습니다. 리소스 수준 권한은 API 호출이 리소스 ARN을 지정할 수 있는지, 또는 API 호출이 와일드카드를 사용해야만 모든 리소스를 지정할 수 있는지 나타냅니다. 리소스 수준 권한과 리소스 수준 권한을 지원하는 CodePipeline API 직접 호출 목록에 대한 자세한 설명은 [권한 참조](permissions-reference.md) 단원을 참조하세요.

예를 들어 명령문에서 다음과 같이 ARN을 사용하여 특정 파이프라인(*myPipeline*)을 나타낼 수 있습니다.

```
"Resource": "arn:aws:codepipeline:us-east-2:111222333444:myPipeline"
```

다음과 같이 (\$1) 와일드카드 문자를 사용하여 특정 계정에 속하는 모든 파이프라인을 지정할 수도 있습니다.

```
"Resource": "arn:aws:codepipeline:us-east-2:111222333444:*"
```

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

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

**참고**  
IAM 정책을 만들 때 최소 권한 부여의 기본 보안 조언을 따릅니다. 즉, 작업 수행에 필요한 최소한의 권한만 부여합니다. API 호출이 ARN을 지원하는 경우 리소스 수준 권한을 지원하므로 와일드카드 문자(\$1)를 사용할 필요가 없습니다.

일부 API 호출은 여러 리소스(예: `GetPipeline`)를 허용합니다. 명령문 하나에 여러 리소스를 지정하려면 다음과 같이 각 ARN을 쉼표로 구분합니다.

```
"Resource": ["arn1", "arn2"]
```

 는 리소스로 작업할 수 있는 일련의 작업을 제공합니다. 사용 가능한 작업 목록은 [권한 참조](permissions-reference.md) 섹션을 참조하십시오.

### 조건 키
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

`Condition` 요소는 정의된 기준에 따라 문이 실행되는 시기를 지정합니다. 같음(equals) 또는 미만(less than)과 같은 [조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)를 사용하여 정책의 조건을 요청의 값과 일치시키는 조건식을 생성할 수 있습니다. 모든 AWS 전역 조건 키를 보려면 *IAM 사용 설명서*의 [AWS 전역 조건 컨텍스트 키를](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 참조하세요.

CodePipeline에서는 자체 조건 키 집합을 정의하고 일부 전역 조건 키 사용도 지원합니다. 모든 AWS 전역 조건 키를 보려면 *IAM 사용 설명서*의 [AWS 전역 조건 컨텍스트 키를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).



 모든 Amazon EC2 작업은 `aws:RequestedRegion` 및 `ec2:Region` 조건 키를 지원합니다. 자세한 내용은 [예제: 특정 리전으로 액세스 제한](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-region)을 참조하세요.

CodePipeline 조건 키 목록을 보려면 *IAM 사용자 설명서*에서 [AWS CodePipeline에 대한 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodepipeline.html#awscodepipeline-policy-keys)를 참조하세요. 조건 키를 사용할 수 있는 작업과 리소스를 알아보려면 [에서 정의한 작업을 AWS CodePipeline](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodepipeline.html#awscodepipeline-actions-as-permissions) 참조하세요.

### 예제
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



CodePipeline 자격 증명 기반 정책 예제를 보려면 [AWS CodePipeline 자격 증명 기반 정책 예제](security_iam_id-based-policy-examples.md) 섹션을 참조하세요.

## CodePipeline 리소스 기반 정책
<a name="security_iam_service-with-iam-resource-based-policies"></a>

CodePipeline은 리소스 기반 정책을 지원하지 않습니다. 그러나 CodePipeline과 관련된 S3 서비스에 대한 리소스 기반 정책의 예가 제공됩니다.

### 예제
<a name="security_iam_service-with-iam-resource-based-policies-examples"></a>



CodePipeline 리소스 기반 정책의 예는 [AWS CodePipeline 리소스 기반 정책 예제](security_iam_resource-based-policy-examples.md) 섹션을 참조하세요.

## CodePipeline 태그 기반 권한 부여
<a name="security_iam_service-with-iam-tags"></a>

태그를 CodePipeline 리소스에 연결하거나 요청을 통해 태그를 CodePipeline에 전달할 수 있습니다. 태그에 근거하여 액세스를 제어하려면 `codepipeline:ResourceTag/key-name`, `aws:RequestTag/key-name`또는 `aws:TagKeys`조건 키를 사용하여 정책의 [조건 요소](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)에 태그 정보를 제공합니다. CodePipeline 리소스 태깅에 대한 자세한 내용은 [리소스에 태그 지정](tag-resources.md) 섹션을 참조하세요.

리소스의 태그를 기반으로 리소스에 대한 액세스를 제한하는 자격 증명 기반 정책의 예시는 [태그를 사용하여 CodePipeline 리소스에 대한 액세스 통제](tag-based-access-control.md)에서 확인할 수 있습니다.

## CodePipeline IAM 역할
<a name="security_iam_service-with-iam-roles"></a>

[IAM 역할은](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 특정 권한이 있는 AWS 계정의 엔터티입니다.

### CodePipeline에서 임시 자격 증명 사용
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

임시 보안 인증을 사용하여 페더레이션을 통해 로그인하거나, IAM 역할을 맡거나, 교차 계정 역할을 맡을 수 있습니다. [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 또는 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)과 같은 AWS STS API 작업을 호출하여 임시 보안 자격 증명을 얻습니다.

CodePipeline에서 임시 자격 증명 사용을 지원합니다.

### 서비스 역할
<a name="security_iam_service-with-iam-roles-service"></a>

CodePipeline을 사용하면 서비스가 사용자를 대신해 [서비스 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)을 맡을 수 있습니다. 이 역할을 사용하면 서비스가 다른 서비스의 리소스에 액세스해 사용자를 대신해 작업을 완료할 수 있습니다. 서비스 역할은 IAM 계정에 나타나고, 해당 계정이 소유합니다. 즉, IAM 관리자가 이 역할에 대한 권한을 변경할 수 있습니다. 그러나 권한을 변경하면 서비스의 기능이 손상될 수 있습니다.

CodePipeline은 서비스 역할을 지원합니다.

# AWS CodePipeline 자격 증명 기반 정책 예제
<a name="security_iam_id-based-policy-examples"></a>

기본적으로 IAM 사용자 및 역할은 CodePipeline 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management Console AWS CLI또는 AWS API를 사용하여 작업을 수행할 수 없습니다. IAM 관리자는 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 사용자와 역할에게 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 정책을 연결해야 합니다.

이러한 예제 JSON 정책 문서를 사용하여 IAM ID 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*의 [JSON 탭에서 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)을 참조하세요.

다른 계정의 리소스를 사용하는 파이프라인을 생성하는 방법과 관련 예제 정책은 [CodePipeline에서 다른 AWS 계정의 리소스를 사용하는 파이프라인 생성](pipelines-create-cross-account.md) 섹션을 참조하세요.

**Topics**
+ [정책 모범 사례](security_iam_service-with-iam-policy-best-practices.md)
+ [콘솔에서 리소스 보기](security-iam-resources-console.md)
+ [사용자가 자신의 고유한 권한을 볼 수 있도록 허용](security_iam_id-based-policy-examples-view-own-permissions.md)
+ [자격 증명 기반 정책(IAM)의 예](security-iam-id-policies-examples.md)
+ [태그를 사용하여 CodePipeline 리소스에 대한 액세스 통제](tag-based-access-control.md)
+ [콘솔 사용에 필요한 권한](security-iam-permissions-console.md)
+ [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)
+ [AWS 에 대한 관리형 정책 AWS CodePipeline](managed-policies.md)
+ [고객 관리형 정책 예제](#customer-managed-policies)

# 정책 모범 사례
<a name="security_iam_service-with-iam-policy-best-practices"></a>

ID 기반 정책에 따라 계정에서 사용자가 CodePipeline 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부가 결정됩니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. ID 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르세요.
+ ** AWS 관리형 정책을 시작하고 최소 권한으로 전환 -** 사용자 및 워크로드에 권한 부여를 시작하려면 많은 일반적인 사용 사례에 대한 권한을 부여하는 *AWS 관리형 정책을* 사용합니다. 에서 사용할 수 있습니다 AWS 계정. 사용 사례에 맞는 AWS 고객 관리형 정책을 정의하여 권한을 추가로 줄이는 것이 좋습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) 또는 [AWS 직무에 대한 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)을 참조하세요.
+ **최소 권한 적용** – IAM 정책을 사용하여 권한을 설정하는 경우, 작업을 수행하는 데 필요한 권한만 부여합니다. 이렇게 하려면 *최소 권한*으로 알려진 특정 조건에서 특정 리소스에 대해 수행할 수 있는 작업을 정의합니다. IAM을 사용하여 권한을 적용하는 방법에 대한 자세한 정보는 *IAM 사용 설명서*에 있는 [IAM의 정책 및 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.
+ **IAM 정책의 조건을 사용하여 액세스 추가 제한** – 정책에 조건을 추가하여 작업 및 리소스에 대한 액세스를 제한할 수 있습니다. 예를 들어, SSL을 사용하여 모든 요청을 전송해야 한다고 지정하는 정책 조건을 작성할 수 있습니다. AWS 서비스와 같은 특정를 통해 사용되는 경우 조건을 사용하여 서비스 작업에 대한 액세스 권한을 부여할 수도 있습니다 CloudFormation. 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소: 조건](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)을 참조하세요.
+ **IAM Access Analyzer를 통해 IAM 정책을 확인하여 안전하고 기능적인 권한 보장** - IAM Access Analyzer에서는 IAM 정책 언어(JSON)와 모범 사례가 정책에서 준수되도록 새로운 및 기존 정책을 확인합니다. IAM Access Analyzer는 100개 이상의 정책 확인 항목과 실행 가능한 추천을 제공하여 안전하고 기능적인 정책을 작성하도록 돕습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM Access Analyzer에서 정책 검증](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)을 참조하세요.
+ **다중 인증(MFA) 필요 -**에서 IAM 사용자 또는 루트 사용자가 필요한 시나리오가 있는 경우 추가 보안을 위해 MFA를 AWS 계정켭니다. API 작업을 직접적으로 호출할 때 MFA가 필요하면 정책에 MFA 조건을 추가합니다. 자세한 내용은 *IAM 사용 설명서*의 [MFA를 통한 보안 API 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)를 참조하세요.

IAM의 모범 사례에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

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

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

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

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

# 사용자가 자신의 고유한 권한을 볼 수 있도록 허용
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

이 예제는 IAM 사용자가 자신의 사용자 ID에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여줍니다. 이 정책에는 콘솔에서 또는 AWS CLI 또는 AWS API를 사용하여 프로그래밍 방식으로이 작업을 완료할 수 있는 권한이 포함됩니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# 자격 증명 기반 정책(IAM)의 예
<a name="security-iam-id-policies-examples"></a>

정책을 IAM ID에 연결할 수 있습니다. 예를 들면, 다음을 수행할 수 있습니다.
+ **계정의 사용자 또는 그룹에 권한 정책 연결 **- 사용자에게 콘솔에서 파이프라인을 볼 수 있는 권한을 부여하려면 사용자가 속한 사용자 또는 그룹에 권한 정책을 연결할 수 있습니다.
+ **역할에 정책 연결(교차 계정 권한 부여)** – ID 기반 권한 정책을 IAM 역할에 연결하여 교차 계정 권한을 부여할 수 있습니다. 예를 들어 계정 A의 관리자는 다음과 AWS 서비스 같이 다른 AWS 계정(예: 계정 B) 또는에 교차 계정 권한을 부여하는 역할을 생성할 수 있습니다.

  1. 계정 A 관리자는 IAM 역할을 생성하고 계정 A의 리소스에 대한 권한을 부여하는 역할에 권한 정책을 연결합니다.

  1. 계정 A 관리자는 계정 B를 역할을 수임할 보안 주체로 식별하는 역할에 신뢰 정책을 연결합니다.

  1. 그런 다음 계정 B 관리자는 계정 B의 사용자에게 역할을 수임할 권한을 위임할 수 있습니다. 이렇게 하면 계정 B의 사용자가 계정 A에서 리소스를 생성하거나 액세스할 수 있습니다. 역할을 AWS 서비스 수임할 권한을 부여하려는 경우 신뢰 정책의 보안 주체가 보안 AWS 서비스 주체가 될 수도 있습니다.

  IAM을 사용하여 권한을 위임하는 방법에 대한 자세한 내용은 *IAM 사용자 안내서*의 [액세스 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)를 참조하세요.

다음은 권한 정책의 예시입니다. 이 정책은 사용자는 `us-west-2 region`에서 `MyFirstPipeline`이라는 이름의 파이프라인에서 모든 단계 간 전환을 활성화하고 비활성화할 권한을 허용합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codepipeline:EnableStageTransition",
        "codepipeline:DisableStageTransition"
      ],
      "Resource" : [
        "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*"
      ]
    }
  ]
}
```

------

다음 예제는 사용자가 콘솔에서 라는 파이프라인을 볼 수 있지만 변경할 `MyFirstPipeline` 수는 없는 111222333444 계정의 정책을 보여줍니다. 이 정책의 기반은 `AWSCodePipeline_ReadOnlyAccess` 관리형 정책이지만 `MyFirstPipeline` 파이프라인에 대해 특화되어 있으므로 관리형 정책을 바로 사용할 수 없습니다. 특정 파이프라인으로 정책을 제한하고 싶지 않은 경우 로 생성하고 관리하는 관리형 정책의 사용을 고려해 보십시오. 자세한 내용은 [관리형 정책 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)을 참조하세요. 액세스용으로 만든 IAM 역할에 이 정책을 연결해야 합니다(예: `CrossAccountPipelineViewers` 역할).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "codepipeline:GetPipeline",
        "codepipeline:GetPipelineState",
        "codepipeline:GetPipelineExecution",
        "codepipeline:ListPipelineExecutions",
        "codepipeline:ListActionExecutions",
        "codepipeline:ListActionTypes",
        "codepipeline:ListPipelines",
        "codepipeline:ListTagsForResource",
        "iam:ListRoles",
        "s3:ListAllMyBuckets",
        "codecommit:ListRepositories",
        "codedeploy:ListApplications",
        "lambda:ListFunctions",
        "codestar-notifications:ListNotificationRules",
        "codestar-notifications:ListEventTypes",
        "codestar-notifications:ListTargets"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"
    },
    {
      "Action": [
        "codepipeline:GetPipeline",
        "codepipeline:GetPipelineState",
        "codepipeline:GetPipelineExecution",
        "codepipeline:ListPipelineExecutions",
        "codepipeline:ListActionExecutions",
        "codepipeline:ListActionTypes",
        "codepipeline:ListPipelines",
        "codepipeline:ListTagsForResource",
        "iam:ListRoles",
        "s3:GetBucketPolicy",
        "s3:GetObject",
        "s3:ListBucket",
        "codecommit:ListBranches",
        "codedeploy:GetApplication",
        "codedeploy:GetDeploymentGroup",
        "codedeploy:ListDeploymentGroups",
        "elasticbeanstalk:DescribeApplications",
        "elasticbeanstalk:DescribeEnvironments",
        "lambda:GetFunctionConfiguration",
        "opsworks:DescribeApps",
        "opsworks:DescribeLayers",
        "opsworks:DescribeStacks"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Sid": "CodeStarNotificationsReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "codestar-notifications:DescribeNotificationRule"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
        }
      }
    }
  ]
}
```

------

일단 이 정책을 만들었으면 111222333444 계정에 IAM 역할을 만들어 역할에 이 정책을 연결하세요. 역할의 신뢰 관계에서이 역할을 수임할 AWS 계정을 추가해야 합니다. 다음 예제는 *111111111111* AWS 계정의 사용자가 111222333444 계정에 정의된 역할을 수임하도록 허용하는 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:root"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

다음 예제는 사용자가 *111111111111* AWS 계정에서 *CrossAccountPipelineViewers*라는 역할을 수임하도록 허용하는 111222333444 계정에서 생성된 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::111222333444:role/CrossAccountPipelineViewers"
        }
    ]
}
```

------

IAM 정책을 생성하여 계정의 사용자가 액세스할 수 있는 호출 및 리소스를 제한한 다음, 해당 정책을 관리 사용자에게 연결합니다. IAM 역할을 생성하고에 대한 IAM 정책 설명 예제를 탐색하는 방법에 대한 자세한 내용은 섹션을 참조하세요[고객 관리형 정책 예제](security_iam_id-based-policy-examples.md#customer-managed-policies).

# 태그를 사용하여 CodePipeline 리소스에 대한 액세스 통제
<a name="tag-based-access-control"></a>

IAM 정책 설명의 조건은 CodePipeline 작업에 필요한 리소스에 대한 권한을 지정하는 데 사용하는 구문의 일부입니다. 조건에 태그를 사용하는 것은 리소스 및 요청에 대한 액세스를 제어하는 하나의 방법입니다. CodePipeline 리소스 태깅에 대한 자세한 내용은 [리소스에 태그 지정](tag-resources.md) 섹션을 참조하세요. 이 주제에서는 태그 기반 액세스 제어를 다룹니다.

IAM 정책을 설계할 때 특정 리소스에 대한 액세스 권한을 부여하여 세부적인 권한을 설정할 수 있습니다. 관리하는 리소스의 개수가 늘어날수록 이 작업은 더 어려워집니다. 리소스에 태그를 지정하고 정책 문 조건에서 태그를 사용하면 이러한 작업이 더 간단해질 수 있습니다. 특정 태그를 사용하여 리소스에 대량으로 액세스 권한을 부여합니다. 그런 다음, 생성 중 또는 나중에 이 태그를 관련 리소스에 반복해서 적용합니다.

리소스에 태그가 연결되거나 태그 지정을 지원하는 서비스에 대한 요청에서 전달될 수 있습니다. CodePipeline에서 리소스에 태그가 있을 수 있고 일부 작업에 태그가 포함될 수 있습니다. IAM 정책을 생성하면 태그 조건 키를 사용하여 다음을 제어할 수 있습니다.
+ 파이프라인 리소스에 이미 있는 태그를 기반으로 해당 리소스에 대해 작업을 수행할 수 있는 사용자
+ 작업의 요청에서 전달될 수 있는 태그
+ 요청에서 특정 키를 사용할 수 있는지 여부를 통제합니다.

문자열 조건 연산자를 사용하여 키와 문자열 값을 비교한 결과에 따라 액세스를 제한하는 `Condition` 요소를 생성할 수 있습니다. Null 조건을 제외하고 조건 연산자 이름 끝에 `IfExists`를 추가할 수 있습니다. 이렇게 하면 "요청 콘텍스트에 정책 키가 있으면 정책에 지정된 대로 키를 처리하고, 키가 없으면 조건 요소를 true로 평가합니다." 예를 들어 다른 유형의 리소스에는 없을 수도 있는 조건 키로 제한하는 데 `StringEqualsIfExists`를 사용할 수 있습니다.

태그 조건 키의 전체 구문 및 의미는 [태그를 사용한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하세요. 조건 키에 대한 자세한 내용은 다음 리소스를 참조하세요. 이 섹션의 CodePipeline 정책 예제는 조건 키에 대한 다음 정보와 일치하며, 이를 리소스 중첩과 같은 CodePipeline의 미묘한 차이에 대한 예시로 확장합니다.
+ [문자열 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)
+ [AWS 서비스 IAM에서 작동하는](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)
+ [SCP 구문](https://docs.aws.amazon.com/IAM/latest/UserGuide/orgs_manage_policies_scps_syntax.html)
+ [IAM JSON 정책 요소: Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)
+ [aws:RequestTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)
+ [CodePipeline에 사용되는 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodepipeline.html#awscodepipeline-policy-keys)

다음 예에서는 CodePipeline 사용자에 정책의 태그 조건을 지정하는 방법을 설명합니다.

**Example 1: 요청의 태그 기반 작업 제한**  
`AWSCodePipeline_FullAccess` 관리형 사용자 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자가 요청에 특정 태그가 나열된 파이프라인을 생성할 수 있는 권한을 거부합니다. 이와 관련하여 정책은 요청이 `ProjectA` 또는 `ProjectB` 값 중 하나와 함께 `Project`라는 태그를 지정하는 경우 `CreatePipeline` 작업을 거부합니다. `aws:RequestTag` 조건 키는 IAM 요청에서 전달할 수 있는 태그를 제어하는 데 사용됩니다.  
다음 예제에서 정책의 목적은 지정된 태그 값으로 파이프라인을 생성할 권한이 없는 사용자의 권한을 거부하는 것입니다. 하지만 파이프라인을 생성하려면 파이프라인 자체 외에도 리소스(예: 파이프라인 작업 및 단계)에 액세스해야 합니다. 정책에 지정된 `'Resource'`가 `'*'`이므로 ARN이 있는 모든 리소스에 대해 정책이 평가되며 파이프라인 생성 시 생성됩니다. 하지만 이러한 추가 리소스에는 태그 조건 키가 없기 때문에 `StringEquals` 검사는 fail로 끝나고 사용자에게 권한이 부여되지 않아 어떤 파이프라인도 생성하지 못합니다. 이 문제를 해결하려면 그 대신 `StringEqualsIfExists` 조건 연산자를 사용해야 합니다. 이렇게 하면 조건 키가 존재하는 경우에만 테스트가 실행됩니다.  
그 결과 다음은 이렇게 해석할 수 있습니다. “검사 대상 리소스에 태그 `"RequestTag/Project"` 조건 키가 있으면 키 값이 `projectA`로 시작할 때에만 작업을 허용합니다. 검사 대상 리소스에 조건 키가 없으면 그냥 둡니다."  
또한 `aws:TagKeys` 조건 키를 사용하여 동일한 태그 값을 포함하는 태그 수정 작업을 허용하지 않음으로써 이러한 권한이 없는 사용자가 리소스를 변경하지 못하게 합니다. 고객의 관리자는 권한이 없는 관리 사용자에게 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:CreatePipeline",
        "codepipeline:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEqualsIfExists": {
          "aws:RequestTag/Project": ["ProjectA", "ProjectB"]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:UntagResource"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["Project"]
        }
      }
    }
  ]
}
```

**Example 2: 리소스 태그 기반 태그 지정 작업 제한**  
`AWSCodePipeline_FullAccess` 관리형 사용자 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자의 지정된 프로젝트 파이프라인에 대한 작업 수행 권한을 거부합니다. 이와 관련하여 정책은 리소스에 `ProjectA` 또는 `ProjectB` 값 중 하나가 포함된 `Project` 태그가 있으면 일부 작업을 거부합니다. `aws:ResourceTag` 조건 키는 해당 리소스의 태그를 기반으로 리소스에 대한 액세스를 제어하는 데 사용됩니다. 고객의 관리자는 권한이 없는 IAM 사용자에게 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Project": ["ProjectA", "ProjectB"]
        }
      }
    }
  ]
}
```

**Example 3: 요청의 태그 기반 작업 허용**  
다음 정책은 사용자에게 CodePipeline에서 개발 파이프라인을 생성할 수 있는 권한을 부여합니다.  
이와 관련하여 정책은 요청이 `ProjectA` 값이 포함된 `Project` 태그를 지정하는 경우 `CreatePipeline` 및 `TagResource` 작업을 허용합니다. 즉, 지정할 수 있는 유일한 태그 키는 `Project`이며, 해당 값은 `ProjectA`이어야 합니다.  
`aws:RequestTag` 조건 키는 IAM 요청에서 전달할 수 있는 태그를 제어하는 데 사용됩니다. `aws:TagKeys` 조건은 태그 키의 대/소문자를 구분합니다. 이 정책은 `AWSCodePipeline_FullAccess` 관리형 사용자 정책이 연결되어 있지 않은 사용자 또는 역할에 유용합니다. 관리형 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codepipeline:CreatePipeline",
        "codepipeline:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/Project": "ProjectA"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["Project"]
        }
      }
    }
  ]
}
```

**Example 4: 리소스 태그 기반 태그 해제 작업 제한**  
`AWSCodePipeline_FullAccess` 관리형 사용자 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자의 지정된 프로젝트 파이프라인에 대한 작업 수행 권한을 거부합니다. 이와 관련하여 정책은 리소스에 `ProjectA` 또는 `ProjectB` 값 중 하나가 포함된 `Project` 태그가 있으면 일부 작업을 거부합니다.  
또한 `aws:TagKeys` 조건 키를 사용하여 `Project` 태그를 완전히 제거하는 태그 수정 작업을 허용하지 않음으로써 이러한 권한이 없는 사용자가 리소스를 변경하지 못하게 합니다. 고객의 관리자는 권한이 없는 사용자 또는 역할에 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:UntagResource"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["Project"]
        }
      }
    }
  ]
}
```

# 콘솔 사용에 필요한 권한
<a name="security-iam-permissions-console"></a>

 콘솔에서 를 사용하려면 다음 서비스의 최소 권한이 있어야 합니다.
+ AWS Identity and Access Management
+ Amazon Simple Storage Service

이러한 권한을 통해 계정의 다른 AWS 리소스를 설명할 수 있습니다 AWS .

사용자의 파이프라인에 통합하는 다른 서비스에 따라 다음 중 한 가지 이상의 권한이 필요할 수 있습니다.
+ AWS CodeCommit
+ AWS CodeBuild
+ CloudFormation
+ AWS CodeDeploy
+ AWS Elastic Beanstalk
+ AWS Lambda
+ AWS OpsWorks

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔은 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다. 이 사용자가 콘솔을 사용할 수 있도록 하려면 `AWSCodePipeline_ReadOnlyAccess` 관리형 정책을 사용자에게 연결합니다([AWS 에 대한 관리형 정책 AWS CodePipeline](managed-policies.md) 참조).

 AWS CLI 또는 API를 호출하는 사용자에게는 최소 콘솔 권한을 허용할 필요가 없습니다.

# 콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한
<a name="security-iam-permissions-console-logs"></a>

CodePipeline 콘솔의 명령 작업에서 로그를 보려면 콘솔 역할에 권한이 있어야 합니다. 콘솔에서 로그를 보려면 콘솔 역할에 `logs:GetLogEvents` 권한을 추가합니다.

콘솔 역할 정책 설명에서 다음 예제와 같이 파이프라인 수준까지 권한의 범위를 좁힙니다.

```
{
    "Effect": "Allow",
    "Action": [
        "Action": "logs:GetLogEvents"
    ],
    "Resource": "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
}
```

# AWS 에 대한 관리형 정책 AWS CodePipeline
<a name="managed-policies"></a>





 AWS 관리형 정책은에서 생성하고 관리하는 독립 실행형 정책입니다 AWS. AWS 관리형 정책은 사용자, 그룹 및 역할에 권한 할당을 시작할 수 있도록 많은 일반적인 사용 사례에 대한 권한을 제공하도록 설계되었습니다.

 AWS 관리형 정책은 모든 AWS 고객이 사용할 수 있으므로 특정 사용 사례에 대해 최소 권한을 부여하지 않을 수 있습니다. 사용 사례에 고유한 [고객 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)을 정의하여 권한을 줄이는 것이 좋습니다.

 AWS 관리형 정책에 정의된 권한은 변경할 수 없습니다. 가 관리형 정책에 정의된 권한을 AWS 업데이트하는 AWS 경우 업데이트는 정책이 연결된 모든 보안 주체 자격 증명(사용자, 그룹 및 역할)에 영향을 줍니다. AWS AWS 서비스 는 새가 시작되거나 기존 서비스에 새 API 작업을 사용할 수 있게 될 때 AWS 관리형 정책을 업데이트할 가능성이 높습니다.

자세한 내용은 *IAM 사용자 가이드*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)을 참조하세요.

**중요**  
AWS 관리형 정책 `AWSCodePipelineFullAccess` 및 `AWSCodePipelineReadOnlyAccess`가 교체되었습니다. `AWSCodePipeline_FullAccess` 및 `AWSCodePipeline_ReadOnlyAccess` 정책을 사용하세요.













## AWS 관리형 정책: `AWSCodePipeline_FullAccess`
<a name="security-iam-awsmanpol-AWSCodePipeline_FullAccess"></a>





CodePipeline에 대한 모든 액세스 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipeline\$1FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipeline_FullAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline에 권한을 부여합니다.
+ `chatbot` – 보안 주체가 채팅 애플리케이션에서 Amazon Q Developer의 리소스를 관리할 수 있도록 권한을 부여합니다.
+ `cloudformation` - 보안 주체가 리소스 스택을 관리할 수 있는 권한을 부여합니다 CloudFormation.
+ `cloudtrail` – 보안 주체가 CloudTrail에서 로깅 리소스를 관리할 수 있는 권한을 부여합니다.
+ `codebuild` – 보안 주체가 CodeBuild에서 빌드 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `codecommit` – 보안 주체가 CodeCommit에서 소스 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `codedeploy` – 보안 주체가 CodeDeploy에서 배포 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `codestar-notifications` - 보안 주체가 AWS CodeStar 알림의 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `ec2` – CodeCatalyst의 배포가 Amazon EC2에서 Elastic Load Balancing을 관리할 수 있는 권한을 부여합니다.
+ `ecr` – Amazon ECR의 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `elasticbeanstalk` – 보안 주체가 Elastic Beanstalk에서 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `iam` – 보안 주체가 IAM에서 역할 및 정책을 관리할 수 있는 권한을 부여합니다.
+ `lambda` – 보안 주체가 Lambda에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `events` – 보안 주체가 CloudWatch Events에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `opsworks` - 보안 주체가 리소스를 관리할 수 있는 권한을 부여합니다 AWS OpsWorks.
+ `s3` – 보안 주체가 Amazon S3에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `sns` – 보안 주체가 Amazon SNS에서 알림 리소스를 관리할 수 있는 권한을 부여합니다.
+ `states` - 보안 주체가 상태 시스템을 볼 수 있는 권한을 부여합니다 AWS Step Functions. 상태 머신은 작업을 관리하고 상태 간 전환을 수행하는 상태 모음으로 구성됩니다.

정책은 [AWSCodePipeline\$1FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipeline_FullAccess.html)를 참조하세요.

## AWS 관리형 정책: `AWSCodePipeline_ReadOnlyAccess`
<a name="security-iam-awsmanpol-AWSCodePipeline_ReadOnlyAccess"></a>





CodePipeline에 대한 읽기 전용 액세스 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipeline\$1ReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipeline_ReadOnlyAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline의 작업에 권한을 부여합니다.
+ `codestar-notifications` - 보안 주체가 AWS CodeStar 알림의 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `s3` – 보안 주체가 Amazon S3에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `sns` – 보안 주체가 Amazon SNS에서 알림 리소스를 관리할 수 있는 권한을 부여합니다.

정책은 [AWSCodePipeline\$1ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipeline_ReadOnlyAccess.html)를 참조하세요.



## AWS 관리형 정책: `AWSCodePipelineApproverAccess`
<a name="security-iam-awsmanpol-AWSCodePipeline_Approver"></a>





이는 수동 승인 작업을 승인하거나 거부할 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipelineApproverAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipelineApproverAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline의 작업에 권한을 부여합니다.

정책은 [AWSCodePipelineApproverAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipelineApproverAccess.html)를 참조하세요.

## AWS 관리형 정책: `AWSCodePipelineCustomActionAccess`
<a name="security-iam-awsmanpol-AWSCodePipelineCustomActionAccess"></a>





이 정책은 CodePipeline에 사용자 지정 작업을 만들거나 빌드 또는 테스트 작업을 위한 Jenkins 리소스를 통합할 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipelineCustomActionAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipelineCustomActionAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline의 작업에 권한을 부여합니다.

정책은 [AWSCodePipelineCustomActionAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipelineCustomActionAccess.html)를 참조하세요.

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

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

### 전체 액세스 관리형 정책의 알림과 관련된 권한
<a name="notifications-fullaccess"></a>

이 관리형 정책은 관련 서비스 CodeCommit, CodeBuild, CodeDeploy 및 AWS CodeStar Notifications와 함께 CodePipeline에 대한 권한을 부여합니다. 또한 이 정책은 Amazon S3, Elastic Beanstalk, CloudTrail, Amazon EC2 및 CloudFormation등과 같이 파이프라인과 통합되는 다른 서비스를 사용하는 데 필요한 권한을 부여합니다. 또한 이러한 관리형 정책이 적용된 사용자는 알림에 대한 Amazon SNS 주제를 생성 및 관리하고, 주제에 대해 사용자를 구독 및 구독 취소하고, 알림 규칙의 대상으로 선택할 주제를 나열하고, Slack에 대해 구성된 채팅 애플리케이션 클라이언트에서 Amazon Q Developer를 나열할 수 있습니다.

`AWSCodePipeline_FullAccess` 관리형 정책에는 알림에 대한 전체 액세스를 허용하는 다음 설명이 포함되어 있습니다.

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsSNSTopicCreateAccess",
        "Effect": "Allow",
        "Action": [
            "sns:CreateTopic",
            "sns:SetTopicAttributes"
        ],
        "Resource": "arn:aws:sns:*:*:codestar-notifications*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

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

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

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListEventTypes",
            "codestar-notifications:ListTargets"
        ],
        "Resource": "*"
    }
```

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

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



이 서비스가 이러한 변경 사항을 추적하기 시작한 이후부터 CodePipeline의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다. 이 페이지의 변경 사항에 대한 자동 알림을 받으려면 CodePipeline [문서 기록](https://docs.aws.amazon.com/codepipeline/latest/userguide/history.html) 페이지에서 RSS 피드를 구독하세요.




| 변경 | 설명 | Date | 
| --- | --- | --- | 
| [AWSCodePipeline\$1FullAccess](#security-iam-awsmanpol-AWSCodePipeline_FullAccess) – 기존 정책 업데이트 | CodePipeline은 CloudFormation에서 ListStacks를 지원하도록 이 정책에 대한 권한을 추가했습니다. | 2024년 3월 15일 | 
| [AWSCodePipeline\$1FullAccess](#security-iam-awsmanpol-AWSCodePipeline_FullAccess) – 기존 정책 업데이트 | 이 정책은 채팅 애플리케이션에서 Amazon Q Developer에 대한 권한을 추가하도록 업데이트되었습니다. 자세한 내용은 [CodePipeline 관리형 정책 및 알림](#notifications-permissions) 단원을 참조하십시오. | 2023년 6월 21일 | 
|  [AWSCodePipeline\$1FullAccess](#security-iam-awsmanpol-AWSCodePipeline_FullAccess) 및 [AWSCodePipeline\$1ReadOnlyAccess](#security-iam-awsmanpol-AWSCodePipeline_ReadOnlyAccess) 관리형 정책 – 기존 정책에 대한 업데이트  |  CodePipeline은 채팅 애플리케이션 `chatbot:ListMicrosoftTeamsChannelConfigurations`에서 Amazon Q Developer를 사용한 추가 알림 유형을 지원하기 위해 이러한 정책에 권한을 추가했습니다.  | 2023년 5월 16일 | 
|  **AWSCodePipelineFullAccess** – 사용되지 않음  |  이 정책은 `AWSCodePipeline_FullAccess`로 대체되었습니다. 2022년 11월 17일 이후에는 이 정책을 새 사용자, 그룹 또는 역할에 연결할 수 없습니다. 자세한 내용은 [AWS 에 대한 관리형 정책 AWS CodePipeline](#managed-policies) 단원을 참조하십시오.  | 2022년 11월 17일 | 
|  **AWSCodePipelineReadOnlyAccess** – 사용되지 않음  |  이 정책은 `AWSCodePipeline_ReadOnlyAccess`로 대체되었습니다. 2022년 11월 17일 이후에는 이 정책을 새 사용자, 그룹 또는 역할에 연결할 수 없습니다. 자세한 내용은 [AWS 에 대한 관리형 정책 AWS CodePipeline](#managed-policies) 단원을 참조하십시오.  | 2022년 11월 17일 | 
|  CodePipeline에서 변경 사항 추적 시작  |  CodePipeline이 AWS 관리형 정책에 대한 변경 사항 추적을 시작했습니다.  | 2021년 3월 12일 | 

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

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

**참고**  
모든 예에서는 미국 서부(오리건) 리전(`us-west-2`)을 사용하며 가상의 계정 ID를 포함합니다.

**예시**
+ [예 1: 파이프라인 상태를 입수하도록 권한 부여](#identity-based-policies-example-1)
+ [예 2: 단계 간 전환을 활성화하고 비활성화할 권한 부여](#identity-based-policies-example-2)
+ [예 3: 사용 가능한 모든 작업 유형의 목록을 가져올 수 있는 권한 부여](#identity-based-policies-example-3)
+ [예 4: 수동 승인 작업을 승인 또는 거부할 권한 부여](#identity-based-policies-example-4)
+ [예 5: 사용자 지정 작업에 대한 작업 폴 권한 부여](#identity-based-policies-example-5)
+ [예제 6: Jenkins와 AWS CodePipeline 통합을 위한 정책 연결 또는 편집](#identity-based-policies-example-6)
+ [예 7: 파이프라인에 대한 교차 계정 액세스 구성](#identity-based-policies-example-7)

### 예 1: 파이프라인 상태를 입수하도록 권한 부여
<a name="identity-based-policies-example-1"></a>

다음 예는 `MyFirstPipeline`이라는 이름의 파이프라인 상태를 입수할 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:GetPipelineState"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"
        }
    ]
}
```

------

### 예 2: 단계 간 전환을 활성화하고 비활성화할 권한 부여
<a name="identity-based-policies-example-2"></a>

다음 예는 `MyFirstPipeline`이라는 이름의 파이프라인에서 모든 단계 간 전환을 활성화하고 비활성화할 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:DisableStageTransition",
                "codepipeline:EnableStageTransition"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*"
        }
    ]
}
```

------

파이프라인에서 단일 단계의 전환을 활성화하고 비활성화하는 권한을 사용자에게 주려면 해당 단계를 지정해야 합니다. 예를 들어 `MyFirstPipeline`이라는 파이프라인에서 `Staging`이라는 단계의 전환을 활성화 및 비활성화하도록 하려면 다음과 같이 합니다.

```
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging"
```

### 예 3: 사용 가능한 모든 작업 유형의 목록을 가져올 수 있는 권한 부여
<a name="identity-based-policies-example-3"></a>

다음 예는 `us-west-2` 리전에서 파이프라인에 이용할 수 있는 모든 작업 유형의 목록을 가져올 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:ListActionTypes"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:actiontype:*"
        }
    ]
}
```

------

### 예 4: 수동 승인 작업을 승인 또는 거부할 권한 부여
<a name="identity-based-policies-example-4"></a>

다음 예는 `MyFirstPipeline`이라는 파이프라인의 `Staging`이라는 단계에서 수동 승인 작업을 승인하거나 거부할 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:PutApprovalResult"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging/*"
        }
    ]
}
```

------

### 예 5: 사용자 지정 작업에 대한 작업 폴 권한 부여
<a name="identity-based-policies-example-5"></a>

다음 예는 `TestProvider`라는 이름으로 모든 파이프라인을 통틀어 첫 버전에서 `Test` 작업 유형에 해당하는 사용자 지정 작업에 대하여 작업 폴 권한을 허용합니다.

**참고**  
다른 AWS 계정 하에 사용자 지정 작업을 다룰 작업자를 구성하거나 특정 IAM 역할을 갖춰야 작업하도록 할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:PollForJobs"
            ],
            "Resource": [
                "arn:aws:codepipeline:us-west-2:111222333444:actionType:Custom/Test/TestProvider/1"
            ]
        }
    ]
}
```

------

### 예제 6: Jenkins와 AWS CodePipeline 통합을 위한 정책 연결 또는 편집
<a name="identity-based-policies-example-6"></a>

빌드 또는 테스트에 Jenkins를 사용하도록 파이프라인을 구성하는 경우 해당 통합에 대해 별도의 자격 증명을 생성하고 Jenkins와 간의 통합에 필요한 최소 권한이 있는 IAM 정책을 연결합니다. 이 정책은 `AWSCodePipelineCustomActionAccess` 관리형 정책과 동일합니다. 다음은 Jenkins 통합을 위한 정책을 나타낸 예입니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 

    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:AcknowledgeJob",
                "codepipeline:GetJobDetails",
                "codepipeline:PollForJobs",
                "codepipeline:PutJobFailureResult",
                "codepipeline:PutJobSuccessResult"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### 예 7: 파이프라인에 대한 교차 계정 액세스 구성
<a name="identity-based-policies-example-7"></a>

다른 AWS 계정의 사용자 및 그룹에 대한 파이프라인 액세스를 구성할 수 있습니다. 권장 방법은 파이프라인이 생성된 계정에 역할을 만드는 것입니다. 역할은 다른 AWS 계정의 사용자가 해당 역할을 수임하고 파이프라인에 액세스할 수 있도록 허용해야 합니다. 자세한 내용은 [연습: 역할을 사용한 교차 계정 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/walkthru_cross-account-with-roles.html) 단원을 참조하십시오.

다음 예제는 80398EXAMPLE 계정의 정책을 보여 줍니다.이 정책은 사용자가 콘솔`MyFirstPipeline`에서 라는 파이프라인을 볼 수 있지만 변경할 수는 없습니다. 이 정책의 기반은 `AWSCodePipeline_ReadOnlyAccess` 관리형 정책이지만 `MyFirstPipeline` 파이프라인에 대해 특화되어 있으므로 관리형 정책을 바로 사용할 수 없습니다. 특정 파이프라인으로 정책을 제한하고 싶지 않은 경우 로 생성하고 관리하는 관리형 정책의 사용을 고려해 보십시오. 자세한 내용은 [관리형 정책 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)을 참조하세요. 액세스용으로 만든 IAM 역할에 이 정책을 연결해야 합니다(예: `CrossAccountPipelineViewers` 역할).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 

    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:GetPipeline",
                "codepipeline:GetPipelineState",
                "codepipeline:ListActionTypes",
                "codepipeline:ListPipelines",
                "iam:ListRoles",
                "s3:GetBucketPolicy",
                "s3:GetObject",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "codedeploy:GetApplication",
                "codedeploy:GetDeploymentGroup",
                "codedeploy:ListApplications",
                "codedeploy:ListDeploymentGroups",
                "elasticbeanstalk:DescribeApplications",
                "elasticbeanstalk:DescribeEnvironments",
                "lambda:GetFunctionConfiguration",
                "lambda:ListFunctions"
            ],
            "Resource": "arn:aws:codepipeline:us-east-2:111122223333:MyFirstPipeline"
        }
    ]
}
```

------

일단 이 정책을 만들었으면 80398EXAMPLE 계정에 IAM 역할을 만들어 역할에 이 정책을 연결하세요. 역할의 신뢰 관계에서이 역할을 수임하는 AWS 계정을 추가해야 합니다.

다음 예제는 사용자가 80398EXAMPLE 계정에서 라는 역할을 수임하도록 허용하는 *111111111111* AWS 계정`CrossAccountPipelineViewers`에서 생성된 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::111122223333:role/CrossAccountPipelineViewers"
        }
    ]
}
```

------

# AWS CodePipeline 리소스 기반 정책 예제
<a name="security_iam_resource-based-policy-examples"></a>

**Topics**

Amazon S3과 같은 다른 서비스도 리소스 기반 권한 정책을 지원합니다. 예를 들어, 정책을 S3 버킷에 연결하여 해당 버킷에 대한 액세스 권한을 관리할 수 있습니다. CodePipeline은 리소스 기반 정책을 지원하지 않지만, 버전 S3 버킷의 파이프라인에 사용할 아티팩트는 저장합니다.

**Example CodePipeline의 아티팩트 스토어로 사용할 정책을 S3 버킷에 새로 만들려면**  
CodePipeline의 아티팩트 스토어로 모든 버전의 S3 버킷을 사용할 수 있습니다. **파이프라인 생성** 마법사를 사용해 첫 번째 파이프라인을 만드는 경우 사용자에 대한 이 S3 버킷이 생성되므로, 아티팩트 스토어에 업로드한 모든 객체의 암호화를 확인하고 버킷 연결의 보안을 안심할 수 있습니다. 사용자만의 S3 버킷을 새로 만든 경우, 다음 정책 또는 그 요소를 버킷에 추가하는 것이 좋습니다. 이 정책에서 S3 버킷에 대한 ARN은 `codepipeline-us-east-2-1234567890`입니다. 이 ARN을 S3 버킷에 대한 ARN으로 교체하십시오.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "SSEAndSSLPolicy",
    "Statement": [
        {
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "aws:kms"
                }
            }
        },
        {
            "Sid": "DenyInsecureConnections",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": false
                }
            }
        }
    ]
}
```

# AWS CodePipeline 자격 증명 및 액세스 문제 해결
<a name="security_iam_troubleshoot"></a>

다음 정보를 사용하여 CodePipeline 및 IAM 작업 시 발생할 수 있는 공통적인 문제를 진단하고 수정할 수 있습니다.

**Topics**
+ [CodePipeline에서 작업을 수행할 권한이 없음](#security_iam_troubleshoot-no-permissions)
+ [iam:PassRole을 수행하도록 인증되지 않음](#security_iam_troubleshoot-passrole)
+ [관리자이며 다른 사용자가 CodePipeline에 액세스할 수 있게 허용하기를 원함](#security_iam_troubleshoot-admin-delegate)
+ [내 AWS 계정 외부의 사람이 내 CodePipeline 리소스에 액세스하도록 허용하고 싶습니다.](#security_iam_troubleshoot-cross-account-access)

## CodePipeline에서 작업을 수행할 권한이 없음
<a name="security_iam_troubleshoot-no-permissions"></a>

에서 작업을 수행할 권한이 없다는 AWS Management Console 메시지가 표시되면 관리자에게 문의하여 도움을 받아야 합니다. 관리자는 사용자 이름과 암호를 제공한 사람입니다.

다음 예의 오류는 `mateojackson` IAM 사용자가 콘솔을 사용하여 파이프라인에 대한 세부 정보를 보려고 하지만 `codepipeline:GetPipeline` 권한이 없는 경우에 발생합니다.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: codepipeline:GetPipeline on resource: my-pipeline
```

이 경우, Mateo는 `my-pipeline` 작업을 사용하여 `codepipeline:GetPipeline` 리소스에 액세스하도록 허용하는 정책을 업데이트하라고 관리자에게 요청합니다.

## iam:PassRole을 수행하도록 인증되지 않음
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` 작업을 수행할 권한이 없다는 오류가 수신되면 관리자에게 문의하여 도움을 받아야 합니다. 관리자는 사용자 이름과 암호를 제공한 사람입니다. 관리자에게 CodePipeline으로 역할 전달을 허용하도록 정책을 업데이트해 달라고 요청합니다.

일부 AWS 서비스 에서는 새 서비스 역할 또는 서비스 연결 역할을 생성하는 대신 기존 역할을 해당 서비스에 전달할 수 있습니다. 이렇게 하려면 역할을 서비스에 전달할 권한이 있어야 합니다.

다음 예제 오류는 `marymajor`라는 IAM 사용자가 콘솔을 사용하여 CodePipeline에서 작업을 수행하려고 하는 경우에 발생합니다. 하지만 태스크를 수행하려면 서비스에 서비스 역할이 부여한 권한이 있어야 합니다. Mary는 서비스에 역할을 전달할 수 있는 권한을 가지고 있지 않습니다.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

이 경우 Mary는 `iam:PassRole` 태스크를 수행하도록 허용하는 정책을 업데이트하라고 관리자에게 요청합니다.

## 관리자이며 다른 사용자가 CodePipeline에 액세스할 수 있게 허용하기를 원함
<a name="security_iam_troubleshoot-admin-delegate"></a>

다른 사용자가 CodePipeline에 액세스하도록 허용하려면 액세스가 필요한 사람 또는 애플리케이션에 권한을 부여해야 합니다. AWS IAM Identity Center 를 사용하여 사용자 및 애플리케이션을 관리하는 경우 사용자 또는 그룹에 권한 세트를 할당하여 액세스 수준을 정의합니다. 권한 세트는 IAM 정책을 자동으로 생성하고 사용자 또는 애플리케이션과 연결된 IAM 역할에 할당합니다. 자세한 내용은 *AWS IAM Identity Center 사용 설명서*에서 [권한 세트](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)를 참조하세요.

IAM Identity Center를 사용하지 않는 경우 액세스가 필요한 사용자 또는 애플리케이션에 대한 IAM 엔터티(사용자 또는 역할)를 생성해야 합니다. 그런 다음 CodePipeline에서 올바른 권한을 부여하는 정책을 엔터티에 연결해야 합니다. 권한이 부여되면 사용자 또는 애플리케이션 개발자에게 자격 증명을 제공합니다. 이들은 이 자격 증명을 사용하여 AWS에 액세스합니다. IAM 사용자, 그룹, 정책 및 권한 생성에 대해 자세히 알아보려면 *IAM 사용자 설명서*의 [IAM 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)과 [IAM의 권한 및 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.

## 내 AWS 계정 외부의 사람이 내 CodePipeline 리소스에 액세스하도록 허용하고 싶습니다.
<a name="security_iam_troubleshoot-cross-account-access"></a>

다른 계정의 사용자 또는 조직 외부의 사람이 리소스에 액세스할 때 사용할 수 있는 역할을 생성할 수 있습니다. 역할을 수임할 신뢰할 수 있는 사람을 지정할 수 있습니다. 리소스 기반 정책 또는 액세스 제어 목록(ACL)을 지원하는 서비스의 경우, 이러한 정책을 사용하여 다른 사람에게 리소스에 대한 액세스 권한을 부여할 수 있습니다.

자세한 내용은 다음을 참조하세요.
+ CodePipeline에서 이러한 기능을 지원하는지 여부를 알아보려면 [AWS CodePipeline 에서 IAM을 사용하는 방법](security_iam_service-with-iam.md) 섹션을 참조하세요.
+ 소유 AWS 계정 한의 리소스에 대한 액세스 권한을 제공하는 방법을 알아보려면 [IAM 사용 설명서의 소유한 다른의 IAM 사용자에게 액세스 권한 제공을 참조 AWS 계정 하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html). ** 
+ 리소스에 대한 액세스 권한을 타사에 제공하는 방법을 알아보려면 *IAM 사용 설명서*의 [타사 AWS 계정 소유에 대한 액세스 권한 제공을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) AWS 계정참조하세요.
+ ID 페더레이션을 통해 액세스 권한을 제공하는 방법을 알아보려면 *IAM 사용 설명서*의 [외부에서 인증된 사용자에게 액세스 권한 제공(ID 페더레이션)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)을 참조하세요.
+ 크로스 계정 액세스에 대한 역할과 리소스 기반 정책 사용의 차이점을 알아보려면 *IAM 사용 설명서*의 [IAM의 크로스 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

# 권한 참조
<a name="permissions-reference"></a>

IAM 자격 증명에 연결할 수 있는 액세스 제어 및 쓰기 권한 정책(자격 증명 기반 정책)을 설정할 때 다음 표를 참조로 사용하세요. 표에는 각 API 작업과 이 작업을 수행할 수 있는 권한을 부여할 수 있는 작업이 나와 있습니다. *리소스 수준 권한을* 지원하는 작업의 경우 표에는 권한을 부여할 수 있는 AWS 리소스가 나열되어 있습니다. 정책의 `Action` 필드에 작업을 지정합니다.

*리소스 수준 권한*은 사용자가 작업을 수행할 수 있는 리소스를 지정할 수 있는 권한입니다. AWS CodePipeline 는 리소스 수준 권한을 부분적으로 지원합니다. 즉, 일부 AWS CodePipeline API 호출의 경우 사용자가 충족해야 하는 조건에 따라 이러한 작업을 사용할 수 있는 시기 또는 사용자가 사용할 수 있는 리소스를 제어할 수 있습니다. 예를 들어 특정 파이프라인에 대해서만 파이프라인 실행 정보를 나열할 수 있는 권한을 사용자에게 부여할 수 있습니다.

**참고**  
**리소스** 열에는 리소스 수준 권한을 지원하는 API 호출에 필요한 리소스가 나와 있습니다. 리소스 수준 권한을 지원하지 않는 API 호출의 경우, 사용자에게 해당 사용 권한을 부여할 때 정책 명령문의 리소스 요소를 와일드카드(\$1)로 지정해야 합니다.




**API 작업 및 작업에 필요한 권한**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/permissions-reference.html)

# CodePipeline 서비스 역할 관리
<a name="how-to-custom-role"></a>

서비스 역할은 파이프라인에서 사용하는 AWS 리소스에 대한 액세스를 제어하는 하나 이상의 정책으로 구성됩니다. 이 역할에 더 많은 정책을 연결하거나, 역할에 연결된 정책을 편집하거나,의 다른 서비스 역할에 대한 정책을 구성할 수 있습니다 AWS. 또한 사용자의 파이프라인으로 교차 계정 액세스를 구성할 때 역할에 정책을 연결해야 할 수도 있습니다.

**중요**  
정책 설명을 수정하거나 다른 정책을 역할에 연결하면 파이프라인이 작동하지 않도록 방지할 수 있습니다. 어느 쪽이든 에 서비스 역할을 수정하기 전에 관련 문제를 확실히 이해하십시오. 서비스 역할을 변경한 후에는 반드시 파이프라인을 테스트하십시오.

**참고**  
콘솔에서 2018년 9월 이전에 생성된 서비스 역할은 `oneClick_AWS-CodePipeline-Service_ID-Number`라는 이름으로 생성됩니다.  
2018년 9월 이후에 생성된 서비스 역할은 서비스 역할 이름 형식으로 `AWSCodePipelineServiceRole-Region-Pipeline_Name`을 사용합니다. 예를 들어 `eu-west-2`에서 `MyFirstPipeline`이라는 파이프라인의 경우 콘솔은 역할과 정책을 `AWSCodePipelineServiceRole-eu-west-2-MyFirstPipeline`이라고 이름을 지정합니다.

## CodePipeline 서비스 역할 정책
<a name="how-to-custom-role-policy"></a>

CodePipeline 서비스 역할 정책 문에는 파이프라인을 관리하기 위한 최소 권한이 포함되어 있습니다. 사용하지 않는 리소스에 액세스를 제거하도록 서비스 역할 설명을 편집할 수 있습니다. CodePipeline이 각 작업에 사용하는 최소 필수 권한은 해당 작업 참조를 참조하세요.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowS3BucketAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::[[pipeArtifactBucketNames]]"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "{{accountId}}"
        }
      }
    },
    {
      "Sid": "AllowS3ObjectAccess",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObjectTagging",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": [
        "arn:aws:s3:::[[pipeArtifactBucketNames]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "{{accountId}}"
        }
      }
    }
  ]
}
```

------

**참고**  
정책에서 소스 버킷의 S3 객체에 태그가 있는 경우 다음 권한이 필요합니다.  

```
s3:PutObjectTagging
s3:GetObjectTagging
s3:GetObjectVersionTagging
```

## CodePipeline 서비스 역할에서 권한 제거
<a name="remove-permissions-from-policy"></a>

사용하지 않는 리소스에 액세스를 제거하도록 서비스 역할 설명을 편집할 수 있습니다. 예를 들어 Elastic Beanstalk가 포함된 파이프라인이 없으면 Elastic Beanstalk 리소스 액세스를 허용하는 섹션을 제거하도록 정책 설명을 편집할 수 있습니다.

마찬가지로 CodeDeploy가 포함된 파이프라인이 없으면 CodeDeploy 리소스 액세스를 허용하는 섹션을 제거하도록 정책 설명을 편집할 수 있습니다.

```
    {
    "Action": [
        "codedeploy:CreateDeployment",
        "codedeploy:GetApplicationRevision",
        "codedeploy:GetDeployment",
        "codedeploy:GetDeploymentConfig",
        "codedeploy:RegisterApplicationRevision"
    ],
    "Resource": "*",
    "Effect": "Allow"
},
```

## CodePipeline 서비스 역할에 권한 추가
<a name="how-to-update-role-new-services"></a>

이것을 파이프라인에 사용하기 전에 기본 서비스 역할 정책 설명에 이미 포함되지 않은 AWS 서비스 용 권한으로 서비스 역할 정책 설명을 업데이트해야 합니다.

이는에 대한 지원이에 추가되기 전에 파이프라인에 사용하는 서비스 역할이 생성된 경우 특히 중요합니다 AWS 서비스.

다음 표에는 다른 AWS 서비스용으로 지원을 추가하는 경우를 보여줍니다.


****  

| AWS 서비스 | CodePipeline 지원 날짜 | 
| --- | --- | 
| CodePipeline 호출 작업 지원이 추가되었습니다. [CodePipeline 간접 호출 작업에 대한 서비스 역할 정책 권한](action-reference-PipelineInvoke.md#action-reference-PipelineInvoke-permissions-action)을(를) 참조하세요. | 2025년 3월 14일 | 
|  EC2 작업 지원이 추가되었습니다. [EC2 배포 작업에 대한 서비스 역할 정책 권한](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action)을(를) 참조하세요. | 2025년 2월 21일 | 
|  EKS 작업 지원이 추가되었습니다. [서비스 역할 정책 권한](action-reference-EKS.md#action-reference-EKS-service-role)을(를) 참조하세요. | 2025년 2월 20일 | 
|  Amazon Elastic Container Registry ECRBuildAndPublish 작업 지원이 추가되었습니다. [서비스 역할 권한: `ECRBuildAndPublish` 작업](action-reference-ECRBuildAndPublish.md#edit-role-ECRBuildAndPublish)을(를) 참조하세요. | 2024년 11월 22일 | 
| Amazon Inspector InspectorScan 작업 지원이 추가되었습니다. [서비스 역할 권한: `InspectorScan` 작업](action-reference-InspectorScan.md#edit-role-InspectorScan)을(를) 참조하세요. | 2024년 11월 22일 | 
| Commands 작업 지원이 추가되었습니다. [서비스 역할 권한: Commands 작업](action-reference-Commands.md#edit-role-Commands)을(를) 참조하세요. | 2024년 10월 3일 | 
| CloudFormation 작업 지원이 추가되었습니다. [서비스 역할 권한: `CloudFormationStackSet` 작업](action-reference-StackSets.md#edit-role-cfn-stackset) 및 [서비스 역할 권한: `CloudFormationStackInstances` 작업](action-reference-StackSets.md#edit-role-cfn-stackinstances) 섹션을 참조하세요. | 2020년 12월 30일 | 
| CodeCommit 전체 복제 출력 아티팩트 형식 [서비스 역할 권한: CodeCommit 작업](action-reference-CodeCommit.md#edit-role-codecommit)을(를) 참조하세요. | 2020년 11월 11일 | 
| AWS CodeBuild 배치 빌드 작업 지원이 추가되었습니다. [서비스 역할 권한: CodeCommit 작업](action-reference-CodeCommit.md#edit-role-codecommit)을(를) 참조하세요. | 2020년 7월 30일 | 
| AWS AppConfig 작업 지원이 추가되었습니다. [서비스 역할 권한: `AppConfig` 작업](action-reference-AppConfig.md#edit-role-appconfig)을(를) 참조하세요. | 2020년 6월 22일 | 
| AWS Step Functions 작업 지원이 추가되었습니다. [서비스 역할 권한: `StepFunctions` 작업](action-reference-StepFunctions.md#edit-role-stepfunctions)을(를) 참조하세요. | 2020년 5월 27일 | 
| AWS CodeStar 연결 작업 지원이 추가되었습니다. [서비스 역할 권한: CodeConnections 작업](action-reference-CodestarConnectionSource.md#edit-role-connections)을(를) 참조하세요. | 2019년 12월 18일 | 
| S3 배포 작업 지원이 추가되었습니다. [서비스 역할 권한: S3 배포 작업](action-reference-S3Deploy.md#edit-role-s3deploy)을(를) 참조하세요. | 2019년 1월 16일 | 
| CodeDeployToECS 작업 지원이 추가되었습니다. [서비스 역할 권한: `CodeDeployToECS` 작업](action-reference-ECSbluegreen.md#edit-role-codedeploy-ecs)을(를) 참조하세요. | 2018년 11월 27일 | 
| Amazon ECR 작업 지원이 추가되었습니다. [서비스 역할 권한: Amazon ECR 작업](action-reference-ECR.md#edit-role-ecr)을(를) 참조하세요. | 2018년 11월 27일 | 
| Service Catalog 작업 지원이 추가되었습니다. [서비스 역할 권한: Service Catalog 작업](action-reference-ServiceCatalog.md#edit-role-servicecatalog)을(를) 참조하세요. | 2018년 10월 16일 | 
| AWS Device Farm 작업 지원이 추가되었습니다. [서비스 역할 권한: AWS Device Farm 작업](action-reference-DeviceFarm.md#edit-role-devicefarm)을(를) 참조하세요. | 2018년 7월 19일 | 
| Amazon ECS 작업 지원이 추가되었습니다. [서비스 역할 권한: Amazon ECS 표준 작업](action-reference-ECS.md#edit-role-ecs)을(를) 참조하세요. | 2017년 12월 12일 / 2017년 7월 21일에 태그 지정 권한 부여를 위한 옵트인 업데이트 | 
| CodeCommit 작업 지원이 추가되었습니다. [서비스 역할 권한: CodeCommit 작업](action-reference-CodeCommit.md#edit-role-codecommit)을(를) 참조하세요. | 2016년 4월 18일 | 
| AWS OpsWorks 작업 지원이 추가되었습니다. [서비스 역할 권한: AWS OpsWorks 작업](action-reference-OpsWorks.md#edit-role-opsworks)을(를) 참조하세요. | 2016년 6월 2일 | 
| CloudFormation 작업 지원이 추가되었습니다. [서비스 역할 권한: CloudFormation 작업](action-reference-CloudFormation.md#edit-role-cloudformation)을(를) 참조하세요. | 2016년 11월 3일 | 
| AWS CodeBuild 작업 지원이 추가되었습니다. [서비스 역할 권한: CodeBuild 작업](action-reference-CodeBuild.md#edit-role-codebuild)을(를) 참조하세요. | 2016년 12월 1일 | 
| Elastic Beanstalk 작업 지원이 추가되었습니다. [서비스 역할 권한: `ElasticBeanstalk` 배포 작업](action-reference-Beanstalk.md#edit-role-beanstalk)을(를) 참조하세요. | 초기 서비스 출시 | 
| CodeDeploy 작업 지원이 추가되었습니다. [서비스 역할 권한: AWS CodeDeploy 작업](action-reference-CodeDeploy.md#edit-role-codedeploy)을(를) 참조하세요. | 초기 서비스 출시 | 
| S3 소스 작업 지원이 추가되었습니다. [서비스 역할 권한: S3 소스 작업](action-reference-S3.md#edit-role-s3source)을(를) 참조하세요. | 초기 서비스 출시 | 

지원되는 서비스에 대한 권한을 추가하려면 다음 단계를 따르십시오.

 

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. IAM 콘솔 탐색 창에서 **역할**을 선택한 다음 역할 목록에서 `AWS-CodePipeline-Service` 역할을 선택합니다.

1. **권한** 탭으로 가서 **인라인 정책**의 서비스 역할 정책 열에서 **정책 편집**을 선택합니다.

1. **정책 문서** 상자에 필요한 권한을 추가합니다.
**참고**  
IAM 정책을 만들 때 최소 권한 부여의 기본 보안 조언을 따릅니다. 즉, 작업 수행에 필요한 최소한의 권한만 부여합니다. 일부 API 호출은 리소스 기반 권한을 지원하고 액세스 권한을 제한할 수 있습니다. 예를 들어 이 경우`DescribeTasks` 및 `ListTasks`를 호출할 때 권한을 제한하려면 와일드카드 문자(\$1)를 리소스 ARN 또는 와일드카드 문자(\$1)가 포함된 리소스 ARN으로 바꾸면 됩니다. 최소 권한 액세스 권한을 부여하는 정책 생성에 대한 자세한 내용은 [https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 단원을 참조하세요.

1. **정책 검토**를 선택해 정책에 오류가 없는지 확인합니다. 정책에 오류가 없으면 **정책 적용**를 선택합니다.

# CodePipeline에서 로깅 및 모니터링
<a name="incident-response"></a>

에서 로깅 기능을 사용하여 사용자가 계정에서 수행한 작업과 사용된 리소스를 AWS 확인할 수 있습니다. 로그 파일에는 다음 정보가 들어 있습니다.
+ 작업의 시간과 날짜
+ 작업의 소스 IP 주소
+ 부족한 권한으로 인해 실패한 작업

로깅 기능은 다음과 같은 AWS 서비스에서 제공됩니다.
+ AWS CloudTrail 는에 의해 또는를 대신하여 수행된 AWS API 호출 및 관련 이벤트를 로깅하는 데 사용할 수 있습니다 AWS 계정. 자세한 내용은 [를 사용하여 CodePipeline API 호출 로깅 AWS CloudTrail](monitoring-cloudtrail-logs.md) 단원을 참조하십시오.
+ Amazon CloudWatch Events를 사용하여 AWS 클라우드 리소스와 실행 중인 애플리케이션을 모니터링할 수 있습니다 AWS. 정의한 지표에 기반하여 Amazon CloudWatch Events에서 경보를 생성할 수 있습니다. 자세한 내용은 [CodePipeline 이벤트 모니터링](detect-state-changes-cloudwatch-events.md) 단원을 참조하십시오.

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

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

아티팩트를 사용하여 타사 감사 보고서를 다운로드할 수 있습니다. 자세한 내용은 [Downloading Reports inDownloading AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)을 참조하세요.

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

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

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

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

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

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

# 보안 모범 사례
<a name="security-best-practices"></a>



**Topics**

CodePipeline은 자체 보안 정책을 개발하고 구현할 때 고려해야 할 여러 보안 기능을 제공합니다. 다음 모범 사례는 일반적인 지침이며 완벽한 보안 솔루션을 나타내지는 않습니다. 이러한 모범 사례는 사용자의 환경에 적절하지 않거나 충분하지 않을 수 있으므로 규정이 아닌 참고용으로만 사용하세요.

파이프라인에 연결하는 소스 리포지토리에 대해 암호화 및 인증을 사용합니다. 다음은 보안을 위한 CodePipeline 모범 사례입니다.
+ 토큰이나 암호와 같은 암호를 포함해야 하는 파이프라인 또는 작업 구성을 생성하는 경우 정보가 로그에 표시되므로 작업 구성에 직접 암호를 입력하거나 파이프라인 수준 또는 CloudFormation 구성에서 정의된 변수의 기본값을 입력하지 마십시오. [AWS Secrets Manager 를 사용하여 데이터베이스 암호 또는 타사 API 키 추적](parameter-store-encryption.md)에 설명된 대로 Secrets Manager를 사용하여 암호를 설정 및 저장한 다음 파이프라인 및 작업 구성에서 참조된 암호를 사용합니다.
+ S3 소스 버킷을 사용하는 파이프라인을 생성할 경우, [CodePipeline의 Amazon S3에 저장된 아티팩트에 대해 서버 측 암호화 구성](S3-artifact-encryption.md)에서 설명하는 대로 AWS KMS keys를 관리함으로써 CodePipeline의 Amazon S3에 저장된 아티팩트에 대해 서버 측 암호화를 구성합니다.
+ Jenkins 작업 공급자를 사용하는 경우, 파이프라인 빌드 작업이나 테스트 작업에 Jenkins 빌드 공급자를 사용할 때 EC2 인스턴스에 Jenkins를 설치하고 별도의 EC2 인스턴스 프로파일을 구성합니다. 인스턴스 프로파일이 Jenkins에 Amazon S3에서 파일 검색과 같은 프로젝트 작업을 수행하는 데 필요한 AWS 권한만 부여하는지 확인합니다. Jenkins 인스턴스 프로파일에 대한 역할을 만드는 방법은 [Jenkins 통합에 사용할 IAM 역할 생성](tutorials-four-stage-pipeline.md#tutorials-four-stage-pipeline-prerequisites-jenkins-iam-role)의 단계를 참조하십시오.