Amazon Redshift의 기본값으로 IAM 역할 생성 - Amazon Redshift

Amazon Redshift의 기본값으로 IAM 역할 생성

Redshift 콘솔을 통해 IAM 역할을 생성하면 Amazon Redshift가 프로그래밍 방식으로 AWS 계정에 역할을 생성하고 기존 AWS 관리형 정책을 자동으로 해당 역할에 연결합니다. 이 접근 방식을 사용하면 Redshift 콘솔 내에 머물면서 역할 생성을 위해 IAM 콘솔로 전환할 필요가 없습니다. Amazon Redshift 콘솔에서 생성된 기존 IAM 역할에 대한 권한을 보다 세부적으로 제어하기 위해 IAM 역할에 사용자 지정된 관리형 정책을 연결할 수 있습니다.

콘솔에서 생성된 IAM 역할의 개요

Amazon Redshift 콘솔을 사용하여 IAM 역할을 생성하면 Amazon Redshift는 콘솔을 통해 생성된 모든 IAM 역할을 추적합니다. Amazon Redshift는 모든 새 클러스터를 생성하고 스냅샷에서 클러스터를 복원하기 위한 가장 최근의 기본 IAM 역할을 미리 선택합니다.

SQL 명령을 실행할 수 있는 권한을 가진 정책이 있는 콘솔을 통해 IAM 역할을 생성할 수 있습니다. 이러한 명령에는 COPY, UNLOAD, CREATE EXTERNAL FUNCTION, CREATE EXTERNAL TABLE, CREATE EXTERNAL SCHEMA, CREATE MODEL 또는 CREATE LIBRARY가 포함됩니다. 필요에 따라 사용자 정의 정책을 생성하고 IAM 역할에 연결하여 AWS 리소스에 대한 사용자 액세스를 보다 세부적으로 제어할 수 있습니다.

IAM 역할을 생성하고 콘솔을 사용하여 클러스터의 기본값으로 설정한 경우 인증 및 권한 부여를 수행하기 위해 IAM 역할의 Amazon 리소스 이름(ARN)을 제공할 필요가 없습니다.

콘솔에서 생성된 IAM 역할 사용

클러스터를 위해 콘솔을 통해 생성한 IAM 역할에는 AmazonRedshiftAllCommandsFullAccess 관리형 정책이 자동으로 연결됩니다. 이 IAM 역할을 통해 Amazon Redshift는 IAM 계정의 AWS 리소스에 대한 데이터를 복사, 언로드, 쿼리 및 분석할 수 있습니다. 관리형 정책으로 COPY, UNLOAD, CREATE EXTERNAL FUNCTION, CREATE EXTERNAL SCHEMA, CREATE MODEL, CREATE LIBRARY를 이용할 수 있습니다. 이 정책은 Amazon S3, Amazon CloudWatch Logs, Amazon SageMaker 및 AWS Glue와 같은 관련 AWS 서비스에 대해 SELECT 문을 실행할 수 있는 권한도 부여합니다.

CREATE EXTERNAL FUNCTION, CREATE EXTERNAL SCHEMA, CREATE MODEL 및 CREATE LIBRARY 명령에는 default 키워드가 있습니다. 이러한 명령에 대한 이 키워드의 경우 Amazon Redshift는 기본값으로 설정되고 명령이 실행될 때 클러스터와 연결된 IAM 역할을 사용합니다. DEFAULT_IAM_ROLE 명령을 실행하여 클러스터에 연결된 현재 기본 IAM 역할을 확인할 수 있습니다.

Redshift 클러스터에 대해 생성되고 기본값으로 설정된 IAM 역할의 액세스 권한을 제어하려면 ASSUMEROLE 권한을 사용합니다. 이 액세스 제어는 데이터베이스 사용자 및 그룹이 앞에 나열된 것과 같은 명령을 실행할 때 적용됩니다. IAM 역할에 대해 사용자 또는 그룹에 ASSUMEROLE 권한을 부여한 후 사용자 또는 그룹은 이러한 명령을 실행할 때 해당 역할을 수임할 수 있습니다. ASSUMEROLE 권한을 사용하여 필요에 따라 적절한 명령에 대한 액세스 권한을 부여할 수 있습니다.

Amazon Redshift 콘솔을 사용하여 다음 작업을 수행할 수 있습니다.

AmazonRedshiftAllCommandsFullAccess 관리형 정책의 권한

다음 예에서는 클러스터에 대해 기본값으로 설정된 IAM 역할에 대한 특정 작업을 허용하는 AmazonRedshiftAllCommandsFullAccess 관리형 정책의 권한을 보여줍니다. 권한 정책이 연결된 IAM 역할은 사용자 또는 그룹이 할 수 있는 것과 할 수 없는 것을 승인합니다. 이러한 권한이 주어지면 Amazon S3에서 COPY 명령을 실행하고 UNLOAD를 실행하고 CREATE MODEL 명령을 사용할 수 있습니다.

