기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CodePipeline 자격 증명 기반 정책 예시
기본적으로 IAM 사용자 및 역할은 CodePipeline 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management Console AWS CLI또는 AWS API를 사용하여 작업을 수행할 수 없습니다. IAM 관리자는 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 사용자와 역할에게 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 정책을 연결해야 합니다.
이러한 예제 JSON 정책 문서를 사용하여 IAM ID 기반 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서의 JSON 탭에서 정책 생성을 참조하세요.
다른 계정의 리소스를 사용하는 파이프라인을 생성하는 방법과 관련 예제 정책은 다른 AWS 계정의 리소스를 사용하는 CodePipeline에서 파이프라인을 생성 섹션을 참조하세요.
주제
고객 관리형 정책 예
이 섹션에서는 다양한 CodePipeline 작업에 대한 권한을 부여하는 사용자 정책의 예를 제공합니다. 이러한 정책은 CodePipeline API, AWS SDKs 또는를 사용할 때 작동합니다 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를 이용해 빌드하거나 테스트하도록 파이프라인을 구성하는 경우, 해당 통합을 위해 별도의 자격 증명을 새로 만들어 Jenkins와 CodePipeline 간 통합에 필요한 최소한의 권한을 보유한 IAM 정책을 연결하세요. 이 정책은 AWSCodePipelineCustomActionAccess
관리형 정책과 동일합니다. 다음은 Jenkins 통합을 위한 정책을 나타낸 예입니다.
{ "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:AcknowledgeJob", "codepipeline:GetJobDetails", "codepipeline:PollForJobs", "codepipeline:PutJobFailureResult", "codepipeline:PutJobSuccessResult" ], "Resource": "*" } ], "Version": "2012-10-17" }
예 7: 파이프라인에 대한 교차 계정 액세스 구성
다른 AWS 계정의 사용자 및 그룹에 대한 파이프라인 액세스를 구성할 수 있습니다. 권장 방법은 파이프라인이 생성된 계정에 역할을 만드는 것입니다. 역할은 다른 AWS 계정의 사용자가 해당 역할을 수임하고 파이프라인에 액세스할 수 있도록 허용해야 합니다. 자세한 내용은 연습: 역할을 사용한 교차 계정 액세스 단원을 참조하십시오.
다음 예는 80398EXAMPLE 계정의 정책을 보여줍니다. 이 정책을 통해 사용자는 CodePipeline 콘솔에서 MyFirstPipeline
이라는 이름의 파이프라인을 볼 수 있지만 변경할 수는 없습니다. 이 정책의 기반은 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" } ] }
다음 예제는 사용자가 80398EXAMPLE 계정에서 라는 역할을 수임할 수 있도록 허용하는 111111111111
AWS 계정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 해야 합니다. 자세한 내용과 단계별 예시는 다른 AWS 계정의 리소스를 사용하는 CodePipeline에서 파이프라인을 생성 및 CodePipeline의 Amazon S3에 저장된 아티팩트에 대해 서버 측 암호화 구성 단원을 참조하십시오.
다음 예는 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에서 구성하고 CodeDeploy의 EC2 인스턴스 역할에 적용한 정책을 보여줍니다. 이 정책에서는 AccountA가 S3 버킷에 액세스하여 파이프라인 아티팩트(codepipeline-us-east-2-1234567890
)를 저장하도록 허용합니다.
{ "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에서 생성되고 AccountB가 사용하도록 구성된 고객 관리형 키의 ARN AWS KMS 인 정책을 보여줍니다.arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
{ "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
" ] } ] }
다음 예는 AccountB가 만든 IAM 역할(CrossAccount_Role
)에 대한 인라인 정책으로, AccountA에서 파이프라인에 필요한 CodeDeploy 작업에 액세스를 허용합니다.
{ "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단계: 파이프라인 편집 단원을 참조하십시오.