Using identity-based policies (IAM policies) for Amazon Redshift - Amazon Redshift

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Using identity-based policies (IAM policies) for Amazon Redshift

이 항목에서는 계정 관리자가 IAM 자격 증명(사용자, 그룹, 역할)에 권한 정책을 연결할 수 있는 자격 증명 기반 정책의 예를 제공합니다.

중요

Amazon Redshift 리소스에 대한 액세스 관리를 위해 제공되는 기본 개념과 옵션 설명에 대한 소개 주제 부분을 우선 읽어 보는 것이 좋습니다. 자세한 정보는 Overview of managing access permissions to your Amazon Redshift resources 단원을 참조하십시오.

다음은 권한 정책의 예입니다. 이 정책은 사용자에게 모든 클러스터를 생성, 삭제, 수정 및 재부팅할 수 있도록 허용한 후 클러스터 식별자가 production으로 시작되는 모든 클러스터를 삭제 또는 수정하는 권한을 거부합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowClusterManagement", "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid":"DenyDeleteModifyProtected", "Action": [ "redshift:DeleteCluster", "redshift:ModifyCluster" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:cluster:production*" ], "Effect": "Deny" } ] }

이 정책에는 두 명령문이 있습니다:

  • The first statement grants permissions for a user to a user to create, delete, modify, and reboot clusters. The statement specifies a wildcard character (*) as the Resource value so that the policy applies to all Amazon Redshift resources owned by the root AWS account.

  • The second statement denies permission to delete or modify a cluster. The statement specifies a cluster Amazon Resource Name (ARN) for the Resource value that includes a wildcard character (*). As a result, this statement applies to all Amazon Redshift clusters owned by the root AWS account where the cluster identifier begins with production.

Permissions required to use Redshift Spectrum

Amazon Redshift Spectrum에서 리소스에 액세스하려면 다른 AWS 서비스에 대한 권한이 필요합니다. 에 대한 IAM 정책의 권한 세부 정보 Redshift Spectrum, 참조: Amazon Redshift 스펙트럼에 대한 IAM 정책 in the Amazon Redshift Database Developer Guide.

Permissions required to use the Amazon Redshift console

사용자가 Amazon Redshift 콘솔로 작업하려면 AWS 계정에 대한 Amazon Redshift 리소스를 입력하도록 허용하는 최소 권한이 있어야 합니다. 이러한 권한이 있어야만 사용자가 Amazon EC2 보안 및 네트워크 정보 등 다른 관련 정보를 입력할 수 있습니다.

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔은 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다. 이 사용자가 Amazon Redshift 콘솔을 사용할 수 있도록 하려면 AmazonRedshiftReadOnlyAccess 관리형 정책을 사용자에게 연결합니다(AWS-managed (predefined) policies for Amazon Redshift 참조).

Amazon Redshift 콘솔에서 쿼리 편집기에 액세스할 수 있는 권한을 제공하려면 AmazonRedshiftQueryEditor 관리형 정책을 연결합니다.

AWS CLI 또는 Amazon Redshift API만 호출하는 사용자에게 최소 콘솔 권한을 허용할 필요가 없습니다.

Permissions required to use the Amazon Redshift scheduler

Amazon Redshift 스케줄러를 사용하는 경우 Amazon Redshift 스케줄러가 사용자를 대신하여 권한을 맡을 수 있도록 스케줄러(scheduler.redshift.amazonaws.com)와 신뢰 관계가 있는 IAM 역할을 설정합니다. 또한 예약하려는 Amazon Redshift API 작업의 역할에 정책(권한)을 연결합니다.

다음 예제는 Amazon Redshift 스케줄러 및 Amazon Redshift와 신뢰 관계를 설정하기 위한 정책 문서를 JSON 형식으로 보여줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "scheduler.redshift.amazonaws.com", "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

트러스트 엔터티에 대한 자세한 내용은 AWS 서비스에 대한 권한을 위임하기 위한 역할 생성 in the IAM 사용 설명서.

또한 예약하려는 Amazon Redshift 작업에 대한 권한을 추가해야 합니다.

스케줄러가 ResizeCluster 작업을 사용하려면 IAM 정책에 다음과 유사한 권한을 추가하십시오. 환경에 따라 정책을 보다 제한적으로 만들 수 있습니다.

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

역할에 대한 역할을 생성하는 단계에 대해 Amazon Redshift 스케줄러, 참조 AWS 서비스 역할 생성(콘솔) in the IAM 사용 설명서. 이 옵션을 사용하여 IAM 콘솔:

  • For Choose the service that will use this role: Choose Redshift.

  • For Select your use case: Choose Redshift - Scheduler.

  • Create or attach a policy to the role that allows an Amazon Redshift operation to be scheduled. Choose Create policy or modify the role to attach a policy. Enter the JSON policy for the operation that is to be scheduled.

  • After you create the role, edit the Trust Relationship of the IAM role to include the service redshift.amazonaws.com.

