Amazon Redshift에 대한 자격 증명 기반 정책(IAM 정책) 사용
이 항목에서는 계정 관리자가 IAM ID(사용자, 그룹, 역할)에 권한 정책을 연결할 수 있는 ID 기반 정책의 예를 제공합니다.
중요
Amazon Redshift 리소스에 대한 액세스 관리를 위해 제공되는 기본 개념과 옵션 설명에 대한 소개 주제 부분을 먼저 읽어 보는 것이 좋습니다. 자세한 내용은 Amazon Redshift 리소스에 대한 액세스 권한 관리 개요 단원을 참조하십시오.
다음은 권한 정책의 예입니다. 이 정책은 사용자에게 모든 클러스터를 생성, 삭제, 수정 및 재부팅할 수 있도록 허용한 후 AWS 리전 us-west-2
및 AWS 계정 123456789012
에서 클러스터 식별자가 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" } ] }
이 정책에는 두 명령문이 있습니다:
-
첫 번째 문은 사용자에게 클러스터를 생성, 삭제, 수정 및 재부팅할 수 있는 권한을 부여합니다. 여기에서 와일드카드 문자(*)를
Resource
값으로 지정하면 루트 AWS 계정에 속한 모든 Amazon Redshift 리소스에게 정책이 적용됩니다. -
두 번째 문은 클러스터의 삭제 또는 수정 권한을 거부합니다. 여기에서는 와일드카드 문자(*)가 포함된
Resource
값에 클러스터 Amazon 리소스 이름(ARN)을 지정합니다. 그러면 루트 AWS 계정에서 클러스터 식별자가production
으로 시작하는 모든 Amazon Redshift 클러스터에 이 문이 적용됩니다.
Amazon Redshift에 대한 AWS 관리형 정책
AWS는 AWS에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 관리형 정책은 사용자가 필요한 권한을 조사할 필요가 없도록 일반 사용 사례에 필요한 권한을 부여합니다. 자세한 내용은 IAM User Guide의 AWS managed policies를 참조하세요.
Amazon Redshift API 작업 및 리소스에 대한 권한을 허용하는 고유의 사용자 정의 IAM 정책을 생성할 수도 있습니다. 해당 권한이 필요한 IAM 역할 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다.
다음 섹션에서는 계정의 사용자에게 연결할 수 있고 Amazon Redshift에 고유한 AWS 관리형 정책입니다.
AmazonRedshiftReadOnlyAccess
AWS 계정의 모든 Amazon Redshift 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.
AmazonRedshiftReadOnlyAccess
AmazonRedshiftFullAccess
AWS 계정의 모든 Amazon Redshift 리소스에 대한 전체 액세스 권한을 부여합니다. 또한 이 정책은 모든 Amazon Redshift Serverless 리소스에 대한 모든 액세스 권한을 부여합니다.
AmazonRedshiftFullAccess
AmazonRedshiftQueryEditor
Amazon Redshift 콘솔의 쿼리 편집기에 대한 전체 액세스 권한을 부여합니다.
AmazonRedshiftQueryEditor
AmazonRedshiftDataFullAccess
AWS 계정의 Amazon Redshift Data API 작업 및 리소스에 전체 액세스 권한을 부여합니다.
AmazonRedshiftDataFullAccess
AmazonRedshiftQueryEditorV2FullAccess
Amazon Redshift 쿼리 편집기 v2 작업 및 리소스에 대한 전체 액세스 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다.
AmazonRedshiftQueryEditorV2FullAccess
AmazonRedshiftQueryEditorV2NoSharing
리소스를 공유하지 않고 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다. 이 정책을 사용하는 보안 주체는 리소스(예: 쿼리)에 태그를 지정하여 동일한 AWS 계정의 다른 보안 주체와 리소스를 공유할 수 없습니다.
AmazonRedshiftQueryEditorV2NoSharing
AmazonRedshiftQueryEditorV2ReadSharing
제한된 리소스 공유로 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다. 이 정책을 사용하는 보안 주체는 리소스(예: 쿼리)에 태그를 지정하여 동일한 AWS 계정의 다른 보안 주체와 리소스를 공유할 수 없습니다. 부여된 보안 주체는 팀과 공유된 리소스를 읽을 수 있지만 업데이트할 수는 없습니다.
AmazonRedshiftQueryEditorV2ReadSharing
AmazonRedshiftQueryEditorV2ReadWriteSharing
리소스 공유와 함께 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다. 이 정책을 사용하는 보안 주체는 리소스(예: 쿼리)에 태그를 지정하여 동일한 AWS 계정의 다른 보안 주체와 리소스를 공유할 수 없습니다. 부여된 보안 주체는 팀과 공유하는 리소스를 읽고 업데이트할 수 있습니다.
AmazonRedshiftQueryEditorV2ReadWriteSharing
AmazonRedshiftServiceLinkedRolePolicy
AmazonRedshiftServiceLinkedRolePolicy를 IAM 엔터티에 연결할 수 없습니다. 이 정책은 Amazon Redshift가 계정 리소스에 액세스할 수 있도록 허용하는 서비스 연결 역할에 연결됩니다. 자세한 내용은 Amazon Redshift에 대해 서비스 연결 역할 사용을 참조하세요.
AmazonRedshiftServiceLinkedRolePolicy
AmazonRedshiftAllCommandsFullAccess
Amazon Redshift 콘솔에서 생성된 IAM 역할을 사용하고 클러스터가 Amazon S3, UNLOAD, CREATE EXTERNAL SCHEMA, CREATE EXTERNAL FUNCTION 및 CREATE MODEL 명령에서 COPY를 실행하기 위한 기본값으로 설정할 수 있는 권한을 부여합니다. 이 정책은 Amazon S3, CloudWatch Logs, Amazon SageMaker 또는 AWS Glue와 같은 관련 서비스에 대해 SELECT 문을 실행할 수 있는 권한도 부여합니다.
AmazonRedshiftAllCommandsFullAccess
Amazon Redshift API 작업 및 리소스에 대한 권한을 허용하는 고유의 사용자 정의 IAM 정책을 생성할 수도 있습니다. 해당 권한이 필요한 IAM 역할 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다.
AWS 관리형 정책에 대한 Amazon Redshift 업데이트
이 서비스가 이러한 변경 내용을 추적하기 시작한 이후부터 Amazon Redshift의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다. 이 페이지의 변경 사항에 대한 자동 알림을 받아보려면 Amazon Redshift 문서 기록 페이지에서 RSS 피드를 구독하세요.
변경 사항 | 설명 | 날짜 |
---|---|---|
AmazonRedshiftQueryEditorV2FullAccess - 기존 정책에 대한 업데이트 |
|
2024년 2월 21일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
|
2024년 2월 21일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
|
2024년 2월 21일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
|
2024년 2월 21일 |
AmazonRedshiftReadOnlyAccess -기존 정책 업데이트 |
관리형 정책에 작업 |
2024년 2월 7일 |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
|
2023년 10월 31일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
|
2023년 8월 16일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
|
2023년 8월 16일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
|
2023년 8월 16일 |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
보안 암호 생성 및 관리 작업을 위한 AWS Secrets Manager 작업 권한이 관리형 정책에 추가됩니다. 추가된 권한은 다음과 같습니다.
|
2023년 8월 14일 |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
Amazon EC2에서 보안 그룹 및 라우팅 규칙을 생성하고 관리하기 위한 작업 권한이 관리형 정책에서 제거됩니다. 이러한 권한은 서브넷 및 VPC 생성과 관련이 있습니다. 제거되는 권한은 다음과 같습니다.
|
2023년 5월 8일 |
AmazonRedshiftDataFullAccess -기존 정책 업데이트 |
관리형 정책에 작업 |
2023년 4월 7일 |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
Amazon EC2에서 보안 그룹 규칙을 생성하고 관리하기 위한 작업 권한이 관리형 정책에 추가됩니다. 이러한 보안 그룹 및 규칙은 특히 Amazon Redshift |
2023년 4월 6일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
관리형 정책에 작업 |
2023년 3월 21일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
관리형 정책에 작업 |
2023년 3월 21일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
관리형 정책에 작업 |
2023년 3월 21일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
관리형 정책에 작업 |
2023년 2월 2일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
관리형 정책에 작업 |
2023년 2월 2일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
관리형 정책에 작업 |
2023년 2월 2일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
노트북 사용 권한을 부여하기 위해 Amazon Redshift는 다음 작업에 대한 권한을 추가했습니다.
|
2022년 10월 17일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
노트북 사용 권한을 부여하기 위해 Amazon Redshift는 다음 작업에 대한 권한을 추가했습니다.
|
2022년 10월 17일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
노트북 사용 권한을 부여하기 위해 Amazon Redshift는 다음 작업에 대한 권한을 추가했습니다.
|
2022년 10월 17일 |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
Amazon Redshift에서 CloudWatch에 지표를 게시할 수 있도록 네임스페이스 |
2022년 9월 7일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
Amazon Redshift가 작업 |
2022년 8월 30일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
Amazon Redshift가 작업 |
2022년 8월 30일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
Amazon Redshift가 작업 |
2022년 8월 30일 |
AmazonRedshiftFullAccess -기존 정책 업데이트 |
Amazon Redshift Serverless에 대한 권한을 기존 AmazonRedshiftFullAccess 관리형 정책에 추가했습니다. |
2022년 7월 22일 |
AmazonRedshiftDataFullAccess -기존 정책 업데이트 |
Amazon Redshift에서 태그 키 RedshiftDataFullAccess 와 태그 값으로 태깅된 리소스에 대한 액세스 권한을 부여하기 위해 태그 aws:ResourceTag/RedshiftDataFullAccess 권한의 redshift-serverless:GetCredentials 기본 범위 지정 조건을 StringEquals 에서 StringLike 로 업데이트했습니다. |
2022년 7월 11일 |
AmazonRedshiftDataFullAccess -기존 정책 업데이트 |
Amazon Redshift에서 Amazon Redshift Serverless에 대한 임시 보안 인증을 위해 redshift-serverless:GetCredentials 를 허용하도록 새 권한을 추가했습니다. |
2022년 7월 8일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
Amazon Redshift가 |
2022년 6월 15일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
Amazon Redshift가 |
2022년 6월 15일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
Amazon Redshift가 |
2022년 6월 15일 |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
새로운 Amazon Redshift Serverless 엔드포인트에 대한 퍼블릭 액세스를 사용하기 위해 Amazon Redshift는 탄력적 IP 주소를 고객 계정에 있는 VPC 엔드포인트의 탄력적 네트워크 인터페이스에 할당하고 연결합니다. 이 작업은 서비스 연결 역할을 통해 제공된 권한을 사용하여 수행됩니다. 이 사용 사례를 지원하기 위해 탄력적 IP 주소를 할당 및 해제하는 작업이 Amazon Redshift Serverless 서비스 연결 역할에 추가되었습니다. |
2022년 5월 26일 |
AmazonRedshiftQueryEditorV2FullAccess -기존 정책 업데이트 |
작업 |
2022년 2월 22일 |
AmazonRedshiftQueryEditorV2NoSharing -기존 정책 업데이트 |
작업 |
2022년 2월 22일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
작업 |
2022년 2월 22일 |
AmazonRedshiftQueryEditorV2ReadWriteSharing -기존 정책 업데이트 |
작업 |
2022년 2월 22일 |
AmazonRedshiftQueryEditorV2ReadSharing -기존 정책 업데이트 |
관리형 정책에 작업 |
2022년 2월 22일 |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
Amazon Redshift는 Amazon Redshift 네트워크 및 VPC 리소스를 관리할 수 있도록 새로운 작업에 대한 권한을 추가했습니다. |
2021년 11월 22일 |
Amazon Redshift는 Amazon Redshift 콘솔에서 생성된 IAM 역할을 사용하도록 허용하고 클러스터가 Amazon S3, UNLOAD, CREATE EXTERNAL SCHEMA, CREATE EXTERNAL FUNCTION, CREATE MODEL 또는 CREATE LIBRARY 명령에서 COPY를 실행하기 위한 기본값으로 설정할 수 있도록 새 정책을 추가했습니다. |
2021년 11월 18일 | |
AmazonRedshiftServiceLinkedRolePolicy -기존 정책 업데이트 |
Amazon Redshift는 감사 로그 내보내기를 포함하여 Amazon Redshift CloudWatch 로그 그룹 및 로그 스트림을 관리할 수 있도록 새로운 작업에 대한 권한을 추가했습니다. |
2021년 11월 15일 |
AmazonRedshiftFullAccess -기존 정책 업데이트 |
Amazon Redshift는 모델 설명, DynamoDB, Redshift Spectrum 및 Amazon RDS 페더레이션을 허용하기 위한 새로운 권한을 추가했습니다. | 2021년 10월 7일 |
Amazon Redshift는 Amazon Redshift 쿼리 편집기 v2에 대한 전체 액세스를 허용하기 위한 새로운 정책을 추가했습니다. |
2021년 9월 24일 | |
Amazon Redshift는 리소스를 공유하지 않고 Amazon Redshift 쿼리 편집기 v2 사용을 허용하기 위한 새로운 정책을 추가했습니다. |
2021년 9월 24일 | |
Amazon Redshift는 Amazon Redshift 쿼리 편집기 v2 내에서 읽기 공유를 허용하기 위한 새로운 정책을 추가했습니다. |
2021년 9월 24일 | |
Amazon Redshift는 Amazon Redshift 쿼리 편집기 v2 내에서 읽기 및 업데이트 공유를 허용하기 위한 새로운 정책을 추가했습니다. |
2021년 9월 24일 | |
AmazonRedshiftFullAccess -기존 정책 업데이트 |
Amazon Redshift는 |
2021년 8월 18일 |
AmazonRedshiftDataFullAccess -기존 정책 업데이트 |
Amazon Redshift는 |
2021년 8월 12일 |
AmazonRedshiftDataFullAccess -기존 정책 업데이트 |
Amazon Redshift는 |
2021년 7월 27일 |
Amazon Redshift에서 변경 사항 추적 시작 |
Amazon Redshift가 AWS 관리형 정책에 대한 변경 내용 추적을 시작했습니다. |
2021년 7월 27일 |
Redshift Spectrum을 사용하는 데 필요한 권한
Amazon Redshift Spectrum에서 리소스에 액세스하려면 다른 AWS 서비스에 대한 권한이 필요합니다. Redshift Spectrum에 대한 IAM 정책의 권한에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 Amazon Redshift Spectrum에 대한 IAM 정책을 참조하세요.
Amazon Redshift 콘솔 사용에 필요한 권한
사용자가 Amazon Redshift 콘솔로 작업하려면 AWS 계정에 대한 Amazon Redshift 리소스를 입력하도록 허용하는 최소 권한이 있어야 합니다. 이러한 권한이 있어야만 사용자가 Amazon EC2 보안, Amazon CloudWatch, Amazon SNS 및 네트워크 정보 등 다른 관련 정보를 입력할 수 있습니다.
최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔은 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다. 이 사용자가 Amazon Redshift 콘솔을 사용할 수 있도록 하려면 AmazonRedshiftReadOnlyAccess
관리형 정책을 사용자에게 연결합니다. 이 작업을 수행하는 방법은 Amazon Redshift에 대한 AWS 관리형 정책에 설명되어 있습니다.
사용자에게 Amazon Redshift 콘솔의 쿼리 편집기에 대한 액세스 권한을 부여하는 방법에 대한 내용은 Amazon Redshift 콘솔 쿼피 편집기 사용에 필요한 권한 섹션을 참조하세요.
AWS CLI 또는 Amazon Redshift API만 호출하는 사용자에게 최소 콘솔 권한을 허용할 필요가 없습니다.
Amazon Redshift 콘솔 쿼피 편집기 사용에 필요한 권한
사용자가 Amazon Redshift 쿼리 편집기로 작업하려면 해당 사용자에게 Amazon Redshift 및 Amazon Redshift Data API 작업에 대한 최소 권한 집합이 있어야 합니다. 보안 암호를 사용하여 데이터베이스에 연결하려면 Secrets Manager 권한도 있어야 합니다.
사용자가 Amazon Redshift 콘솔에서 쿼리 편집기에 액세스할 수 있는 권한을 제공하려면 AmazonRedshiftQueryEditor
및 AmazonRedshiftReadOnlyAccess
AWS 관리형 정책을 연결합니다. AmazonRedshiftQueryEditor
정책은 사용자 권한이 자신의 SQL 문의 결과만 검색하도록 허용합니다. 즉, AmazonRedshiftQueryEditor
AWS 관리형 정책의 이 섹션에 표시된 것과 동일한 aws:userid
로 제출된 문입니다.
{ "Sid": "DataAPIIAMSessionPermissionsRestriction", "Action": [ "redshift-data:GetStatementResult", "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:ListStatements" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "redshift-data:statement-owner-iam-userid": "${aws:userid}" } } }
사용자가 동일한 IAM 역할에 있는 다른 사용자의 SQL 문의 결과를 검색할 수 있도록 허용하려면 현재 사용자에 대한 액세스를 제한하는 조건 없이 자체 정책을 생성합니다. 또한 정책을 변경할 수 있는 액세스 권한을 관리자로 제한합니다.
쿼리 편집기 v2를 사용하는 데 필요한 권한
사용자가 Amazon Redshift 쿼리 편집기 v2를 사용하려면 해당 사용자에게 Amazon Redshift, 쿼리 편집기 v2 작업 및 AWS Key Management Service, AWS Secrets Manager 및 태깅 서비스와 같은 기타 AWS 서비스에 대한 최소 권한 집합이 있어야 합니다.
사용자에게 쿼리 편집기 v2에 대한 전체 액세스 권한을 부여하려면 AmazonRedshiftQueryEditorV2FullAccess
AWS 관리형 정책을 연결합니다. AmazonRedshiftQueryEditorV2FullAccess
정책은 사용자 권한이 쿼리와 같은 쿼리 편집기 v2 리소스를 같은 팀의 다른 사람들과 공유하도록 허용합니다. 쿼리 편집기 v2 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 IAM 콘솔에서 쿼리 편집기 v2에 대한 특정 관리형 정책 정의를 참조하세요.
일부 Amazon Redshift 쿼리 편집기 v2 AWS 관리형 정책은 조건 내에서 AWS 태그를 사용하여 리소스에 대한 액세스 범위를 지정합니다. 쿼리 에디터 v2 내에서 쿼리 공유는 보안 주체(IAM 역할)에 연결된 IAM 정책의 태그 키 및 값 "aws:ResourceTag/sqlworkbench-team": "${aws:PrincipalTag/sqlworkbench-team}"
을 기반으로 합니다. 동일한 태그 값(예: accounting-team
)이 있는 동일한 AWS 계정의 보안 주체는 쿼리 편집기 v2에서 동일한 팀에 있습니다. 한 번에 한 팀과만 연결할 수 있습니다. 관리 권한이 있는 사용자는 모든 팀원에게 sqlworkbench-team
태그에 대해 동일한 값을 부여하여 IAM 콘솔에서 팀을 설정할 수 있습니다. IAM 사용자 또는 IAM 역할에 대해 sqlworkbench-team
의 태그 값이 변경되면 변경 사항이 공유 리소스에 반영될 때까지 지연이 있을 수 있습니다. 리소스(예: 쿼리)의 태그 값이 변경되면 변경 사항이 반영될 때까지 다시 지연이 있을 수 있습니다. 팀원에게도 tag:GetResources
권한이 있어야 공유할 수 있습니다.
예: IAM 역할에 대한 accounting-team
태그를 추가하려면
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. 콘솔의 탐색 창에서 [역할(Roles)]을 선택한 다음 편집할 역할의 이름을 선택합니다.
태그(Tags) 탭을 선택한 후 태그 추가(Add tags)를 선택합니다.
태그 키 sqlworkbench-team과 값
accounting-team
을 추가합니다.Save changes(변경 사항 저장)를 선택합니다.
이제 IAM 보안 주체(이 IAM 역할이 연결됨)가 팀과 쿼리를 공유하면 동일한
accounting-team
태그 값을 가진 다른 보안 주체가 쿼리를 볼 수 있습니다.
IAM 역할 및 IAM 사용자를 포함하여 보안 주체에 태그를 연결하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 IAM 리소스에 태깅을 참조하세요.
자격 증명 공급자(IdP)를 사용하여 세션 수준에서 팀을 설정할 수도 있습니다. 이를 통해 동일한 IAM 역할을 사용하는 여러 사용자가 서로 다른 팀을 가질 수 있습니다. IAM 역할 신뢰 정책은 sts:TagSession
작업을 허용해야 합니다. 자세한 내용은 IAM 사용 설명서의 세션 태그를 추가하는 데 필요한 권한을 참조하세요. IdP에서 제공한 SAML 어설션에 보안 주체 태그 속성을 추가합니다.
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:sqlworkbench-team"> <AttributeValue>accounting-team</AttributeValue> </Attribute>
자격 증명 공급자(IdP)의 지침에 따라 SAML 속성을 디렉터리의 콘텐츠로 채웁니다. 자격 증명 공급자(IdP) 및 Amazon Redshift에 대한 자세한 내용은 IAM 사용 설명서의 IAM 인증을 이용한 데이터베이스 사용자 자격 증명 생성과 자격 증명 공급자 및 페더레이션을 참조하세요.
은 노트북 셀의 현재 콘텐츠를 가져오고 계정에서 노트북 버전을 생성할 수 있는 권한을 부여합니다. 즉, 버전 생성 당시 노트북의 현재 내용은 버전의 내용과 동일합니다. 나중에 버전의 셀 내용은 현재 노트북이 업데이트된 것과 동일하게 유지됩니다. sqlworkbench:GetNotebookVersion
은 노트북 버전을 가져올 수 있는 권한을 부여합니다. sqlworkbench:BatchGetNotebookCell
권한은 없지만 노트북에 대한 sqlworkbench:CreateNotebookVersion
및 sqlworkbench:GetNotebookVersion
권한이 있는 사용자는 해당 버전의 노트북 셀에 액세스할 수 있습니다. sqlworkbench:BatchGetNotebookCell
권한이 없는 이 사용자는 먼저 버전을 생성한 다음 이 생성된 버전을 가져오는 방식으로 여전히 Notebook 셀의 콘텐츠를 검색할 수 있습니다.
Amazon Redshift 스케줄러 사용에 필요한 권한
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" } ] }
신뢰 엔터티에 대한 자세한 내용은 IAM User Guide의 Creating a role to delegate permissions to an AWS service를 참조하세요.
또한 예약하려는 Amazon Redshift 작업에 대한 권한을 추가해야 합니다.
스케줄러가 ResizeCluster
작업을 사용하려면 IAM 정책에 다음과 유사한 권한을 추가하십시오. 환경에 따라 정책을 보다 제한적으로 만들 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:ResizeCluster", "Resource": "*" } ] }
Amazon Redshift 스케줄러에 대한 역할을 생성하는 단계는 IAM User Guide의 Creating a role for an AWS service (console)를 참조하세요. IAM 콘솔에서 역할을 생성할 때 다음을 선택합니다.
Choose the service that will use this role(이 역할을 사용할 서비스 선택): Redshift를 선택합니다.
Select your use case(사용 사례 선택): Redshift - Scheduler(Redshift - 스케줄러)를 선택합니다.
Amazon Redshift 작업을 예약할 수 있는 정책을 생성하거나 해당 역할에 연결합니다. 정책 생성을 선택하거나 역할을 수정하여 정책을 연결합니다. 예약할 작업에 대한 JSON 정책을 입력합니다.
역할을 생성한 후 서비스
redshift.amazonaws.com
을 포함하도록 IAM 역할의 신뢰 관계를 편집합니다.
생성한 IAM 역할에는 scheduler.redshift.amazonaws.com
및 redshift.amazonaws.com
의 신뢰할 수 있는 개체가 있습니다. 또한 지원되는 Amazon Redshift API 작업(예: "redshift:ResizeCluster"
)을 허용하는 정책이 연결되어 있습니다.
Amazon EventBridge 스케줄러 사용에 필요한 권한
Amazon EventBridge 스케줄러를 사용하는 경우 스케줄러가 사용자를 대신하여 권한을 맡을 수 있도록 Amazon EventBridge 스케줄러(events.amazonaws.com
)와 신뢰 관계가 있는 IAM 역할을 설정합니다. 또한 예약하려는 Amazon Redshift Data API 작업에 대한 역할과 Amazon EventBridge 작업에 대한 정책에 정책(권한)을 연결합니다.
콘솔에서 Amazon Redshift 쿼리 편집기를 사용하여 예약된 쿼리를 생성할 때 EventBridge 스케줄러를 사용합니다.
IAM 콘솔에서 예약된 쿼리를 실행하는 IAM 역할을 생성할 수 있습니다. 이 IAM 역할에서 AmazonEventBridgeFullAccess
와 AmazonRedshiftDataFullAccess
를 연결합니다.
다음 예에서는 EventBridge 스케줄러와 신뢰 관계를 설정하기 위한 정책 문서를 JSON 형식으로 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", ] }, "Action": "sts:AssumeRole" } ] }
신뢰 엔터티에 대한 자세한 내용은 IAM User Guide의 Creating a role to delegate permissions to an AWS service를 참조하세요.
EventBridge 스케줄러에 대한 역할을 생성하는 단계는 IAM User Guide의 Creating a role for an AWS service (console)를 참조하세요. IAM 콘솔에서 역할을 생성할 때 다음을 선택합니다.
[이 역할을 사용할 서비스 선택(Choose the service that will use this role)]에서 [CloudWatch Events]를 선택합니다.
[사용 사례 선택(Select your use case):]에서 [CloudWatch Events]를 선택합니다.
권한 정책
AmazonEventBridgeFullAccess
및AmazonRedshiftDataFullAccess
를 연결합니다.
생성한 IAM 역할에는 events.amazonaws.com
의 신뢰할 수 있는 엔터티가 있습니다. 또한 지원되는 Amazon Redshift Data API 작업(예: "redshift-data:*"
)을 허용하는 정책이 연결되어 있습니다.
Amazon Redshift 기계 학습(ML)을 사용하는 데 필요한 권한
다음에서 다양한 사용 사례에 대해 Amazon Redshift 기계 학습(ML)을 사용하는 데 필요한 권한에 대한 설명을 찾을 수 있습니다.
사용자가 Amazon SageMaker와 함께 Amazon Redshift 기계 학습을 사용하려면 기본값보다 더 제한적인 정책으로 IAM 역할을 생성합니다. 다음 정책을 사용할 수 있습니다. 필요에 맞게 이 정책을 수정할 수도 있습니다.
다음 정책은 Amazon Redshift의 모델 설명 기능을 사용하여 SageMaker Autopilot을 실행하는 데 필요한 권한을 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateAutoMLJob", "sagemaker:CreateCompilationJob", "sagemaker:CreateEndpoint", "sagemaker:DescribeAutoMLJob", "sagemaker:DescribeTrainingJob", "sagemaker:DescribeCompilationJob", "sagemaker:DescribeProcessingJob", "sagemaker:DescribeTransformJob", "sagemaker:ListCandidatesForAutoMLJob", "sagemaker:StopAutoMLJob", "sagemaker:StopCompilationJob", "sagemaker:StopTrainingJob", "sagemaker:DescribeEndpoint", "sagemaker:InvokeEndpoint", "sagemaker:StopProcessingJob", "sagemaker:CreateModel", "sagemaker:CreateProcessingJob" ], "Resource": [ "arn:aws:sagemaker:*:*:model/*redshift*", "arn:aws:sagemaker:*:*:training-job/*redshift*", "arn:aws:sagemaker:*:*:automl-job/*redshift*", "arn:aws:sagemaker:*:*:compilation-job/*redshift*", "arn:aws:sagemaker:*:*:processing-job/*redshift*", "arn:aws:sagemaker:*:*:transform-job/*redshift*", "arn:aws:sagemaker:*:*:endpoint/*redshift*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/sagemaker/Endpoints/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/ProcessingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TrainingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TransformJobs/*redshift*" ] }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": [ "SageMaker", "/aws/sagemaker/Endpoints", "/aws/sagemaker/ProcessingJobs", "/aws/sagemaker/TrainingJobs", "/aws/sagemaker/TransformJobs" ] } } }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "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*/*" ] }, { "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": "*", "Condition": { "StringEqualsIgnoreCase": { "s3:ExistingObjectTag/Redshift": "true" } } }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com" ] } } } ] }
다음 정책은 Amazon DynamoDB, Redshift Spectrum 및 Amazon RDS 페더레이션에 대한 액세스를 허용하기 위한 최소한의 전체 권한을 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateAutoMLJob", "sagemaker:CreateCompilationJob", "sagemaker:CreateEndpoint", "sagemaker:DescribeAutoMLJob", "sagemaker:DescribeTrainingJob", "sagemaker:DescribeCompilationJob", "sagemaker:DescribeProcessingJob", "sagemaker:DescribeTransformJob", "sagemaker:ListCandidatesForAutoMLJob", "sagemaker:StopAutoMLJob", "sagemaker:StopCompilationJob", "sagemaker:StopTrainingJob", "sagemaker:DescribeEndpoint", "sagemaker:InvokeEndpoint", "sagemaker:StopProcessingJob", "sagemaker:CreateModel", "sagemaker:CreateProcessingJob" ], "Resource": [ "arn:aws:sagemaker:*:*:model/*redshift*", "arn:aws:sagemaker:*:*:training-job/*redshift*", "arn:aws:sagemaker:*:*:automl-job/*redshift*", "arn:aws:sagemaker:*:*:compilation-job/*redshift*", "arn:aws:sagemaker:*:*:processing-job/*redshift*", "arn:aws:sagemaker:*:*:transform-job/*redshift*", "arn:aws:sagemaker:*:*:endpoint/*redshift*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/sagemaker/Endpoints/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/ProcessingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TrainingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TransformJobs/*redshift*" ] }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": [ "SageMaker", "/aws/sagemaker/Endpoints", "/aws/sagemaker/ProcessingJobs", "/aws/sagemaker/TrainingJobs", "/aws/sagemaker/TransformJobs" ] } } }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "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*/*" ] }, { "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": "*", "Condition": { "StringEqualsIgnoreCase": { "s3:ExistingObjectTag/Redshift": "true" } } }, { "Effect": "Allow", "Action": [ "dynamodb:Scan", "dynamodb:DescribeTable", "dynamodb:Getitem" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*redshift*", "arn:aws:dynamodb:*:*:table/*redshift*/index/*" ] }, { "Effect": "Allow", "Action": [ "elasticmapreduce:ListInstances" ], "Resource": [ "arn:aws:elasticmapreduce:*:*:cluster/*redshift*" ] }, { "Effect": "Allow", "Action": [ "elasticmapreduce:ListInstances" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "elasticmapreduce:ResourceTag/Redshift": "true" } } }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:*redshift*" }, { "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*" ] }, { "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" } } }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "redshift.amazonaws.com", "glue.amazonaws.com", "sagemaker.amazonaws.com", "athena.amazonaws.com" ] } } } ] }
선택적으로 암호화에 AWS KMS 키를 사용하려면 정책에 다음 권한을 추가합니다.
{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:<your-region>:<your-account-id>:key/<your-kms-key>" ] }
Amazon Redshift와 SageMaker가 다른 서비스와 상호 작용하는 이전 IAM 역할을 수임하도록 허용하려면 역할에 다음 신뢰 정책을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
앞의 경우 Amazon S3 버킷 redshift-downloads/redshift-ml/
은 다른 단계와 예제에 사용되는 샘플 데이터가 저장되는 위치입니다. Amazon S3에서 데이터를 로드할 필요가 없으면 이 버킷을 제거할 수 있습니다. 또는 Amazon Redshift로 데이터를 로드하는 데 사용하는 다른 Amazon S3 버킷으로 바꿉니다.
your-account-id
, your-role
및 your-s3-bucket
값은 CREATE MODEL 명령에서 지정하는 계정 ID, 역할 및 버킷입니다.
필요에 따라 Amazon Redshift 기계 학습에 사용할 AWS KMS 키를 지정하는 경우 샘플 정책의 AWS KMS 키 섹션을 사용할 수 있습니다. your-kms-key
값은 CREATE MODEL 명령의 일부로 사용하는 키입니다.
하이퍼파라미터 튜닝 작업에 대해 Virtual Private Cloud(VPC)를 지정할 때 다음 권한을 추가합니다.
{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }
모델 설명으로 작업하려면 SageMaker API 작업을 호출할 수 있는 권한이 있는지 확인해야 합니다. AmazonSageMakerFullAccess
관리형 정책을 사용하는 것이 좋습니다. 보다 제한적인 정책으로 IAM 역할을 생성하려는 경우 다음 정책을 사용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker::CreateEndpoint", "sagemaker::CreateEndpointConfig", "sagemaker::DeleteEndpoint", "sagemaker::DeleteEndpointConfig", "sagemaker::DescribeEndpoint", "sagemaker::DescribeEndpointConfig", "sagemaker::DescribeModel", "sagemaker::InvokeEndpoint", "sagemaker::ListTags" ], "Resource": "*" } ] }
AmazonSageMakerFullAccess
관리형 정책에 대한 자세한 내용은 Amazon SageMaker 개발자 안내서의 AmazonSageMakerFullAccess를 참조하세요.
예측 모델을 만들려면 AmazonForecastFullAccess
관리형 정책을 사용하는 것이 좋습니다. 보다 제한적인 정책을 사용하려면 IAM 역할에 다음 정책을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "forecast:CreateAutoPredictor", "forecast:CreateDataset", "forecast:CreateDatasetGroup", "forecast:CreateDatasetImportJob", "forecast:CreateForecast", "forecast:CreateForecastExportJob", "forecast:DeleteResourceTree", "forecast:DescribeAutoPredictor", "forecast:DescribeDataset", "forecast:DescribeDatasetGroup", "forecast:DescribeDatasetImportJob", "forecast:DescribeForecast", "forecast:DescribeForecastExportJob", "forecast:StopResource", "forecast:TagResource", "forecast:UpdateDatasetGroup" ], "Resource": "*" } ] }
Amazon Redshift 기계 학습에 대한 자세한 내용은 Amazon Redshift에서 기계 학습 사용 또는 CREATE MODEL을 참조하세요.
스트리밍 수집 권한
스트리밍 수집은 두 가지 서비스에서 작동합니다. 바로 Kinesis Data Streams와 Amazon MSK입니다.
Kinesis Data Streams에서 스트리밍 수집을 사용하는 데 필요한 권한
관리형 정책 예시가 포함된 절차는 Amazon Kinesis Data Streams에서 스트리밍 수집 시작하기를 참조하세요.
Amazon MSK에서 스트리밍 수집을 사용하는 데 필요한 권한
관리형 정책 예시가 포함된 절차는 Amazon Managed Streaming for Apache Kafka에서 스트리밍 수집 시작하기를 참조하세요.
데이터 공유 API 작업을 사용하는 데 필요한 권한
데이터 공유 API 작업에 대한 액세스를 제어하려면 IAM 작업 기반 정책을 사용합니다. IAM 정책을 관리하는 방법에 대한 자세한 내용은 IAM User Guide의 Managing IAM policies 섹션을 참조하세요.
특히, 생산자 클러스터 관리자가 AuthorizeDataShare
호출을 사용하여 AWS 계정 외부의 datashare에 대한 송신 권한을 부여해야 한다고 가정합니다. 이 경우 이 권한을 부여하도록 IAM 작업 기반 정책을 설정합니다. DeauthorizeDataShare
호출을 사용하여 송신을 취소합니다.
IAM 작업 기반 정책을 사용할 때 DataShareARN
과 같이 정책에서 IAM 리소스를 지정할 수도 있습니다. 다음은 DataShareARN
의 형식과 예를 보여줍니다.
arn:aws:redshift:region:account-id:datashare:namespace-guid/datashare-name arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/SalesShare
IAM 정책에서 datashare 이름을 지정하여 특정 datashare에 대한 AuthorizeDataShare
액세스를 제한할 수 있습니다.
{ "Statement": [ { "Action": [ "redshift:AuthorizeDataShare", ], "Resource": [ "arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/SalesShare" ], "Effect": "Deny" } ] }
특정 생산자 클러스터가 소유한 모든 datashare로 IAM 정책을 제한할 수도 있습니다. 이렇게 하려면 정책의 datashare-name
값을 와일드카드나 별표로 바꿉니다. 클러스터의 namespace-guid
값을 유지합니다.
arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/*
다음은 특정 생산자 클러스터가 소유한 datashare에서 엔터티가 AuthorizeDataShare
를 호출하지 못하도록 하는 IAM 정책입니다.
{ "Statement": [ { "Action": [ "redshift:AuthorizeDataShare", ], "Resource": [ "arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/*" ], "Effect": "Deny" } ] }
DataShareARN
은 datashare 이름과 소유 클러스터의 네임스페이스에 대한 GUID(Globally Unique ID)를 기반으로 액세스를 제한합니다. 이름을 별표로 지정하여 이 작업을 수행합니다.
GetClusterCredentials에 대한 리소스 정책
IAM 데이터베이스 자격 증명이 있는 JDBC 또는 ODBC 연결을 이용해 클러스터 데이터베이스에 연결하려거나 GetClusterCredentials
작업을 프로그래밍 방식으로 호출하려면 최소한의 권한이 필요합니다. 적어도 dbuser
리소스에 대한 액세스 권한과 redshift:GetClusterCredentials
작업을 호출할 수 있는 권한이 필요합니다.
server
및 port
대신 JDBC 또는 ODBC 연결을 사용하는 경우 cluster_id
및 region
을 지정할 수 있습니다. 단, 그렇게 하려면 사용자 정책이 redshift:DescribeClusters
작업을 허용하고 cluster
리소스에 액세스 권한이 있어야 합니다.
선택적 파라미터 Autocreate
, DbGroups
및 DbName
을 사용하여 GetClusterCredentials
를 호출하는 경우 그러한 작업을 허용하고, 다음 표에 나열된 리소스에 대한 액세스를 허용해야 합니다.
GetClusterCredentials 파라미터 |
작업 |
Resource |
---|---|---|
|
redshift:CreateClusterUser |
|
|
redshift:JoinGroup |
|
|
NA | dbname |
리소스에 대한 자세한 내용은 Amazon Redshift 리소스 및 작업 단원을 참조하십시오.
정책에 다음의 조건도 포함할 수 있습니다.
-
redshift:DurationSeconds
-
redshift:DbName
-
redshift:DbUser
조건에 대한 자세한 내용은 정책에서 조건 지정 단원을 참조하십시오.
고객 관리형 정책 예
이 섹션에서는 다양한 Amazon Redshift 작업에 대한 권한을 부여하는 사용자 정책의 예를 제공합니다. 이러한 정책은 Amazon Redshift API, AWS SDK 또는 AWS CLI를 사용하는 경우에 적용됩니다.
참고
모든 예에서는 미국 서부(오리건) 리전(us-west-2
)을 사용하며 가상의 계정 ID를 포함합니다.
예 1: 모든 Amazon Redshift 작업 및 리소스에 대한 전체 액세스 권한 허용
다음 정책은 모든 리소스를 사용하는 Amazon Redshift 작업 모두에 대한 액세스 권한을 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowRedshift", "Action": [ "redshift:*" ], "Effect": "Allow", "Resource": "*" } ] }
Action
요소에서 값 redshift:*
는 Amazon Redshift의 모든 작업을 의미합니다.
예 2: 한 Amazon Redshift 작업 집합에 대한 사용자 액세스 거부
기본적으로 모든 권한을 거부합니다. 하지만 간혹 특정 작업 또는 작업 집합에 대한 액세스를 명시적으로 거부해야 하는 경우도 있습니다. 이때는 다음 정책을 통해 모든 Amazon Redshift 작업에 대한 액세스를 허용하면서, 이름이 Delete
로 시작하는 Amazon Redshift 작업에 대해서는 액세스를 명시적으로 거부할 수 있습니다. 이 정책은 us-west-2
에 속한 모든 Amazon Redshift 리소스에 적용됩니다.
{ "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:*" } ] }
예 3: 사용자에게 클러스터 관리 허용
다음 정책은 사용자에게 모든 클러스터를 생성, 삭제, 수정 및 재부팅할 수 있도록 허용한 후 클러스터 이름이 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" } ] }
예 4: 사용자가 스냅샷 액세스 권한을 부여하거나 취소하도록 허용
다음 정책은 사용자(사용자 A)에게 아래와 같은 작업을 허용합니다.
-
shared
라는 이름의 클러스터에서 생성된 모든 스냅샷에 대한 액세스 권한을 부여합니다. -
shared
클러스터에서 생성된 스냅샷 중에서 이름이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" } ] }
예 5: 사용자가 클러스터 스냅샷을 복사한 후 스냅샷에서 클러스터를 복원하도록 허용
다음 정책은 사용자에게 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" } ] }
예 6: Amazon Redshift 및 관련 AWS 서비스의 공통 작업과 리소스에 대한 사용자 액세스 허용
다음 예제 정책은 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": [ "*" ] } ] }
예제 7: 사용자가 Amazon Redshift 콘솔로 리소스에 태그를 지정할 수 있도록 허용
다음 예제 정책에서는 사용자가 AWS Resource Groups를 사용하여 Amazon Redshift 콘솔로 리소스에 태그를 지정할 수 있도록 허용합니다. 새 Amazon Redshift 콘솔이나 원래 Amazon Redshift 콘솔을 호출하는 사용자 역할에 이 정책을 연결할 수 있습니다. 태그 지정에 대한 자세한 내용은 Amazon Redshift에서 리소스에 태그 지정 섹션을 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Tagging permissions", "Effect": "Allow", "Action": [ "redshift:DeleteTags", "redshift:CreateTags", "redshift:DescribeTags", "tag:UntagResources", "tag:TagResources" ], "Resource": "*" } ] }
GetClusterCredentials 사용을 위한 정책 예제
다음 정책은 다음과 같은 샘플 파라미터 값을 사용합니다.
-
리전:
us-west-2
-
AWS 계정:
123456789012
-
클러스터 이름:
examplecluster
다음 정책은 GetCredentials
, CreateClusterUser
, JoinGroup
작업을 허용합니다. 이 정책은 조건 키를 사용하여 GetClusterCredentials
및 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" ] } ] }