AWS CodePipeline 자격 증명 기반 정책 예시 - AWS CodePipeline

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

AWS CodePipeline 자격 증명 기반 정책 예시

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

이러한 예제 JSON 정책 문서를 사용하여 IAM 보안 인증 기반 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서JSON 탭에서 정책 생성을 참조하십시오.

다른 계정의 리소스를 사용하는 파이프라인을 만드는 방법과 관련 예제 정책을 알아보려면 을 참조하십시오다른 AWS 계정의 리소스를 사용하는 CodePipeline에서 파이프라인을 생성.

고객 관리형 정책 예

이 섹션에서는 다양한 CodePipeline 작업에 대한 권한을 부여하는 예제 사용자 정책을 찾을 수 있습니다. 이러한 정책은 CodePipeline API, AWS SDK 또는 를 AWS CLI사용할 때 작동합니다. 콘솔을 사용하는 경우 콘솔에 특정한 추가 권한을 부여해야 합니다. 자세한 설명은 CodePipeline 콘솔 사용에 필요한 권한 섹션을 참조하세요.

참고

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

예제

예 1: 파이프라인 상태를 입수하도록 권한 부여

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

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

예 2: 단계 간 전환을 활성화하고 비활성화할 권한 부여

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

{ "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: 사용 가능한 모든 작업 유형의 목록을 가져올 수 있는 권한 부여

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

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

예 4: 수동 승인 작업을 승인 또는 거부할 권한 부여

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

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

예 5: 사용자 지정 작업에 대한 작업 폴 권한 부여

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

참고

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

{ "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

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

{ "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:AcknowledgeJob", "codepipeline:GetJobDetails", "codepipeline:PollForJobs", "codepipeline:PutJobFailureResult", "codepipeline:PutJobSuccessResult" ], "Resource": "*" } ], "Version": "2012-10-17" }

예 7: 파이프라인에 대한 교차 계정 액세스 구성

다른 AWS 계정의 사용자 및 그룹에 대한 파이프라인 액세스를 구성할 수 있습니다. 권장 방법은 파이프라인이 생성된 계정에 역할을 만드는 것입니다. 역할은 다른 AWS 계정의 사용자가 해당 역할을 수임하고 파이프라인에 액세스할 수 있도록 허용해야 합니다. 자세한 내용은 연습: 역할을 사용한 교차 계정 액세스 단원을 참조하십시오.

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

{ "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:80398EXAMPLE:MyFirstPipeline" } ], "Version": "2012-10-17" }

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

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

다음 예에서는 111111111111 AWS 계정에서 생성된 정책을 보여 줍니다. 이 정책은 사용자가 80398EXAMPLE 계정에 지정된 역할을 수임할 수 있도록 허용합니다. CrossAccountPipelineViewers

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

예 8: 파이프라인에서 다른 계정과 연결된 AWS 리소스 사용

사용자가 다른 계정의 리소스를 사용하는 파이프라인을 생성하도록 허용하는 정책을 구성할 수 있습니다. AWS 파이프라인을 만드는 계정(AccountA)과 그 파이프라인에서 사용할 리소스를 만든 계정(AccountB) 양쪽에 정책과 역할을 구성해야 합니다. 또한 계정 간 액세스에 사용할 고객 관리 키를 생성해야 합니다. AWS Key Management Service 자세한 내용 및 step-by-step 예는 및 을 참조하십시오다른 AWS 계정의 리소스를 사용하는 CodePipeline에서 파이프라인을 생성. Amazon S3에 저장된 아티팩트에 대해 서버 측 암호화를 구성합니다. CodePipeline

다음 예는 AccountA가 파이프라인 아티팩트의 저장에 사용하는 S3 버킷에 구성한 정책입니다. 이 정책은 AccountB에 대한 액세스 권한을 부여합니다. 다음 예에서 AccountB에 대한 ARN은 012ID_ACCOUNT_B입니다. 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:::codepipeline-us-east-2-1234567890/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": { "Bool": { "aws:SecureTransport": false } } }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root" }, "Action": [ "s3:Get*", "s3:Put*" ], "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890" } ] }

다음 예는 AccountB의 역할 수임을 허용하도록 AccountA가 구성한 정책입니다. 이 정책을 CodePipeline 에 대한 서비스 역할(CodePipeline_Service_Role)에 적용해야 합니다. IAM의 역할에 정책을 적용하는 자세한 방법은 역할 변경을 참조하세요. 다음 예에서 012ID_ACCOUNT_B는 AccountB에 대한 ARN입니다.

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

다음 예는 AccountB에서 구성하고 의 EC2 인스턴스 역할에 적용한 정책을 보여줍니다. CodeDeploy 이 정책은 AccountA가 파이프라인 아티팩트 (codepipeline-us-east-2-1234567890) 를 저장하는 데 사용하는 S3 버킷에 대한 액세스 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890" ] } ] }

다음 예는 AccountA에서 arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE 생성되고 AccountB가 해당 키를 사용할 수 있도록 구성된 고객 관리 키의 ARN이 AWS KMS 어디에 있는지에 대한 정책을 보여줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE" ] } ] }

다음 예는 AccountA의 파이프라인에 필요한 CodeDeploy 작업에 대한 액세스를 허용하는 AccountB에서 생성한 IAM 역할 (CrossAccount_Role) 에 대한 인라인 정책을 보여줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": "*" } ] }

다음 예는 AccountB가 만든 IAM 역할(CrossAccount_Role)에 대한 인라인 정책으로, 입력 아티팩트를 다운로드하고 출력 아티팩트를 업로드하기 위하여 S3 버킷에 액세스를 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890/*" ] } ] }

리소스에 대한 교차 계정 액세스를 위해 파이프라인을 편집하는 방법에 대한 자세한 내용은 2단계: 파이프라인 편집 단원을 참조하십시오.