{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetBucketCors", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutBucketAcl", "s3:PutBucketCors", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:CreateBucket" ], "Resource": [ "arn:aws:s3:::redshift-downloads", "arn:aws:s3:::redshift-downloads/*", "arn:aws:s3:::*redshift*", "arn:aws:s3:::*redshift*/*" ] }

다음 예에서는 클러스터에 대해 기본값으로 설정된 IAM 역할에 대한 특정 작업을 허용하는 AmazonRedshiftAllCommandsFullAccess 관리형 정책의 권한을 보여줍니다. 권한 정책이 연결된 IAM 역할은 사용자 또는 그룹이 할 수 있는 것과 할 수 없는 것을 승인합니다. 다음 권한이 주어지면 CREATE EXTERNAL FUNCTION 명령을 실행할 수 있습니다.

{ "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:*redshift*" }

다음 예에서는 클러스터에 대해 기본값으로 설정된 IAM 역할에 대한 특정 작업을 허용하는 AmazonRedshiftAllCommandsFullAccess 관리형 정책의 권한을 보여줍니다. 권한 정책이 연결된 IAM 역할은 사용자 또는 그룹이 할 수 있는 것과 할 수 없는 것을 승인합니다. 다음 권한이 주어지면 Amazon Redshift Spectrum에 필요한 CREATE EXTERNAL SCHEMA 및 CREATE EXTERNAL TABLE 명령을 실행할 수 있습니다.

{ "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:*:table/*redshift*/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*redshift*" ] }

다음 예에서는 클러스터에 대해 기본값으로 설정된 IAM 역할에 대한 특정 작업을 허용하는 AmazonRedshiftAllCommandsFullAccess 관리형 정책의 권한을 보여줍니다. 권한 정책이 연결된 IAM 역할은 사용자 또는 그룹이 할 수 있는 것과 할 수 없는 것을 승인합니다. 다음 권한이 주어지면 연합 쿼리를 사용하여 CREATE EXTERNAL SCHEMA 명령을 실행할 수 있습니다.

{ "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:*Redshift*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/Redshift": "true" } } },

콘솔을 사용하여 클러스터에 대해 생성된 IAM 역할 관리

Amazon Redshift 콘솔에서 생성된 IAM 역할을 생성, 수정 및 제거하려면 콘솔의 클러스터(Clusters) 섹션을 사용합니다.

IAM 역할을 기본값으로 생성

콘솔에서 AmazonRedshiftAllCommandsFullAccess 정책이 자동으로 연결된 클러스터에 대한 IAM 역할을 생성할 수 있습니다. 생성하는 새 IAM 역할을 통해 Amazon Redshift가 IAM 계정의 Amazon 리소스에서 데이터를 복사, 로드, 쿼리 및 분석할 수 있습니다.

클러스터의 기본값으로 설정된 IAM 역할은 하나만 있을 수 있습니다. 기존 IAM 역할이 현재 기본값으로 할당된 경우 다른 IAM 역할을 클러스터 기본값으로 생성하면 새 IAM 역할이 다른 역할을 기본값으로 대체합니다.