만드는 IAM 역할은 신뢰할 수 있는 scheduler.redshift.amazonaws.com and redshift.amazonaws.com. 또한 지원되는 정책을 통해 Amazon Redshift 다음과 같은 API 작업 "redshift:ResizeCluster".

Resource policies for GetClusterCredentials

IAM 데이터베이스 자격 증명이 있는 JDBC 또는 ODBC 연결을 이용해 클러스터 데이터베이스에 연결하려거나 GetClusterCredentials 작업을 프로그래밍 방식으로 호출하려면 최소한의 권한이 필요합니다. 적어도 dbuser 리소스에 대한 액세스 권한과 redshift:GetClusterCredentials 작업을 호출할 수 있는 권한이 필요합니다.

serverport 대신 JDBC 또는 ODBC 연결을 사용하는 경우 cluster_idregion을 지정할 수 있습니다. 단, 그렇게 하려면 사용자 정책이 redshift:DescribeClusters 작업을 허용하고 cluster 리소스에 액세스 권한이 있어야 합니다.

선택적 파라미터 Autocreate, DbGroupsDbName을 사용해 GetClusterCredentials을 호출하는 경우 그러한 작업을 허용하고, 다음 표에 나열된 리소스에 대한 액세스를 허용해야 합니다.

GetClusterCredentials 파라미터

작업

Resource

Autocreate

redshift:CreateClusterUser

dbuser

DbGroups

redshift:JoinGroup

dbgroup

DbName

NA dbname

리소스에 대한 자세한 내용은 Amazon Redshift resources and operations 단원을 참조하십시오.

정책에 다음의 조건도 포함할 수 있습니다.

  • redshift:DurationSeconds

  • redshift:DbName

  • redshift:DbUser

조건에 대한 자세한 내용은 Specifying conditions in a policy 단원을 참조하십시오.

AWS-managed (predefined) policies for Amazon Redshift

AWS는 AWS에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 관리형 정책은 사용자가 필요한 권한을 조사할 필요가 없도록 일반 사용 사례에 필요한 권한을 부여합니다. 자세한 내용은 AWS 관리 정책 in the IAM 사용 설명서.

계정의 사용자에게 연결할 수 있는 다음 AWS 관리형 정책은 Amazon Redshift에 대해 고유합니다.

  • AmazonRedshiftReadOnlyAccess – Grants read-only access to all Amazon Redshift resources for the AWS account.

  • AmazonRedshiftFullAccess – Grants full access to all Amazon Redshift resources for the AWS account.

  • AmazonRedshiftQueryEditor – Grants full access to the Query Editor on the Amazon Redshift console.

Amazon Redshift API 작업 및 리소스에 대한 권한을 허용하는 고유의 사용자 지정 IAM 정책을 생성할 수도 있습니다. 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다.

Customer managed policy examples

이 단원에서는 다양한 Amazon Redshift 작업에 대한 권한을 부여하는 사용자 정책의 예를 제공합니다. 이러한 정책은 Amazon Redshift API, AWS SDK 또는 AWS CLI를 사용하는 경우에 적용됩니다.

참고

모든 예제는 미국 서부(오레곤) 리전(us-west-2)을 사용하며 가상의 계정 ID를 포함합니다.

Example 1: Allow user full access to all Amazon Redshift actions and resources

다음 정책은 모든 리소스를 사용하는 Amazon Redshift 작업 모두에 대한 액세스 권한을 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowRedshift", "Action": [ "redshift:*" ], "Effect": "Allow", "Resource": "*" } ] }

Action 요소에서 redshift:* 값은 Amazon Redshift의 모든 작업을 의미합니다.

Example 2: Deny a user access to a set of Amazon Redshift actions

기본적으로 모든 권한을 거부합니다. 하지만 간혹 특정 작업 또는 작업 집합에 대한 액세스를 명시적으로 거부해야 하는 경우도 있습니다. 다음 정책은 모든 항목에 액세스할 수 있습니다. Amazon Redshift 어떤 경우에도 Amazon Redshift 이름이 시작되어 Delete. 본 정책은 Amazon Redshift 자원 us-west-2.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowUSWest2Region", "Action": [ "redshift:*" ], "Effect": "Allow", "Resource": "arn:aws:redshift:us-west-2:*" }, { "Sid":"DenyDeleteUSWest2Region", "Action": [ "redshift:Delete*" ], "Effect": "Deny", "Resource": "arn:aws:redshift:us-west-2:*" } ] }

Example 3: Allow a user to manage clusters

