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

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

모든 AWS 리소스는 AWS 계정의 소유이고 리소스 생성 또는 액세스 권한은 권한 정책에 따라 결정됩니다. 계정 관리자는 IAM ID(즉, 사용자, 그룹, 역할)에 권한 정책을 연결할 수 있고, 일부 서비스(예: AWS Lambda)에서는 리소스에 대한 권한 정책 연결도 지원합니다.

참고

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

권한을 부여하려면 권한을 부여 받을 사용자, 권한 대상이 되는 리소스, 해당 리소스에 허용되는 특정 작업을 결정합니다.

Amazon Redshift 리소스 및 작업

Amazon Redshif에서는 IAM 권한 정책에 사용할 수 있는 서비스별 리소스, 작업 및 조건 컨텍스트 키를 제공합니다.

Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한

액세스 제어을 설정하면 IAM 자격 증명에 연결할 수 있는 권한 정책(자격 증명 기반 정책)을 작성할 수 있습니다. 자세한 참조 정보는 서비스 권한 부여 참조의 다음 주제를 참조하세요.

서비스 승인 참조에는 IAM 정책에서 사용할 수 있는 API 작업에 대한 정보가 포함되어 있습니다. 또한 권한을 부여할 수 있는 AWS 리소스와 세분화된 액세스 제어에 포함할 수 있는 조건 키가 포함되어 있습니다. 조건에 대한 자세한 내용은 IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현 단원을 참조하십시오.

정책의 Action 필드에서 작업을 지정하고, Resource 필드에서 리소스 값을 지정하고, Condition 필드에서 조건을 지정합니다. Amazon Redshift에 대한 작업을 지정하려면 redshift: 접두사 다음에 API 작업 이름을 사용합니다(예: redshift:CreateCluster).

리소스 소유권 이해

리소스 소유자는 리소스를 만든 AWS계정입니다. 즉, 리소스 소유자는 리소스를 생성하는 요청을 인증하는 AWS보안 주체 엔터티(루트 계정, IAM 사용자 또는 IAM 역할)의 계정입니다. 다음 예에서는 이러한 작동 방식을 설명합니다.

  • AWS 계정의 루트 계정 자격 증명을 사용하여 DB 클러스터를 생성하는 경우, AWS 계정이 Amazon Redshift 리소스 소유자가 됩니다.

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

  • AWS 계정에서 IAM 사용자를 생성하고 Amazon Redshift 리소스 생성 권한을 부여하면 해당 사용자는 Amazon Redshift 리소스를 생성할 수 있습니다. 하지만 해당 사용자가 속한 AWS 계정이 Amazon Redshift 리소스를 소유합니다. 대부분의 경우 이 방법은 권장되지 않습니다. IAM 역할을 생성하고 역할에 권한을 연결한 다음 사용자에게 역할을 할당하는 것이 좋습니다.

리소스 액세스 관리

권한 정책은 누가 무엇에 액세스할 수 있는지 설명합니다. 다음 섹션에서는 권한 정책을 생성하는 데 사용할 수 있는 옵션에 대해 설명합니다.

참고

이 섹션에서는 Amazon Redshift의 맥락에서 IAM을 사용하는 방법에 대해 설명하며, IAM 서비스에 대한 자세한 정보는 다루지 않습니다. IAM 설명서 전체 내용은 IAM 사용 설명서IAM이란 무엇인가요? 단원을 참조하세요. IAM 정책 구문과 설명에 대한 자세한 내용은 IAM User GuideAWS IAM policy reference 섹션을 참조하세요.

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

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

정책을 IAM 역할에 연결한 다음 해당 역할을 사용자 또는 그룹에 할당하여 권한을 할당할 수 있습니다. 다음은 사용자에게 AWS 계정의 Amazon Redshift 클러스터를 생성, 삭제, 수정 및 재부팅하도록 허용하는 권한을 포함한 예시 정책입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowManageClusters", "Effect":"Allow", "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource":"*" } ] }

Amazon Redshift에서 자격 증명 기반 정책 사용에 대한 자세한 내용은 Amazon Redshift에 대한 자격 증명 기반 정책(IAM 정책) 사용 섹션을 참조하세요. 사용자, 그룹, 역할 및 권한에 대한 자세한 내용은 IAM User GuideIdentities (users, groups, and roles)를 참조하세요.

리소스 기반 정책

Amazon S3과 같은 다른 서비스도 리소스 기반 권한 정책을 지원합니다. 예를 들어, 정책을 S3 버킷에 연결하여 해당 버킷에 대한 액세스 권한을 관리할 수 있습니다. Amazon Redshift에서는 리소스 기반 정책을 지원하지 않습니다. 

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