새 클러스터와 해당 클러스터의 기본값으로 설정된 IAM 역할을 생성하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/redshiftv2/에서 Amazon Redshift 콘솔을 엽니다.

  2. 탐색 메뉴에서 클러스터(Clusters)를 선택합니다. 현재 AWS 리전의 계정에 대한 클러스터가 나열됩니다. 각 클러스터의 속성 하위 집합이 목록의 열에 표시됩니다.

  3. 클러스터를 생성하려면 클러스터 생성(Create cluster)을 선택합니다.

  4. 콘솔 페이지의 지침에 따라 클러스터 구성(Cluster configuration)에 속성을 입력합니다. 이 단계에 대한 자세한 내용은 클러스터 생성 섹션을 참조하세요.

  5. (선택 사항) 샘플 데이터 로드(Load sample data)를 선택하여 Amazon Redshift 클러스터에 샘플 데이터 집합을 로드하여 쿼리 편집기로 데이터 쿼리를 시작합니다.

    방화벽 뒤에 있는 경우 데이터베이스 포트는 인바운드 연결을 허용하는 개방형 포트여야 합니다.

  6. 콘솔 페이지의 지침에 따라 데이터베이스 구성(Database configurations)에 대한 속성을 입력합니다.

  7. 클러스터 권한(Cluster permissions)IAM 역할 관리(Manage IAM roles)에서 IAM 역할 생성(Create IAM role)을 선택합니다.

  8. 다음 방법 중 하나를 선택하여 IAM 역할이 액세스할 Amazon S3 버킷을 지정합니다.

    • 특정 Amazon S3 버킷을 지정하지 않고 IAM 역할을 생성하려면 추가 Amazon S3 버킷 없음(No additional Amazon S3 bucket)을 선택합니다.

    • Amazon Redshift 클러스터에 대한 액세스 권한이 있는 사용자가 AWS 계정에 있는 Amazon S3 버킷 및 해당 콘텐츠에도 액세스할 수 있도록 하려면 모든 Amazon S3 버킷(Any Amazon S3 bucket)을 선택합니다.

    • 특정 Amazon S3 버킷(Specific Amazon S3 buckets)을 선택하여 생성 중인 IAM 역할에 액세스 권한이 있는 하나 이상의 Amazon S3 버킷을 지정합니다. 그런 다음 테이블에서 Amazon S3 버킷을 하나 이상 선택합니다.

  9. 기본값으로 IAM 역할 생성(Create IAM role as default)을 선택합니다. Amazon Redshift는 IAM 역할을 자동으로 생성하고 클러스터의 기본값으로 설정합니다.

  10. 클러스터를 생성하려면 클러스터 생성(Create cluster)을 선택합니다. 클러스터를 사용할 준비가 끝나려면 몇 분이 걸릴 수 있습니다.

클러스터에서 IAM 역할 제거

클러스터에서 IAM 역할을 하나 이상 제거할 수 있습니다.

클러스터에서 IAM 역할을 제거하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/redshiftv2/에서 Amazon Redshift 콘솔을 엽니다.

  2. 탐색 메뉴에서 클러스터(Clusters)를 선택합니다. 현재 AWS 리전의 계정에 대한 클러스터가 나열됩니다. 각 클러스터의 속성 하위 집합이 목록의 열에 표시됩니다.

  3. IAM 역할을 제거할 클러스터를 선택합니다.

  4. 클러스터 권한(Cluster permissions)에서 클러스터에서 제거할 IAM 역할을 하나 이상 선택합니다.

  5. IAM 역할 관리(Manage IAM roles)에서 IAM 역할 제거(Remove IAM roles)를 선택합니다.

클러스터와 IAM 역할 연결

클러스터와 IAM 역할을 하나 이상 연결할 수 있습니다.

클러스터와 IAM 역할을 연결하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/redshiftv2/에서 Amazon Redshift 콘솔을 엽니다.

  2. 탐색 메뉴에서 클러스터(Clusters)를 선택합니다. 현재 AWS 리전의 계정에 대한 클러스터가 나열됩니다. 각 클러스터의 속성 하위 집합이 목록의 열에 표시됩니다.

  3. IAM 역할을 연결할 클러스터를 선택합니다.

  4. 클러스터 권한(Cluster permissions)에서 클러스터와 연결할 IAM 역할을 하나 이상 선택합니다.

  5. IAM 역할 관리(Manage IAM roles)에서 IAM 역할 연결(Associate IAM roles)을 선택합니다.

  6. 클러스터와 연결할 IAM 역할을 하나 이상 선택합니다.

  7. IAM 역할 연결(Associate IAM role)을 선택합니다.

IAM 역할을 기본값으로 설정

IAM 역할을 클러스터의 기본값으로 설정할 수 있습니다.

IAM 역할을 클러스터의 기본값으로 설정하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/redshiftv2/에서 Amazon Redshift 콘솔을 엽니다.

  2. 탐색 메뉴에서 클러스터(Clusters)를 선택합니다. 현재 AWS 리전의 계정에 대한 클러스터가 나열됩니다. 각 클러스터의 속성 하위 집합이 목록의 열에 표시됩니다.

  3. 기본 IAM 역할을 설정하려는 클러스터를 선택합니다.

  4. 클러스터 권한(Cluster permissions)연결된 IAM 역할(Associated IAM roles)에서 클러스터의 기본값으로 설정할 IAM 역할을 선택합니다.

  5. 기본값 설정(Set default)에서 기본값으로 설정(Make default)을 선택합니다.

  6. 메시지가 나타나면 기본값 설정(Set default)을 선택하여 지정된 IAM 역할을 기본값으로 설정하도록 확인합니다.

클러스터의 기본값으로 IAM 역할 설정 취소

클러스터의 기본값으로 IAM 역할 설정을 취소할 수 있습니다.

