CloudFront 리소스에 대한 액세스 권한 관리 개요 - Amazon CloudFront

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

모든 AWS 리소스는 AWS 계정의 소유이고, 리소스 생성 또는 리소스 액세스 권한은 권한 정책에 따라 결정됩니다.

참고

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

권한을 부여할 때 권한을 받는 사용자, 받는 권한의 대상이 되는 리소스, 받는 권한으로 수행할 수 있는 작업을 결정합니다.

CloudFront 리소스의 ARN

웹 및 RTMP 배포, 무효화, 원본 액세스 ID 등의 모든 CloudFront 리소스는 Amazon 리소스 이름(ARN)에 동일한 형식을 사용합니다.

arn:aws:cloudfront::optional-account-id:*

CloudFront는 이러한 각 유형의 리소스에서 작업하기 위한 API 작업을 제공합니다. 자세한 내용은 Amazon CloudFront API Reference단원을 참조하십시오. 작업과 각 작업을 사용할 권한을 부여하거나 거부하기 위해 지정하는 ARN의 목록은 CloudFront API 권한: 작업, 리소스 및 조건 참조 단원을 참조하십시오.

리소스 소유권 이해

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

다음 예에서는 이 계정의 작동 방식을 설명합니다.

  • AWS 계정의 루트 계정 자격 증명을 사용하여 웹 배포를 생성하는 경우 AWS 계정이 배포의 소유자입니다.

  • AWS 계정에서 IAM 사용자를 생성하고 해당 사용자에게 웹 배포를 생성할 수 있는 권한을 부여하는 경우 이 사용자가 웹 배포를 생성할 수 있습니다. 사용자를 생성한 AWS 계정이 배포를 소유합니다.

  • AWS 계정에서 웹 배포를 생성할 권한이 있는 IAM 역할을 생성하는 경우 해당 역할을 담당할 수 있는 사람은 누구나 웹 배포를 생성할 수 있습니다. 이 경우 역할이 속한 AWS 계정이 배포를 소유합니다.

리소스 액세스 관리

권한 정책은 누가 무엇에 액세스 할 수 있는지를 지정합니다. 이 단원에서는 CloudFront에 대한 권한 정책을 생성하기 위한 옵션을 설명합니다. IAM 정책 구문과 설명에 대한 일반적인 내용은 IAM 사용 설명서AWS IAM 정책 참조를 참조하십시오.

IAM 자격 증명에 연결된 정책을 자격 증명 기반 정책(IAM 정책)이라고 하고, 리소스에 연결된 정책을 리소스 기반 정책이라고 합니다. CloudFront는 리소스 기반 정책을 지원하지 않지만 리소스 수준 정책을 지원합니다. 리소스 액세스 관리가 지원하는 권한 정책 유형에 대한 자세한 내용은 CloudFront 단원을 참조하십시오.

자격 증명 기반 정책(IAM 정책)

정책을 IAM 자격 증명에 연결할 수 있습니다. 예를 들면,

  • 계정 내 사용자 또는 그룹에 권한 정책 연결 –계정 관리자는 특정 사용자에 연결된 권한 정책을 사용하여 해당 사용자에게 웹 배포 만들기 권한을 부여할 수 있습니다.

  • 역할에 권한 정책 연결(교차 계정 권한 부여) – 다른 AWS 계정에서 생성된 사용자에게 CloudFront 작업을 수행할 권한을 부여할 수 있습니다. 이렇게 하려면 권한 정책을 IAM 역할에 연결한 다음 다른 계정의 사용자가 역할을 담당할 수 있도록 허용합니다. 다음 예제에서는 계정 A와 계정 B라는 두 개의 AWS 계정에 대해 이 작업을 적용하는 방법을 설명합니다.

    1. 계정 A 관리자는 IAM 역할을 생성하고 계정 A가 소유한 리소스를 생성하거나 액세스할 권한을 부여하는 권한 정책을 역할에 연결합니다.

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

    3. 그런 다음 계정 B 관리자는 역할을 담당할 권한을 계정 B의 사용자 또는 그룹에게 위임할 수 있습니다. 이렇게 하면 계정 B의 사용자가 계정 A에서 리소스를 생성하거나 액세스할 수 있습니다.

    다른 AWS 계정의 사용자에게 권한을 위임하는 방법에 대한 자세한 내용은 IAM 사용 설명서액세스 관리를 참조하십시오.