다음 정책은 사용자에게 모든 클러스터를 생성, 삭제, 수정 및 재부팅할 수 있도록 허용한 후 클러스터 이름이 protected으로 시작되는 모든 클러스터를 삭제하는 권한을 거부합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowClusterManagement", "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid":"DenyDeleteProtected", "Action": [ "redshift:DeleteCluster" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:cluster:protected*" ], "Effect": "Deny" } ] }

Example 4: Allow a user to authorize and revoke snapshot access

다음 정책은 사용자(사용자 A)에게 아래와 같은 작업을 허용합니다.

  • Authorize access to any snapshot created from a cluster named shared.

  • Revoke snapshot access for any snapshot created from the shared cluster where the snapshot name starts with revokable.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowSharedSnapshots", "Action": [ "redshift:AuthorizeSnapshotAccess" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:shared/*" ], "Effect": "Allow" }, { "Sid":"AllowRevokableSnapshot", "Action": [ "redshift:RevokeSnapshotAccess" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:*/revokable*" ], "Effect": "Allow" } ] }

사용자 A가 사용자 B에게 스냅샷에 대한 액세스를 허용한 경우에는 다음과 같이 사용자 B에게 스냅샷에서 클러스터를 복원할 수 있는 정책이 할당되어야 합니다. 다음 정책은 사용자 B에게 스냅샷에 대해 설명한 후 이를 통해 복원하거나, 클러스터를 생성할 수 있는 권한을 허용합니다. 클러스터의 이름은 from-other-account로 시작해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowDescribeSnapshots", "Action": [ "redshift:DescribeClusterSnapshots" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid":"AllowUserRestoreFromSnapshot", "Action": [ "redshift:RestoreFromClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:*/*", "arn:aws:redshift:us-west-2:444455556666:cluster:from-other-account*" ], "Effect": "Allow" } ] }

Example 5: Allow a user to copy a cluster snapshot and restore a cluster from a snapshot

다음 정책은 사용자에게 big-cluster-1이라는 이름의 클러스터에서 생성된 모든 스냅샷을 복사한 후 그 중에서 이름이 snapshot-for-restore로 시작하는 스냅샷을 복원하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowCopyClusterSnapshot", "Action": [ "redshift:CopyClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:big-cluster-1/*" ], "Effect": "Allow" }, { "Sid":"AllowRestoreFromClusterSnapshot", "Action": [ "redshift:RestoreFromClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:*/snapshot-for-restore*", "arn:aws:redshift:us-west-2:123456789012:cluster:*" ], "Effect": "Allow" } ] }

다음 예 정책은 Amazon Redshift, Amazon Simple Notification Service(Amazon SNS) 및 Amazon CloudWatch에 대한 모든 작업 및 리소스에 대한 액세스를 허용합니다. 또한 해당 계정에서 관련된 모든 Amazon EC2 리소스에 대한 지정된 작업을 허용합니다.

참고

이 정책 예에서 지정하는 Amazon EC2 작업은 리소스 수준 권한이 지원되지 않습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowRedshift", "Effect": "Allow", "Action": [ "redshift:*" ], "Resource": [ "*" ] }, { "Sid":"AllowSNS", "Effect": "Allow", "Action": [ "sns:*" ], "Resource": [ "*" ] }, { "Sid":"AllowCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:*" ], "Resource": [ "*" ] }, { "Sid":"AllowEC2Actions", "Effect": "Allow", "Action": [ "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:AttachNetworkInterface", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": [ "*" ] } ] }

Example policy for using GetClusterCredentials

다음 정책은 다음과 같은 샘플 파라미터 값을 사용합니다.

  • Region: us-west-2

  • AWS Account: 123456789012

  • Cluster name: examplecluster

다음 정책은 GetCredentials, CreateClusterUser, JoinGroup 작업을 허용합니다. 정책은 GetClusterCredentials and CreateClusterUser AWS 사용자 ID가 일치하는 경우에만 "AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}@yourdomain.com". IAM 액세스 요청이 "testdb" 데이터베이스만. 또한 이 정책은 사용자가 "common_group"이라는 그룹을 조인할 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetClusterCredsStatement", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/${redshift:DbUser}", "arn:aws:redshift:us-west-2:123456789012:dbname:examplecluster/testdb", "arn:aws:redshift:us-west-2:123456789012:dbgroup:examplecluster/common_group" ], "Condition": { "StringEquals": { "aws:userid":"AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}@yourdomain.com" } } }, { "Sid": "CreateClusterUserStatement", "Effect": "Allow", "Action": [ "redshift:CreateClusterUser" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/${redshift:DbUser}" ], "Condition": { "StringEquals": { "aws:userid":"AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}@yourdomain.com" } } }, { "Sid": "RedshiftJoinGroupStatement", "Effect": "Allow", "Action": [ "redshift:JoinGroup" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbgroup:examplecluster/common_group" ] } ] } } }