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

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

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) 을 사용하며 가상 계정을 포함합니다. 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를 사용하도록 파이프라인을 구성하는 경우 해당 통합에 대한 별도의 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 파이프라인을 사용자가 볼 수 있지만 변경할 수는 없도록 허용하는 80398 EXAMPLE 계정의 정책을 보여줍니다. 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" }

이 정책을 생성한 후에는 80398 EXAMPLE 계정에서 IAM 역할을 생성하고 정책을 해당 역할에 연결합니다. 역할의 신뢰 관계에서 이 역할을 수임하는 AWS 계정을 추가해야 합니다. 다음 예는 다음과 같은 사용자를 허용하는 정책을 보여줍니다.111111111111 AWS 80398 EXAMPLE 계정에 정의된 역할을 수임하기 위한 계정:

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

다음 예는 에서 만든 정책을 보여줍니다.111111111111 AWS 사용자가 80398 EXAMPLE 계정에 지정된 역할을 수임할 수 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에 대한 액세스 권한을 부여합니다. 다음 예제에서 ARN AccountB의 값은 입니다. 012ID_ACCOUNT_B S3 버킷의 ARN 경우 입니다. codepipeline-us-east-2-1234567890 ARNs이를 액세스를 허용하려는 S3 버킷 및 계정으로 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 역할에 정책을 적용하는 방법에 대한 자세한 내용은 역할 수정을 참조하십시오. 다음 예시에서는 012ID_ACCOUNT_B ARN AccountB용입니다.

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

다음 예는 AccountB에서 구성하고 EC2인스턴스 역할에 적용한 정책을 보여줍니다. CodeDeploy 이 정책은 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에서 arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE 생성되고 AccountB가 해당 키를 사용할 수 있도록 구성된 고객 관리 키의 AWS KMS 위치에 대한 정책을 보여줍니다. ARN

{ "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단계: 파이프라인 편집 단원을 참조하십시오.