IAM 역할을 사용하여 COPY, UNLOAD, CREATE EXTERNAL FUNCTION 및 CREATE EXTERNAL SCHEMA 작업에 대한 권한 부여 - Amazon Redshift

IAM 역할을 사용하여 COPY, UNLOAD, CREATE EXTERNAL FUNCTION 및 CREATE EXTERNAL SCHEMA 작업에 대한 권한 부여

COPY 명령을 사용하여 데이터를 Amazon Redshift에 로드(또는 가져오기)하고 UNLOAD 명령을 사용하여 Amazon Redshift에서 데이터를 언로드(또는 내보내기)할 수 있습니다. CREATE EXTERNAL FUNCTION 명령을 사용하여 AWS Lambda에서 함수를 호출하는 사용자 정의 함수를 생성할 수 있습니다.

Amazon Redshift Spectrum을 사용하면 CREATE EXTERNAL SCHEMA 명령을 사용하여 데이터가 들어있는 Amazon S3 버킷의 위치를 지정할 수 있습니다. COPY, UNLOAD 또는 CREATE EXTERNAL SCHEMA 명령을 실행할 때 보안 자격 증명을 제공합니다. 이러한 자격 증명을 통해 Amazon Redshift 클러스터는 Amazon S3 버킷과 같은 대상에서 데이터를 읽거나 쓸 수 있습니다.

CREATE EXTERNAL FUNCTION을 실행할 때 IAM 역할 파라미터를 사용하여 보안 자격 증명을 제공합니다. 이러한 자격 증명은 AWS Lambda에서 Lambda 함수를 호출하도록 Amazon Redshift 클러스터에 권한을 부여합니다. 보안 자격 증명을 제공하는 데 선호되는 방법은 AWS Identity and Access Management(IAM) 역할을 지정하는 것입니다. COPY 및 UNLOAD의 경우 임시 자격 증명을 제공할 수 있습니다. IAM 역할 생성에 대한 자세한 내용은 Amazon Redshift가 사용자를 대신하여 다른 AWS 서비스에 액세스할 수 있도록 권한 부여 섹션을 참조하세요.

사용자가 AWS Management Console 외부에서 AWS와 상호 작용하려면 프로그래밍 방식의 액세스가 필요합니다. 프로그래밍 방식으로 액세스를 부여하는 방법은 AWS에 액세스하는 사용자 유형에 따라 다릅니다.

사용자에게 프로그래밍 방식 액세스 권한을 부여하려면 다음 옵션 중 하나를 선택합니다.

프로그래밍 방식 액세스가 필요한 사용자는 누구인가요? To 액세스 권한을 부여하는 사용자

작업 인력 ID

(IAM Identity Center가 관리하는 사용자)

임시 보안 인증 정보를 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다.

사용하고자 하는 인터페이스에 대한 지침을 따릅니다.

IAM 임시 보안 인증 정보를 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. IAM 사용 설명서의 AWS 리소스와 함께 임시 보안 인증 정보 사용에 나와 있는 지침을 따르세요.
IAM

(권장되지 않음)

장기 보안 인증 정보를 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다.

사용하고자 하는 인터페이스에 대한 지침을 따릅니다.

IAM 역할 사용 단계는 다음과 같습니다.

  • Amazon Redshift 클러스터에서 사용할 IAM 역할을 생성합니다.

  • IAM 역할을 클러스터와 연결합니다.

  • COPY, UNLOAD, CREATE EXTERNAL SCHEMA 또는 CREATE EXTERNAL FUNCTION 명령을 호출할 때 IAM 역할의 ARN을 포함합니다.

이 주제에서는 IAM 역할을 Amazon Redshift 클러스터와 연결하는 방법을 알아봅니다.

IAM 역할을 클러스터와 연결

Amazon Redshift가 다른 AWS 서비스에 액세스하도록 권한을 부여하는 IAM 역할을 만든 후에는 해당 역할을 Amazon Redshift 클러스터와 연결해야 합니다. 역할을 사용하여 데이터를 로드하거나 언로드하려면 먼저 이 작업을 수행해야 합니다.

IAM 역할을 클러스터와 연결하는 데 필요한 권한

IAM 역할을 클러스터와 연결하려면 사용자에게 해당 IAM 역할에 대한 iam:PassRole 권한이 필요합니다. 이 권한을 통해 관리자는 사용자가 Amazon Redshift 클러스터와 연결할 수있는 IAM 역할을 제한 할 수 있습니다. 가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 Amazon Redshift의 Identity and Access Management를 참조하세요.

다음은 이러한 작업이 가능하도록 사용자에게 추가할 수 있는 IAM 정책 예입니다.

  • 해당 사용자의 계정이 소유한 모든 Amazon Redshift 클러스터에 대한 세부 정보를 가져옵니다.

  • 3가지 IAM 역할 중 하나를 2개의 Amazon Redshift 클러스터 중 하나와 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" }, { "Effect": "Allow", "Action": [ "redshift:ModifyClusterIamRoles", "redshift:CreateCluster" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "arn:aws:redshift:us-east-1:123456789012:cluster:my-second-redshift-cluster" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/MyRedshiftRole", "arn:aws:iam::123456789012:role/SecondRedshiftRole", "arn:aws:iam::123456789012:role/ThirdRedshiftRole" ] } ] }

