AWS CodeBuild 리소스에 대한 액세스 권한 관리 개요 - AWS CodeBuild

AWS CodeBuild 리소스에 대한 액세스 권한 관리 개요

모든 AWS 리소스는 AWS 계정의 소유이고, 리소스 생성 또는 리소스 액세스 권한은 권한 정책에 따라 결정됩니다. 계정 관리자는 IAM 자격 증명(사용자, 그룹 및 역할)에 권한 정책을 연결할 수 있습니다.

참고

계정 관리자 또는 관리자 사용자는 관리자 권한이 있는 사용자입니다. 자세한 내용은 IAM 사용 설명서IAM 모범 사례를 참조하십시오.

권한을 부여할 때는 권한을 부여 받을 사용자, 사용자가 액세스할 수 있는 리소스 및 해당 리소스에 수행할 수 있는 작업을 결정합니다.

AWS CodeBuild 리소스 및 작업

AWS CodeBuild에서는 기본 리소스가 빌드 프로젝트입니다. 정책에서 Amazon 리소스 이름(ARN)을 사용하여 정책이 적용되는 리소스를 식별합니다. 빌드도 리소스이며 빌드에는 이와 연결된 ARN이 들어 있습니다. 자세한 내용은 Amazon 자원 이름(ARN) 및 AWS 서비스 네임스페이스Amazon Web Services 일반 참조.

리소스 유형 ARN 형식
빌드 프로젝트

arn:aws:codebuild:region-ID:account-ID:project/project-name

빌드

arn:aws:codebuild:region-ID:account-ID:build/build-ID

보고서 그룹 arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name
보고서 arn:aws:codebuild:region-ID:account-ID:report/report-ID

모든 CodeBuild 리소스

arn:aws:codebuild:*

지정한 AWS 리전에서 지정한 계정이 소유한 모든 CodeBuild 리소스

arn:aws:codebuild:region-ID:account-ID:*

참고

대부분의 AWS 서비스는 콜론(:) 또는 슬래시(/)를 ARN에서 동일한 문자로 처리합니다. 그러나 CodeBuild는 리소스 패턴 및 규칙에서 정확히 일치를 사용합니다. 따라서 이벤트 패턴을 만들 때 리소스에서 ARN 구문이 일치하도록 정확한 문자를 사용해야 합니다.

예를 들어, 특정 구축 프로젝트를myBuildProject)를 사용하여 다음과 같이 진술합니다.

"Resource": "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject"

모든 리소스를 지정해야 하거나, API 작업이 ARN을 지원하지 않는 경우 다음과 같이 Resource 요소에 와일드카드 문자(*)를 사용합니다.

"Resource": "*"

일부 CodeBuild API 작업에서는 여러 리소스 사용을 허용합니다(예: BatchGetProjects). 명령문 하나에 여러 리소스를 지정하려면 다음과 같이 각 ARN을 쉼표로 구분합니다.

"Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject", "arn:aws:codebuild:us-east-2:123456789012:project/myOtherBuildProject" ]

CodeBuild은(는) CodeBuild 리소스를 처리하기 위한 작업을 제공합니다. 목록을 보려면 AWS CodeBuild 권한 참조 단원을 참조하십시오.

리소스 소유권 이해

AWS 계정은 리소스를 누가 생성했든 상관없이 계정에서 생성된 리소스를 소유합니다. 특히, 리소스 소유자는 리소스 생성 요청을 인증하는 보안 주체 개체(즉, 루트 계정, IAM 사용자 또는 IAM 역할)의 AWS 계정입니다. 다음 예에서는 이 계정의 작동 방식을 설명합니다.

  • AWS 계정의 루트 계정 자격 증명을 사용하여 규칙을 생성하면, AWS 계정이 CodeBuild 리소스의 소유자가 됩니다.

  • AWS 계정에서 IAM 사용자를 생성하고 CodeBuild 리소스를 생성할 수 있는 권한을 해당 사용자에게 부여하면 해당 사용자는 CodeBuild 리소스를 생성할 수 있습니다. 하지만 해당 사용자가 속한 AWS 계정이 CodeBuild 리소스를 소유합니다.

  • AWS 계정에서 CodeBuild 리소스를 생성할 권한이 있는 IAM 역할을 만드는 경우, 해당 역할을 담당할 수 있는 사람은 누구나 CodeBuild 리소스를 생성할 수 있습니다. 이 경우 역할이 속한 AWS 계정이 CodeBuild 리소스를 소유합니다.

리소스 액세스 관리

권한 정책은 누가 어떤 리소스에 액세스 할 수 있는지를 나타냅니다.

참고

이 단원에서는 AWS CodeBuild에서 IAM을 사용하는 방법에 대해 설명하며, IAM 서비스에 대한 자세한 정보는 다루지 않습니다. 전체 IAM 설명서는 IAMIAM 사용 설명서이란 무엇입니까?를 참조하십시오. 에 대한 정보 IAM 정책 구문 및 Fixlet, 참조 AWS IAM 정책 참조IAM 사용 설명서.

IAM 자격 증명에 연결된 정책은 자격 증명 기반 정책(IAM 정책)이라고 합니다. 리소스에 연결된 정책은 리소스 기반 정책이라고 합니다. CodeBuild는 자격 증명 기반 정책(IAM 정책)만 지원합니다.

자격 증명 기반 정책

