기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CodePipeline 자격 증명 기반 정책 예시
기본적으로 IAM 사용자 및 역할에는 CodePipeline 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management Console AWS CLI, 또는 를 사용하여 작업을 수행할 수 없습니다 AWS API. IAM 관리자는 사용자 및 역할에 필요한 지정된 리소스에 대해 특정 API 작업을 수행할 수 있는 권한을 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자 또는 그룹에 해당 정책을 연결해야 합니다.
이러한 예제 정책 문서를 사용하여 IAM 자격 증명 기반 JSON 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서의 JSON 탭에서 정책 생성을 참조하세요.
다른 계정의 리소스를 사용하는 파이프라인을 생성하는 방법과 관련 예제 정책은 섹션을 참조하세요다른 AWS 계정의 리소스를 CodePipeline 사용하는 파이프라인을 에서 생성합니다..
주제
고객 관리형 정책 예
이 섹션에서는 다양한 CodePipeline 작업에 대한 권한을 부여하는 사용자 정책의 예를 찾을 수 있습니다. 이러한 정책은 CodePipeline API AWS SDKs, 또는 를 사용할 때 작동합니다 AWS CLI. 콘솔을 사용하는 경우 콘솔에 특정한 추가 권한을 부여해야 합니다. 자세한 내용은 CodePipeline 콘솔 사용에 필요한 권한 단원을 참조하십시오.
참고
모든 예제에서는 미국 서부(오레곤) 리전(us-west-2
)을 사용하고 가상 계정 을 포함합니다IDs.
예제
예 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와 간의 통합에 필요한 최소 권한이 있는 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 계정의 사용자가 해당 역할을 수임하고 파이프라인에 액세스할 수 있도록 허용해야 합니다. 자세한 내용은 연습: 역할을 사용한 교차 계정 액세스 단원을 참조하십시오.
다음 예제에서는 사용자가 CodePipeline 콘솔에 이름이 지정된 파이프라인을 볼 수 있지만 변경할 수 없는 80398EXAMPLE 계정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" } ] }
다음 예제는 에서 생성된 정책을 보여줍니다.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에 대한 액세스 권한을 부여합니다. 다음 예제에서 AccountBARN용 는 입니다012ID_ACCOUNT_B
. S3 버킷ARN의 는 입니다codepipeline-us-east-2-1234567890
. SARNsS3 버킷 및 액세스를 허용하려는 계정의 ARNs로 바꿉니다.
{ "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참조하세요. https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing.html 다음 예제에서는 가 AccountBARN용 012ID_ACCOUNT_B
입니다. AccountB
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::
012ID_ACCOUNT_B
:role/*" ] } }
다음 예제는 AccountB에서 구성하고 의 EC2 인스턴스 역할에 적용된 정책을 보여줍니다 CodeDeploy. 이 정책은 S3 AccountA에서 파이프라인 아티팩트(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
" ] } ] }
다음 예제는 AccountA 의 파이프라인에 필요한 작업에 대한 액세스를 허용하는 AccountB에서 생성한 IAM 역할(CrossAccount_Role
)에 대한 인라인 정책을 보여줍니다. CodeDeploy AccountA
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": "*" } ] }
다음 예제에서는 S3 버킷에 액세스하여 입력 아티팩트를 다운로드하고 출력 아티팩트를 업로드할 수 있도록 허용하는 AccountB에서 생성한 IAM 역할(CrossAccount_Role
)에 대한 인라인 정책을 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::
codepipeline-us-east-2-1234567890
/*" ] } ] }
리소스에 대한 교차 계정 액세스를 위해 파이프라인을 편집하는 방법에 대한 자세한 내용은 2단계: 파이프라인 편집 단원을 참조하십시오.