사용자에게 적절한 권한이 부여되면 해당 사용자는 Amazon Redshift 클러스터와 IAM 역할을 연결할 수 있습니다. 그런 다음 IAM 역할은 COPY 또는 UNLOAD 명령이나 다른 Amazon Redshift 명령과 함께 사용할 수 있습니다.

IAM 정책에 대한 자세한 내용은 IAM User GuideOverview of IAM policies를 참조하세요.

클러스터와 IAM 역할 연결 관리

클러스터를 생성할 때는 IAM 역할을 Amazon Redshift 클러스터와 연결할 수 있습니다. 또는 기존 클러스터를 수정하고 하나 이상의 IAM 역할 연결을 추가하거나 제거할 수 있습니다.

다음에 유의하세요.

  • 연결할 수 있는 최대 IAM 역할 수는 할당량에 따라 달라집니다.

  • IAM 역할을 여러 Amazon Redshift 클러스터와 연결할 수 있습니다.

  • IAM 역할과 클러스터가 동일한 AWS 계정에 의해 소유된 경우에만 IAM 역할을 Amazon Redshift 클러스터와 연결할 수 있습니다.

콘솔을 사용한 IAM 역할 연결 관리

IAM 역할과 클러스터의 연결은 다음 단계에 따라 콘솔에서 관리할 수 있습니다.

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

  2. 탐색 메뉴에서 클러스터(Clusters)를 선택한 후 업그레이드할 클러스터를 선택합니다.

  3. 작업(Actions)에서 IAM 역할 관리(Manage IAM roles)를 선택하여 클러스터와 연결된 현재 목록 IAM 역할을 표시합니다.

  4. IAM 역할 관리(Manage IAM roles) 페이지에서 추가하려는 사용 가능한 IAM 역할을 선택한 다음 Add IAM role(IAM 역할 추가)을 선택합니다.

  5. 완료(Done)를 선택하여 변경 사항을 저장합니다.

AWS CLI를 사용한 IAM 역할 연결 관리

다음과 같은 접근 방법을 사용하여 AWS CLI에서 클러스터에 대한 IAM 역할을 관리할 수 있습니다.

AWS CLI를 사용하여 클러스터와 IAM 역할 연결

클러스터를 생성할 때 IAM 역할을 클러스터와 연결하려면 --iam-role-arns 명령의 create-cluster 파라미터에서 IAM 역할의 Amazon 리소스 이름(ARN)을 지정해야 합니다. create-cluster 명령을 호출할 때 추가할 수 있는 최대 IAM 역할 수에는 할당량이 적용됩니다.

Amazon Redshift 클러스터와 IAM 역할의 연결 및 연결 해제는 비동기 프로세스입니다. IAM 역할과 클러스터의 모든 연결 상태는 describe-clusters 명령을 호출하여 확인할 수 있습니다.

다음은 IAM 역할 2개를 새롭게 생성한 클러스터인 my-redshift-cluster와 연결하는 예입니다.

aws redshift create-cluster \ --cluster-identifier "my-redshift-cluster" \ --node-type "dc1.large" \ --number-of-nodes 16 \ --iam-role-arns "arn:aws:iam::123456789012:role/RedshiftCopyUnload" \ "arn:aws:iam::123456789012:role/SecondRedshiftRole"

IAM 역할을 기존 Amazon Redshift 클러스터와 연결하려면 modify-cluster-iam-roles 명령의 --add-iam-roles 파라미터에 대한 IAM 역할의 Amazon 리소스 이름(ARN)을 지정합니다. modify-cluster-iam-roles 명령을 호출할 때 추가할 수 있는 최대 IAM 역할 수에는 할당량이 적용됩니다.

다음은 IAM 역할을 기존 클러스터인 my-redshift-cluster와 연결하는 예입니다.

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --add-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
AWS CLI를 사용하여 클러스터에서 IAM 역할의 연결 해제

클러스터에서 IAM 역할을 연결 해제하려면 modify-cluster-iam-roles 명령의 --remove-iam-roles 파라미터에서 IAM 역할의 ARN을 지정해야 합니다.modify-cluster-iam-roles modify-cluster-iam-roles 명령을 호출할 때 삭제할 수 있는 최대 IAM 역할 수에는 할당량이 적용됩니다.

다음은 my-redshift-cluster라는 클러스터에서 123456789012 AWS 계정에 속한 IAM 역할 연결을 제거하는 예입니다.

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --remove-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
AWS CLI를 사용하여 클러스터에 대한 IAM 역할 연결 나열

Amazon Redshift 클러스터와 관련된 모든 IAM 역할과 IAM 역할 연결의 상태를 나열하려면 describe-clusters 명령을 호출합니다. 그러면 다음 예 출력과 같이 클러스터와 연결되어 있는 IAM 역할 각각의 ARN이 IamRoles 목록으로 반환됩니다.

클러스터와 연결된 역할은 상태가 in-sync로 표시됩니다. 클러스터와 연결이 진행 중인 역할은 상태가 adding으로 표시됩니다. 클러스터와 연결 해제 중인 역할은 상태가 removing으로 표시됩니다.

{ "Clusters": [ { "ClusterIdentifier": "my-redshift-cluster", "NodeType": "dc1.large", "NumberOfNodes": 16, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... }, { "ClusterIdentifier": "my-second-redshift-cluster", "NodeType": "dc1.large", "NumberOfNodes": 10, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/ThirdRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... } ] }

AWS CLI 사용에 대한 자세한 내용은 AWS CLI User Guide를 참조하세요.