각 Amazon Redshift 리소스(Amazon Redshift 리소스 및 작업 참조)에 대해 서비스는 API 작업을 정의합니다(작업 참조). 이러한 API 작업에 대한 권한을 부여하기 위해 Amazon Redshift에서는 정책에서 지정할 수 있는 작업을 정의합니다. API 작업을 실시하려면 둘 이상의 작업에 대한 권한이 필요할 수 있습니다.

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

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

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

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

  • 보안 주체 – ID 기반 정책(IAM 정책)에서 정책이 연결되는 사용자는 암시적인 보안 주체입니다. 리소스 기반 정책의 경우, 사용자, 계정, 서비스 또는 권한의 수신자인 기타 개체를 지정합니다(리소스 기반 정책에만 해당). Amazon Redshift에서는 리소스 기반 정책을 지원하지 않습니다.

IAM 정책 구문과 설명에 대한 자세한 내용은 IAM User GuideAWS IAM policy reference를 참조하세요.

모든 Amazon Redshift API 작업과 해당 작업이 적용되는 리소스를 보여주는 표는 Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한 섹션을 참조하세요.

정책에서 조건 지정

권한을 부여할 때 액세스 정책 언어를 사용하여 조건이 적용되는 조건을 지정할 수 있습니다. 예를 들어, 특정 날짜 이후에만 정책을 적용할 수 있습니다. 액세스 정책 언어에서 조건 지정에 대한 자세한 내용은 IAM User GuideIAM JSON policy elements: Condition을 참조하세요.

권한 정책이 적용되는 조건을 식별하려면 Condition 요소를 IAM 권한 정책에 포함시킵니다. 예를 들어, 사용자가 redshift:CreateCluster 작업을 사용하여 DB 인스턴스를 만들 수 있도록 허용하는 정책을 만들 수 있으며 Condition 요소를 추가하여 해당 사용자가 MySQL 데이터베이스 엔진을 사용하여 DB 인스턴스만 만들 수 있도록 제한할 수 있습니다. 세부 정보는 IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현을 참조하세요. 모든 조건 키 값과 이 값이 적용되는 Amazon Redshift 작업 및 리소스를 보여주는 목록은 Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한 섹션을 참조하세요.

IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현

Amazon Redshift에서는 리소스 태그에 따라 조건 키를 사용하여 리소스에 대한 액세스를 제한할 수 있습니다. 다음은 공통의 Amazon Redshift 조건 키입니다.

조건 키 설명

aws:RequestTag

사용자에게 리소스를 생성할 때마다 태그 키(이름)와 값을 추가하도록 요구합니다. 자세한 내용은 IAM User Guideaws:RequestTag를 참조하세요.

aws:ResourceTag

특정 태그 키 및 값에 따라 리소스에 대한 사용자 액세스를 제한합니다. 자세한 내용은 IAM User Guideaws:ResourceTag를 참조하세요.

aws:TagKeys

이 키를 사용하여 요청의 태그 키를 정책에서 지정한 키와 비교합니다. 자세한 내용은 IAM User Guideaws:TagKeys를 참조하세요.

태그를 생성하는 방법에 대한 자세한 내용은 태그 지정 개요 단원을 참조하십시오.

redshift:RequestTagredshift:ResourceTag 조건 키를 지원하는 API 작업 목록은 Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한 단원을 참조하십시오.

다음 조건 키는 Amazon Redshift GetClusterCredentials 작업과 함께 사용할 수 있습니다.

조건 키 설명

redshift:DurationSeconds

기간에 대해 지정할 수 있는 시간(초)을 제한합니다.

redshift:DbName

지정할 수 있는 데이터베이스 이름을 제한합니다.

redshift:DbUser

지정할 수 있는 데이터베이스 사용자 이름을 제한합니다.

예 1: aws:ResourceTag 조건 키를 사용한 액세스 제한

다음 IAM 정책을 사용하여 us-west-2 리전에서 이름이 environment인 태그와 값이 test인 태그가 있는 특정 AWS 계정에 한해 사용자에게 Amazon Redshift 클러스터를 수정하도록 허용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowModifyTestCluster", "Effect": "Allow", "Action": "redshift:ModifyCluster", "Resource": "arn:aws:redshift:us-west-2:123456789012:cluster:*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "test" } } } }

예 2: aws:RequestTag 조건 키를 사용한 액세스 제한

다음 IAM 정책을 사용하여 클러스터 생성 명령에 이름이 usage인 태그와 값이 production인 태그를 추가한 경우에 한해 사용자에게 Amazon Redshift 클러스터를 생성하도록 허용할 수 있습니다. aws:TagKeysForAllValues 한정자가 있는 조건은 요청에서 costcenterusage 키만 지정할 수 있도록 지정합니다.

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCreateProductionCluster", "Effect": "Allow", "Action": [ "redshift:CreateCluster", "redshift:CreateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/usage": "production" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "costcenter", "usage" ] } } } }