내용으로 건너뛰기

CodePipeline에서 Access Denied 오류 또는 권한 문제를 해결하려면 어떻게 해야 합니까?

2분 분량
0

AWS CodePipeline에 파일을 업로드할 때 ‘Access Denied’ 오류가 발생합니다.

해결 방법

Amazon Simple Storage Service(Amazon S3) 버킷에 대한 권한이 충분하지 않아 ‘Access Denied’ 또는 권한 오류가 발생할 수 있습니다. AWS Identity and Access Management(IAM) 사용자 및 역할에 올바른 권한을 연결하지 않은 경우에도 오류가 발생할 수 있습니다.

사용자 권한

CodePipeline 리소스를 만들고 관리할 수 있는 AWS 관리형 정책 권한이 IAM 사용자에게 연결되어 있는지 확인합니다.

CodePipeline 서비스 역할

CodePipeline과 연결된 서비스 역할에 AWS 서비스와 상호 작용할 권한이 있는지 확인하십시오.

서비스 역할 명령문을 편집하여 사용하지 않는 리소스에 대한 액세스를 제거하거나 추가합니다. 서비스 역할 명령문을 편집하여 특정 리소스에 대한 권한을 제한하려면 리소스 값에 Amazon 리소스 이름(ARN)을 포함하십시오. 다음 CodePipeline 서비스 역할 정책 예제를 리소스에 연결하여 최소 권한을 부여합니다.

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

참고: pipeArtifactBucketNames를 S3 버킷 이름으로 바꾸고 accountId를 AWS 계정 ID로 바꾸십시오.

CodePipeline 아티팩트 버킷

파이프라인 아티팩트를 저장하는 S3 버킷에 대한 버킷 정책 및 권한을 올바르게 할당했는지 확인합니다.

교차 계정 액세스는 교차 계정 CodeCommit 리포지토리를 사용하여 CodePipeline 소스 단계를 구성하려면 어떻게 해야 합니까?의 계정 B의 CodePipeline 아티팩트 버킷에 대한 버킷 정책 업데이트 섹션을 참조하십시오.

AWS KMS 권한

암호화에 사용되는 AWS Key Management Service(AWS KMS) 키에 교차 계정 리소스의 권한을 부여하는 키 정책이 있는지 확인합니다.  다음 예제 정책을 IAM 역할에 연결하여 교차 계정 역할에 KMS 키를 사용할 수 있는 권한을 추가합니다.

{
    "Sid": "Allow use of the key",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::account_B:role/cross_account_role_name", // allows access to cross account role
      "AWS": "arn:aws:iam::account_B:root" // allows access to any role for account_B
    },
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt",
      "kms:ReEncrypt*",
      "kms:GenerateDataKey*",
      "kms:DescribeKey"
    ],
    "Resource": "*"
}

참고: account_B:role/cross_account_role_name을 ARN으로 바꾸십시오.

CodeConnections 권한

AWS CodeConnections를 사용하는 파이프라인의 경우, 연결에 소스 리포지토리에 액세스할 수 있는 권한이 있는지 확인하십시오. 목록에 일부 리포지토리만 포함된 경우 타사 SCM(소스 제어 관리) 시스템에 설치된 커넥터 애플리케이션에 제한이 있을 수 있습니다.

이 문제를 해결하려면 리포지토리에 액세스할 수 있는 SCM의 애플리케이션을 업데이트하십시오. SCM에서 리포지토리 액세스를 확인하려면 리포지토리 액세스 설정을 검토하십시오. CodeConnections를 사용하여 파이프라인에 타사 소스 공급자를 추가할 수 있습니다.

AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