다음 예제 정책은 사용자가 CreateDistribution 작업을 수행하여 AWS 계정에 대한 웹 배포를 프로그래밍 방식으로 생성할 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudfront:CreateDistribution" ], "Resource":"*" } ] }

CloudFront 콘솔을 사용하여 작업을 수행하는 데 필요한 권한에 대한 자세한 내용은 CloudFront 콘솔 사용에 필요한 권한 단원을 참조하십시오. CloudFront 자격 증명에 정책 연결에 대한 자세한 내용은 CloudFront에 대한 자격 증명 기반 정책(IAM 정책) 사용 단원을 참조하십시오. 사용자, 그룹, 역할 및 권한에 대한 자세한 내용은 IAM 사용 설명서자격 증명(사용자, 그룹 및 역할)을 참조하십시오.

리소스 수준 정책

일부 시나리오에서는 지정한 리소스에 대한 특정 수준의 액세스 권한을 부여할 수 있습니다. 예를 들어, 해당 리소스에 대한 특정 작업에 대한 액세스만 부여할 수 있습니다. 일부 AWS 서비스에서 이 정책을 구현하는 한 가지 방법은 리소스에 대한 정책을 직접 연결하도록 허용하는 것입니다. 예를 들면, Amazon S3와 Elasticsearch에서 리소스 액세스 제어를 구현하는 방법이 있습니다. CloudFront는 동일한 유연성을 허용하지만 다른 방법을 사용합니다. 정책을 리소스에 연결하는 대신, 정책에서 리소스를 지정합니다.

예를 들어, 다음 정책은 배포의 ARN별로 지정한 배포에 대한 업데이트, 삭제 및 생성 무효화 액세스를 허용할 수 있는 방법을 보여 줍니다. 이 정책은 AWS API 또는 AWS CLI에서만 이러한 작업을 완료하는 데 필요한 권한을 부여합니다. (이 정책을 사용하려면 정책 예제의 기울임꼴 텍스트를 자신의 리소스 정보로 바꾸십시오.)

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "cloudfront:CreateDistribution", "cloudfront:Get*", "cloudfront:List*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "cloudfront:UpdateDistribution", "cloudfront:DeleteDistribution", "cloudfront:CreateInvalidation", ], "Resource": "arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE" } ] }

태그 기반 정책

IAM 정책을 설계할 때 특정 리소스에 대한 액세스 권한을 부여하여 세부적인 권한을 설정할 수 있습니다. 관리하는 리소스의 개수가 늘어날수록 이 작업은 더 어려워집니다. 리소스에 태그를 지정하고 정책 문 조건에서 태그를 사용하면 이러한 작업이 더 간단해질 수 있습니다. 특정 태그를 사용하여 리소스에 대량으로 액세스 권한을 부여합니다. 그런 다음 생성 중 또는 나중에 이 태그를 관련 리소스에 반복해서 적용합니다.

참고

조건에 태그를 사용하는 것은 리소스 및 요청에 대한 액세스를 제어하는 하나의 방법입니다. CloudFront의 태그 지정에 대한 자세한 내용은 Amazon CloudFront 배포에 태그 지정 단원을 참조하십시오.