클러스터의 기본값으로 IAM 역할 설정을 취소하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/redshiftv2/에서 Amazon Redshift 콘솔을 엽니다.

  2. 탐색 메뉴에서 클러스터(Clusters)를 선택합니다. 현재 AWS 리전의 계정에 대한 클러스터가 나열됩니다. 각 클러스터의 속성 하위 집합이 목록의 열에 표시됩니다.

  3. IAM 역할을 연결할 클러스터를 선택합니다.

  4. 클러스터 권한(Cluster permissions)연결된 IAM 역할(Associated IAM roles)에서 기본 IAM 역할을 선택합니다.

  5. 기본값 설정(Set default)에서 기본값 지우기(Clear default)를 선택합니다.

  6. 메시지가 나타나면 기본값 지우기(Clear default)를 선택하여 지정된 IAM 역할의 기본값 설정을 취소합니다.

AWS CLI를 사용하여 클러스터에 생성된 IAM 역할 관리

AWS CLI를 사용하여 클러스터에 생성된 IAM 역할을 관리할 수 있습니다.

IAM 역할이 기본값으로 설정된 Amazon Redshift 클러스터를 생성하려면

IAM 역할이 클러스터의 기본값으로 설정된 Amazon Redshift 클러스터를 생성하려면 aws redshift create-cluster AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 Amazon Redshift 클러스터와 myrole1이라는 IAM 역할을 생성합니다. AWS CLI 명령은 또한 myrole1을 클러스터의 기본값으로 설정합니다.

aws redshift create-cluster \ --node-type dc2.large \ --number-of-nodes 2 \ --master-username adminuser \ --master-user-password TopSecret1 \ --cluster-identifier mycluster \ --iam-roles 'arn:aws:iam::012345678910:role/myrole1' 'arn:aws:iam::012345678910:role/myrole2' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole1'

다음은 코드 조각은 응답의 예입니다.

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "adding" } ] ... } }

Amazon Redshift 클러스터에 IAM 역할을 하나 이상 추가하려면

클러스터에 연결된 IAM 역할을 하나 이상 추가하려면 aws redshift modify-cluster-iam-roles AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에 myrole3myrole4를 추가합니다.

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --add-iam-roles 'arn:aws:iam::012345678910:role/myrole3' 'arn:aws:iam::012345678910:role/myrole4'

다음은 코드 조각은 응답의 예입니다.

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole4", "ApplyStatus": "adding" } ], ... } }

Amazon Redshift 클러스터에서 IAM 역할을 하나 이상 제거하려면

클러스터에 연결된 IAM 역할을 하나 이상 제거하려면 aws redshift modify-cluster-iam-roles AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에서 myrole3myrole4를 제거합니다.

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --remove-iam-roles 'arn:aws:iam::012345678910:role/myrole3' 'arn:aws:iam::012345678910:role/myrole4'

다음은 코드 조각은 응답의 예입니다.

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "removing" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole4", "ApplyStatus": "removing" } ], ... } }

연결된 IAM 역할을 클러스터의 기본값으로 설정하려면

연결된 IAM 역할을 클러스터의 기본값으로 설정하려면 aws redshift modify-cluster-iam-roles AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 myrole2를 클러스터의 기본값으로 설정합니다.

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole2'

다음은 코드 조각은 응답의 예입니다.

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" } ], ... } }

연결되지 않은 IAM 역할을 클러스터의 기본값으로 설정하려면

연결되지 않은 IAM 역할을 클러스터의 기본값으로 설정하려면 aws redshift modify-cluster-iam-roles AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 myrole2를 Amazon Redshift 클러스터에 추가하고 클러스터의 기본값으로 설정합니다.

aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --add-iam-roles 'arn:aws:iam::012345678910:role/myrole3' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole3'

다음은 코드 조각은 응답의 예입니다.

{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "adding" } ], ... } }

스냅샷에서 클러스터를 복원하고 IAM 역할을 클러스터의 기본값으로 설정하려면

스냅샷에서 클러스터를 복원할 때 기존 IAM 역할을 연결하거나 새 IAM 역할을 생성하여 클러스터의 기본값으로 설정할 수 있습니다.

스냅샷에서 Amazon Redshift 클러스터를 복원하고 IAM 역할을 클러스터 기본값으로 설정하려면 aws redshift restore-from-cluster-snapshot AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 스냅샷에서 클러스터를 복원하고 myrole2를 클러스터의 기본값으로 설정합니다.

aws redshift restore-from-cluster-snapshot \ --cluster-identifier mycluster-clone \ --snapshot-identifier my-snapshot-id --iam-roles 'arn:aws:iam::012345678910:role/myrole1' 'arn:aws:iam::012345678910:role/myrole2' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole1'

다음은 코드 조각은 응답의 예입니다.

{ "Cluster": { "ClusterIdentifier": "mycluster-clone", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "adding" } ], ... } }