정책을 IAM 자격 증명에 연결할 수 있습니다.

  • 계정 내 사용자 또는 그룹에 권한 정책 연결 – AWS CodeBuild 콘솔에서 빌드 프로젝트 및 다른 AWS CodeBuild 리소스를 볼 수 있는 권한을 사용자에게 부여하려면 권한 정책을 사용자 또는 해당 사용자가 속한 그룹에 연결하면 됩니다.

  • 역할에 권한 정책 연결(교차 계정 권한 부여) – 자격 증명 기반 권한 정책을 IAM 역할에 연결하여 교차 계정 권한을 부여할 수 있습니다. 예를 들어 계정 A의 관리자는 다음과 같이 다른 AWS 계정(예: 계정 B) 또는 AWS 서비스에 교차 계정 권한을 부여할 역할을 생성할 수 있습니다.

    1. 계정 A 관리자는 IAM 역할을 생성하고 계정 A의 리소스에 대한 권한을 부여하는 역할에 권한 정책을 연결합니다.

    2. 계정 A 관리자는 계정 B를 역할을 수임할 보안 주체로 식별하는 역할에 신뢰 정책을 연결합니다.

    3. 계정 B 관리자는 계정 B의 사용자에게 역할을 수임할 권한을 위임할 수 있습니다. 그러면 계정 B의 사용자가 계정 A에서 리소스를 생성하거나 액세스할 수 있습니다. AWS 서비스에 역할 수임 권한을 부여할 경우 신뢰 정책의 보안 주체는 AWS 서비스 보안 주체이기도 해야 합니다.

    IAM을 사용하여 권한을 위임하는 방법에 대한 자세한 내용은 https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html의 IAM 사용 설명서액세스 관리를 참조하십시오.

CodeBuild에서는 자격 증명 기반 정책을 사용하여 배포 프로세스에 관련된 리소스에 대한 권한을 관리합니다. 예를 들어, 빌드 프로젝트에 대한 액세스를 제어할 수 있습니다.

IAM 정책을 생성하여 계정의 사용자가 액세스할 수 있는 호출 및 리소스를 제한한 다음, 해당 정책을 IAM 사용자에게 연결할 수 있습니다. IAM 역할 생성 방법 및 CodeBuild용 IAM 정책 설명 예제를 살펴보는 방법에 대한 자세한 내용은 AWS CodeBuild 리소스에 대한 액세스 권한 관리 개요 단원을 참조하십시오.

S3 버킷에 대한 보안 액세스

IAM 역할에 다음 권한을 포함시켜 CodeBuild 프로젝트와 연결된 S3 버킷이 사용자 또는 사용자가 신뢰할 수 있는 사람의 소유인지 확인할 것을 적극 권장합니다. 이러한 권한은 AWS 관리형 정책 및 역할에 포함되지 않습니다. 사용자가 직접 추가해야 합니다.

  • s3:GetBucketACL

  • s3:GetBucketLocation

프로젝트에서 사용되는 S3 버킷 소유자가 변경될 경우에는 사용자가 해당 버킷을 아직도 소유하고 있는지 확인하고 아닐 경우에는 사용자의 IAM 역할에 권한을 업데이트해야 합니다. 자세한 내용은 IAM 그룹 또는 IAM 사용자에게 CodeBuild 액세스 권한 추가CodeBuild 서비스 역할 생성 단원을 참조하십시오.

정책 요소 지정: 조치, 영향 및 책임

각 AWS CodeBuild 리소스에 대해 서비스는 일련의 API 작업을 정의합니다. 이러한 API 작업에 대한 권한을 부여하기 위해 CodeBuild에서는 정책에서 지정할 수 있는 작업을 정의합니다. 일부 API 작업에서는 API 작업을 수행하기 위해 복수의 작업에 대한 권한이 필요할 수 있습니다. 자세한 내용은 AWS CodeBuild 리소스 및 작업AWS CodeBuild 권한 참조 단원을 참조하십시오.

다음은 기본 정책 요소입니다.

  • 리소스 – Amazon 리소스 이름(ARN)을 사용하여 정책을 적용할 리소스를 식별합니다.

  • 작업 – 작업 키워드를 사용하여 허용 또는 거부할 리소스 작업을 식별합니다. 예를 들어, codebuild:CreateProject 권한은 사용자에게 CreateProject 작업 수행 권한을 제공합니다.

  • 효과 – 사용자가 작업을 요청하는 경우 효과(허용 또는 거부)를 지정합니다. 명시적으로 리소스에 대한 액세스 권한을 부여(허용)하지 않는 경우, 액세스는 묵시적으로 거부됩니다. 리소스에 대한 액세스를 명시적으로 거부할 수도 있습니다. 다른 정책에서 액세스 권한을 부여하더라도 사용자가 해당 리소스에 액세스할 수 없도록 하려고 할 때 이러한 작업을 수행할 수 있습니다.

  • 보안 주체 – 자격 증명 기반 정책(IAM 정책)에서 정책이 연결되는 사용자는 암시적인 보안 주체입니다. 리소스 기반 정책의 경우 사용자, 계정, 서비스 또는 권한의 수신자인 기타 엔터티를 지정합니다.

자세한 정보 IAM 정책 구문 및 Fixlet, 참조 AWS IAM 정책 참조IAM 사용 설명서.

모든 CodeBuild API 작업과 해당 작업이 적용되는 리소스를 보여주는 표는 AWS CodeBuild 권한 참조 단원을 참조하십시오.