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 역할 연결을 관리하려면
  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 역할을 관리할 수 있습니다.

클러스터를 생성할 때 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 "ra3.4xlarge" \ --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"

클러스터에서 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": "ra3.4xlarge", "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": "ra3.4xlarge", "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를 참조하세요.