리소스에 태그가 연결되거나 태그 지정을 지원하는 서비스에 대한 요청에서 전달될 수 있습니다. CloudFront에서는 리소스에 태그가 있을 수 있으며 일부 작업에 태그가 포함될 수 있습니다. IAM 정책을 생성할 때 태그 조건 키를 사용하여 다음을 제어할 수 있습니다.

  • 이미 가지고 있는 태그를 기반으로 어떤 사용자가 배포에 대해 작업을 수행할 수 있는지를 제어합니다.

  • 어떤 태그가 작업의 요청에서 전달될 수 있는지 제어합니다.

  • 요청에서 특정 키를 사용할 수 있는지 여부를 제어합니다.

태그 조건 키의 전체 구문 및 의미는 IAM 사용 설명서IAM 태그를 사용한 액세스 제어를 참조하십시오.

예를 들어, AWSCloudFrontFullAccess 관리형 정책은 사용자에게 모든 리소스에서 모든 CloudFront 작업을 수행할 수 있는 무제한적인 권한을 부여합니다. 다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자가 CloudFront 프로덕션 배포를 생성할 수 있는 권한을 거부합니다.

태그를 사용하여 제한을 구현하려면 정책은 요청이 gamma 또는 prod 값 중 하나를 사용하여 stage라는 태그를 지정하는 경우 CreateDistribution 작업을 거부합니다. 또한 정책은 이러한 동일한 태그 값을 포함하거나 stage 태그를 완전하게 제거하기 위한 태그 수정 작업을 허용하지 않음으로써 이러한 권한이 없는 사용자가 프로덕션 환경의 단계를 변경하지 못하도록 합니다. 고객의 관리자는 관리형 사용자 정책 이외에 이 IAM 정책도 권한이 없는 IAM 사용자에게 연결해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudfront:CreateDistribution", "cloudfront:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/stage": [ "gamma", "prod" ] } } }, { "Effect": "Deny", "Action": [ "cloudfront:TagResource", "cloudfront:UntagResource" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "stage" ] }, "StringEquals": { "aws:ResourceTag/stage": [ "gamma", "prod" ] } } } ] }

정책 요소 지정: 리소스, 작업, 효과, 보안 주체

CloudFront에는 각 CloudFront 리소스에서 사용할 수 있는 API 작업(Amazon CloudFront API Reference 참조)이 포함됩니다(CloudFront 리소스의 ARN 참조). 사용자 또는 연합된 사용자에게 이러한 작업 중 하나 또는 전부를 수행할 권한을 부여할 수 있습니다.

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

  • 리소스 – Amazon 리소스 이름(ARN)을 사용하여 정책을 적용할 리소스를 식별합니다. 자세한 내용은 CloudFront 리소스의 ARN 단원을 참조하십시오.

  • 작업 – 작업 키워드를 사용하여 허용 또는 거부할 리소스 작업을 식별합니다. 예를 들어, 지정된 Effect에 따라 cloudfront:CreateDistribution 권한은 CloudFront CreateDistribution 작업을 수행할 사용자 권한을 허용하거나 거부합니다.

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

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

    CloudFront는 리소스 기반 정책을 지원하지 않지만 리소스 수준 정책을 지원합니다. 리소스 액세스 관리가 지원하는 권한 정책 유형에 대한 자세한 내용은 CloudFront 단원을 참조하십시오.

IAM 정책 구문과 설명에 대한 자세한 내용은 IAM 사용 설명서AWS IAM 정책 참조를 참조하십시오.

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

정책에서 조건 지정

권한을 부여할 때 IAM 정책 언어를 사용하여 정책이 언제 적용되는지를 지정할 수 있습니다. 예를 들어, 특정 날짜 이후에만 정책을 적용할 수 있습니다. 정책 언어에서의 조건 지정에 관한 자세한 내용은 IAM 사용 설명서조건 단원을 참조하십시오.

조건을 표시하려면 미리 정의된 조건 키를 사용합니다. CloudFront에만 해당되는 특정한 조건 키는 없습니다. 하지만 적절하게 사용할 수 있는 AWS 차원의 조건 키가 있습니다. AWS 차원 키의 전체 목록은 IAM 사용 설명서사용 가능한 조건 키 단원을 참조하십시오.