

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Amazon Redshift의 Identity and Access Management
<a name="redshift-iam-authentication-access-control"></a>

Amazon Redshift에 액세스하려면 AWS가 요청을 인증하는 데 사용할 수 있는 자격 증명이 필요합니다. 이 자격 증명에는 Amazon Redshift 클러스터와 같은 AWS 리소스에 액세스할 수 있는 권한이 있어야 합니다. 다음 섹션에서는 리소스에 액세스할 수 있는지 대상을 제어하여 리소스를 보호할 수 있도록 [AWS Identity and Access Management(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 및 Amazon Redshift를 사용하는 방법에 대한 세부 정보를 제공합니다.
+ [ID를 사용한 인증](#security_iam_authentication)
+ [액세스 관리](#redshift-iam-accesscontrol)

**중요**  
이 주제에는 권한, ID 및 보안 액세스를 관리하기 위한 모범 사례 모음이 포함되어 있습니다. Amazon Redshift에서 IAM을 사용하기 위한 모범 사례를 숙지하는 것이 좋습니다. 여기에는 권한 적용을 위한 IAM 역할 사용이 포함됩니다. 이러한 섹션을 잘 이해하면 보다 안전한 Amazon Redshift 데이터 웨어하우스를 유지 관리하는 데 도움이 됩니다.

## ID를 사용한 인증
<a name="security_iam_authentication"></a>

인증은 ID 자격 증명을 사용하여 AWS에 로그인하는 방식입니다. AWS 계정 루트 사용자이나 IAM 사용자로, 또는 IAM 역할을 수임하여 인증(에 로그인)받아야 합니다.

AWS IAM Identity Center(IAM Identity Center), Single Sign-On 인증 또는 Google/Facebook 자격 증명과 같은 자격 증명 소스의 자격 증명을 사용하여 페더레이션 ID로 로그인할 수 있습니다. 로그인하는 방법에 대한 자세한 내용은 *AWS Sign-In사용 설명서*의 [AWS 계정에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 섹션을 참조하세요.

프로그래밍 방식 액세스를 위해 AWS는 요청에 암호화 방식으로 서명할 수 있는 SDK 및 CLI를 제공합니다. 자세한 내용은 *IAM 사용 설명서*의 [API 요청용 AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) 섹션을 참조하세요.

### AWS 계정 루트 사용자
<a name="security_iam_authentication-rootuser"></a>

 AWS 계정을 생성하는 경우에는 모든 AWS 서비스 서비스와 리소스에 대한 완전한 액세스 권한이 있는 AWS 계정 *루트 사용자*라는 단일 로그인 ID로 시작합니다. 일상적인 태스크에 루트 사용자를 사용하지 않을 것을 강력히 권장합니다. 루트 사용자가 필요한 작업 목록은 *IAM 사용자 설명서*의 [루트 사용자 자격 증명이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 참조하세요.

### IAM 사용자 및 그룹
<a name="security_iam_authentication-iamuser"></a>

*[IAM 사용자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*는 단일 개인 또는 애플리케이션에 대한 특정 권한을 가진 ID입니다. 장기 자격 증명이 있는 IAM 사용자 대신 임시 자격 증명을 사용하는 것이 좋습니다. 자세한 내용은 *IAM 사용 설명서*에서 [임시 자격 증명을 사용하여 AWS에 액세스하려면 인간 사용자가 ID 제공업체와의 페더레이션을 사용하도록 요구](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)를 참조하세요.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)은 IAM 사용자 모음을 지정하고 대규모 사용자 집합에 대한 관리 권한을 더 쉽게 만듭니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자 사용 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) 섹션을 참조하세요.

### IAM 역할
<a name="security_iam_authentication-iamrole"></a>

*[IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*은 임시 자격 증명을 제공하는 특정 권한이 있는 자격 증명입니다. [사용자에서 IAM 역할(콘솔)로 전환](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)하거나 AWS CLI 또는 AWS API 작업을 직접적으로 호출하여 역할을 수임할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [역할 수임 방법](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)을 참조하세요.

IAM 역할은 페더레이션 사용자 액세스, 임시 IAM 사용자 권한, 교차 계정 액세스, 교차 서비스 액세스 및 Amazon EC2에서 실행되는 애플리케이션에 유용합니다. 자세한 내용은 *IAM 사용 설명서*의 [교차 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

**참고**  
Redshift의 액세스 전달 세션(FAS)은 12시간 동안만 유효합니다. 이 기간이 지나면 다른 서비스와 통합하기 위해 FAS를 사용하는 모든 연결 세션은 다시 설정해야 합니다.

# 교차 서비스 혼동된 대리인 방지
<a name="cross-service-confused-deputy-prevention"></a>

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. AWS에서는 교차 서비스 가장으로 인해 혼동된 대리자 문제가 발생할 수 있습니다. 교차 서비스 가장은 한 서비스(*직접 호출하는 서비스*)가 다른 서비스(*직접 호출되는 서비스*)를 직접 호출할 때 발생할 수 있습니다. 직접 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 위탁자를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 간 혼동된 대리자 방지](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html#cross-service-confused-deputy-prevention)를 참조하세요.

Amazon Redshift가 리소스에 다른 서비스를 제공하는 권한을 제한하려면 리소스 기반 정책에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. 만약 `aws:SourceArn` 값에 Amazon S3 버킷 ARN과 같은 계정 ID가 포함되어 있지 않은 경우 권한을 제한하려면 두 전역 조건 컨텍스트 키를 모두 사용해야 합니다. 두 전역 조건 컨텍스트 키와 계정을 포함한 `aws:SourceArn` 값을 모두 사용하는 경우, `aws:SourceAccount` 값 및 `aws:SourceArn` 값의 계정은 동일한 정책 명령문에서 사용할 경우 반드시 동일한 계정 ID를 사용해야 합니다.

다음 예제에서는 Amazon Redshift의 혼동된 대리자 문제를 제한하기 위해 적용할 수 있는 정책을 보여줍니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": {
    "Sid": "ConfusedDeputyPreventionForRedshift",
    "Effect": "Allow",
    "Principal": {
      "Service": "redshift.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:redshift:us-east-1:123456789012:cluster:my-cluster"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
  }
}
```

## 액세스 관리
<a name="redshift-iam-accesscontrol"></a>

요청을 인증하는 데 유효한 자격 증명이 있더라도 권한이 없다면 Amazon Redshift 리소스를 생성하거나 액세스할 수 없습니다. 예를 들어 Amazon Redshift 클러스터를 생성하거나, 스냅샷을 생성하거나, 이벤트 구독을 추가할 수 있는 권한이 있어야 합니다.

다음 섹션에서는 Amazon Redshift에 대한 권한을 관리하는 방법을 설명합니다. 먼저 개요를 읽어보면 도움이 됩니다.
+ [Amazon Redshift 리소스에 대한 액세스 권한 관리 개요](redshift-iam-access-control-overview.md)
+  [Amazon Redshift에 대한 자격 증명 기반 정책(IAM 정책) 사용](redshift-iam-access-control-identity-based.md) 

# Amazon Redshift 리소스에 대한 액세스 권한 관리 개요
<a name="redshift-iam-access-control-overview"></a>

모든 AWS 리소스는 AWS 계정의 소유이고 리소스 생성 또는 액세스 권한은 권한 정책에 따라 결정됩니다. 계정 관리자는 IAM ID(즉, 사용자, 그룹, 역할)에 권한 정책을 연결할 수 있고, 일부 서비스(예: AWS Lambda)에서는 리소스에 대한 권한 정책 연결도 지원합니다.

**참고**  
*계정 관리자* 또는 관리자 사용자는 관리자 권한이 있는 사용자입니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

권한을 부여하려면 권한을 부여 받을 사용자, 권한 대상이 되는 리소스, 해당 리소스에 허용되는 특정 작업을 결정합니다.

## Amazon Redshift 리소스 및 작업
<a name="redshift-iam-accesscontrol.actions-and-resources"></a>

Amazon Redshif에서는 IAM 권한 정책에 사용할 수 있는 서비스별 리소스, 작업 및 조건 컨텍스트 키를 제공합니다.

### Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한
<a name="redshift-policy-resources.resource-permissions"></a>

[액세스 관리](redshift-iam-authentication-access-control.md#redshift-iam-accesscontrol)을 설정하면 IAM 자격 증명에 연결할 수 있는 권한 정책(자격 증명 기반 정책)을 작성할 수 있습니다. 자세한 참조 정보는 *서비스 권한 부여 참조*의 다음 주제를 참조하세요.
+ Amazon Redshift의 경우 `redshift:` 접두사를 사용하며 [Amazon Redshift에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshift.html)를 참조하세요.
+ Amazon Redshift Serverless의 경우 `redshift-serverless:` 접두사를 사용하며 [Amazon Redshift Serverless에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftserverless.html)를 참조하세요.
+ Amazon Redshift Data API의 경우 `redshift-data:` 접두사를 사용하며 [Amazon Redshift Data API에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html)를 참조하세요.
+ Amazon Redshift 쿼리 에디터 v2의 경우 `sqlworkbench:` 접두사를 사용하며 [AWS SQL Workbench(Amazon Redshift 쿼리 에디터 v2)에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssqlworkbench.html)를 참조하세요.

  쿼리 에디터 v2에는 API 작업에 직접 해당하지 않는 권한 전용 작업이 포함되어 있습니다. 이러한 작업은 *서비스 승인 참조*에 `[permission only]`로 나와 있습니다.

*서비스 승인 참조*에는 IAM 정책에서 사용할 수 있는 API 작업에 대한 정보가 포함되어 있습니다. 또한 권한을 부여할 수 있는 AWS 리소스와 세분화된 액세스 제어에 포함할 수 있는 조건 키가 포함되어 있습니다. 조건에 대한 자세한 내용은 [IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현](#redshift-policy-resources.conditions) 섹션을 참조하세요.

정책의 `Action` 필드에서 작업을 지정하고, `Resource` 필드에서 리소스 값을 지정하고, `Condition` 필드에서 조건을 지정합니다. Amazon Redshift에 대한 작업을 지정하려면 `redshift:` 접두사 다음에 API 작업 이름을 사용합니다(예: `redshift:CreateCluster`).

## 리소스 소유권 이해
<a name="redshift-iam-access-control-resource-ownership"></a>

*리소스 소유자*는 리소스를 만든 AWS계정입니다. 즉, 리소스 소유자는 리소스를 생성하는 요청을 인증하는 AWS보안 주체 엔터티(루트 계정, IAM 사용자 또는 IAM 역할)의 * 계정입니다.* 다음 예제에서는 이러한 작동 방법을 설명합니다.
+ AWS 계정의 루트 계정 자격 증명을 사용하여 DB 클러스터를 생성하는 경우, AWS 계정이 Amazon Redshift 리소스 소유자가 됩니다.
+ AWS 계정에서 Amazon Redshift 리소스를 생성할 권한이 있는 IAM 역할을 만드는 경우, 해당 역할을 담당할 수 있는 사람은 누구나 Amazon Redshift 리소스를 생성할 수 있습니다. 이 경우 역할이 속한 AWS 계정이 Amazon Redshift 리소스를 소유합니다.
+ AWS 계정에서 IAM 사용자를 생성하고 Amazon Redshift 리소스 생성 권한을 부여하면 해당 사용자는 Amazon Redshift 리소스를 생성할 수 있습니다. 하지만 해당 사용자가 속한 AWS 계정이 Amazon Redshift 리소스를 소유합니다. 대부분의 경우 이 방법은 권장되지 않습니다. IAM 역할을 생성하고 역할에 권한을 연결한 다음 사용자에게 역할을 할당하는 것이 좋습니다.

## 리소스 액세스 관리
<a name="redshift-iam-accesscontrol-managingaccess"></a>

*권한 정책*은 누가 무엇에 액세스 할 수 있는지를 나타냅니다. 다음 섹션에서는 권한 정책을 만드는 데 사용 가능한 옵션에 대해 설명합니다.

**참고**  
이 섹션에서는 Amazon Redshift의 맥락에서 IAM을 사용하는 방법에 대해 설명하며, IAM 서비스에 대한 자세한 내용은 다루지 않습니다. IAM 설명서 전체 내용은 *IAM 사용 설명서*의 [IAM이란 무엇입니까?](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)를 참조하세요. IAM 정책 구문과 설명에 대한 자세한 내용은 [IAM User Guide](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)의 *AWS IAM policy reference* 섹션을 참조하세요.

IAM 자격 증명에 연결된 정책을 *자격 증명 기반 정책*(IAM 정책)이라 하고, 리소스에 연결된 정책을 *리소스 기반 정책*이라고 합니다. Amazon Redshift는 자격 증명 기반 정책(IAM 정책)만 지원합니다.

### 자격 증명 기반 정책(IAM 정책)
<a name="redshift-iam-manage-access-identity-based"></a>

정책을 IAM 역할에 연결한 다음 해당 역할을 사용자 또는 그룹에 할당하여 권한을 할당할 수 있습니다. 다음은 사용자에게 AWS 계정의 Amazon Redshift 클러스터를 생성, 삭제, 수정 및 재부팅하도록 허용하는 권한을 포함한 예시 정책입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid":"AllowManageClusters",
      "Effect":"Allow",
      "Action": [
        "redshift:CreateCluster",
        "redshift:DeleteCluster",
        "redshift:ModifyCluster",
        "redshift:RebootCluster"
      ],
      "Resource":"*"
    }
  ]
}
```

------

Amazon Redshift에서 자격 증명 기반 정책 사용에 대한 자세한 내용은 [Amazon Redshift에 대한 자격 증명 기반 정책(IAM 정책) 사용](redshift-iam-access-control-identity-based.md) 섹션을 참조하세요. 사용자, 그룹, 역할 및 권한에 대한 자세한 내용은 *IAM User Guide*의 [Identities (users, groups, and roles)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)를 참조하세요.

### 리소스 기반 정책
<a name="redshift-iam-access-control-resource-based"></a>

Amazon S3과 같은 다른 서비스도 리소스 기반 권한 정책을 지원합니다. 예를 들어, 정책을 S3 버킷에 연결하여 해당 버킷에 대한 액세스 권한을 관리할 수 있습니다. Amazon Redshift에서는 리소스 기반 정책을 지원하지 않습니다.

## 정책 요소 지정: 작업, 효과, 리소스, 보안 주체
<a name="redshift-iam-access-control-specify-actions"></a>

각 Amazon Redshift 리소스([Amazon Redshift 리소스 및 작업](#redshift-iam-accesscontrol.actions-and-resources) 참조)에 대해 서비스는 API 작업을 정의합니다([작업](https://docs.aws.amazon.com/redshift/latest/APIReference/API_Operations.html) 참조). 이러한 API 작업에 대한 권한을 부여하기 위해 Amazon Redshift에서는 정책에서 지정할 수 있는 작업을 정의합니다. API 작업을 실시하려면 둘 이상의 작업에 대한 권한이 필요할 수 있습니다.

다음은 기본 정책 요소입니다.
+ **리소스** – 정책에서 Amazon 리소스 이름(ARN)을 사용하여 정책을 적용할 리소스를 식별합니다. 자세한 내용은 [Amazon Redshift 리소스 및 작업](#redshift-iam-accesscontrol.actions-and-resources) 섹션을 참조하세요.
+ **작업** – 작업 키워드를 사용하여 허용 또는 거부할 리소스 작업을 식별합니다. 예를 들어 `redshift:DescribeClusters` 권한은 사용자에게 Amazon Redshift `DescribeClusters` 작업 수행 권한을 허용합니다.
+ **결과** – 사용자가 특정 작업을 요청하는 경우의 결과를 지정합니다. 이는 허용 또는 거부 중에 하나가 될 수 있습니다. 명시적으로 리소스에 대한 액세스 권한을 부여(허용)하지 않는 경우, 액세스는 묵시적으로 거부됩니다. 다른 정책에서 액세스 권한을 부여하는 경우라도 사용자가 해당 리소스에 액세스할 수 없도록 하기 위해 리소스에 대한 액세스 권한을 명시적으로 거부할 수도 있습니다.
+ **보안 주체** – ID 기반 정책(IAM 정책)에서 정책이 연결되는 사용자는 암시적인 보안 주체입니다. 리소스 기반 정책의 경우, 사용자, 계정, 서비스 또는 권한의 수신자인 기타 개체를 지정합니다(리소스 기반 정책에만 해당). Amazon Redshift에서는 리소스 기반 정책을 지원하지 않습니다.

IAM 정책 구문과 설명에 대한 자세한 내용은 *IAM User Guide*의 [AWS IAM policy reference](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)를 참조하세요.

모든 Amazon Redshift API 작업과 해당 작업이 적용되는 리소스를 보여주는 표는 [Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한](#redshift-policy-resources.resource-permissions) 섹션을 참조하세요.



## 정책에서 조건 지정
<a name="redshift-policy-resources.specifying-conditions"></a>

권한을 부여할 때 액세스 정책 언어를 사용하여 조건이 적용되는 조건을 지정할 수 있습니다. 예를 들어, 특정 날짜 이후에만 정책을 적용할 수 있습니다. 액세스 정책 언어에서 조건 지정에 대한 자세한 내용은 *IAM User Guide*의 [IAM JSON policy elements: Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)을 참조하세요.

권한 정책이 적용되는 조건을 식별하려면 `Condition` 요소를 IAM 권한 정책에 포함시킵니다. 예를 들어, 사용자가 `redshift:CreateCluster` 작업을 사용하여 DB 인스턴스를 만들 수 있도록 허용하는 정책을 만들 수 있으며 `Condition` 요소를 추가하여 해당 사용자가 MySQL 데이터베이스 엔진을 사용하여 DB 인스턴스만 만들 수 있도록 제한할 수 있습니다. 자세한 내용은 [IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현](#redshift-policy-resources.conditions)을 참조하세요. 모든 조건 키 값과 이 값이 적용되는 Amazon Redshift 작업 및 리소스를 보여주는 목록은 [Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한](#redshift-policy-resources.resource-permissions) 섹션을 참조하세요.

### IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현
<a name="redshift-policy-resources.conditions"></a>

Amazon Redshift에서는 리소스 태그에 따라 조건 키를 사용하여 리소스에 대한 액세스를 제한할 수 있습니다. 다음은 공통의 Amazon Redshift 조건 키입니다.


| 조건 키 | 설명 | 
| --- | --- | 
| `aws:RequestTag` | 사용자에게 리소스를 생성할 때마다 태그 키(이름)와 값을 추가하도록 요구합니다. 자세한 내용은 *IAM User Guide*의 [aws:RequestTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)를 참조하세요. | 
| `aws:ResourceTag` | 특정 태그 키 및 값에 따라 리소스에 대한 사용자 액세스를 제한합니다. 자세한 내용은 *IAM User Guide*의 [aws:ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag)를 참조하세요. | 
| `aws:TagKeys` | 이 키를 사용하여 요청의 태그 키를 정책에서 지정한 키와 비교합니다. 자세한 내용은 *IAM User Guide*의 [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys)를 참조하세요. | 

태그를 생성하는 방법에 대한 자세한 내용은 [Amazon Redshift에서 리소스 태그](amazon-redshift-tagging.md) 섹션을 참조하세요.

`redshift:RequestTag` 및 `redshift:ResourceTag` 조건 키를 지원하는 API 작업 목록은 [Amazon Redshift, Amazon Redshift Serverless, Amazon Redshift Data API 및 Amazon Redshift 쿼리 에디터 v2 액세스 권한](#redshift-policy-resources.resource-permissions) 섹션을 참조하세요.

다음 조건 키는 Amazon Redshift GetClusterCredentials 작업과 함께 사용할 수 있습니다.


| 조건 키 | 설명 | 
| --- | --- | 
| `redshift:DurationSeconds` | 기간에 대해 지정할 수 있는 시간(초)을 제한합니다. | 
| `redshift:DbName` | 지정할 수 있는 데이터베이스 이름을 제한합니다. | 
| `redshift:DbUser` | 지정할 수 있는 데이터베이스 사용자 이름을 제한합니다. | 

#### 예 1: aws:ResourceTag 조건 키를 사용한 액세스 제한
<a name="redshift-policy-resources.resource-permissions-example1"></a>

다음 IAM 정책을 사용하여 `us-west-2` 리전에서 이름이 `environment`인 태그와 값이 `test`인 태그가 있는 특정 AWS 계정에 한해 사용자에게 Amazon Redshift 클러스터를 수정하도록 허용할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid":"AllowModifyTestCluster",
        "Effect": "Allow",
        "Action": "redshift:ModifyCluster",
        "Resource": "arn:aws:redshift:us-west-2:123456789012:cluster:*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/environment": "test"
            }
        }
    }
}
```

------

#### 예 2: aws:RequestTag 조건 키를 사용한 액세스 제한
<a name="redshift-policy-resources.resource-permissions-example2"></a>

다음 IAM 정책을 사용하여 클러스터 생성 명령에 이름이 `usage`인 태그와 값이 `production`인 태그를 추가한 경우에 한해 사용자에게 Amazon Redshift 클러스터를 생성하도록 허용할 수 있습니다. `aws:TagKeys` 및 `ForAllValues` 한정자가 있는 조건은 요청에서 `costcenter` 및 `usage` 키만 지정할 수 있도록 지정합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid":"AllowCreateProductionCluster",
        "Effect": "Allow",
        "Action": [
            "redshift:CreateCluster",
            "redshift:CreateTags"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/usage": "production"
            },
            "ForAllValues:StringEquals": {
                "aws:TagKeys": [
                    "costcenter",
                    "usage"
                ]
            }
        }
    }
}
```

------

# Amazon Redshift에 대한 자격 증명 기반 정책(IAM 정책) 사용
<a name="redshift-iam-access-control-identity-based"></a>

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

**중요**  
Amazon Redshift 리소스에 대한 액세스 관리를 위해 제공되는 기본 개념과 옵션 설명에 대한 소개 주제 부분을 먼저 읽어 보는 것이 좋습니다. 자세한 내용은 [Amazon Redshift 리소스에 대한 액세스 권한 관리 개요](redshift-iam-access-control-overview.md) 섹션을 참조하세요.

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

------
#### [ JSON ]

****  

```
{
  "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"
    }
  ]
}
```

------

이 정책에는 두 명령문이 있습니다: 
+ 첫 번째 문은 사용자에게 클러스터를 생성, 삭제, 수정 및 재부팅할 수 있는 권한을 부여합니다. 여기에서 와일드카드 문자(\$1)를 `Resource` 값으로 지정하면 루트 AWS 계정에 속한 모든 Amazon Redshift 리소스에게 정책이 적용됩니다.
+ 두 번째 문은 클러스터의 삭제 또는 수정 권한을 거부합니다. 여기에서는 와일드카드 문자(\$1)가 포함된 `Resource` 값에 클러스터 Amazon 리소스 이름(ARN)을 지정합니다. 그러면 루트 AWS 계정에서 클러스터 식별자가 `production`으로 시작하는 모든 Amazon Redshift 클러스터에 이 문이 적용됩니다.

## Amazon Redshift에 대한 AWS 관리형 정책
<a name="redshift-policy-resources.managed-policies"></a>

AWS는 AWS에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 관리형 정책은 필요한 권한을 사용자가 조사할 필요가 없도록 일반 사용 사례에 필요한 권한을 부여합니다. 자세한 내용은 *IAM User Guide*의 [AWS managed policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)를 참조하세요.

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

다음 섹션에서는 계정의 사용자에게 연결할 수 있고 Amazon Redshift에 고유한 AWS 관리형 정책입니다.

## AWS 관리형 정책에 대한 Amazon Redshift 업데이트
<a name="security-iam-awsmanpol-updates"></a>



이 서비스가 이러한 변경 내용을 추적하기 시작한 이후부터 Amazon Redshift의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다. 이 페이지의 변경 사항에 대한 자동 알림을 받아보려면 Amazon Redshift 문서 기록 페이지에서 RSS 피드를 구독하세요.




| 변경 | 설명 | 날짜 | 
| --- | --- | --- | 
|  [AmazonRedshiftFederatedAuthorization](#redshift-policy-managed-policies-federated-authorization) - 새 정책  |   Amazon Redshift 페더레이션 권한 부여를 사용하여 쿼리를 실행하기 위한 새로운 간편 사용 정책 정책이 Amazon Redshift에 추가되었습니다.  | 2025년 11월 21일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |   관리형 정책에 작업 `lakeformation:GetDataAccess`의 권한이 추가됩니다. 이를 추가하면 AWS Lake Formation에서 페더레이션된 카탈로그 정보를 가져올 수 있는 권한이 부여됩니다. `glue:GetCatalog` 및 `glue:GetCatalogs` 작업에 대한 추가 조건이 관리형 정책에 추가됩니다.  | 2025년 3월 13일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |   `glue:GetCatalog` 및 `glue:GetCatalogs` 작업에 대한 권한이 관리형 정책에 추가됩니다. 이를 추가하면 AWS Glue에서 카탈로그 정보를 가져올 수 있는 권한이 부여됩니다.  | 2024년 12월 3일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  관리형 정책에 작업 `servicequotas:GetServiceQuota`의 권한이 추가됩니다. 이렇게 하면 할당량 또는 제한에 액세스할 수 있는 권한이 부여됩니다.  | 2024년 3월 8일 | 
|  [AmazonRedshiftQueryEditorV2FullAccess](#redshift-policy-managed-policies-query-editor-V2) - 기존 정책 업데이트  |  `redshift-serverless:ListNamespaces` 및 `redshift-serverless:ListWorkgroups` 작업에 대한 권한이 관리형 정책에 추가됩니다. 추가하면 Amazon Redshift 데이터 웨어하우스의 서버리스 네임스페이스와 서버리스 작업 그룹을 나열할 권한이 부여됩니다.  | 2024년 2월 21일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  `redshift-serverless:ListNamespaces` 및 `redshift-serverless:ListWorkgroups` 작업에 대한 권한이 관리형 정책에 추가됩니다. 추가하면 Amazon Redshift 데이터 웨어하우스의 서버리스 네임스페이스와 서버리스 작업 그룹을 나열할 권한이 부여됩니다.  | 2024년 2월 21일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  `redshift-serverless:ListNamespaces` 및 `redshift-serverless:ListWorkgroups` 작업에 대한 권한이 관리형 정책에 추가됩니다. 추가하면 Amazon Redshift 데이터 웨어하우스의 서버리스 네임스페이스와 서버리스 작업 그룹을 나열할 권한이 부여됩니다.  | 2024년 2월 21일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  `redshift-serverless:ListNamespaces` 및 `redshift-serverless:ListWorkgroups` 작업에 대한 권한이 관리형 정책에 추가됩니다. 추가하면 Amazon Redshift 데이터 웨어하우스의 서버리스 네임스페이스와 서버리스 작업 그룹을 나열할 권한이 부여됩니다.  | 2024년 2월 21일 | 
|  [AmazonRedshiftReadOnlyAccess](#redshift-policy-managed-policies-read-only) - 기존 정책 업데이트  |  관리형 정책에 작업 `redshift:ListRecommendations`의 권한이 추가됩니다. 이렇게 하면 Amazon Redshift Advisor 권장 사항을 나열할 수 있는 권한이 부여됩니다.  | 2024년 2월 7일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  `ec2:AssignIpv6Addresses` 및 `ec2:UnassignIpv6Addresses` 작업에 대한 권한이 관리형 정책에 추가됩니다. 추가하면 IP 주소를 할당하고 할당 취소할 수 있는 권한이 부여됩니다.  | 2023년 10월 31일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  `sqlworkbench:GetAutocompletionMetadata` 및 `sqlworkbench:GetAutocompletionResource` 작업에 대한 권한이 관리형 정책에 추가됩니다. 이 기능을 추가하면 쿼리를 편집하는 동안 SQL 자동 완성을 위한 데이터베이스 정보를 생성하고 검색할 수 있는 권한이 부여됩니다.  | 2023년 8월 16일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  `sqlworkbench:GetAutocompletionMetadata` 및 `sqlworkbench:GetAutocompletionResource` 작업에 대한 권한이 관리형 정책에 추가됩니다. 이 기능을 추가하면 쿼리를 편집하는 동안 SQL 자동 완성을 위한 데이터베이스 정보를 생성하고 검색할 수 있는 권한이 부여됩니다.  | 2023년 8월 16일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  `sqlworkbench:GetAutocompletionMetadata` 및 `sqlworkbench:GetAutocompletionResource` 작업에 대한 권한이 관리형 정책에 추가됩니다. 이 기능을 추가하면 쿼리를 편집하는 동안 SQL 자동 완성을 위한 데이터베이스 정보를 생성하고 검색할 수 있는 권한이 부여됩니다.  | 2023년 8월 16일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  보안 암호 생성 및 관리 작업을 위한 AWS Secrets Manager 작업 권한이 관리형 정책에 추가됩니다. 추가된 권한은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html)  | 2023년 8월 14일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  Amazon EC2에서 보안 그룹 및 라우팅 규칙을 생성하고 관리하기 위한 작업 권한이 관리형 정책에서 제거됩니다. 이러한 권한은 서브넷 및 VPC 생성과 관련이 있습니다. 제거되는 권한은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html) 이들은 Purpose:RedshiftMigrateToVpc 리소스 태그와 연결되었습니다. 이 태그는 Amazon EC2 Classic에서 Amazon EC2 VPC로 마이그레이션하는 작업에 대한 권한 범위를 제한했습니다. 리소스 태그에 대한 자세한 내용은 [태그를 사용한 AWS 리소스 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하세요. | 2023년 5월 8일 | 
|  [AmazonRedshiftDataFullAccess](#redshift-policy-managed-policies-data-full-access) - 기존 정책 업데이트  |  관리형 정책에 작업 `redshift:GetClusterCredentialsWithIAM`의 권한이 추가됩니다. 추가를 통해 지정된 AWS 계정에서 Amazon Redshift 데이터베이스에 액세스하기 위한 임시 강화 보안 인증 정보를 가져올 권한이 부여됩니다.  | 2023년 4월 7일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  Amazon EC2에서 보안 그룹 규칙을 생성하고 관리하기 위한 작업 권한이 관리형 정책에 추가됩니다. 이러한 보안 그룹 및 규칙은 특히 Amazon Redshift `aws:RequestTag/Redshift` 리소스 태그와 관련이 있습니다. 이렇게 하면 권한 범위가 특정 Amazon Redshift 리소스로 제한됩니다.  | 2023년 4월 6일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  관리형 정책에 작업 `sqlworkbench:GetSchemaInference`의 권한이 추가됩니다. 추가를 통해 파일에서 추론된 열 및 데이터 유형을 가져올 수 있는 권한이 부여됩니다.  | 2023년 3월 21일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  관리형 정책에 작업 `sqlworkbench:GetSchemaInference`의 권한이 추가됩니다. 추가를 통해 파일에서 추론된 열 및 데이터 유형을 가져올 수 있는 권한이 부여됩니다.  | 2023년 3월 21일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  관리형 정책에 작업 `sqlworkbench:GetSchemaInference`의 권한이 추가됩니다. 추가를 통해 파일에서 추론된 열 및 데이터 유형을 가져올 수 있는 권한이 부여됩니다.  | 2023년 3월 21일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  관리형 정책에 작업 `sqlworkbench:AssociateNotebookWithTab`의 권한이 추가됩니다. 이 권한을 추가하면 사용자의 자체 노트북에 연결되는 탭을 만들고 업데이트할 수 있는 권한이 부여됩니다.  | 2023년 2월 2일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  관리형 정책에 작업 `sqlworkbench:AssociateNotebookWithTab`의 권한이 추가됩니다. 이 권한을 추가하면 사용자의 자체 노트북이나 공유하는 노트북에 연결되는 탭을 만들고 업데이트할 수 있는 권한이 부여됩니다.  | 2023년 2월 2일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  관리형 정책에 작업 `sqlworkbench:AssociateNotebookWithTab`의 권한이 추가됩니다. 이 권한을 추가하면 사용자의 자체 노트북이나 공유하는 노트북에 연결되는 탭을 만들고 업데이트할 수 있는 권한이 부여됩니다.  | 2023년 2월 2일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  노트북 사용 권한을 부여하기 위해 Amazon Redshift는 다음 작업에 대한 권한을 추가했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html)  | 2022년 10월 17일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  노트북 사용 권한을 부여하기 위해 Amazon Redshift는 다음 작업에 대한 권한을 추가했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html)  | 2022년 10월 17일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  노트북 사용 권한을 부여하기 위해 Amazon Redshift는 다음 작업에 대한 권한을 추가했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html)  | 2022년 10월 17일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  Amazon Redshift에서 CloudWatch에 지표를 게시할 수 있도록 네임스페이스 `AWS/Redshift`가 추가되었습니다.  | 2022년 9월 7일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  Amazon Redshift가 작업 `sqlworkbench:ListQueryExecutionHistory` 및`sqlworkbench:GetQueryExecutionHistory`에 대한 권한을 추가했습니다. 쿼리 기록을 볼 수 있는 권한을 부여합니다.  | 2022년 8월 30일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  Amazon Redshift가 작업 `sqlworkbench:ListQueryExecutionHistory` 및`sqlworkbench:GetQueryExecutionHistory`에 대한 권한을 추가했습니다. 쿼리 기록을 볼 수 있는 권한을 부여합니다.  | 2022년 8월 30일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  Amazon Redshift가 작업 `sqlworkbench:ListQueryExecutionHistory` 및`sqlworkbench:GetQueryExecutionHistory`에 대한 권한을 추가했습니다. 쿼리 기록을 볼 수 있는 권한을 부여합니다.  | 2022년 8월 30일 | 
|  [AmazonRedshiftFullAccess](#redshift-policy-managed-policies-full-access) - 기존 정책 업데이트  |  Amazon Redshift Serverless에 대한 권한을 기존 AmazonRedshiftFullAccess 관리형 정책에 추가했습니다.  | 2022년 7월 22일 | 
|  [AmazonRedshiftDataFullAccess](#redshift-policy-managed-policies-data-full-access) - 기존 정책 업데이트  |  Amazon Redshift에서 태그 키 RedshiftDataFullAccess와 태그 값으로 태깅된 리소스에 대한 액세스 권한을 부여하기 위해 태그 aws:ResourceTag/RedshiftDataFullAccess 권한의 redshift-serverless:GetCredentials 기본 범위 지정 조건을 StringEquals에서 StringLike로 업데이트했습니다. | 2022년 7월 11일 | 
|  [AmazonRedshiftDataFullAccess](#redshift-policy-managed-policies-data-full-access) - 기존 정책 업데이트  |  Amazon Redshift에서 Amazon Redshift Serverless에 대한 임시 보안 인증을 위해 redshift-serverless:GetCredentials를 허용하도록 새 권한을 추가했습니다. | 2022년 7월 8일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  Amazon Redshift가 `sqlworkbench:GetAccountSettings` 작업에 대한 권한을 추가했습니다. 계정 설정을 가져오는 권한을 부여합니다.  | 2022년 6월 15일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  Amazon Redshift가 `sqlworkbench:GetAccountSettings` 작업에 대한 권한을 추가했습니다. 계정 설정을 가져오는 권한을 부여합니다.  | 2022년 6월 15일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  Amazon Redshift가 `sqlworkbench:GetAccountSettings` 작업에 대한 권한을 추가했습니다. 계정 설정을 가져오는 권한을 부여합니다.  | 2022년 6월 15일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  새로운 Amazon Redshift Serverless 엔드포인트에 대한 퍼블릭 액세스를 사용하기 위해 Amazon Redshift는 탄력적 IP 주소를 고객 계정에 있는 VPC 엔드포인트의 탄력적 네트워크 인터페이스에 할당하고 연결합니다. 이 작업은 서비스 연결 역할을 통해 제공된 권한을 사용하여 수행됩니다. 이 사용 사례를 지원하기 위해 탄력적 IP 주소를 할당 및 해제하는 작업이 Amazon Redshift Serverless 서비스 연결 역할에 추가되었습니다.  | 2022년 5월 26일 | 
|  [AmazonRedshiftQueryEditorV2FullAccess](#redshift-policy-managed-policies-query-editor-V2) - 기존 정책 업데이트  |  작업 `sqlworkbench:ListTaggedResources`에 대한 권한. Amazon Redshift 쿼리 편집기 v2 리소스로 범위가 지정되었습니다. 이 정책 업데이트에서는 쿼리 편집기 v2를 통해서만 `tag:GetResources`를 호출할 수 있는 권한을 부여합니다.  | 2022년 2월 22일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 기존 정책 업데이트  |  작업 `sqlworkbench:ListTaggedResources`에 대한 권한. Amazon Redshift 쿼리 편집기 v2 리소스로 범위가 지정되었습니다. 이 정책 업데이트에서는 쿼리 편집기 v2를 통해서만 `tag:GetResources`를 호출할 수 있는 권한을 부여합니다.  | 2022년 2월 22일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  작업 `sqlworkbench:ListTaggedResources`에 대한 권한. Amazon Redshift 쿼리 편집기 v2 리소스로 범위가 지정되었습니다. 이 정책 업데이트에서는 쿼리 편집기 v2를 통해서만 `tag:GetResources`를 호출할 수 있는 권한을 부여합니다.  | 2022년 2월 22일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 기존 정책 업데이트  |  작업 `sqlworkbench:ListTaggedResources`에 대한 권한. Amazon Redshift 쿼리 편집기 v2 리소스로 범위가 지정되었습니다. 이 정책 업데이트에서는 쿼리 편집기 v2를 통해서만 `tag:GetResources`를 호출할 수 있는 권한을 부여합니다.  | 2022년 2월 22일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 기존 정책 업데이트  |  관리형 정책에 작업 `sqlworkbench:AssociateQueryWithTab`의 권한이 추가됩니다. 이것를 추가하면 고객이 공유되는 쿼리에 연결된 편집기 탭을 만들 수 있습니다.  | 2022년 2월 22일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  Amazon Redshift는 Amazon Redshift 네트워크 및 VPC 리소스를 관리할 수 있도록 새로운 작업에 대한 권한을 추가했습니다.  | 2021년 11월 22일 | 
|  [AmazonRedshiftAllCommandsFullAccess](#redshift-policy-managed-policies-service-linked-role-commands) - 새 정책  |  Amazon Redshift는 Amazon Redshift 콘솔에서 생성된 IAM 역할을 사용하도록 허용하고 클러스터가 Amazon S3, UNLOAD, CREATE EXTERNAL SCHEMA, CREATE EXTERNAL FUNCTION, CREATE MODEL 또는 CREATE LIBRARY 명령에서 COPY를 실행하기 위한 기본값으로 설정할 수 있도록 새 정책을 추가했습니다.  | 2021년 11월 18일 | 
|  [AmazonRedshiftServiceLinkedRolePolicy](#redshift-policy-managed-policies-service-linked-role-policy) - 기존 정책 업데이트  |  Amazon Redshift는 감사 로그 내보내기를 포함하여 Amazon Redshift CloudWatch 로그 그룹 및 로그 스트림을 관리할 수 있도록 새로운 작업에 대한 권한을 추가했습니다.  | 2021년 11월 15일 | 
|  [AmazonRedshiftFullAccess](#redshift-policy-managed-policies-full-access) - 기존 정책 업데이트  |  Amazon Redshift는 모델 설명, DynamoDB, Redshift Spectrum 및 Amazon RDS 페더레이션을 허용하기 위한 새로운 권한을 추가했습니다. | 2021년 10월 7일 | 
|  [AmazonRedshiftQueryEditorV2FullAccess](#redshift-policy-managed-policies-query-editor-V2) - 새 정책  |  Amazon Redshift는 Amazon Redshift 쿼리 편집기 v2에 대한 전체 액세스를 허용하기 위한 새로운 정책을 추가했습니다.  | 2021년 9월 24일 | 
|  [AmazonRedshiftQueryEditorV2NoSharing](#redshift-policy-managed-policies-query-editor-V2-no-sharing) - 새 정책  |  Amazon Redshift는 리소스를 공유하지 않고 Amazon Redshift 쿼리 편집기 v2 사용을 허용하기 위한 새로운 정책을 추가했습니다.  | 2021년 9월 24일 | 
|  [AmazonRedshiftQueryEditorV2ReadSharing](#redshift-policy-managed-policies-query-editor-V2-read-sharing) - 새 정책  |  Amazon Redshift는 Amazon Redshift 쿼리 편집기 v2 내에서 읽기 공유를 허용하기 위한 새로운 정책을 추가했습니다.  | 2021년 9월 24일 | 
|  [AmazonRedshiftQueryEditorV2ReadWriteSharing](#redshift-policy-managed-policies-query-editor-V2-write-sharing) - 새 정책  |  Amazon Redshift는 Amazon Redshift 쿼리 편집기 v2 내에서 읽기 및 업데이트 공유를 허용하기 위한 새로운 정책을 추가했습니다.  | 2021년 9월 24일 | 
|  [AmazonRedshiftFullAccess](#redshift-policy-managed-policies-full-access) - 기존 정책 업데이트  |  Amazon Redshift는 `sagemaker:*Job*`를 허용하는 새로운 권한을 추가했습니다.  | 2021년 8월 18일 | 
|  [AmazonRedshiftDataFullAccess](#redshift-policy-managed-policies-data-full-access) - 기존 정책 업데이트  |  Amazon Redshift는 `AuthorizeDataShare`를 허용하는 새로운 권한을 추가했습니다.  | 2021년 8월 12일 | 
|  [AmazonRedshiftDataFullAccess](#redshift-policy-managed-policies-data-full-access) - 기존 정책 업데이트  |  Amazon Redshift는 `BatchExecuteStatement`를 허용하는 새로운 권한을 추가했습니다.  | 2021년 7월 27일 | 
|  Amazon Redshift에서 변경 사항 추적 시작  |  Amazon Redshift가 AWS 관리형 정책에 대한 변경 내용 추적을 시작했습니다.  | 2021년 7월 27일 | 

## AmazonRedshiftReadOnlyAccess
<a name="redshift-policy-managed-policies-read-only"></a>

AWS 계정의 모든 Amazon Redshift 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.

[AmazonRedshiftReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftReadOnlyAccess) 정책은 IAM 콘솔 및 AWS 관리형 정책 참조 안내서**의 [AmazonRedshiftReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftReadOnlyAccess.html)에서 찾을 수 있습니다.

## AmazonRedshiftFullAccess
<a name="redshift-policy-managed-policies-full-access"></a>

AWS 계정의 모든 Amazon Redshift 리소스에 대한 전체 액세스 권한을 부여합니다. 또한 이 정책은 모든 Amazon Redshift Serverless 리소스에 대한 모든 액세스 권한을 부여합니다.

[AmazonRedshiftFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftFullAccess) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftFullAccess.html)에서 찾을 수 있습니다.

## AmazonRedshiftQueryEditor
<a name="redshift-policy-managed-policies-query-editor"></a>

Amazon Redshift 콘솔의 쿼리 편집기에 대한 전체 액세스 권한을 부여합니다.

[AmazonRedshiftQueryEditor](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftQueryEditor) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftQueryEditor](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftQueryEditor.html)에서 찾을 수 있습니다.

## AmazonRedshiftDataFullAccess
<a name="redshift-policy-managed-policies-data-full-access"></a>

AWS 계정의 Amazon Redshift Data API 작업 및 리소스에 전체 액세스 권한을 부여합니다.

[AmazonRedshiftDataFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftDataFullAccess) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftDataFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftDataFullAccess.html)에서 찾을 수 있습니다.

## AmazonRedshiftQueryEditorV2FullAccess
<a name="redshift-policy-managed-policies-query-editor-V2"></a>

Amazon Redshift 쿼리 편집기 v2 작업 및 리소스에 대한 전체 액세스 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다.

[AmazonRedshiftQueryEditorV2FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2FullAccess) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftQueryEditorV2FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftQueryEditorV2FullAccess.html)에서 찾을 수 있습니다.

## AmazonRedshiftQueryEditorV2NoSharing
<a name="redshift-policy-managed-policies-query-editor-V2-no-sharing"></a>

리소스를 공유하지 않고 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다. 이 정책을 사용하는 보안 주체는 리소스(예: 쿼리)에 태그를 지정하여 동일한 AWS 계정의 다른 보안 주체와 리소스를 공유할 수 없습니다.

[AmazonRedshiftQueryEditorV2NoSharing](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2NoSharing) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftQueryEditorV2NoSharing](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftQueryEditorV2NoSharing.html)에서 찾을 수 있습니다.

## AmazonRedshiftQueryEditorV2ReadSharing
<a name="redshift-policy-managed-policies-query-editor-V2-read-sharing"></a>

제한된 리소스 공유로 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다. 이 정책을 사용하는 보안 주체는 리소스(예: 쿼리)에 태그를 지정하여 동일한 AWS 계정의 다른 보안 주체와 리소스를 공유할 수 없습니다. 부여된 보안 주체는 팀과 공유된 리소스를 읽을 수 있지만 업데이트할 수는 없습니다.

[AmazonRedshiftQueryEditorV2ReadSharing](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2ReadSharing) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftQueryEditorV2ReadSharing](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftQueryEditorV2ReadSharing.html)에서 찾을 수 있습니다.

## AmazonRedshiftQueryEditorV2ReadWriteSharing
<a name="redshift-policy-managed-policies-query-editor-V2-write-sharing"></a>

리소스 공유와 함께 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다. 이 정책을 사용하는 보안 주체는 리소스(예: 쿼리)에 태그를 지정하여 동일한 AWS 계정의 다른 보안 주체와 리소스를 공유할 수 없습니다. 부여된 보안 주체는 팀과 공유하는 리소스를 읽고 업데이트할 수 있습니다.

[AmazonRedshiftQueryEditorV2ReadWriteSharing](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2ReadWriteSharing) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftQueryEditorV2ReadWriteSharing](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftQueryEditorV2ReadWriteSharing.html)에서 찾을 수 있습니다.

## AmazonRedshiftServiceLinkedRolePolicy
<a name="redshift-policy-managed-policies-service-linked-role-policy"></a>

AmazonRedshiftServiceLinkedRolePolicy를 IAM 엔터티에 연결할 수 없습니다. 이 정책은 Amazon Redshift가 계정 리소스에 액세스할 수 있도록 허용하는 서비스 연결 역할에 연결됩니다. 자세한 내용은 [Amazon Redshift에 대해 서비스 연결 역할 사용](https://docs.aws.amazon.com/redshift/latest/mgmt/using-service-linked-roles.html)을 참조하세요.

[AmazonRedshiftServiceLinkedRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftServiceLinkedRolePolicy) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftServiceLinkedRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftServiceLinkedRolePolicy.html)에서 찾을 수 있습니다.

## AmazonRedshiftAllCommandsFullAccess
<a name="redshift-policy-managed-policies-service-linked-role-commands"></a>

Amazon Redshift 콘솔에서 생성된 IAM 역할을 사용하고 클러스터가 Amazon S3, UNLOAD, CREATE EXTERNAL SCHEMA, CREATE EXTERNAL FUNCTION 및 CREATE MODEL 명령에서 COPY를 실행하기 위한 기본값으로 설정할 수 있는 권한을 부여합니다. 이 정책은 Amazon S3, CloudWatch Logs, Amazon SageMaker AI 또는 AWS Glue와 같은 관련 서비스에 대해 SELECT 문을 실행할 수 있는 권한도 부여합니다.

[AmazonRedshiftAllCommandsFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftAllCommandsFullAccess) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 안내서*의 [AmazonRedshiftAllCommandsFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftAllCommandsFullAccess.html)에서 찾을 수 있습니다.

## AmazonRedshiftFederatedAuthorization
<a name="redshift-policy-managed-policies-federated-authorization"></a>

 이 정책은 Amazon Redshift 페더레이션 권한으로 Glue 데이터 카탈로그 데이터베이스에 대해 쿼리를 실행하는 데 필요한 IAM 작업을 통합합니다. 이러한 쿼리는 AWS Glue를 통과하므로 객체를 검색하려면 카탈로그 객체에 대한 작업 가져오기가 필요하고 객체를 수정하려면 생성, 업데이트, 이름 바꾸기 및 삭제 작업이 필요합니다. 리소스는 Amazon Redshift에서 관리하므로 보안 주체는 쿼리를 완료하는 데 Redshift 권한도 필요합니다. `glue:FederateAuthorization` 작업을 통해 AWS Glue는 카탈로그 객체에 대한 권한 부여 결정을 Amazon Redshift에 위임할 수 있습니다.

 이 정책은 보안 주체가 Amazon Redshift 페더레이션 권한을 사용하여 카탈로그에 대해 쿼리를 실행하도록 허용하지만 Amazon Redshift 네임스페이스를 AWS Glue에 등록 및 등록 취소하는 것은 허용하지 않습니다. Amazon Redshift 페더레이션 권한 설정에 대한 IAM 정책 요구 사항에 대한 설명서를 참조하세요.

[AmazonRedshiftFederatedAuthorization](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftFederatedAuthorization) 정책은 IAM 콘솔 및 *AWS 관리형 정책 참조 가이드*의 [AmazonRedshiftFederatedAuthorization](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftFederatedAuthorization.html)에서 확인할 수 있습니다.

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





## Redshift Spectrum을 사용하는 데 필요한 권한
<a name="redshift-spectrum-policy-resources"></a>

Amazon Redshift Spectrum에서 리소스에 액세스하려면 다른 AWS 서비스에 대한 권한이 필요합니다. Redshift Spectrum에 대한 IAM 정책의 권한에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon Redshift Spectrum에 대한 IAM 정책](https://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-iam-policies.html)을 참조하세요.

## Amazon Redshift 콘솔 사용에 필요한 권한
<a name="redshift-policy-resources.required-permissions.console"></a>

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

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔은 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다. 이 사용자가 Amazon Redshift 콘솔을 사용할 수 있도록 하려면 `AmazonRedshiftReadOnlyAccess` 관리형 정책을 사용자에게 연결합니다. 이 작업을 수행하는 방법은 [Amazon Redshift에 대한 AWS 관리형 정책](#redshift-policy-resources.managed-policies)에 설명되어 있습니다.

사용자에게 Amazon Redshift 콘솔의 쿼리 편집기에 대한 액세스 권한을 부여하는 방법에 대한 내용은 [Amazon Redshift 콘솔 쿼피 편집기 사용에 필요한 권한](#redshift-policy-resources.required-permissions.query-editor) 섹션을 참조하세요.

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

## Amazon Redshift 콘솔 쿼피 편집기 사용에 필요한 권한
<a name="redshift-policy-resources.required-permissions.query-editor"></a>

사용자가 Amazon Redshift 쿼리 편집기로 작업하려면 해당 사용자에게 Amazon Redshift 및 Amazon Redshift Data API 작업에 대한 최소 권한 집합이 있어야 합니다. 보안 암호를 사용하여 데이터베이스에 연결하려면 Secrets Manager 권한도 있어야 합니다.

사용자가 Amazon Redshift 콘솔에서 쿼리 편집기에 액세스할 수 있는 권한을 제공하려면 `AmazonRedshiftQueryEditor` 및 `AmazonRedshiftReadOnlyAccess` AWS 관리형 정책을 연결합니다. `AmazonRedshiftQueryEditor` 정책은 사용자 권한이 자신의 SQL 문의 결과만 검색하도록 허용합니다. 즉, `AmazonRedshiftQueryEditor` AWS 관리형 정책의 이 섹션에 표시된 것과 동일한 `aws:userid`로 제출된 문입니다.

```
{
    "Sid":"DataAPIIAMStatementPermissionsRestriction",
    "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를 사용하는 데 필요한 권한
<a name="redshift-policy-resources.required-permissions.query-editor-v2"></a>

사용자가 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` 태그를 추가하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 콘솔의 탐색 창에서 [**역할(Roles)**]을 선택한 다음 편집할 역할의 이름을 선택합니다.

1. **태그(Tags)** 탭을 선택한 후 **태그 추가(Add tags)**를 선택합니다.

1. 태그 키 **sqlworkbench-team**과 값 `accounting-team`을 추가합니다.

1. **변경 사항 저장**을 선택합니다.

   이제 IAM 보안 주체(이 IAM 역할이 연결됨)가 팀과 쿼리를 공유하면 동일한 `accounting-team` 태그 값을 가진 다른 보안 주체가 쿼리를 볼 수 있습니다.

IAM 역할 및 IAM 사용자를 포함하여 보안 주체에 태그를 연결하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 리소스에 태깅](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)을 참조하세요.

자격 증명 공급자(IdP)를 사용하여 세션 수준에서 팀을 설정할 수도 있습니다. 이를 통해 동일한 IAM 역할을 사용하는 여러 사용자가 서로 다른 팀을 가질 수 있습니다. IAM 역할 신뢰 정책은 `sts:TagSession` 작업을 허용해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [세션 태그를 추가하는 데 필요한 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_permissions-required)을 참조하세요. 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 인증을 이용한 데이터베이스 사용자 자격 증명 생성](generating-user-credentials.md)과 [자격 증명 공급자 및 페더레이션](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)을 참조하세요.

은 노트북 셀의 현재 콘텐츠를 가져오고 계정에서 노트북 버전을 생성할 수 있는 권한을 부여합니다. 즉, 버전 생성 당시 노트북의 현재 내용은 버전의 내용과 동일합니다. 나중에 버전의 셀 내용은 현재 노트북이 업데이트된 것과 동일하게 유지됩니다. `sqlworkbench:GetNotebookVersion`은 노트북 버전을 가져올 수 있는 권한을 부여합니다. `sqlworkbench:BatchGetNotebookCell` 권한은 없지만 노트북에 대한 `sqlworkbench:CreateNotebookVersion` 및 `sqlworkbench:GetNotebookVersion` 권한이 있는 사용자는 해당 버전의 노트북 셀에 액세스할 수 있습니다. `sqlworkbench:BatchGetNotebookCell` 권한이 없는 이 사용자는 먼저 버전을 생성한 다음 이 생성된 버전을 가져오는 방식으로 여전히 Notebook 셀의 콘텐츠를 검색할 수 있습니다.

## Amazon Redshift 스케줄러 사용에 필요한 권한
<a name="iam-permission-scheduler"></a>

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

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

------
#### [ 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)를 참조하세요.

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

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

------
#### [ JSON ]

****  

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

------

Amazon Redshift 스케줄러에 대한 역할을 생성하는 단계는 *IAM User Guide*의 [Creating a role for an AWS service (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-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 스케줄러 사용에 필요한 권한
<a name="iam-permission-eventbridge-scheduler"></a>

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

콘솔에서 Amazon Redshift 쿼리 편집기를 사용하여 예약된 쿼리를 생성할 때 EventBridge 스케줄러를 사용합니다.

IAM 콘솔에서 예약된 쿼리를 실행하는 IAM 역할을 생성할 수 있습니다. 이 IAM 역할에서 `AmazonEventBridgeFullAccess`와 `AmazonRedshiftDataFullAccess`를 연결합니다.

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

------
#### [ 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)를 참조하세요.

EventBridge 스케줄러에 대한 역할을 생성하는 단계는 *IAM User Guide*의 [Creating a role for an AWS service (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-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)을 사용하는 데 필요한 권한
<a name="iam-permission-ml"></a>

다음에서 다양한 사용 사례에 대해 Amazon Redshift 기계 학습(ML)을 사용하는 데 필요한 권한에 대한 설명을 찾을 수 있습니다.

사용자가 Amazon SageMaker AI와 함께 Amazon Redshift 기계 학습을 사용하려면 기본값보다 더 제한적인 정책으로 IAM 역할을 생성합니다. 다음 정책을 사용할 수 있습니다. 필요에 맞게 이 정책을 수정할 수도 있습니다.

다음 정책은 Amazon Redshift의 모델 설명 기능을 사용하여 SageMaker AI Autopilot을 실행하는 데 필요한 권한을 보여줍니다.

------
#### [ JSON ]

****  

```
{
    "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 페더레이션에 대한 액세스를 허용하기 위한 최소한의 전체 권한을 보여줍니다.

------
#### [ JSON ]

****  

```
{
    "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 AI가 다른 서비스와 상호 작용하는 이전 IAM 역할을 수임하도록 허용하려면 역할에 다음 신뢰 정책을 추가합니다.

------
#### [ JSON ]

****  

```
{
  "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 AI API 작업을 직접 호출할 수 있는 권한이 있는지 확인해야 합니다. `AmazonSageMakerFullAccess` 관리형 정책을 사용하는 것이 좋습니다. 보다 제한적인 정책으로 IAM 역할을 생성하려는 경우 다음 정책을 사용합니다.

------
#### [ JSON ]

****  

```
{
  "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 AI Developer Guide*의 [AmazonSageMakerFullAccess](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonSageMakerFullAccess)를 참조하세요.

예측 모델을 만들려면 `AmazonForecastFullAccess` 관리형 정책을 사용하는 것이 좋습니다. 보다 제한적인 정책을 사용하려면 IAM 역할에 다음 정책을 추가합니다.

------
#### [ JSON ]

****  

```
{
    "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 Bedrock 모델을 만들려면 `AmazonBedrockFullAccess` 관리형 정책을 사용하는 것이 좋습니다. 보다 제한적인 정책을 사용하려면 IAM 역할에 다음 정책을 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "bedrock:InvokeModel",
            "Resource": [
                "*",
                "arn:aws:bedrock:us-east-1::foundation-model/*"
            ]
        }
    ]
}
```

------

Amazon Redshift ML에 관한 자세한 내용은 [Amazon Redshift에서 기계 학습 사용](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning.html) 또는 [CREATE MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html), [CREATE EXTERNAL MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_create_external_model.html)을 참조하시기 바랍니다.

## 스트리밍 수집 권한
<a name="iam-permission-streaming-ingestion"></a>

스트리밍 수집은 두 가지 서비스에서 작동합니다. 바로 Kinesis Data Streams와 Amazon MSK입니다.

### Kinesis Data Streams에서 스트리밍 수집을 사용하는 데 필요한 권한
<a name="iam-permission-streaming-ingestion-kinesis"></a>

관리형 정책 예시가 포함된 절차는 [Amazon Kinesis Data Streams에서 스트리밍 수집 시작하기](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion-getting-started.html)를 참조하세요.

### Amazon MSK에서 스트리밍 수집을 사용하는 데 필요한 권한
<a name="iam-permission-streaming-ingestion-kafka"></a>

관리형 정책 예시가 포함된 절차는 [Amazon Managed Streaming for Apache Kafka에서 스트리밍 수집 시작하기](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion-getting-started-MSK.html)를 참조하세요.

## 데이터 공유 API 작업을 사용하는 데 필요한 권한
<a name="iam-permission-datasharing"></a>

데이터 공유 API 작업에 대한 액세스를 제어하려면 IAM 작업 기반 정책을 사용합니다. IAM 정책을 관리하는 방법에 대한 자세한 내용은 *IAM User Guide*의 [Managing IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) 섹션을 참조하세요.

특히, 생산자 클러스터 관리자가 `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에 대한 리소스 정책
<a name="redshift-policy-resources.getclustercredentials-resources"></a>

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

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

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html)

리소스에 대한 자세한 내용은 [Amazon Redshift 리소스 및 작업](redshift-iam-access-control-overview.md#redshift-iam-accesscontrol.actions-and-resources) 섹션을 참조하세요.

정책에 다음의 조건도 포함할 수 있습니다.
+ `redshift:DurationSeconds`
+ `redshift:DbName`
+ `redshift:DbUser`

**중요**  
SAML SSO 통합의 경우 `${redshift:DbUser}` 변수를 사용하여 IAM 정책을 지정해야 할 수 있습니다. 이러한 경우 호출자가 AWS 사용자 자격 증명과 일치하지 않는 사용자의 자격 증명을 얻을 수 없도록 하는 조건문을 사용하는 것이 좋습니다. 예를 들면 `"StringEquals": {"aws:userid":"AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}"}"`가 있습니다. [예제 8: GetClusterCredentials 사용을 위한 IAM 정책 예제](#redshift-policy-examples-getclustercredentials)을(를) 참조하세요. 조건에 대한 자세한 내용은 [정책에서 조건 지정](redshift-iam-access-control-overview.md#redshift-policy-resources.specifying-conditions) 단원을 참조하십시오.

## 고객 관리형 정책 예제
<a name="redshift-iam-accesscontrol.examples"></a>

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

**참고**  
모든 예에서는 미국 서부(오리건) 리전(`us-west-2`)을 사용하며 가상의 계정 ID를 포함합니다.

### 예 1: 모든 Amazon Redshift 작업 및 리소스에 대한 전체 액세스 권한 허용
<a name="redshift-policy-example-allow-full-access"></a>

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

------
#### [ JSON ]

****  

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

------

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

### 예 2: 한 Amazon Redshift 작업 집합에 대한 사용자 액세스 거부
<a name="redshift-policy-example-deny-specific-actions"></a>

기본적으로 모든 권한을 거부합니다. 하지만 간혹 특정 작업 또는 작업 집합에 대한 액세스를 명시적으로 거부해야 하는 경우도 있습니다. 이때는 다음 정책을 통해 모든 Amazon Redshift 작업에 대한 액세스를 허용하면서, 이름이 `Delete`로 시작하는 Amazon Redshift 작업에 대해서는 액세스를 명시적으로 거부할 수 있습니다. 이 정책은 `us-west-2`에 속한 모든 Amazon Redshift 리소스에 적용됩니다.

------
#### [ JSON ]

****  

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

------

### 예 3: 사용자에게 클러스터 관리 허용
<a name="redshift-policy-example-allow-manage-clusters"></a>

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

------
#### [ JSON ]

****  

```
{
  "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 name="redshift-policy-example-allow-authorize-revoke-snapshot"></a>

다음 정책은 사용자(사용자 A)에게 아래와 같은 작업을 허용합니다.
+ `shared`라는 이름의 클러스터에서 생성된 모든 스냅샷에 대한 액세스 권한을 부여합니다.
+ `shared` 클러스터에서 생성된 스냅샷 중에서 이름이 `revokable`로 시작하는 모든 스냅샷에 대한 액세스 권한을 취소합니다.

------
#### [ JSON ]

****  

```
{
  "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`로 시작해야 합니다.

------
#### [ JSON ]

****  

```
{
  "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: 사용자가 클러스터 스냅샷을 복사한 후 스냅샷에서 클러스터를 복원하도록 허용
<a name="redshift-policy-example-allow-copy-restore-snapshot"></a>

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

------
#### [ JSON ]

****  

```
{
  "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 서비스의 공통 작업과 리소스에 대한 사용자 액세스 허용
<a name="redshift-policy-example-allow-related-services"></a>

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

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

------
#### [ JSON ]

****  

```
{
  "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 콘솔로 리소스에 태그를 지정할 수 있도록 허용
<a name="redshift-policy-example-allow-tagging-with-console"></a>

다음 예제 정책에서는 사용자가 AWS Resource Groups를 사용하여 Amazon Redshift 콘솔로 리소스에 태그를 지정할 수 있도록 허용합니다. 새 Amazon Redshift 콘솔이나 원래 Amazon Redshift 콘솔을 호출하는 사용자 역할에 이 정책을 연결할 수 있습니다. 태그 지정에 대한 자세한 내용은 [Amazon Redshift에서 리소스 태그](amazon-redshift-tagging.md) 섹션을 참조하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid":"TaggingPermissions",
            "Effect": "Allow",
            "Action": [
                "redshift:DeleteTags",
                "redshift:CreateTags",
                "redshift:DescribeTags",
                "tag:UntagResources",
                "tag:TagResources"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 예제 8: GetClusterCredentials 사용을 위한 IAM 정책 예제
<a name="redshift-policy-examples-getclustercredentials"></a>

다음 정책은 다음과 같은 샘플 파라미터 값을 사용합니다.
+ 리전: `us-west-2` 
+ AWS 계정: `123456789012` 
+ 클러스터 이름: `examplecluster` 

다음 정책은 `GetCredentials`, `CreateClusterUser`, `JoinGroup` 작업을 허용합니다. 이 정책은 조건 키를 사용하여 `GetClusterCredentials` 및 `CreateClusterUser` 작업을 허용합니다. 이것은 AWS 사용자 ID가 `"AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}@yourdomain.com"`과 일치할 때만 해당됩니다. IAM 액세스는 `"testdb"` 데이터베이스에 대해서만 요청됩니다. 또한 이 정책은 사용자가 `"common_group"`이라는 그룹을 조인할 수 있도록 허용합니다.

------
#### [ JSON ]

****  

```
{
"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"
      ]
    }
  ]
}
```

------

다음 예는 IAM 역할이 `GetClusterCredentials` 작업을 호출하도록 허용하는 정책입니다. Amazon Redshift `dbuser` 리소스를 지정하면 데이터베이스 사용자 이름 ` temp_creds_user`(` examplecluster`라는 클러스터에서)에 역할의 액세스를 허용합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "redshift:GetClusterCredentials",
    "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/temp_creds_user"
  }
}
```

------

와일드카드(\$1)를 사용하여 클러스터 이름, 사용자 이름, 데이터베이스 그룹 이름의 일부 또는 전부를 대체할 수 있습니다. 다음은 지정 계정에서 아무 클러스터가 있는 `temp_`로 시작하는 모든 사용자 이름을 허용하는 예입니다.

**중요**  
다음 예의 구문은 리소스의 값의 일부로 와일드카드 문자(\$1)를 지정하여 정책이 해당 문자로 시작하는 모든 리소스를 허용하게 합니다. IAM 정책에 와일드카드 문자를 사용하면 너무 허용적일 수 있습니다. 가장 좋은 방법은 해당 업무 용도에 맞는 정책 중 가장 제한적인 정책을 사용하는 것입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "redshift:GetClusterCredentials",
    "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:*/temp_*"
  }
}
```

------

다음 예는 IAM 역할이 새 사용자를 자동으로 생성하고 사용자 로그인 시 조인하는 그룹을 지정하는 옵션으로 `GetClusterCredentials` 작업의 호출을 허용하는 정책입니다. `"Resource": "*" ` 절은 클러스터, 데이터베이스 사용자, 또는 사용자 그룹을 포함한 모든 리소스에 역할 액세스 권한을 허용합니다.

**중요**  
다음 예제의 문은 와일드카드 문자(\$1)를 지정된 작업에 대한 리소스로 지정하므로, 정책은 모든 클러스터 및 데이터베이스 사용자에 대한 액세스를 허용하고 모든 사용자를 생성할 수 있습니다. IAM 정책에 와일드카드 문자를 사용하면 너무 허용적일 수 있습니다. 가장 좋은 방법은 해당 업무 용도에 맞는 정책 중 가장 제한적인 정책을 사용하는 것입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
             "redshift:GetClusterCredentials",
             "redshift:CreateClusterUser",
		"redshift:JoinGroup"
            ],
    "Resource": "*"
  }
}
```

------

자세한 내용은 [Amazon Redshift ARN 구문](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-redshift)을 참조하십시오.

# Amazon Redshift용 네이티브 자격 증명 공급자(IdP) 페더레이션
<a name="redshift-iam-access-control-native-idp"></a>

네이티브 자격 증명 공급자 페더레이션을 사용하면 기존 자격 증명 공급자를 활용하여 인증 및 권한 관리를 간소화하기 때문에 Amazon Redshift에 대한 자격 증명 및 권한 관리가 더 쉬워집니다. 이는 자격 증명 공급자로부터 Redshift로 자격 증명 메타데이터를 공유할 수 있기 때문에 가능합니다. 이 기능을 처음 사용 시 지원되는 자격 증명 공급자는 [Microsoft Azure Active Directory(Azure AD)](https://azure.microsoft.com/en-us/services/active-directory/)입니다.

서드 파티 자격 증명 공급자의 자격 증명을 인증할 수 있도록 Amazon Redshift를 구성하려면 Amazon Redshift에 자격 증명 공급자를 등록합니다. 이렇게 하면 Redshift는 자격 증명 공급자가 정의한 사용자와 역할을 인증할 수 있습니다. 따라서 자격 증명 정보가 공유되므로 서드 파티 자격 증명 공급자와 Amazon Redshift 모두에서 세분화된 자격 증명 관리를 수행하지 않아도 됩니다.

ID 제공업체(iDP) 그룹에서 전송된 세션 역할을 사용하는 방법에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서**의 [PG\$1GET\$1SESSION\$1ROLES](https://docs.aws.amazon.com/redshift/latest/dg/PG_GET_SESSION_ROLES.html)를 참조하세요.

## 네이티브 ID 제공업체(idP) 페더레이션
<a name="redshift-iam-access-control-native-idp-login"></a>

 자격 증명 공급자와 Amazon Redshift 간의 예비 설정을 완료하려면 몇 가지 단계를 수행합니다. 먼저 Amazon Redshift를 자격 증명 공급자에 서드 파티 애플리케이션으로 등록하고 필요한 API 권한을 요청합니다. 그런 다음 자격 증명 공급자에서 사용자 및 그룹을 생성합니다. 마지막으로 자격 증명 공급자에 고유한 인증 파라미터를 설정하는 SQL 문을 사용하여 Amazon Redshift에 자격 증명 공급자를 등록합니다. 자격 증명 공급자를 Redshift에 등록하는 과정에서 네임스페이스를 할당하여 사용자와 역할이 올바르게 그룹화되도록 합니다.

 Amazon Redshift에 자격 증명 공급자가 등록되면 Redshift와 자격 증명 공급자 간에 통신이 설정됩니다. 그런 다음 클라이언트는 토큰을 전달하고 Redshift에 자격 증명 공급자 엔터티로 인증할 수 있습니다. Amazon Redshift는 IdP 그룹 멤버십 정보를 사용하여 Redshift 역할에 매핑합니다. 사용자가 이전에 Redshift에 존재하지 않는 경우 사용자가 생성됩니다. 자격 증명 공급자 그룹에 매핑되는 역할이 존재하지 않는 경우 새로 생성됩니다. Amazon Redshift 관리자는 역할에 권한을 부여하며 사용자는 쿼리를 실행하고 다른 데이터베이스 작업을 수행할 수 있습니다.

다음 단계에서는 사용자가 로그인할 때 네이티브 자격 증명 공급자 페더레이션이 작동하는 방식을 간략하게 설명합니다.

1. 사용자가 네이티브 IdP 옵션을 사용하여 로그인하면 자격 증명 공급자 토큰이 클라이언트에서 드라이버로 전송됩니다.

1. 사용자가 인증됩니다. 사용자가 Amazon Redshift에 아직 존재하지 않으면 새 사용자가 생성됩니다. Redshift는 사용자의 자격 증명 공급자 그룹을 Redshift 역할에 매핑합니다.

1. 사용자의 Redshift 역할에 따라 권한이 할당됩니다. 권한은 관리자가 사용자 및 역할에 부여합니다.

1. 사용자가 Redshift를 쿼리할 수 있습니다.

## 데스크톱 클라이언트 도구
<a name="redshift-iam-access-control-native-idp-oauth"></a>

네이티브 자격 증명 공급자 페더레이션을 사용하여 Power BI로 Amazon Redshift에 연결하는 방법에 대한 지침은 블로그 게시물 [Integrate Amazon Redshift native IdP federation with Microsoft Azure Active Directory (AD) and Power BI](https://aws.amazon.com/blogs/big-data/integrate-amazon-redshift-native-idp-federation-with-microsoft-azure-ad-and-power-bi/)(Microsoft Azure Active Directory(AD) 및 Power BI와 Amazon Redshift 네이티브 IdP 페더레이션 통합)를 참조하세요. 이 블로그에서는 Azure AD를 사용한 Amazon Redshift 네이티브 IdP 설정의 단계별 구현을 설명합니다. Power BI Desktop 또는 Power BI 서비스에 대한 클라이언트 연결을 설정하는 단계를 자세히 설명합니다. 이 단계에는 애플리케이션 등록, 권한 구성 및 보안 인증 구성이 포함됩니다.

Power BI Desktop 및 JDBC Client-SQL Workbench/J를 사용하여 Amazon Redshift 기본 IdP(아이덴티티 제공업체) 페더레이션을 Azure AD와 통합하는 방법을 알아보려면 다음 비디오를 시청하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/S3MQLvZ-NiI/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/S3MQLvZ-NiI)


네이티브 자격 증명 공급자 페더레이션을 사용하여 SQL 클라이언트, 특히 DBeaver 또는 SQL Workbench/J로 Amazon Redshift에 연결하는 방법에 대한 지침은 [Integrate Amazon Redshift native IdP federation with Microsoft Azure AD using a SQL client](https://aws.amazon.com/blogs/big-data/integrate-amazon-redshift-native-idp-federation-with-microsoft-azure-ad-using-a-sql-client/)(SQL 클라이언트를 사용하여 Microsoft Azure AD와 Amazon Redshift 네이티브 IdP 페더레이션 통합)를 참조하세요.

## 제한 사항
<a name="redshift-iam-access-control-idp-connect-limitations"></a>

이러한 제한 사항이 적용됩니다.
+  Amazon Redshift 드라이버는 다음 버전부터 `BrowserIdcAuthPlugin`을 지원합니다.
  +  Amazon Redshift JDBC 드라이버 v2.1.0.30 
  +  Amazon Redshift ODBC 드라이버 v2.1.3 
  +  Amazon Redshift Python 드라이버 v2.1.3 
+  Amazon Redshift 드라이버는 다음 버전부터 `IdpTokenAuthPlugin`을 지원합니다.
  +  Amazon Redshift JDBC 드라이버 v2.1.0.19 
  +  Amazon Redshift ODBC 드라이버 v2.0.0.9 
  +  Amazon Redshift Python 드라이버 v2.0.914 
+ **향상된 VPC 지원 안 함** - AWS IAM Identity Center를 사용하여 Redshift 신뢰할 수 있는 ID 전파를 구성할 때는 향상된 VPC가 지원되지 않습니다. 향상된 VPC에 대한 자세한 내용은 [Amazon Redshift의 Enhanced VPC Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html)을 참조하세요.
+  **AWS IAM Identity Center 캐싱** - AWS IAM Identity Center는 세션 정보를 캐싱합니다. 이 경우 Redshift 쿼리 에디터 v2를 통해 Redshift 쿼리 데이터베이스에 연결하려고 할 때 예기치 않은 액세스 문제가 발생할 수 있습니다. 데이터베이스 사용자가 AWS 콘솔에서 로그아웃한 경우에도 쿼리 에디터 v2의 연결된 AWS IAM Identity Center 세션이 유효하기 때문입니다. 캐시는 1시간 후에 만료되므로 일반적으로 모든 문제가 해결됩니다.

# Amazon Redshift Redshift에서 자격 증명 공급자 설정
<a name="redshift-iam-access-control-native-idp-setup"></a>

이 섹션에서는 네이티브 자격 증명 공급자 페더레이션을 위한 통신을 설정하도록 자격 증명 공급자와 Amazon Redshift를 구성하는 단계를 보여줍니다. 자격 증명 공급자의 활성 계정이 필요합니다. Amazon Redshift를 구성하기 전에 Redshift를 자격 증명 공급자에 애플리케이션으로 등록하고 관리자 동의를 얻습니다.

Amazon Redshift에서 다음 단계를 완료합니다.

1. SQL 문을 실행하여 Azure 애플리케이션 메타데이터에 대한 설명과 함께 자격 증명 공급자를 등록합니다. Amazon Redshift에서 자격 증명 공급자를 생성하려면 파라미터 값 *issuer*, *client\$1id*, *client\$1secret* 및 *audience*를 바꾼 후 다음 명령을 실행합니다. 이러한 파라미터는 Microsoft Azure AD에만 적용됩니다. 자격 증명 공급자 이름을 선택한 이름으로 바꾸고 네임스페이스를 자격 증명 공급자 디렉터리의 사용자와 역할을 포함하는 고유한 이름으로 바꿉니다.

   ```
   CREATE IDENTITY PROVIDER oauth_standard TYPE azure
   NAMESPACE 'aad'
   PARAMETERS '{
   "issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/",
   "client_id":"<client_id>",
   "client_secret":"BUAH~ewrqewrqwerUUY^%tHe1oNZShoiU7",
   "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"]
   }'
   ```

   `azure` 유형은 공급자가 특히 Microsoft Azure AD와의 통신을 용이하게 함을 나타냅니다. 현재 유일하게 지원되는 서드 파티 자격 증명 공급자입니다.
   + *issuer* - 토큰을 수신할 때 신뢰할 수 있는 발급자 ID입니다. *tenant\$1id*의 고유 식별자가 발급자에 추가됩니다.
   + *client\$1id* - 자격 증명 공급자에 등록된 애플리케이션의 고유한 퍼블릭 식별자입니다. 애플리케이션 ID라고도 합니다.
   + *client\$1secret* - 자격 증명 공급자와 등록된 애플리케이션에게만 알려진 비밀 식별자 또는 암호입니다.
   + *audience* - Azure의 애플리케이션에 할당된 애플리케이션 ID입니다.

   

   공유 클라이언트 비밀을 사용하는 대신, 아이덴티티 제공업체를 생성할 때 파라미터를 설정하여 인증서, 프라이빗 키 및 프라이빗 키 암호를 지정할 수 있습니다.

   ```
   CREATE IDENTITY PROVIDER example_idp TYPE azure 
   NAMESPACE 'example_aad' 
   PARAMETERS '{"issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/", 
   "client_id":"<client_id>", 
   "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"], 
   "client_x5t":"<certificate thumbprint>", 
   "client_pk_base64":"<private key in base64 encoding>", 
   "client_pk_password":"test_password"}';
   ```

   프라이빗 키 암호 *client\$1pk\$1password*는 선택 사항입니다.

1. 선택 사항: Amazon Redshift에서 SQL 명령을 실행하여 사용자와 역할을 미리 생성합니다. 이를 통해 사전에 권한을 쉽게 부여할 수 있습니다. Amazon Redshift에서 역할 이름의 형식은 *<Namespace>: <GroupName on Azure AD>*입니다. 예를 들어 이름이 `rsgroup`인 Microsoft Azure AD 그룹과 이름이 `aad`인 네임스페이스를 생성한 경우 역할 이름은 `aad:rsgroup`입니다. Amazon Redshift의 사용자 및 역할 이름은 ID 제공업체 네임스페이스에서 이 사용자 이름 및 그룹 멤버십으로 정의됩니다.

   역할 및 사용자의 매핑 작업에는 `external_id` 값을 통해 최신 상태인지 확인하는 것이 포함됩니다. 외부 ID가 ID 공급자의 그룹 또는 사용자의 식별자에 매핑됩니다. 예를 들어 역할의 외부 ID는 해당 Azure AD 그룹 ID에 매핑됩니다. 마찬가지로 각 사용자의 외부 ID는 ID 공급자의 ID에 매핑됩니다.

   ```
   create role "aad:rsgroup";
   ```

1. 요구 사항에 따라 역할에 관련 권한을 부여합니다. 예를 들면 다음과 같습니다.

   ```
   GRANT SELECT on all tables in schema public to role "aad:rsgroup";
   ```

1. 특정 사용자에게 권한을 부여할 수도 있습니다.

   ```
   GRANT SELECT on table foo to aad:alice@example.com
   ```

   페더레이션된 외부 사용자의 역할 멤버십은 해당 사용자의 세션에서만 사용할 수 있다는 점에 유의하세요. 이는 데이터베이스 객체 생성에 영향을 미칩니다. 예를 들어 페더레이션된 외부 사용자가 뷰 또는 저장 프로시저를 만드는 경우 동일한 사용자는 해당 개체의 권한을 다른 사용자 및 역할에 위임할 수 없습니다.

**네임스페이스에 대한 설명**

네임스페이스는 사용자 또는 역할을 특정 자격 증명 공급자에 매핑합니다. 예를 들어, AWS IAM에서 생성한 사용자의 접두사는 `iam:`입니다. 이 접두사는 사용자 이름 충돌을 방지하고 여러 ID 저장소를 지원할 수 있게 합니다. *aad* 네임스페이스에 등록된 자격 증명 소스의 alice@example.com 사용자가 로그인할 때 `aad:alice@example.com` 사용자가 존재하지 않는 경우 Redshift에서 사용자가 생성됩니다. 사용자 및 역할 네임스페이스는 클러스터와 연결된 고유 식별자인 Amazon Redshift 클러스터 네임스페이스와 기능이 다릅니다.

# ID 제공업체에 대한 Amazon Redshift 역할 자동 생성
<a name="redshift-iam-access-control-native-idp-autocreate"></a>

이 기능을 사용하면 ID 제공업체(idP)의 그룹 멤버십을 기반으로 Redshift에서 역할을 자동으로 생성할 수 있습니다. 자동 생성 역할은 기본 IdP 통합을 통해 Azure Active Directory를 지원합니다.

역할을 자동으로 생성하면 몇 가지 이점이 있습니다. 역할을 자동 생성할 때 Redshift는 IdP에 그룹 멤버십이 있는 역할을 생성하므로 번거로운 수동 역할 생성 및 유지 관리를 피할 수 있습니다. Redshift 역할에 매핑되는 그룹을 필터링할 수도 있습니다.

## 작동 방식
<a name="sso-autocreate-overview"></a>

IdP 사용자로서 Redshift에 로그인하면 다음과 같은 이벤트 시퀀스가 발생합니다.

1. Redshift는 IdP에서 그룹 멤버십을 검색합니다.

1. Redshift는 역할 형식 `idp_namespace:rolename`을 사용하여 해당 그룹에 대한 역할 매핑을 자동으로 생성합니다.

1. Redshift는 매핑된 역할에 대한 권한을 부여합니다.

각 사용자 로그인 시 카탈로그에는 없지만 사용자가 속한 각 그룹이 자동으로 생성됩니다. 선택적으로 필터 포함 및 제외를 설정하여 Redshift 역할이 생성된 IdP 그룹을 제어할 수 있습니다.

## 역할 자동 생성 구성
<a name="sso-autocreate-configuring"></a>

`CREATE IDENTITY PROVIDER` 및 `ALTER IDENTITY PROVIDER` 명령을 사용하여 자동 역할 생성을 활성화하고 구성합니다.

```
-- Create a new IdP with auto role creation enabled
CREATE IDENTITY PROVIDER <idp_name> TYPE azure
  NAMESPACE '<namespace>' 
  APPLICATION_ARN 'app_arn'
  IAM_ROLE 'role_arn'
  AUTO_CREATE_ROLES TRUE; 

-- Enable on existing IdP 
ALTER IDENTITY PROVIDER <idp_name>
  AUTO_CREATE_ROLES TRUE;

-- Disable  
ALTER IDENTITY PROVIDER <idp_name>
  AUTO_CREATE_ROLES FALSE;
```

## 그룹 필터링
<a name="sso-autocreate-filtering"></a>

선택적으로 `INCLUDE` 및 `EXCLUDE` 패턴을 사용하여 Redshift 역할에 매핑되는 IdP 그룹을 필터링할 수 있습니다. 패턴이 충돌하면 `EXCLUDE`가 `INCLUDE`보다 우선합니다.

```
-- Only create roles for groups with 'dev' 
CREATE IDENTITY PROVIDER <idp_name> TYPE azure
  ...
  AUTO_CREATE_ROLES TRUE
  INCLUDE GROUPS LIKE '%dev%';
    
-- Exclude 'test' groups
ALTER IDENTITY PROVIDER <idp_name> 
  AUTO_CREATE_ROLES TRUE
  EXCLUDE GROUPS LIKE '%test%';
```

## 예제
<a name="sso-autocreate-filtering"></a>

다음 예제에서는 필터링 없이 역할 자동 생성을 활성화하는 방법을 보여줍니다.

```
CREATE IDENTITY PROVIDER prod_idc TYPE azure ...
  AUTO_CREATE_ROLES TRUE;
```

다음 예제에는 개발 그룹이 포함되며 테스트 그룹은 제외됩니다.

```
ALTER IDENTITY PROVIDER prod_idc
  AUTO_CREATE_ROLES TRUE
  INCLUDE GROUPS LIKE '%dev%'
  EXCLUDE GROUPS LIKE '%test%';
```

## 모범 사례
<a name="sso-autocreate-bp"></a>

역할에 대해 자동 생성을 활성화할 때 다음 모범 사례를 고려하세요.
+ `INCLUDE` 및 `EXCLUDE` 필터를 사용하여 역할을 가져오는 그룹을 제어합니다.
+ 역할을 정기적으로 감사하고 사용하지 않는 역할을 정리합니다.
+ Redshift 역할 계층 구조를 활용하여 권한 관리를 간소화합니다.

# Single Sign-On 경험을 위해 Redshift와 AWS IAM Identity Center 연결
<a name="redshift-iam-access-control-idp-connect"></a>

신뢰할 수 있는 ID 전파를 통해 Amazon Redshift 데이터 웨어하우스에 대한 사용자 및 그룹 액세스를 관리할 수 있습니다.

[신뢰할 수 있는 ID 전파](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overview.html)는 연결된 AWS 서비스의 관리자가 서비스 데이터에 대한 액세스 권한을 부여하고 감사하는 데 사용할 수 있는 AWS IAM Identity Center 기능입니다. 이 데이터에 대한 액세스는 그룹 연결과 같은 사용자 속성을 기반으로 합니다. 신뢰할 수 있는 ID 전파를 설정하려면 연결된 AWS 서비스의 관리자와 IAM Identity Center 관리자 간의 협업이 필요합니다. 자세한 내용은 [사전 조건 및 고려 사항](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html)을 참조하세요.

한 가지 엔드 투 엔드 사례를 설명하자면, Amazon Quick 대시보드 또는 Amazon Redshift 쿼리 에디터 v2를 사용하여 Redshift에 액세스할 수 있습니다. 이 경우 액세스는 AWS IAM Identity Center 그룹을 기반으로 합니다. Redshift는 사용자의 신원과 그룹 멤버십을 확인할 수 있습니다. AWS IAM Identity Center에서는 Okta 또는 PingOne과 같은 서드 파티 ID 제공업체(idP)를 통해 ID를 연결하고 관리할 수 있습니다.

관리자가 Redshift와 AWS IAM Identity Center 간의 연결을 설정한 후에는 ID 제공업체 그룹을 기반으로 세분화된 액세스를 구성하여 데이터에 대한 사용자 액세스 권한을 부여할 수 있습니다.

**중요**  
AWS IAM Identity Center 또는 연결된 ID 제공업체(idP) 디렉터리에서 사용자를 삭제하는 경우 Amazon Redshift 카탈로그에서 사용자가 자동으로 삭제되지는 않습니다. Amazon Redshift 카탈로그에서 사용자를 수동으로 삭제하려면 `DROP USER` 명령을 실행하여 AWS IAM Identity Center 또는 idP에서 제거된 사용자를 완전히 삭제합니다. 사용자 제거에 관한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*에 나와 있는 [DROP USER](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_USER.html)를 참고하시기 바랍니다.

## Redshift와 AWS IAM Identity Center를 통합하여 얻을 수 있는 이점
<a name="redshift-iam-access-control-idp-connect-benefits"></a>

Redshift와 함께 AWS IAM Identity Center를 사용하면 조직이 다음과 같은 이점을 얻을 수 있습니다.
+  Amazon Quick의 대시보드 작성자는 암호를 다시 입력하거나 관리자가 복잡한 권한으로 IAM 역할을 설정할 필요 없이 Redshift 데이터 소스에 연결할 수 있습니다.
+  AWS IAM Identity Center는 AWS의 직원 사용자를 위한 중앙 위치를 제공합니다. AWS IAM Identity Center에서 직접 사용자 및 그룹을 만들거나 Okta, PingOne 또는 Microsoft Entra ID(Azure AD)와 같은 표준 기반 ID 제공업체에서 관리하는 기존 사용자 및 그룹을 연결할 수 있습니다. AWS IAM Identity Center는 사용자 및 그룹을 위해 선택한 정보 소스로 인증을 지시하고 Redshift에서 액세스할 수 있는 사용자 및 그룹 디렉터리를 유지 관리합니다. 자세한 내용은 **AWS IAM Identity Center 사용 설명서의 [ID 소스 관리](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source.html) 및 [지원되는 ID 제공업체](https://docs.aws.amazon.com/singlesignon/latest/userguide/supported-idps.html)를 참조하세요.
+ 간단한 자동 검색 및 연결 기능을 사용하여 하나의 AWS IAM Identity Center 인스턴스를 여러 Redshift 클러스터 및 작업 그룹과 공유할 수 있습니다. 따라서 각 클러스터에 대해 AWS IAM Identity Center 연결을 별도로 구성하지 않고도 클러스터를 빠르게 추가할 수 있으며, 모든 클러스터와 작업 그룹이 사용자, 사용자 속성 및 그룹을 일관되게 볼 수 있습니다. 단, 조직의 AWS IAM Identity Center 인스턴스는 연결하려는 Redshift 데이터 공유와 동일한 리전에 있어야 합니다.
+ 사용자 ID는 데이터 액세스와 함께 알려지고 로깅되므로 AWS CloudTrail에서 사용자 액세스 감사를 통해 규정을 더 쉽게 충족할 수 있습니다.

## 애플리케이션 연결을 위한 관리자 페르소나
<a name="redshift-iam-access-control-idp-personas"></a>

다음은 분석 애플리케이션을 Redshift용 AWS IAM Identity Center 관리형 애플리케이션에 연결하는 데 있어 핵심이 되는 페르소나입니다.
+ **애플리케이션 관리자** - 애플리케이션을 생성하고 ID-토큰 교환을 가능하게 할 서비스를 구성합니다. 또한 이 관리자는 애플리케이션에 액세스할 수 있는 사용자 또는 그룹을 지정합니다.
+ **데이터 관리자** - 데이터에 대한 세분화된 액세스를 구성합니다. AWS IAM Identity Center의 사용자 및 그룹은 특정 권한에 매핑될 수 있습니다.

## Amazon Quick를 통해 AWS IAM Identity Center와 연결된 Amazon Redshift에 연결
<a name="redshift-iam-access-control-idp-connect-qs"></a>

[Quick에서 Amazon Redshift 클러스터로의 연결 승인](https://docs.aws.amazon.com/quick/latest/userguide/enabling-access-redshift.html)에서는 Redshift가 AWS IAM Identity Center에 연결되고 IAM Identity Center를 통해 액세스가 관리되는 경우 Quick을 사용하여 Redshift를 인증하는 방법을 보여 줍니다. 이 단계는 Amazon Redshift Serverless에도 적용됩니다.

## Amazon Redshift 쿼리 에디터 v2를 통해 AWS IAM Identity Center와 연결된 Amazon Redshift에 연결
<a name="redshift-iam-access-control-idp-connect-qe"></a>

Redshift와 AWS IAM Identity Center 연결을 설정하는 단계를 완료하면 사용자는 AWS IAM Identity Center 기반의 네임스페이스 접두사가 붙은 ID를 통해 데이터베이스 및 데이터베이스의 적절한 객체에 액세스할 수 있습니다. 쿼리 에디터 v2 로그인으로 Redshift 데이터베이스에 연결하는 방법에 대한 자세한 내용은 [Query Editor V2를 사용하여 데이터베이스 쿼리Amazon Redshift 쿼리 편집기 v2를 사용하여 데이터베이스 쿼리](query-editor-v2.md) 섹션을 참조하세요.



## 여러 AWS 리전에서 AWS IAM Identity Center 사용
<a name="redshift-iam-access-control-idp-connect-multi-region"></a>

Amazon Redshift는 여러 AWS 리전에서 AWS IAM Identity Center를 지원합니다. AWS IAM Identity Center를 기본 AWS 리전에서 추가 리전으로 확장하여 사용자와의 근접성과 신뢰성을 통해 성능을 개선할 수 있습니다. AWS IAM Identity Center에 새 리전이 추가되면 기본 리전에서 ID를 복제하지 않고도 새 리전에서 Redshift IAM Identity Center 애플리케이션을 생성할 수 있습니다. 행 수준, 열 수준 및 마스킹 제어를 활성화할 수 있는 새 리전에서 AWS IAM Identity Center를 사용하여 Amazon Redshift 페더레이션 권한을 설정할 수 있습니다. 여러 리전에서 AWS IAM Identity Center를 시작하는 방법에 대한 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [여러 AWS 리전에서 AWS IAM Identity Center 관리](https://docs.aws.amazon.com/singlesignon/latest/userguide/multi-region-iam-identity-center.html)를 참조하세요.

## AWS IAM Identity Center를 사용하여 Amazon Redshift에 연결 시 제한 사항
<a name="redshift-iam-access-control-idp-connect-limitations"></a>

AWS IAM Identity Center Single Sign-On을 사용할 때는 다음 제한 사항을 고려하세요.


+  **향상된 VPC 지원 없음** - Amazon Redshift에 AWS IAM Identity Center Single Sign-On을 사용하는 경우 향상된 VPC가 지원되지 않습니다. 향상된 VPC에 대한 자세한 내용은 [Amazon Redshift의 Enhanced VPC Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html)을 참조하세요.

# Amazon Redshift와 AWS IAM Identity Center 통합 설정
<a name="redshift-iam-access-control-idp-connect-console"></a>

Amazon Redshift 클러스터 관리자 또는 Amazon Redshift Serverless 관리자는 여러 단계를 수행하여 Redshift를 AWS IAM Identity Center 지원 애플리케이션으로 구성해야 합니다. 이렇게 하면 Redshift는 AWS IAM Identity Center를 자동으로 검색하고 연결하여 로그인 및 사용자 디렉터리 서비스를 받을 수 있습니다. 그런 다음 Redshift 관리자가 클러스터 또는 작업 그룹을 생성할 때 새 데이터 웨어하우스에서 AWS IAM Identity Center를 사용하여 데이터베이스 액세스를 관리하도록 할 수 있습니다.

Redshift를 AWS IAM Identity Center 관리형 애플리케이션으로 활성화하는 이유는 AWS IAM Identity Center 내에서 또는 통합된 타사 ID 제공업체로부터 사용자 및 그룹 권한을 제어할 수 있도록 하기 위해서입니다. 데이터베이스 사용자(예: 분석가 또는 데이터 과학자)가 Redshift 데이터베이스에 로그인하면 AWS IAM Identity Center의 해당 그룹이 Redshift의 역할 이름과 일치하는지 확인합니다. 이러한 방식으로 Redshift 데이터베이스 역할의 이름을 정의하는 그룹은 예를 들어 판매 분석을 위한 테이블 세트에 액세스할 수 있습니다. 다음 섹션에서는 설정 방법을 안내합니다.

## 사전 조건
<a name="redshift-iam-access-control-idp-connect-prerequisites"></a>

AWS IAM Identity Center를 Amazon Redshift와 통합하기 위한 사전 조건은 다음과 같습니다.
+ **계정 구성 - 계정 간 사용 사례를 계획하거나 동일한 AWS IAM Identity Center 인스턴스로 서로 다른 계정에서 Redshift 클러스터를 사용하는 경우 AWS 조직의 관리 계정에서 AWS IAM Identity Center를 구성해야 합니다. 여기에는 ID 소스 구성이 포함됩니다. 자세한 내용은 **AWS IAM Identity Center 사용 설명서의 [시작하기](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), [작업 인력 ID](https://docs.aws.amazon.com/singlesignon/latest/userguide/identities.html) 및 [지원되는 ID 제공업체](https://docs.aws.amazon.com/singlesignon/latest/userguide/supported-idps.html)를 참조하세요. Redshift의 데이터에 할당하려면 먼저 AWS IAM Identity Center에서 사용자 또는 그룹을 생성했거나 ID 소스에서 사용자 및 그룹을 동기화해야 합니다.
**참고**  
Redshift와 AWS IAM Identity Center가 동일한 계정에 있는 경우 AWS IAM Identity Center의 계정 인스턴스를 사용할 수 있습니다. Redshift 클러스터 또는 작업 그룹을 만들고 구성할 때 위젯을 사용하여 이 인스턴스를 만들 수 있습니다.
+ **신뢰할 수 있는 토큰 발급자 구성 - 경우에 따라 신뢰 토큰을 발급하고 확인할 수 있는 기관인 신뢰할 수 있는 토큰 발급자를 사용해야 할 수도 있습니다. 이를 위해서는 AWS IAM Identity Center 통합을 구성하는 Redshift 관리자가 신뢰할 수 있는 토큰 발급자를 선택하고 필요한 속성을 추가하여 구성을 완료하기 전에 사전 단계를 거쳐야 합니다. 여기에는 신뢰할 수 있는 토큰 발급자 역할을 하도록 외부 ID 제공업체를 구성하고 AWS IAM Identity Center 콘솔에서 해당 속성을 추가하는 것이 포함될 수 있습니다. 이 단계를 완료하려면 [신뢰할 수 있는 토큰 발급자를 사용하여 애플리케이션 사용](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html#setuptrustedtokenissuer)을 참조하세요.
**참고**  
모든 외부 연결에 신뢰할 수 있는 토큰 발급자를 설정할 필요는 없습니다. Amazon Redshift 쿼리 에디터 v2를 사용하여 Redshift 데이터베이스에 연결할 때는 신뢰할 수 있는 토큰 발급자 구성이 필요하지 않습니다. 하지만 대시보드와 같은 타사 애플리케이션 또는 ID 제공업체를 통해 인증하는 사용자 지정 애플리케이션에도 적용될 수 있습니다.
+ **하나 이상의 IAM 역할 구성 - 다음 섹션에는 구성해야 하는 권한이 언급되어 있습니다. IAM 모범 사례에 따라 권한을 추가해야 합니다. 구체적인 권한은 다음 절차에 자세히 설명되어 있습니다.

자세한 내용은 [Getting Started with AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-enable-identity-center.html)를 참조하세요.

## AWS IAM Identity Center 작업을 위해 ID 제공업체 구성
<a name="redshift-iam-access-control-idp-connect-admin-config"></a>

사용자 및 그룹 ID 관리를 제어하는 첫 번째 단계는 AWS IAM Identity Center에 연결하고 ID 제공업체를 구성하는 것입니다. AWS IAM Identity Center 자체를 ID 제공업체로 사용하거나 Okta와 같은 타사 ID 저장소를 연결할 수 있습니다. ID 제공업체에 대한 연결 설정 및 구성에 대한 자세한 내용은 **AWS IAM Identity Center 사용 설명서의 [외부 ID 제공업체에 연결](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)을 참조하세요. 이 프로세스 말미에 테스트하기 위해 AWS IAM Identity Center에 소수의 사용자 및 그룹을 추가했는지 확인하세요.

### 관리 권한
<a name="redshift-iam-access-control-idp-connect-admin-permissions"></a>

#### Redshift/AWS IAM Identity Center 애플리케이션 수명 주기 관리에 필요한 권한
<a name="redshift-iam-access-control-permissions-application"></a>

Redshift 관리자가 AWS IAM Identity Center와 함께 사용하도록 Redshift를 구성하는 데 사용하는 IAM ID를 만들어야 합니다. 대부분의 경우 권한이 있는 IAM 역할을 생성하고 필요에 따라 다른 ID에 할당합니다. 다음 작업을 수행할 수 있는 권한이 나열되어 있어야 합니다.

**Redshift/AWS IAM Identity Center 애플리케이션 생성**
+ `sso:PutApplicationAssignmentConfiguration` - 보안에 사용됩니다.
+ `sso:CreateApplication` - AWS IAM Identity Center 애플리케이션을 생성하는 데 사용됩니다.
+ `sso:PutApplicationAuthenticationMethod` - Redshift 인증 액세스 권한을 부여합니다.
+ `sso:PutApplicationGrant` - 신뢰할 수 있는 토큰 발급자 정보를 변경하는 데 사용됩니다.
+ `sso:PutApplicationAccessScope` - Redshift AWS IAM Identity Center 애플리케이션을 설정하는 데 사용됩니다. 여기에는 AWS Lake Formation용 및 [Amazon S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-get-started.html)용이 포함됩니다.
+ `redshift:CreateRedshiftIdcApplication` - Redshift AWS IAM Identity Center 애플리케이션을 생성하는 데 사용됩니다.

**Redshift/AWSIAM Identity Center 애플리케이션 설명**
+ `sso:GetApplicationGrant` - 신뢰할 수 있는 토큰 발급자 정보를 나열하는 데 사용됩니다.
+ `sso:ListApplicationAccessScopes` - Redshift AWS IAM Identity Center 애플리케이션 설정에서 다운스트림 통합(예: AWS Lake Formation용 및 S3 Access Grants용)을 나열하는 데 사용됩니다.
+ `redshift:DescribeRedshiftIdcApplications` - 기존 AWS IAM Identity Center 애플리케이션을 설명하는 데 사용됩니다.

**Redshift/AWS IAM Identity Center 애플리케이션 변경**
+ `redshift:ModifyRedshiftIdcApplication` - 기존 Redshift 애플리케이션을 변경하는 데 사용됩니다.
+ `sso:UpdateApplication` - AWS IAM Identity Center 애플리케이션을 업데이트하는 데 사용됩니다.
+ `sso:GetApplicationGrant` - 신뢰할 수 있는 토큰 발급자 정보를 가져옵니다.
+ `sso:ListApplicationAccessScopes` - Redshift AWS IAM Identity Center 애플리케이션을 설정하는 데 사용됩니다.
+ `sso:DeleteApplicationGrant` - 신뢰할 수 있는 토큰 발급자 정보를 삭제합니다.
+ `sso:PutApplicationGrant` - 신뢰할 수 있는 토큰 발급자 정보를 변경하는 데 사용됩니다.
+ `sso:PutApplicationAccessScope` - Redshift AWS IAM Identity Center 애플리케이션을 설정하는 데 사용됩니다. 여기에는 AWS Lake Formation용 및 [Amazon S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-get-started.html)용이 포함됩니다.
+ `sso:DeleteApplicationAccessScope` - Redshift AWS IAM Identity Center 애플리케이션을 설정을 삭제하는 데 사용됩니다. 여기에는 AWS Lake Formation용 및 [Amazon S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-get-started.html)용이 포함됩니다.

**Redshift/AWS IAM Identity Center 애플리케이션 삭제**
+ `sso:DeleteApplication` - AWS IAM Identity Center 애플리케이션을 삭제하는 데 사용됩니다.
+ `redshift:DeleteRedshiftIdcApplication` - 기존 Redshift AWS IAM Identity Center 애플리케이션을 삭제할 수 있는 기능을 제공합니다.

#### Redshift/쿼리 에디터 v2 애플리케이션 수명 주기 관리에 필요한 권한
<a name="redshift-iam-access-control-permissions-application-qev2"></a>

Redshift 관리자가 AWS IAM Identity Center와 함께 사용하도록 Redshift를 구성하는 데 사용하는 IAM ID를 만들어야 합니다. 대부분의 경우 권한이 있는 IAM 역할을 생성하고 필요에 따라 다른 ID에 할당합니다. 다음 작업을 수행할 수 있는 권한이 나열되어 있어야 합니다.

**쿼리 에디터 v2 애플리케이션 생성**
+ `redshift:CreateQev2IdcApplication` - QEV2 애플리케이션을 생성하는 데 사용됩니다.
+ `sso:CreateApplication` - AWS IAM Identity Center 애플리케이션을 생성하는 권한을 부여합니다.
+ `sso:PutApplicationAuthenticationMethod` - Redshift 인증 액세스 권한을 부여합니다.
+ `sso:PutApplicationGrant` - 신뢰할 수 있는 토큰 발급자 정보를 변경하는 데 사용됩니다.
+ `sso:PutApplicationAccessScope` - Redshift AWS IAM Identity Center 애플리케이션을 설정하는 데 사용됩니다. 여기에는 쿼리 에디터 v2가 포함됩니다.
+ `sso:PutApplicationAssignmentConfiguration` - 보안에 사용됩니다.

**쿼리 에디터 v2 애플리케이션 설명**
+ `redshift:DescribeQev2IdcApplications` - AWS IAM Identity Center QEV2 애플리케이션을 설명하는 데 사용됩니다.

**쿼리 에디터 v2 애플리케이션 변경**
+ `redshift:ModifyQev2IdcApplication` - AWS IAM Identity Center QEV2 애플리케이션을 변경하는 데 사용됩니다.
+ `sso:UpdateApplication` - AWS IAM Identity Center QEV2 애플리케이션을 변경하는 데 사용됩니다.

**쿼리 에디터 v2 애플리케이션 삭제**
+ `redshift:DeleteQev2IdcApplication` - QEV2 애플리케이션을 삭제하는 데 사용됩니다.
+ `sso:DeleteApplication` - QEV2 애플리케이션을 삭제하는 데 사용됩니다.

**참고**  
Amazon Redshift SDK에서는 다음과 같은 API를 사용할 수 없습니다.  
CreateQev2IdcApplication
DescribeQev2IdcApplications
ModifyQev2IdcApplication
DeleteQev2IdcApplication
이러한 작업은 AWS 콘솔에서 AWS IAM Identity Center를 Redshift QEV2와 통합하는 경우에만 사용할 수 있습니다. 자세한 내용은 [Actions defined by Amazon Redshift](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshift.html#amazonredshift-actions-as-permissions)를 참조하세요.

#### 콘솔에서 새 리소스를 연결하기 위해 데이터베이스 관리자에게 필요한 권한
<a name="redshift-iam-access-control-permissions-application-new-resources"></a>

생성 프로세스 중에 새로 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 작업 그룹을 연결하려면 이러한 권한이 필요합니다. 이러한 권한이 있는 경우 콘솔에 Redshift용 AWS IAM Identity Center 관리형 애플리케이션에 연결하도록 선택할 수 있는 선택 항목이 표시됩니다.
+ `redshift:DescribeRedshiftIdcApplications`
+ `sso:ListApplicationAccessScopes`
+ `sso:GetApplicationAccessScope`
+ `sso:GetApplicationGrant`

가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)를 참조하세요.

## AWS IAM Identity Center와 연결된 AWS 관리형 애플리케이션으로 Redshift 설정
<a name="redshift-iam-access-control-idp-connect-admin-tasks"></a>

AWS IAM Identity Center에서 Amazon Redshift 프로비저닝 클러스터 또는 Amazon Redshift Serverless 작업 그룹의 ID를 관리하려면 먼저 Redshift 관리자가 Redshift를 AWS IAM Identity Center 관리형 애플리케이션으로 생성하기 위한 단계를 완료해야 합니다.

1. Amazon Redshift 또는 Amazon Redshift Serverless 콘솔 메뉴에서 **AWS IAM Identity Center 통합**을 선택한 다음 **AWS IAM Identity Center에 연결**을 선택합니다. 여기에서 일련의 선택 단계를 수행하여 AWS IAM Identity Center 통합을 위한 속성을 채웁니다.

1. Redshift의 AWS IAM Identity Center 관리형 애플리케이션에 대한 표시 이름과 고유한 이름을 선택합니다.

1. 조직의 네임스페이스를 지정합니다. 일반적으로 조직 이름의 축약된 버전입니다. Redshift 데이터베이스에서 AWS IAM Identity Center 관리형 사용자 및 역할의 접두사로 추가됩니다.

1. 사용할 IAM 역할을 선택합니다. 이 IAM 역할은 Redshift에 사용되는 다른 역할과 분리되어야 하며 다른 용도로는 사용하지 않는 것이 좋습니다. 구체적인 필수 정책 권한은 다음과 같습니다.
   + `sso:DescribeApplication` - 카탈로그에 ID 제공업체(idP) 항목을 생성하는 데 필요합니다.
   + `sso:DescribeInstance` - IdP 페더레이션 역할 또는 사용자를 수동으로 생성하는 데 사용됩니다.

1. 클라이언트 연결 및 신뢰할 수 있는 토큰 발급자를 구성합니다. 신뢰할 수 있는 토큰 발급자를 구성하면 외부 ID 제공업체와의 관계를 설정하여 신뢰할 수 있는 ID 전파가 용이해집니다. 예를 들어 ID 전파를 통해 사용자는 한 애플리케이션에 로그인하고 다른 애플리케이션의 특정 데이터에 액세스할 수 있습니다. 이를 통해 사용자는 서로 다른 위치에서 보다 원활하게 데이터를 수집할 수 있습니다. 이 단계에서는 콘솔에서 각 신뢰할 수 있는 토큰 발급자의 속성을 설정합니다. 속성에는 도구 또는 서비스의 구성 속성에서 가져와야 할 수 있는 이름 및 *대상 클레임(*aud 클레임이라고도 함)이 포함됩니다. 타사 도구의 JSON 웹 토큰(JWT)에서 가져온 애플리케이션 이름을 제공해야 할 수도 있습니다.
**참고**  
각 타사 도구 또는 서비스에 필요한 `aud claim`은 토큰 유형(ID 제공업체가 발급한 액세스 토큰일 수 있음) 또는 ID 토큰 등의 다른 유형에 따라 달라질 수 있습니다. 벤더마다 다를 수 있습니다. 신뢰할 수 있는 ID 전파를 구현하고 Redshift와 통합할 때는 타사 도구가 AWS에 전송하는 토큰 유형에 대해 올바른 **aud 값을 제공해야 합니다. 도구 또는 서비스 벤더의 권장 사항을 확인하세요.

   신뢰할 수 있는 ID 전파에 대한 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [신뢰할 수 있는 ID 전파 개요](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-overview.html)를 참조하세요.

Redshift 관리자가 단계를 완료하고 구성을 저장하면 Redshift 콘솔에 AWS IAM Identity Center 속성이 표시됩니다. 또한 시스템 뷰 [SVV\$1IDENTITY\$1PROVIDERS](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_IDENTITY_PROVIDERS.html)를 쿼리하여 애플리케이션의 속성을 확인할 수 있습니다. 여기에는 애플리케이션 이름과 네임스페이스가 포함됩니다. 네임스페이스는 애플리케이션과 연결된 Redshift 데이터베이스 객체의 접두사로 사용합니다. 이러한 작업을 완료하면 Redshift는 AWS IAM Identity Center 지원 애플리케이션이 됩니다. 콘솔의 속성에는 통합 상태가 포함됩니다. 통합이 완료되면 **활성화됨**이라고 표시됩니다. 이 프로세스가 끝나면 각각의 새 클러스터에서 AWS IAM Identity Center 통합을 활성화할 수 있습니다.

구성 후에는 **사용자** 또는 **그룹** 탭을 선택하고 **할당**을 선택하여 AWS IAM Identity Center에 있는 사용자 및 그룹을 Redshift에 포함할 수 있습니다.

## 새 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹에 AWS IAM Identity Center 통합 활성화
<a name="redshift-iam-access-control-idp-connect-resource-creation"></a>

데이터베이스 관리자는 새로운 Redshift 리소스가 AWS IAM Identity Center와 연계되어 작동하도록 구성하여 로그인 및 데이터 액세스를 더 용이하게 만듭니다. 이는 프로비저닝된 클러스터 또는 서버리스 작업 그룹을 생성하는 단계의 일부로 수행됩니다. Redshift 리소스를 생성할 수 있는 권한이 있는 모든 사용자는 AWS IAM Identity Center 통합 태스크를 수행할 수 있습니다. 프로비저닝된 클러스터를 생성할 때 Amazon Redshift 콘솔에서 **클러스터 생성**을 선택하는 것부터 시작하면 됩니다. 다음 단계는 데이터베이스에 대한 AWS IAM Identity Center 관리를 활성화하는 방법을 보여줍니다. 클러스터를 생성하는 모든 단계가 포함되어 있지는 않습니다.

1. create-cluster 단계에서 **IAM Identity Center 통합** 섹션의 **<클러스터 이름>에 대해 활성화**를 선택합니다.

1. 통합을 활성화하는 프로세스에 한 단계가 있습니다. 콘솔에서 **IAM Identity Center 통합 활성화**를 선택하면 됩니다.

1. 새 클러스터 또는 작업 그룹의 경우 SQL 명령을 사용하여 Redshift에서 데이터베이스 역할을 생성합니다. 다음은 명령입니다.

   ```
   CREATE ROLE <idcnamespace:rolename>;
   ```

   네임스페이스와 역할 이름은 다음과 같습니다.
   + *IAM Identity Center 네임스페이스 접두사* - AWS IAM Identity Center와 Redshift 간의 연결을 설정할 때 정의한 네임스페이스입니다.
   + *역할 이름* - 이 Redshift 데이터베이스 역할은 AWS IAM Identity Center의 그룹 이름과 일치해야 합니다.

   Redshift는 AWS IAM Identity Center와 연결하여 데이터베이스 역할을 생성하고 AWS IAM Identity Center 그룹에 매핑하는 데 필요한 정보를 가져옵니다.

새 데이터 웨어하우스가 생성되면 AWS IAM Identity Center 통합을 위해 지정된 IAM 역할이 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 작업 그룹에 자동으로 연결된다는 점에 유의하세요. 필요한 클러스터 메타데이터를 입력하고 리소스를 생성한 후에는 속성에서 AWS IAM Identity Center 통합 상태를 확인할 수 있습니다. AWS IAM Identity Center의 그룹 이름에 공백이 있는 경우 매칭되는 역할을 생성할 때 SQL에서 따옴표를 사용해야 합니다.

Redshift 데이터베이스를 활성화하고 역할을 생성했으면 Amazon Redshift 쿼리 에디터 v2 또는 Amazon Quick를 사용하여 데이터베이스에 연결할 준비가 된 것입니다. 자세한 내용은 다음 섹션에 자세히 설명되어 있습니다.

### API를 사용하여 기본 `RedshiftIdcApplication` 설정
<a name="redshift-iam-access-control-idp-connect-admin-config-api"></a>

설정은 ID 관리자가 수행합니다. API를 사용하여 AWS IAM Identity Center 내의 Redshift 애플리케이션을 나타내는 `RedshiftIdcApplication`을 만들고 채웁니다.

1. 먼저 사용자를 생성하고 AWS IAM Identity Center의 그룹에 추가할 수 있습니다. AWS IAM Identity Center용 AWS 콘솔에서 이 작업을 수행하면 됩니다.

1. AWS IAM Identity Center 애플리케이션을 생성하고 Redshift와 호환해서 사용하도록 `create-redshift-idc-application`을 호출합니다. 필요한 값을 입력하여 애플리케이션을 생성합니다. 표시 이름은 AWS IAM Identity Center 대시보드에 표시할 이름입니다. IAM 역할 ARN은 AWS IAM Identity Center에 대한 권한이 있는 ARN이며 Redshift에서도 이 역할을 맡을 수 있습니다.

   ```
   aws redshift create-redshift-idc-application
   ––idc-instance-arn 'arn:aws:sso:::instance/ssoins-1234a01a1b12345d'
   ––identity-namespace 'MYCO'
   ––idc-display-name 'TEST-NEW-APPLICATION'
   ––iam-role-arn 'arn:aws:redshift:us-east-1:012345678901:role/TestRedshiftRole'
   ––redshift-idc-application-name 'myredshiftidcapplication'
   ```

   다음 예는 `create-redshift-idc-application`에 대한 호출에서 반환된 샘플 `RedshiftIdcApplication` 응답을 보여줍니다.

   ```
   "RedshiftIdcApplication": {
                   "IdcInstanceArn": "arn:aws:sso:::instance/ssoins-1234a01a1b12345d",
                   "RedshiftIdcApplicationName": "test-application-1",
                   "RedshiftIdcApplicationArn": "arn:aws:redshift:us-east-1:012345678901:redshiftidcapplication:12aaa111-3ab2-3ab1-8e90-b2d72aea588b",
                   "IdentityNamespace": "MYCO",
                   "IdcDisplayName": "Redshift-Idc-Application",
                   "IamRoleArn": "arn:aws:redshift:us-east-1:012345678901:role/TestRedshiftRole",
                   "IdcManagedApplicationArn": "arn:aws:sso::012345678901:application/ssoins-1234a01a1b12345d/apl-12345678910",
                   "IdcOnboardStatus": "arn:aws:redshift:us-east-1:123461817589:redshiftidcapplication",
                   "RedshiftIdcApplicationArn": "Completed",
                   "AuthorizedTokenIssuerList": [
                          "TrustedTokenIssuerArn": ...,
                          "AuthorizedAudiencesList": [...]...
                   ]}
   ```

1. `create-application-assignment`를 사용하여 AWS IAM Identity Center의 관리형 애플리케이션에 특정 그룹이나 개별 사용자를 할당할 수 있습니다. 이렇게 하면 AWS IAM Identity Center를 통해 관리할 그룹을 지정할 수 있습니다. 데이터베이스 관리자가 Redshift에서 데이터베이스 역할을 생성하는 경우 AWS IAM Identity Center의 그룹 이름이 Redshift의 역할 이름에 매핑됩니다. 이 역할은 데이터베이스의 권한을 제어합니다. 자세한 내용은 [AWS IAM Identity Center 콘솔에서 애플리케이션에 사용자 액세스 권한 할당](https://docs.aws.amazon.com/singlesignon/latest/userguide/assignuserstoapp.html)을 참조하세요.

1. 애플리케이션을 활성화한 후에는 `create-cluster`를 호출하여 AWS IAM Identity Center에서 Redshift 관리형 애플리케이션 ARN을 포함합니다. 이렇게 하면 클러스터가 AWS IAM Identity Center의 관리형 애플리케이션과 연결됩니다.

### AWS IAM Identity Center 애플리케이션을 기존 클러스터 또는 작업 그룹과 연결
<a name="redshift-iam-access-control-idp-connect-admin-config-existing"></a>

AWS IAM Identity Center 통합을 활성화하려는 기존 클러스터 또는 작업 그룹이 있는 경우 SQL 명령을 실행하여 활성화할 수 있습니다. SQL 명령을 실행하여 통합 설정을 변경할 수도 있습니다. 자세한 내용은 [ALTER IDENTITY PROVIDER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_IDENTITY_PROVIDER.html)를 참조하세요.

기존 ID 제공업체를 삭제할 수도 있습니다. 다음 예에서는 CASCADE가 ID 제공업체에 연결된 사용자 및 역할을 삭제하는 방법을 보여줍니다.

```
DROP IDENTITY PROVIDER
<provider_name> [ CASCADE ]
```

## 사용자 권한 설정
<a name="redshift-iam-access-control-idp-connect-user-permissions"></a>

관리자는 ID 제공업체 내에서 또는 AWS IAM Identity Center 내에서 사용자의 ID 속성 및 그룹 멤버십을 기반으로 다양한 리소스에 대한 권한을 직접 구성합니다. 예를 들어, ID 제공업체 관리자는 맡은 역할에 적합한 그룹에 데이터베이스 엔지니어를 추가할 수 있습니다. 이 그룹 이름은 Redshift 데이터베이스 역할 이름에 매핑됩니다. 역할은 Redshift의 특정 테이블 또는 뷰에 대한 액세스를 제공하거나 제한합니다.

# AWS IAM Identity Center에 대한 Amazon Redshift 역할 자동 생성
<a name="redshift-iam-access-control-sso-autocreate"></a>

이 기능은 그룹 멤버십을 기반으로 Redshift에서 역할을 자동으로 생성할 수 있는 AWS IAM Identity Center과 통합됩니다.

역할을 자동으로 생성하면 몇 가지 이점이 있습니다. 역할을 자동 생성할 때 Redshift는 IdP에 그룹 멤버십이 있는 역할을 생성하므로 번거로운 수동 역할 생성 및 유지 관리를 피할 수 있습니다. 또한 포함 및 제외 패턴을 사용하여 Redshift 역할에 매핑되는 그룹을 필터링할 수 있습니다.

## 작동 방식
<a name="autocreate-overview"></a>

IdP 사용자로서 Redshift에 로그인하면 다음과 같은 이벤트 시퀀스가 발생합니다.

1. Redshift는 IdP에서 그룹 멤버십을 검색합니다.

1. Redshift는 역할 형식 `idp_namespace:rolename`을 사용하여 해당 그룹에 대한 역할 매핑을 자동으로 생성합니다.

1. Redshift는 매핑된 역할에 대한 권한을 부여합니다.

각 사용자 로그인 시 카탈로그에는 없지만 사용자가 속한 각 그룹이 자동으로 생성됩니다. 선택적으로 필터 포함 및 제외를 설정하여 Redshift 역할이 생성된 IdP 그룹을 제어할 수 있습니다.

## 역할 자동 생성 구성
<a name="autocreate-configuring"></a>

`CREATE IDENTITY PROVIDER` 및 `ALTER IDENTITY PROVIDER` 명령을 사용하여 자동 역할 생성을 활성화하고 구성합니다.

```
-- Create a new IdP with auto role creation enabled
CREATE IDENTITY PROVIDER <idp_name> TYPE AWSIDC
  NAMESPACE '<namespace>' 
  APPLICATION_ARN 'app_arn'
  IAM_ROLE 'role_arn'
  AUTO_CREATE_ROLES TRUE; 

-- Enable on existing IdP 
ALTER IDENTITY PROVIDER <idp_name>
  AUTO_CREATE_ROLES TRUE;

-- Disable  
ALTER IDENTITY PROVIDER <idp_name>
  AUTO_CREATE_ROLES FALSE;
```

## 그룹 필터링
<a name="autocreate-filtering"></a>

선택적으로 `INCLUDE` 및 `EXCLUDE` 패턴을 사용하여 Redshift 역할에 매핑되는 IdP 그룹을 필터링할 수 있습니다. 패턴이 충돌하면 `EXCLUDE`가 `INCLUDE`보다 우선합니다.

```
-- Only create roles for groups with 'dev' 
CREATE IDENTITY PROVIDER <idp_name> TYPE AWSIDC
  ...
  AUTO_CREATE_ROLES TRUE
  INCLUDE GROUPS LIKE '%dev%';
    
-- Exclude 'test' groups
ALTER IDENTITY PROVIDER <idp_name>  
  AUTO_CREATE_ROLES TRUE
  EXCLUDE GROUPS LIKE '%test%';
```

## 예제
<a name="autocreate-filtering"></a>

다음 예제에서는 필터링 없이 역할 자동 생성을 활성화하는 방법을 보여줍니다.

```
CREATE IDENTITY PROVIDER prod_idc TYPE AWSIDC  ...
  AUTO_CREATE_ROLES TRUE;
```

다음 예제에는 개발 그룹이 포함되며 테스트 그룹은 제외됩니다.

```
ALTER IDENTITY PROVIDER prod_idc
  AUTO_CREATE_ROLES TRUE
  INCLUDE GROUPS LIKE '%dev%'
  EXCLUDE GROUPS LIKE '%test%';
```

## 모범 사례
<a name="autocreate-bp"></a>

역할에 대해 자동 생성을 활성화할 때 다음 모범 사례를 고려하세요.
+ `INCLUDE` 및 `EXCLUDE` 필터를 사용하여 역할을 가져오는 그룹을 제어합니다.
+ 역할을 정기적으로 감사하고 사용하지 않는 역할을 정리합니다.
+ Redshift 역할 계층 구조를 활용하여 권한 관리를 간소화합니다.

# Amazon S3 Access Grants와 Amazon Redshift 통합
<a name="redshift-iam-access-control-sso-s3idc"></a>

Amazon S3 Access Grants와의 통합을 사용하면 IAM Identity Center ID를 원활하게 전파하여 Amazon S3 데이터에 대한 액세스를 제어할 수 있습니다. 이 통합을 통해 IAM Identity Center 사용자 및 그룹을 기반으로 Amazon S3 데이터 액세스 권한을 부여할 수 있습니다.

Amazon S3 Access Grants에 대한 자세한 내용은 [S3 Access Grants를 통한 액세스 관리](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html)를 참조하세요.

Amazon S3 Access Grants를 사용하면 애플리케이션에 다음과 같은 이점이 있습니다.
+ IAM Identity Center ID를 기반으로 Amazon S3 데이터에 대한 세분화된 액세스 제어
+ Amazon Redshift 및 Amazon S3에서 IAM Identity Center ID의 중앙 집중식 관리
+ Amazon S3 액세스에 대한 별도의 IAM 권한 관리 불필요

## 작동 방식
<a name="redshift-iam-access-control-sso-s3idc-howitworks"></a>

애플리케이션을 Amazon S3 Access Grants와 통합하려면 다음을 수행합니다.
+ 먼저 AWS Management Console 또는 AWS CLI를 사용하여 Amazon S3 Access Grants와 통합하도록 Amazon Redshift를 구성합니다.
+ 다음으로 IdC 관리자 권한이 있는 사용자는 Amazon S3 Access Grants 서비스를 사용하여 특정 IdC 사용자/그룹에 대한 Amazon S3 버킷 또는 접두사 액세스 권한을 부여합니다. 자세한 내용은 [ S3 Access Grants에서 권한 부여 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html)을 참조하세요.
+ Redshift에 인증된 IdC 사용자가 S3에 액세스하는 쿼리(예: COPY, UNLOAD 또는 Spectrum 작업)를 실행하면 Amazon Redshift는 Amazon S3 Access Grants 서비스에서 해당 IdC ID로 범위가 지정된 임시 Amazon S3 액세스 자격 증명을 검색합니다.
+ 그런 다음 Amazon Redshift는 검색된 임시 자격 증명을 사용하여 해당 쿼리에 대해 권한이 부여된 Amazon S3 위치에 액세스합니다.

## Amazon S3 Access Grants와의 통합 설정
<a name="redshift-iam-access-control-sso-s3idc-setup"></a>

Amazon Redshift와 Amazon S3 Access Grants의 통합을 설정하려면 다음을 수행합니다.

**Topics**
+ [AWS Management Console을 사용하여 Amazon S3 Access Grants와의 통합 설정](#redshift-iam-access-control-sso-s3idc-setup-console)
+ [AWS CLI를 사용하여 Amazon S3 Access Grants와의 통합 활성화](#redshift-iam-access-control-sso-s3idc-setup-cli)

### AWS Management Console을 사용하여 Amazon S3 Access Grants와의 통합 설정
<a name="redshift-iam-access-control-sso-s3idc-setup-console"></a>

1. Amazon Redshift 콘솔을 엽니다.

1. **클러스터** 창에서 클러스터를 선택합니다.

1. 클러스터의 세부 정보 페이지의 **ID 제공업체 통합** 섹션에서 **S3 Access Grants** 서비스와의 통합을 활성화합니다.
**참고**  
IAM Identity Center가 구성되어 있지 않으면 **ID 제공업체 통합** 섹션이 표시되지 않습니다. 자세한 내용은 [Enabling AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html)를 참조하세요.

### AWS CLI를 사용하여 Amazon S3 Access Grants와의 통합 활성화
<a name="redshift-iam-access-control-sso-s3idc-setup-cli"></a>

1. S3 통합이 활성화된 새 Amazon Redshift IdC 애플리케이션을 만들려면 다음을 수행합니다.

   ```
   aws redshift create-redshift-idc-application <other parameters> 
     --service-integrations '[ {"S3AccessGrants": [{"ReadWriteAccess": {"Authorization": "Enabled"}}]} ]'
   ```

1. S3 Access Grants 통합을 활성화하도록 기존 애플리케이션을 수정하려면 다음을 수행합니다.

   ```
   aws redshift modify-redshift-idc-application <other parameters>
     --service-integrations '[ {"S3AccessGrants": [{"ReadWriteAccess": {"Authorization": "Enabled"}}]} ]'
   ```

1. S3 Access Grants 통합을 비활성화하도록 기존 애플리케이션을 수정하려면 다음을 수행합니다.

   ```
   aws redshift modify-redshift-idc-application <other parameters>
     --service-integrations '[ {"S3AccessGrants": [{"ReadWriteAccess": {"Authorization": "Disabled"}}]} ]'
   ```

## S3 Access Grants와의 통합 사용
<a name="redshift-iam-access-control-sso-s3idc-using"></a>

S3 Access Grants 통합을 구성한 후 S3 데이터에 액세스하는 쿼리(예: `COPY`, `UNLOAD` 또는 Spectrum 쿼리)는 권한 부여를 위해 IdC ID를 사용합니다. IdC를 사용하여 인증되지 않은 사용자도 이러한 쿼리를 실행할 수 있지만 이러한 사용자 계정은 IdC가 제공하는 중앙 집중식 관리를 활용하지 않습니다.

다음 예시는 S3 Access Grants 통합으로 실행되는 쿼리를 보여줍니다.

```
COPY table FROM 's3://mybucket/data';  // -- Redshift uses IdC identity 
UNLOAD ('SELECT * FROM table') TO 's3://mybucket/unloaded/'    // -- Redshift uses IdC identity
```

# AWS Lake Formation을 통한 데이터 쿼리
<a name="redshift-iam-access-control-idp-analytics-connecting-steps"></a>

AWS Lake Formation을 사용하면 데이터 레이크를 중앙에서 관리 및 보호하고 데이터 액세스를 제공하는 것이 더 쉬워집니다. AWS IAM Identity Center 및 Redshift를 통해 Lake Formation으로 ID를 전파하도록 구성하면 관리자가 조직의 ID 제공업체(IdP) 그룹을 기반으로 Amazon S3 데이터 레이크에 세밀하게 분류된 액세스를 허용할 수 있습니다. 이러한 그룹은 AWS IAM Identity Center를 통해 관리됩니다. 이 섹션에서는 Redshift와 함께 AWS IAM Identity Center를 활용하여 Lake Formation에서 관리하는 리소스에 연결하는 몇 가지 사용 사례를 구성하는 방법을 보여줍니다(예: 데이터 레이크에서 쿼리, 데이터 공유에서 쿼리).

## AWS IAM Identity Center 및 Redshift 연결을 사용하여 데이터 레이크 쿼리
<a name="redshift-iam-access-control-idp-analytics-connecting-datalake"></a>

이 단계는 Redshift에 연결된 AWS IAM Identity Center를 사용하여 Lake Formation에서 관리하는 데이터 레이크를 쿼리하는 사용 사례를 다룹니다.

**사전 조건**:

이 절차에는 몇 가지 사전 조건과 단계가 있습니다.

1. Redshift를 통한 인증 및 ID 관리를 지원하려면 AWS IAM Identity Center를 설정해야 합니다. 콘솔에서 AWS IAM Identity Center를 활성화하고 ID 제공업체(IdP) 소스를 선택할 수 있습니다. 그런 다음 IdP 사용자 세트를 AWS IAM Identity Center와 동기화합니다. 또한 이 문서의 앞부분에 설명된 단계에 따라 AWS IAM Identity Center와 Redshift 간의 연결을 설정해야 합니다.

1. 새 Amazon Redshift 클러스터를 생성하고 구성 단계에서 AWS IAM Identity Center를 통한 ID 관리를 활성화합니다.

1. Lake Formation을 위한 관리형 AWS IAM Identity Center 애플리케이션을 생성하고 구성합니다. 이는 AWS IAM Identity Center와 Redshift 간의 연결 설정에 따른 것입니다. 단계는 다음과 같습니다.

   1. AWS CLI에서 `modify-redshift-idc-application` 명령을 사용하여 Lake Formation 서비스를 Redshift용 AWS IAM Identity Center 관리 애플리케이션과 통합할 수 있도록 설정합니다. 이 호출에는 Lake Formation에 대한 권한 부여를 가능하게 하는 구성 문자열 값으로 설정된 `service-integrations` 파라미터가 포함됩니다.

   1. `create-lake-formation-identity-center-configuration` 명령을 사용하여 Lake Formation을 구성합니다. 그러면 AWS IAM Identity Center 포털에서 볼 수 있는 Lake Formation용 AWS IAM Identity Center 애플리케이션이 생성됩니다. 관리자는 `––cli-input-json` 인수를 설정해야 하며, 이 인수의 값은 모든 AWS CLI API 직접 호출에 표준 형식을 사용하는 JSON 파일의 경로입니다. 다음에 대한 값을 포함해야 합니다.
      + `CatalogId` - Lake Formation 카탈로그 ID
      + `InstanceArn` - AWS IAM Identity Center 인스턴스 ARN 값

관리자가 사전 조건 구성을 완료한 후 데이터베이스 관리자는 데이터 레이크를 쿼리하기 위한 외부 스키마를 생성할 수 있습니다.

1. **관리자가 외부 스키마 생성** - Redshift 데이터베이스 관리자는 다음 SQL 문을 사용하여 데이터베이스에 연결하고 외부 스키마를 만듭니다.

   ```
   CREATE EXTERNAL SCHEMA if not exists my_external_schema from DATA CATALOG database 'my_lf_integrated_db' catalog_id '12345678901234';
   ```

   참고로, AWS IAM Identity Center를 통해 액세스를 관리하므로 이 경우에는 IAM 역할을 지정할 필요가 없습니다.

1. **관리자가 권한 부여** - 관리자가 AWS IAM Identity Center 그룹에 사용 권한을 부여하며, 이로 인해 Redshift 리소스에 대한 권한이 부여됩니다. 다음과 같은 SQL 문을 실행하면 됩니다.

   ```
   GRANT USAGE ON SCHEMA "my_external_schema" to "MYCO:sales";
   ```

   이후 관리자는 AWS CLI를 사용하여 조직의 요구 사항에 따라 객체에 대한 Lake Formation 권한을 부여합니다.

   ```
   aws lakeformation grant-permissions ...
   ```

1. **사용자가 쿼리 실행** - 이제 예컨대 영업 그룹에 속한 AWS IAM Identity Center 사용자는 쿼리 에디터 v2를 통해 Redshift 데이터베이스에 로그인할 수 있습니다. 그런 다음, 아래 샘플과 같이 외부 스키마의 테이블에 액세스하는 쿼리를 실행할 수 있습니다.

   ```
   SELECT * from my_external_schema.table1;
   ```

## AWS IAM Identity Center와 Redshift 연결을 사용하여 데이터 공유에 연결
<a name="redshift-iam-access-control-idp-analytics-connecting-datashare"></a>

 AWS IAM Identity Center를 통해 액세스를 관리하는 경우 다른 Redshift 데이터 웨어하우스에서 데이터 공유에 액세스할 수 있습니다. 이렇게 하려면 쿼리를 실행하여 외부 데이터베이스를 설정합니다. 이 단계를 완료하기 전에는 이전 절차에 설명된 대로 Redshift와 AWS IAM Identity Center 간에 연결을 설정하고 AWS Lake Formation 애플리케이션을 생성한 것으로 가정합니다.

1. **외부 데이터베이스 생성** - 관리자가 ARN을 통해 참조하여 데이터 공유를 위한 외부 데이터베이스를 만듭니다. 다음은 방법을 보여주는 샘플입니다.

   ```
   CREATE DATABASE "redshift_external_db" FROM ARN 'arn:aws:glue:us-east-1:123456789012:database/redshift_external_db-iad' WITH NO DATA CATALOG SCHEMA;
   ```

   ID 관리를 위해 Redshift와 함께 AWS IAM Identity Center를 사용하는 이 사용 사례에서는 IAM 역할이 포함되지 않습니다.

1. **관리자가 권한 설정** - 데이터베이스를 생성한 후 관리자는 AWS IAM Identity Center 그룹에 사용 권한을 부여합니다. 이렇게 하면 Redshift 리소스에 대한 권한이 부여됩니다.

   ```
   GRANT USAGE ON DATABASE "my_external_db" to "MYCO:sales";
   ```

   또한 관리자는 AWS CLI를 사용하여 객체에 대한 Lake Formation 권한을 부여합니다.

   ```
   aws lakeformation grant-permissions ...
   ```

1. **사용자가 쿼리 실행** - 영업 그룹의 사용자는 할당된 권한에 따라 데이터베이스의 테이블을 쿼리할 수 있습니다.

   ```
   select * from redshift_external_db.public.employees;
   ```

데이터 레이크에 대한 권한 부여 및 데이터 공유에 대한 권한 부여 관련 자세한 내용은 [Granting permissions to users and groups](https://docs.aws.amazon.com/lake-formation/latest/dg/grant-permissions-sso.html)를 참조하세요. 스키마 또는 데이터베이스에 사용 권한을 부여하는 방법에 대한 자세한 내용은 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html)를 참조하세요.

# 신뢰할 수 있는 토큰 발급자를 사용하여 애플리케이션 또는 도구를 OAuth와 통합
<a name="redshift-iam-access-control-idp-connect-oauth"></a>

 AWS IAM Identity Center 연결을 통해 Redshift에 연결하기 위해 생성한 클라이언트 도구에 기능을 추가할 수 있습니다. AWS IAM Identity Center에 대한 Redshift 통합을 이미 구성한 경우 이 섹션에 자세히 설명된 속성을 사용하여 연결을 설정합니다.

## AWS IAM Identity Center를 사용하여 Redshift에 연결하기 위한 인증 플러그인
<a name="redshift-iam-access-control-idp-connect-plugin"></a>

다음 드라이버 플러그인을 사용하여 AWS IAM Identity Center를 사용하여 Amazon Redshift에 연결할 수 있습니다.
+  `BrowserIdcAuthPlugin` - 이 플러그인은 AWS IAM Identity Center와의 원활한 통합 인증을 지원합니다. 사용자가 기업 ID 제공업체에 정의된 사용자 자격 증명을 사용하여 로그인할 수 있는 브라우저 창을 만듭니다.
+  `IdpTokenAuthPlugin` - 이 플러그인은 Amazon Redshift 드라이버가 AWS IAM Identity Center 인증을 위해 브라우저 창을 열도록 하는 대신 자체적으로 인증 흐름을 관리하려는 애플리케이션에서 사용해야 합니다. Okta, PingOne 및 Microsoft Entra ID(Azure AD)와 같이 AWS IAM Identity Center와 연결된 모든 웹 ID 제공업체의 AWS IAM Identity Center 벤딩 액세스 토큰 또는 OIDC(OpenID Connect) JSON 웹 토큰(JWT)을 허용합니다. 클라이언트 애플리케이션은 이 필수 액세스 토큰/JWT를 생성할 책임이 있습니다.

### `BrowserIdcAuthPlugin`을 사용하는 인증
<a name="redshift-iam-access-control-idp-connect-plugin-browseridcauthplugin"></a>

Amazon Redshift 드라이버에 따라 `BrowserIdcAuthPlugin`을 사용하여 연결하려면 다음 플러그인 이름을 사용하세요.


| 드라이버 | 연결 옵션 키 | 값 | 설명 | 
| --- | --- | --- | --- | 
| JDBC | `plugin_name` | com.amazon.redshift.plugin.BrowserIdcAuthPlugin | 연결할 때 플러그인의 정규화된 클래스 이름을 입력해야 합니다. | 
| ODBC | `plugin_name` | BrowserIdcAuthPlugin |  | 
| Python | `credentials_provider` | BrowserIdcAuthPlugin | Python 드라이버에 사용할 수 있는 `plugin_name` 옵션이 없습니다. 대신 를 사용합니다`credentials_provider` | 

`BrowserIdcAuthPlugin` 플러그인에는 다음과 같은 추가 연결 옵션이 있습니다.


| 옵션 이름 | 필수? | 설명 | 예제 | 
| --- | --- | --- | --- | 
| idc\$1region | 필수 | AWS IAM Identity Center 인스턴스가 위치한 AWS 리전입니다. | us-east-1 | 
| issuer\$1url | 필수 | AWS IAM Identity Center 서버의 인스턴스 엔드포인트입니다. 이 값은 AWS IAM Identity Center 콘솔을 사용하여 찾을 수 있습니다. | https://identitycenter.amazonaws.com/ssoins-g5j2k70sn4yc5nsc | 
| listen\$1port | 선택 | Amazon Redshift 드라이버가 브라우저 리디렉션을 통해 AWS IAM Identity Center로부터 `auth_code` 응답을 수신하는 데 사용하는 포트입니다. | 7890 | 
| idc\$1client\$1display\$1name | 선택 | AWS IAM Identity Center의 Single Sign-On 동의 팝업에서 AWS IAM Identity Center 클라이언트가 애플리케이션에 사용하는 이름입니다. | Amazon Redshift 드라이버 | 
| idp\$1response\$1timeout | 선택 | Redshift 드라이버가 인증 흐름이 완료될 때까지 기다리는 시간(초)입니다. | 60 | 

생성하고 연결하는 도구의 연결 속성에 이 값을 입력해야 합니다. 자세한 내용은 각각의 드라이버에 대한 연결 옵션 설명서를 참조하세요.
+ [JDBC 드라이버 버전 2.x 구성 옵션](jdbc20-configuration-options.md)
+ [ODBC 드라이버 옵션](odbc20-configuration-options.md)
+ [Amazon Redshift Python 커넥터의 구성 옵션](python-configuration-options.md)

### `IdpTokenAuthPlugin`을 사용하는 인증
<a name="redshift-iam-access-control-idp-connect-plugin-idptokenauthplugin"></a>

Amazon Redshift 드라이버에 따라 `IdpTokenAuthPlugin`을 사용하여 연결하려면 다음 플러그인 이름을 사용하세요.


| 드라이버 | 연결 옵션 키 | 값 | 설명 | 
| --- | --- | --- | --- | 
| JDBC | `plugin_name` | com.amazon.redshift.plugin.IdpTokenAuthPlugin | 연결할 때 플러그인의 정규화된 클래스 이름을 입력해야 합니다. | 
| ODBC | `plugin_name` | IdpTokenAuthPlugin |  | 
| Python | `credentials_provider` | IdpTokenAuthPlugin | Python 드라이버에 사용할 수 있는 `plugin_name` 옵션이 없습니다. 대신 를 사용합니다`credentials_provider` | 

`IdpTokenAuthPlugin` 플러그인에는 다음과 같은 추가 연결 옵션이 있습니다.


| 옵션 이름 | 필수? | 설명 | 
| --- | --- | --- | 
| 토큰 | 필수 | AWS IAM Identity Center에서 벤딩한 액세스 토큰 또는 AWS IAM Identity Center와 연결된 웹 ID 제공업체에서 제공하는 OIDC(OpenID Connect) JSON 웹 토큰(JWT)입니다. 애플리케이션은AWS IAM Identity Center 또는 AWS IAM Identity Center와 연결된 ID 제공업체를 통해 애플리케이션 사용자를 인증하여 이 토큰을 생성해야 합니다. | 
| token\$1type | 필수 | `IdpTokenAuthPlugin`에 사용되는 토큰 유형 가능한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-iam-access-control-idp-connect-oauth.html)  | 

생성하고 연결하는 도구의 연결 속성에 이 값을 입력해야 합니다. 자세한 내용은 각각의 드라이버에 대한 연결 옵션 설명서를 참조하세요.
+ [JDBC 드라이버 버전 2.x 구성 옵션](jdbc20-configuration-options.md)
+ [ODBC 드라이버 옵션](odbc20-configuration-options.md)
+ [Amazon Redshift Python 커넥터의 구성 옵션](python-configuration-options.md)

# Amazon Redshift 쿼리 에디터 v2의 연결 문제 해결
<a name="redshift-iam-access-control-idp-connect-troubleshooting"></a>

이 목록은 일반적으로 발생하는 오류를 자세히 설명하며 AWS IAM Identity Center 자격 증명을 사용하여 쿼리 에디터 v2와 Redshift 데이터베이스에 연결하는 데 도움이 될 수 있습니다.
+ 오류: **연결 문제: Identity Center 세션 정보를 사용할 수 없습니다.** - 이 오류가 발생하면 브라우저의 보안 및 개인 정보 설정을 확인합니다. 이러한 브라우저 설정, 특히 Firefox의 Total Cookie Protection 기능과 같은 보안 쿠키 관련 설정을 사용하면 Amazon Redshift 쿼리 에디터 v2에서 Redshift 데이터베이스로의 연결 시도가 차단될 수 있습니다. 해당 브라우저에 대해 자세히 설명된 문제 해결 단계를 따르세요.
  + **Firefox** - 현재 서드 파티 쿠키는 기본적으로 차단되어 있습니다. 브라우저 주소 표시줄의 방패 모양 아이콘을 클릭하고 토글을 전환하여 쿼리 에디터 v2의 강화 추적 방지 기능을 끕니다.
  + **Chrome 시크릿 모드** - Chrome 시크릿 모드는 기본적으로 서드 파티 쿠키를 차단합니다. 주소 표시줄의 눈 모양 아이콘을 클릭하여 쿼리 에디터 v2에 서드 파티 쿠키를 허용할 수 있습니다. 쿠키를 허용하도록 설정을 변경한 후에는 주소 표시줄에 눈 모양 아이콘이 보이지 않을 수 있습니다.
  + **Safari** - Mac의 경우 Safari 앱을 엽니다. **설정**을 선택한 후 **고급**을 선택합니다. 토글을 전환하여 **모든 쿠키 차단**을 끕니다.
  + **Edge** - **설정**을 선택하고 **쿠키 및 사이트 권한**을 선택합니다. 그런 다음 **쿠키 및 사이트 데이터 관리 및 삭제** 선택하고 **타사 쿠키 차단**을 끕니다.

  설정을 변경한 후 연결을 시도해도 **연결 문제: Identity Center 세션 정보를 사용할 수 없습니다 오류 메시지가 계속 표시되는 경우** AWS IAM Identity Center와의 연결을 새로 고치는 것이 좋습니다. 이렇게 하려면 Redshift 데이터베이스 인스턴스를 마우스 오른쪽 버튼으로 클릭하고 **새로 고침**을 선택합니다. 인증을 수행할 수 있는 새 창이 나타납니다.
+ 오류: **연결 문제: Identity Ceneter 세션이 만료되었거나 유효하지 않습니다.** - Redshift 프로비저닝된 클러스터 또는 Severless 작업 그룹을 AWS IAM Identity Center와 통합한 후 사용자가 쿼리 에디터 v2에서 Redshift 데이터베이스에 연결하려고 하면 이 오류가 표시될 수 있습니다. 연결 시도가 성공한 후 이 문제가 발생할 수 있습니다. 이 경우 다시 인증하는 것이 좋습니다. 이렇게 하려면 Redshift 데이터베이스 인스턴스를 마우스 오른쪽 버튼으로 클릭하고 **새로 고침**을 선택합니다. 인증을 수행할 수 있는 새 창이 나타납니다.
+ 오류: **범위가 잘못되었습니다. 사용자 자격 증명은 Redshift에 연결할 권한이 없습니다.** - 자격 증명 관리를 위해 Redshift 프로비저닝된 클러스터 또는 Serverless 작업 그룹을 AWS IAM Identity Center와 통합한 후 사용자가 쿼리 에디터 v2에서 Redshift 데이터베이스에 연결하려고 하면 이 오류가 표시될 수 있습니다. 이 경우 쿼리 에디터 v2가 AWS IAM Identity Center를 통해 사용자를 성공적으로 연결하고 인증하여 올바른 리소스에 액세스하려면 관리자가 Redshift 콘솔을 통해 Redshift AWS IAM Identity Center 애플리케이션에 사용자를 할당해야 합니다. 이 작업은 **IAM Identity Center 연결**에서 완료됩니다. 이렇게 하면 사용자는 AWS IAM Identity Center 세션 캐싱의 한도인 1시간 후에 성공적인 연결을 설정할 수 있습니다.
+ 오류: **데이터베이스를 나열할 수 없습니다. FATAL: 클러스터가 자동으로 일시 중지될 때 쿼리가 실패했습니다.** - Amazon Redshift Serverless 데이터베이스가 워크로드를 처리하지 않는 유휴 상태이면 AWS IAM Identity Center 자격 증명으로 연결할 때 일시 중지 상태를 유지할 수 있습니다. 이 문제를 해결하려면 다른 인증 방법으로 로그인하여 서버리스 작업 그룹을 다시 시작합니다. 그런 다음 AWS IAM Identity Center 자격 증명으로 데이터베이스에 연결합니다.
+ 오류: **AWS IAM Identity Center와 페더레이션하려고 시도하는 동안 오류가 발생했습니다. Amazon Redshift 관리자는 Redshift 콘솔을 사용하여 AWS IAM Identity Center QEV2 애플리케이션을 삭제하고 다시 생성해야 합니다.** - 이 오류는 일반적으로 쿼리 에디터 v2와 연결된 AWS IAM Identity Center 애플리케이션 인스턴스가 삭제될 때 발생합니다. 이 문제를 해결하려면 Amazon Redshift 관리자가 AWS IAM Identity Center를 위해 Redshift 및 쿼리 에디터 v2 애플리케이션을 삭제하고 다시 생성해야 합니다. 이 작업은 Redshift 콘솔 또는 [https://docs.aws.amazon.com/cli/latest/reference/redshift/delete-redshift-idc-application.html](https://docs.aws.amazon.com/cli/latest/reference/redshift/delete-redshift-idc-application.html) CLI 명령을 사용하여 수행할 수 있습니다.

# Amazon Redshift에 대해 서비스 연결 역할 사용
<a name="using-service-linked-roles"></a>

Amazon Redshift는 AWS Identity and Access Management(IAM)[ 서비스 연결 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)을 사용합니다. 서비스 연결 역할은 Amazon Redshift에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Amazon Redshift에서 사전 정의하며, 해당 서비스가 Amazon Redshift 클러스터를 대신해 AWS 서비스를 자동으로 호출하기 위해 필요한 모든 권한을 가지고 있습니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없기 때문에 Amazon Redshift를 더 쉽게 설정할 수 있습니다. 서비스 연결 역할은 Amazon Redshift 사용 사례에 연결되고 사전 정의된 권한이 있습니다. Amazon Redshift만 역할을 수임할 수 있으며 서비스 연결 역할만 사전 정의된 권한 정책을 사용할 수 있습니다. Amazon Redshift는 클러스터 또는 Redshift 관리형 VPC 엔드포인트를 처음 생성할 때 계정에 서비스 연결 역할을 생성합니다. 계정에서 Amazon Redshift 클러스터 또는 Redshift 관리형 VPC 엔드포인트를 모두 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 리소스에 대한 액세스에 필요한 권한을 부주의하게 삭제할 수 없기 때문에 Amazon Redshift 리소스가 보호됩니다.

Amazon Redshift는 서비스가 제공되는 모든 리전에서 서비스 연결 역할 사용을 지원합니다. 자세한 내용은 [AWS 리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html?id=docs_gateway#redshift_region) 섹션을 참조하세요.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은 [IAM으로 작업하는 AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 섹션을 참조하고 **서비스 연결 역할** 열에 **예**가 표시된 서비스를 찾으세요. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## Amazon Redshift에 대한 서비스 연결 역할 권한
<a name="service-linked-role-permissions"></a>

Amazon Redshift는 **AWSServiceRoleForRedshift**라는 서비스 연결 역할을 사용합니다. 이를 통해 Amazon Redshift가 사용자를 대신하여 AWS 서비스를 호출할 수 있습니다. 이 서비스 연결 역할은 관리형 정책 `AmazonRedshiftServiceLinkedRolePolicy`에 연결됩니다. 이 정책에 대한 업데이트는 [Amazon Redshift에 대한 AWS 관리형 (사전 정의된) 정책](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.managed-policies)을 참조하세요.

AWSServiceRoleForRedshift 서비스 연결 역할은 **redshift.amazonaws.com**만 신뢰하여 역할을 맡습니다.

AWSServiceRoleForRedshift 서비스 연결 역할 권한 정책은 Amazon Redshift가 관련된 모든 리소스에서 다음을 완료하도록 허용합니다.
+ `ec2:DescribeVpcs `
+ `ec2:DescribeSubnets `
+ `ec2:DescribeNetworkInterfaces `
+ `ec2:DescribeAddress `
+ `ec2:AssociateAddress `
+ `ec2:DisassociateAddress `
+ `ec2:CreateNetworkInterface `
+ `ec2:DeleteNetworkInterface `
+ `ec2:ModifyNetworkInterfaceAttribute`
+ `ec2:CreateVpcEndpoint`
+ `ec2:DeleteVpcEndpoints`
+ `ec2:DescribeVpcEndpoints`
+ `ec2:ModifyVpcEndpoint`
+ `ec2:DescribeVpcAttribute`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeInternetGateways`
+ `ec2:DescribeSecurityGroupRules`
+ `ec2:DescribeAvailabilityZones`
+ `ec2:DescribeNetworkAcls`
+ `ec2:DescribeRouteTables`
+ `ec2:AssignIpv6Addresses`
+ `ec2:UnassignIpv6Addresses`

**네트워크 리소스에 대한 권한**

다음 권한은 Amazon EC2에서 보안 그룹 규칙의 생성 및 관리 작업을 허용합니다. 이러한 보안 그룹 및 규칙은 특히 Amazon Redshift `aws:RequestTag/Redshift` 리소스 태그와 관련이 있습니다. 이렇게 하면 권한 범위가 특정 Amazon Redshift 리소스로 제한됩니다.
+ `ec2:CreateSecurityGroup`
+ `ec2:AuthorizeSecurityGroupEgress`
+ `ec2:AuthorizeSecurityGroupIngress`
+ `ec2:RevokeSecurityGroupEgress`
+ `ec2:RevokeSecurityGroupIngress`
+ `ec2:ModifySecurityGroupRules`
+ `ec2:DeleteSecurityGroup`

**서비스 할당량에 대한 권한**

다음 권한을 통해 호출자는 서비스 할당량을 받을 수 있습니다.

`servicequotas:GetServiceQuota`

다음 JSON 조각은 서비스 할당량의 작업 및 리소스 범위를 보여줍니다.

```
{
   "Sid": "ServiceQuotasToCheckCustomerLimits",
   "Effect": "Allow",
   "Action": [
      "servicequotas:GetServiceQuota"
   ],
   "Resource": [
      "arn:aws:servicequotas:*:*:ec2/L-0263D0A3",
      "arn:aws:servicequotas:*:*:vpc/L-29B6F2EB" 
   ]
}
```

할당량 코드는 다음과 같습니다.
+ **L-0263D0A3 - EC2-VPC Elastic IP의 할당량 코드입니다.
+ **L-29B6F2EB - VPC당 인터페이스 VPC 엔드포인트의 할당량 코드입니다.

자세한 내용은 [AWS 서비스 할당량](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)을 참조하세요.

**감사 로깅 작업**

`logs` 접두사와 함께 나열된 작업은 감사 로깅 및 관련 기능과 관련이 있습니다. 특히, 로그 그룹 및 로그 스트림의 생성 및 관리와 관련이 있습니다.
+ `logs:CreateLogGroup`
+ `logs:PutRetentionPolicy`
+ `logs:CreateLogStream`
+ `logs:PutLogEvents`
+ `logs:DescribeLogStreams`
+ `logs:GetLogEvents`

다음 JSON은 감사 로깅을 위해 Amazon Redshift에 대한 작업 및 리소스 범위를 보여줍니다.

```
[
    {
        "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogGroups",
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogGroup",
            "logs:PutRetentionPolicy"
        ],
        "Resource": [
            "arn:aws:logs:*:*:log-group:/aws/redshift/*"
        ]
    },
    {
        "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogStreams",
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogStream",
            "logs:PutLogEvents",
            "logs:DescribeLogStreams",
            "logs:GetLogEvents"
        ],
        "Resource": [
            "arn:aws:logs:*:*:log-group:/aws/redshift/*:log-stream:*"
        ]
    }
]
```

서비스 연결 역할 및 AWS에서의 용도에 대한 자세한 내용은 [서비스 연결 역할 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)을 참조하세요. Amazon Redshift의 특정 작업 및 기타 IAM 리소스에 대한 자세한 내용은 [Amazon Redshift에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshift.html)를 참조하세요.

**를 사용하여 관리자 보안 인증 정보를 관리하기 위한 작업AWS Secrets Manager**

`secretsmanager` 접두사와 함께 나열된 작업은 Amazon Redshift를 사용하여 관리자 보안 인증 정보를 관리하는 것과 관련이 있습니다. 이러한 작업을 사용하면 Amazon Redshift는 AWS Secrets Manager를 사용하여 관리자 보안 인증 보안 암호를 생성하고 관리할 수 있습니다.

다음 JSON은 AWS Secrets Manager를 사용한 관리자 보안 인증 정보 관리와 관련하여 Amazon Redshift에 대한 작업 및 리소스 범위를 보여줍니다.

```
[
    {
        "Effect": "Allow",
        "Action": [
            "secretsmanager:DescribeSecret",
            "secretsmanager:DeleteSecret",
            "secretsmanager:PutSecretValue",
            "secretsmanager:UpdateSecret",
            "secretsmanager:UpdateSecretVersionStage",
            "secretsmanager:RotateSecret"
        ],
        "Resource": [
            "arn:aws:secretsmanager:*:*:secret:redshift!*"
        ],
        "Condition": {
            "StringEquals": {
                "secretsmanager:ResourceTag/aws:secretsmanager:owningService": "redshift"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetRandomPassword"
        ],
        "Resource": "*"
    }
]
```

**AWS Glue Data Catalog에 클러스터 및 서버리스 네임스페이스를 등록하기 위한 작업**

`glue` 접두사로 나열된 작업은 프로비저닝된 클러스터 또는 서버리스 네임스페이스를 등록하여 만든 AWS Glue Data Catalog의 카탈로그에 액세스하는 것과 관련이 있습니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon Redshift에 대한 Apache Iceberg 호환성](https://docs.aws.amazon.com/redshift/latest/dg/iceberg-integration_overview.html)을 참조하세요.

다음 JSON은 AWS Glue Data Catalog의 카탈로그에 액세스하기 위한 Amazon Redshift에 대한 작업 및 리소스 범위를 보여줍니다.

```
[
    {
        "Sid": "DiscoverRedshiftCatalogs",
        "Effect": "Allow",
        "Action": [
            "glue:GetCatalogs",
            "glue:GetCatalog"
        ],
        "Resource": [
            "arn:aws:glue:*:*:catalog",
            "arn:aws:glue:*:*:catalog/*"
        ], 
   "Condition": 
    { 
        "Bool": 
        { 
            "glue:EnabledForRedshiftAutoDiscovery": "true"
        },
        "StringEquals": {
             "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
    } 
 }, 
 {
    "Sid": "LakeFormationGetMetadataAccessForFederatedCatalogs",
    "Effect": "Allow", 
    "Action": [ 
        "lakeformation:GetDataAccess"
    ], 
    "Resource": [ "*" ], 
    "Condition": 
    { 
        "Bool": 
        {
            "lakeformation:EnabledOnlyForMetaDataAccess":"true"
        },
        "StringEquals": {
             "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "ForAnyValue:StringEquals": 
        { 
            "aws:CalledVia": "glue.amazonaws.com"
        } 
    }
 }
    }
]
```

`glue:GetCatalog` 및 `glue:GetCatalogs` 권한에는 `glue:EnabledForRedshiftAutoDiscovery:true` 조건이 있습니다. 즉, Amazon Redshift는 카탈로그를 자동으로 검색할 수 있는 IAM 액세스 권한을 부여합니다. 옵트아웃하려면 AWS Glue 계정 수준 리소스 정책을 추가하여 카탈로그에 대한 서비스 연결 역할 액세스를 선택적으로 거부합니다. 서비스 연결 역할에 이미 정책에 명시적 허용 작업이 있으므로 옵트아웃 정책은 해당 작업을 명시적으로 거부해야 합니다. 추가 정책이 Amazon Redshift에 대한 자동 검색을 거부하는 다음 예제를 생각해 보세요.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : {
            "Effect": "Deny",
            "Action": [
                "glue:GetCatalog",
                "glue:GetCatalogs"
            ],
            "Principal" : {
            "AWS" : "arn:aws:iam::111122223333:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift"
            },
            "Resource": [
                "arn:aws:glue:*:*:catalog/<s3_table_catalog_name>",
                "arn:aws:glue:*:*:catalog/<s3_table_catalog_name>/*"
            ]
        }
}
```

------

**IAM 엔터티가 AWSServiceRoleForRedshift 서비스 연결 역할을 생성하도록 허용**

```
{
    "Effect": "Allow",
    "Action": [
        "iam:CreateServiceLinkedRole"      
    ],
    "Resource": "arn:aws:iam::<AWS-account-ID>:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift",
    "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}}
}
```

**IAM 엔터티가 AWSServiceRoleForRedshift 서비스 연결 역할을 삭제하도록 허용**

IAM 개체에 대한 권한에 다음 정책 설명을 추가합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::<AWS-account-ID>:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift",
    "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}}
}
```

또는 AWS 관리형 정책을 사용하여 Amazon Redshift에 대한 [전체 액세스 권한을 제공](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftFullAccess)할 수 있습니다.

## Amazon Redshift에 대한 서비스 연결 역할 생성
<a name="create-service-linked-role"></a>

AWSServiceRoleForRedshift 서비스 연결 역할은 수동으로 생성할 필요가 없습니다. Amazon Redshift에서 서비스 연결 역할을 자동으로 생성합니다. 사용자 계정에서 AWSServiceRoleForRedshift 서비스 연결 역할이 삭제되면 새 Amazon Redshift 클러스터를 시작할 때 Amazon Redshift에서 해당 역할을 생성합니다.

**중요**  
Amazon Redshift 서비스가 서비스 연결 역할을 지원하기 시작한 2017년 12월 18일 이전에 이 서비스를 사용했다면 Amazon Redshift가 사용자 계정에 AWSServiceRoleForRedshift 역할을 이미 생성했습니다. 자세한 내용은 [내 IAM 계정에 표시되는 새 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)을 참조하세요. 

## Amazon Redshift에 대한 서비스 연결 역할 편집
<a name="edit-service-linked-role"></a>

Amazon Redshift는 AWSServiceRoleForRedshift 서비스 연결 역할을 편집하도록 허용하지 않습니다. 서비스 연결 역할을 생성한 후에는 다양한 엔터티가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 그러나 IAM 콘솔, AWS Command Line Interface(AWS CLI) 또는 IAM API를 사용하여 역할에 대한 설명을 편집할 수 있습니다. 자세한 내용은 *IAM User Guide*의 [Modifying a role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) 섹션을 참조하세요.

## Amazon Redshift에 대한 서비스 연결 역할 삭제
<a name="delete-service-linked-role"></a>

서비스 연결 역할이 필요한 기능 또는 서비스가 더 이상 필요 없는 경우에는 해당 역할을 삭제할 것을 권합니다. 그렇게 하면 적극적으로 모니터링하거나 유지 관리하지 않은 미사용 엔터티가 없습니다.

계정에 대한 서비스 연결 역할을 삭제하려면 클러스터를 종료한 다음 계정에서 삭제해야 합니다. 자세한 내용은 [클러스터 종료 및 삭제](rs-mgmt-shutdown-delete-cluster.md) 섹션을 참조하세요.

IAM 콘솔, AWS CLI 또는 IAM API를 사용하여 서비스 연결 역할을 삭제할 수 있습니다. 자세한 내용은 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)의 *서비스에 연결 역할 삭제* 섹션을 참조하세요.

# IAM 인증을 이용한 데이터베이스 사용자 자격 증명 생성
<a name="generating-user-credentials"></a>

사용자의 Amazon Redshift 데이터베이스 액세스 권한을 관리하기 위해 AWS Identity and Access Management(IAM) 권한 정책을 통해 허용한 권한을 바탕으로 임시 데이터베이스 자격 증명을 생성할 수 있습니다.

일반적으로 Amazon Redshift 데이터베이스 사용자는 데이터베이스 사용자 이름과 암호를 제공하여 데이터베이스에 로그인합니다. 그러나 Amazon Redshift 데이터베이스에 사용자 이름과 암호를 유지할 필요는 없습니다. 대신 사용자 스스로 자격 증명을 새로 만들고 IAM 자격 증명을 바탕으로 데이터베이스에 로그인하도록 시스템 권한을 구성할 수 있습니다.

Amazon Redshift는 임시 데이터베이스 사용자 자격 증명을 생성하기 위해 [GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) API 작업을 제공합니다. `GetClusterCredentials` 작업 호출 절차를 관리하는 Amazon Redshift JDBC 또는 ODBC 드라이버로 SQL 클라이언트를 구성할 수 있습니다. 이 과정은 데이터베이스 사용자 자격 증명을 검색하고 SQL 클라이언트와 Amazon Redshift 데이터베이스 사이를 연결함으로써 진행됩니다. 또한 데이터베이스 애플리케이션을 사용해 `GetClusterCredentials` 작업을 프로그램 방식으로 호출하고, 데이터베이스 사용자 자격 증명을 검색하고, 데이터베이스에 연결할 수 있습니다.

이미 AWS 밖에서 사용자 자격 증명을 관리하고 있는 경우, SAML(Security Assertion Markup Language) 2.0을 준수하는 자격 증명 공급자(IdP)를 통해 Amazon Redshift 리소스에 대한 액세스를 관리할 수 있습니다. 연합된 사용자가 IAM 역할에 액세스하도록 IdP를 구성합니다. 그 IAM 역할로 임시 데이터베이스 자격 증명을 생성하고 Amazon Redshift 데이터베이스에 로그인할 수 있습니다.

SQL 클라이언트가 사용자를 대신하여 `GetClusterCredentials` 작업을 호출할 수 있는 권한이 필요합니다. IAM 역할을 만들고 `GetClusterCredentials` 작업과 관련 작업의 액세스 권한을 허용하거나 제한하는 IAM 권한 정책을 연결하여 그러한 권한을 관리합니다. 가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)를 참조하세요.

이 정책은 Amazon Redshift 클러스터, 데이터베이스, 데이터베이스 사용자 이름, 사용자 그룹 이름 등과 같은 리소스에 대한 액세스도 허용하거나 제한합니다.

**참고**  
Amazon Redshift JDBC 또는 ODBC 드라이버를 이용해 `GetClusterCredentials` 작업 호출 및 데이터베이스 로그온 절차를 관리할 것을 권장합니다. 간단한 설명을 위해 이 주제에서는 JDBC 또는 ODBC 드라이버로 SQL 클라이언트를 사용한다고 가정하겠습니다.  
`GetClusterCredentials` 작업 또는 병렬 `get-cluster-credentials` CLI 명령 사용의 구체적인 세부 내용과 예시는 [GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) 및 [get-cluster-credentials](https://docs.aws.amazon.com/cli/latest/reference/redshift/get-cluster-credentials.html)를 참조하십시오.

인증 및 권한 부여를 중앙에서 관리하기 위해 Amazon Redshift는 IAM을 통한 데이터베이스 인증을 지원하므로 엔터프라이즈 연동을 통해 사용자 인증을 사용할 수 있습니다. 사용자를 생성하는 대신 AWS Directory Service, 엔터프라이즈 사용자 디렉터리 또는 웹 자격 증명 공급자의 기존 자격 증명을 사용할 수 있습니다. 이 사용자를 페더레이션 사용자라고 합니다. AWS에서는 IdP를 통해 액세스가 요청되면 페더레이션 사용자에게 역할을 할당합니다.

조직의 사용자 또는 클라이언트 애플리케이션에 대한 연동 액세스를 제공하여 Amazon Redshift API 작업을 호출하기 위해 SAML 2.0 지원이 포함된 JDBC 또는 ODBC 드라이버를 사용하여 조직 IdP에서 인증을 요청할 수도 있습니다. 이 경우 조직의 사용자는 Amazon Redshift에 직접 액세스할 수 없습니다.

자세한 내용은 *IAM User Guide*의 [Identity Providers and Federation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 섹션을 참조하세요.

# 임시 IAM 보안 인증 정보 생성
<a name="generating-iam-credentials-steps"></a>

이 단원에서는 IAM 기반의 임시 데이터베이스 사용자 자격 증명을 만들고 새 자격 증명을 이용해 데이터베이스에 로그인하도록 시스템을 구성하는 방법을 알아봅니다.

다음은 개괄적으로 살펴보는 프로세스의 흐름입니다

1. [1단계: IAM Single Sign-On 액세스에 대한 IAM 역할 생성](#generating-iam-credentials-sso-role)

   (옵션) 사용자들이 IAM 인증과 서드 파티 자격 증명 공급자(IdP)를 통합하여 Amazon Redshift 데이터베이스에 액세스하도록 인증할 수 있습니다.

1. [2단계: IdP에 대한 SAML 어설션 구성](#configuring-saml-assertions)

   (선택 사항) IdP를 이용해 IAM 인증을 사용하려면 조직의 사용자 내지 그룹을 IAM 역할에 매핑하는 IdP 애플리케이션에서 클레임 규칙을 정의해야 합니다. 혹은 속성 요소를 포함시켜 `GetClusterCredentials` 파라미터를 설정해도 됩니다.

1. [3단계: GetClusterCredentialsWithIAM 또는 GetClusterCredentials 직접 호출 권한이 있는 IAM 역할 생성](#generating-iam-credentials-role-permissions)

   SQL 클라이언트 애플리케이션은 `GetClusterCredentials` 작업을 호출할 때 사용자를 맡습니다. IdP 액세스에 대해 IAM 역할을 생성한 경우, 그 역할에 필요한 권한을 추가할 수 있습니다.

1. [4단계: 데이터베이스 사용자 및 데이터베이스 그룹 생성](#generating-iam-credentials-user-and-groups)

   (선택 사항) 기본적으로 사용자 이름이 없는 경우 `GetClusterCredentials`는 자격 증명을 반환하여 신규 사용자를 만듭니다. 로그온할 때 사용자가 조인하는 사용자 그룹을 지정하는 방안을 선택할 수도 있습니다. 기본적으로 데이터베이스 사용자는 PUBLIC 그룹에 조인합니다.

1. [5단계: IAM 자격 증명을 사용하도록 JDBC 또는 ODBC 연결 구성](#generating-iam-credentials-configure-jdbc-odbc)

   Amazon Redshift 데이터베이스에 연결하려면 SQL 클라이언트가 Amazon Redshift JDBC 또는 ODBC 드라이버를 사용하도록 구성합니다.

## 1단계: IAM Single Sign-On 액세스에 대한 IAM 역할 생성
<a name="generating-iam-credentials-sso-role"></a>

SSO 액세스에 IdP를 사용하지 않으면 이 단계를 건너뛰어도 됩니다.

이미 AWS 외부에서 사용자 자격 증명을 관리하고 있다면 IAM 인증과 서드 파티 SAML-2.0 자격 증명 공급자(IdP)를 통합하여 사용자들이 Amazon Redshift 데이터베이스에 액세스하도록 인증할 수 있습니다.

자세한 내용은 *IAM User Guide*의 [Identity Providers and Federation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 섹션을 참조하세요.

Amazon Redshift IdP 인증을 사용하기 전에 AWS SAML 자격 증명 공급자를 생성합니다. IAM 콘솔에서 IdP를 생성하고 IdP와 해당 구성을 AWS에 통보합니다. 이렇게 하면 AWS 계정과 IdP 사이에 신뢰가 설정됩니다. 역할을 생성하는 단계는 *IAM User Guide*의 [Creating a Role for SAML 2.0 Federation (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html?icmpid=docs_iam_console)을 참조하세요.

## 2단계: IdP에 대한 SAML 어설션 구성
<a name="configuring-saml-assertions"></a>

IAM 역할을 만든 다음에는 조직의 사용자 내지 그룹을 IAM 역할에 매핑하는 IdP 애플리케이션에서 클레임 규칙을 정의합니다. 자세한 내용은 *IAM User Guide*의 [Configuring SAML Assertions for the Authentication Response](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html)를 참조하세요.

옵션으로 제공되는 `GetClusterCredentials` 파라미터인 `DbUser`, `AutoCreate`, `DbGroups`를 쓸 경우 두 가지 옵션이 있습니다. JDBC 또는 ODBC 연결로 파라미터의 값을 설정하거나 IdP에 SAML 속성 요소를 추가하여 값을 설정할 수 있습니다. `DbUser`, `AutoCreate`, `DbGroups` 파라미터에 대한 자세한 내용은 [5단계: IAM 자격 증명을 사용하도록 JDBC 또는 ODBC 연결 구성](#generating-iam-credentials-configure-jdbc-odbc) 섹션을 참조하십시오.

**참고**  
`${redshift:DbUser}`에서 설명한 대로 IAM 정책 변수 [GetClusterCredentials에 대한 리소스 정책](redshift-iam-access-control-identity-based.md#redshift-policy-resources.getclustercredentials-resources)를 사용할 경우, `DbUser`의 값이, API 작업의 요청 컨텍스트에서 검색한 값으로 대체됩니다. Amazon Redshift 드라이버는 SAML 속성으로 제공된 값이 아니라 연결 URL에서 제공한 `DbUser` 변수의 값을 사용합니다.  
이 구성의 보안을 위해 IAM 정책의 조건을 사용하여 `DbUser`으로 `RoleSessionName` 값을 확인할 것을 권장합니다. IAM 정책을 사용하여 조건을 설정하는 방법의 예는 [예제 8: GetClusterCredentials 사용을 위한 IAM 정책 예제](redshift-iam-access-control-identity-based.md#redshift-policy-examples-getclustercredentials)에서 볼 수 있습니다.

`DbUser`, `AutoCreate`, `DbGroups` 파라미터를 설정하도록 IdP를 구성하려면 다음 `Attribute` 요소를 포함시킵니다.
+ `Attribute` 속성이 "https://redshift.amazon.com/SAML/Attributes/DbUser"로 설정된 `Name` 요소

  `AttributeValue` 요소를 Amazon Redshift 데이터베이스에 연결할 사용자 이름으로 설정합니다.

  `AttributeValue` 요소 값은 소문자여야 하며, 문자로 시작해서 알파벳 숫자, 밑줄(\$1), 더하기 기호(\$1), 마침표(.), 골뱅이(@), 하이픈(-)만 쓸 수 있고 길이는 128자 미만이어야 합니다. 일반적으로 사용자 이름은 사용자 ID(예: bobsmith) 또는 이메일 주소(예: bobsmith@example.com)입니다. 이 값에 공백이 들어가면 안 됩니다('Bob Smith'처럼 띄어 쓸 수 없음).

  ```
  <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser">
      <AttributeValue>user-name</AttributeValue>
  </Attribute>
  ```
+ Name 속성이 "https://redshift.amazon.com/SAML/Attributes/AutoCreate"로 설정된 Attribute 요소

  데이터베이스 사용자가 없으면 새로 하나 만들어서 AttributeValue 요소를 True로 설정하십시오. Amazon Redshift 데이터베이스에 데이터베이스 사용자가 반드시 존재해야 한다고 지정하려면 AttributeValue를 false로 설정합니다.

  ```
  <Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate">
      <AttributeValue>true</AttributeValue>
  </Attribute>
  ```
+ `Attribute` 속성이 "https://redshift.amazon.com/SAML/Attributes/DbGroups"로 설정된 `Name` 요소

  이 요소에는 하나 이상의 `AttributeValue` 요소가 포함되어 있습니다. Amazon Redshift 데이터베이스에 연결할 때 세션 기간 동안 `DbUser`가 조인하는 데이터베이스 그룹 이름으로 각 `AttributeValue` 요소를 설정합니다.

  ```
  <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbGroups">
      <AttributeValue>group1</AttributeValue>
      <AttributeValue>group2</AttributeValue>
      <AttributeValue>group3</AttributeValue>
  </Attribute>
  ```

## 3단계: GetClusterCredentialsWithIAM 또는 GetClusterCredentials 직접 호출 권한이 있는 IAM 역할 생성
<a name="generating-iam-credentials-role-permissions"></a>

SQL 클라이언트가 사용자를 대신하여 ` GetClusterCredentialsWithIAM` 또는 `GetClusterCredentials` 작업을 직접 호출할 수 있는 권한이 필요합니다. 그 인증을 제공하려면 사용자 또는 역할을 새로 만들어 필요한 권한을 허용하는 정책을 연결합니다. 두 작업 모두 클러스터 자격 증명을 얻는 데 사용할 수 있지만 인증 방법은 다릅니다. ` GetClusterCredentialsWithIAM`은 IAM 역할을 사용하여 역할에 매핑되는 데이터베이스 사용자를 자동으로 생성하므로 IAM 역할 수준에서 권한을 관리하는 데 유용한 반면 `GetClusterCredentials`는 데이터베이스의 지정된 사용자 이름에 대한 자격 증명을 제공합니다.

**GetClusterCredentialsWithIAM 직접 호출 권한이 있는 IAM 역할 생성**

1. IAM 서비스를 이용해 사용자 또는 역할을 새로 만듭니다. 기존의 사용자 또는 역할을 사용할 수 있습니다. 예를 들어 IdP 액세스에 대해 IAM 역할을 생성한 경우, 그 역할에 필요한 IAM 정책을 연결할 수 있습니다.

1. ` redshift:GetClusterCredentialsWithIAM` 작업의 호출 권한이 있는 권한 정책을 연결합니다. 다음 정책 샘플은 특정 클러스터 및 데이터베이스, 클러스터의 모든 데이터베이스 및 클러스터의 모든 데이터베이스에 대한 작업을 허용하는 옵션을 보여줍니다.

   ```
   {
       "Version": "2012-10-17", 		 	 	 
       "Statement": [
           {
               "Sid": "SpecificClusterAndDBName",
               "Effect": "Allow",
               "Action": "redshift:GetClusterCredentialsWithIAM",
               "Resource": [
                   "arn:aws:redshift:us-east-1:123456789012:dbname:testcluster/testdatabase"
               ]
           },
           {
               "Sid": "SpecificClusterAndAnyDBName",
               "Effect": "Allow",
               "Action": "redshift:GetClusterCredentialsWithIAM",
               "Resource": "arn:aws:redshift:us-east-1:123456789012:dbname:examplecluster/*",
           },
           {
               "Sid": "AnyClusterAnyDatabase",
               "Effect": "Allow",
               "Action": "redshift:GetClusterCredentialsWithIAM",
               "Resource": "*"
           }
       ]
   }
   ```

**GetClusterCredentials 호출 권한이 있는 IAM 역할 생성**

1. IAM 서비스를 이용해 사용자 또는 역할을 새로 만듭니다. 기존의 사용자 또는 역할을 사용할 수 있습니다. 예를 들어 IdP 액세스에 대해 IAM 역할을 생성한 경우, 그 역할에 필요한 IAM 정책을 연결할 수 있습니다.

1. `redshift:GetClusterCredentials` 작업의 호출 권한이 있는 권한 정책을 연결합니다. 어떤 옵션 파라미터를 지정하느냐에 따라 정책에서 추가 작업 및 리소스를 허용하거나 제한할 수 있습니다.
   + SQL 클라이언트의 클러스터 ID, AWS 리전, 포트 검색을 허용하려면 Redshift 클러스터 리소스가 있는 `redshift:DescribeClusters` 작업의 호출 권한을 포함합니다.
   + `AutoCreate` 옵션을 사용하는 경우 `redshift:CreateClusterUser`호출(`dbuser` 리소스가 있는) 권한을 포함하십시오. 다음 Amazon 리소스 이름(ARN)은 Amazon Redshift `dbuser`를 지정합니다. *`region`*, *`account-id`* 및 *`cluster-name`*을 AWS 리전, 계정 및 클러스터의 값으로 바꿉니다. *`dbuser-name`*에는 클러스터 데이터베이스에 로그인하는 데 사용할 사용자 이름을 지정합니다.

     ```
     arn:aws:redshift:region:account-id:dbuser:cluster-name/dbuser-name
     ```
   + (옵션) Amazon Redshift `dbname` 리소스를 지정하는 ARN을 다음 형식으로 추가합니다. *`region`*, *`account-id`* 및 *`cluster-name`*을 AWS 리전, 계정 및 클러스터의 값으로 바꿉니다. `database-name`에는 사용자가 로그인할 데이터베이스의 이름을 지정합니다.

     ```
     arn:aws:redshift:region:account-id:dbname:cluster-name/database-name
     ```
   + `DbGroups` 옵션을 사용하는 경우 `redshift:JoinGroup` 작업(Amazon Redshift `dbgroup` 리소스가 있는)의 호출 권한을 다음 형식대로 포함합니다. *`region`*, *`account-id`* 및 *`cluster-name`*을 AWS 리전, 계정 및 클러스터의 값으로 바꿉니다. `dbgroup-name`에는 사용자가 로그인할 때 조인하는 사용자 그룹의 이름을 지정합니다.

     ```
     arn:aws:redshift:region:account-id:dbgroup:cluster-name/dbgroup-name
     ```

자세한 내용과 예제는 [GetClusterCredentials에 대한 리소스 정책](redshift-iam-access-control-identity-based.md#redshift-policy-resources.getclustercredentials-resources) 섹션을 참조하세요.

## 4단계: 데이터베이스 사용자 및 데이터베이스 그룹 생성
<a name="generating-iam-credentials-user-and-groups"></a>

선택에 따라 클러스터 데이터베이스에 로그인할 때 사용하는 데이터베이스 사용자를 새로 만들 수 있습니다. 기존 사용자에 임시 사용자 자격 증명을 만들 경우, 그 사용자의 암호를 비활성화하고 임시 암호로 로그온하도록 강제할 수 있습니다. 혹은 `GetClusterCredentials` Autocreate 옵션을 써서 새 데이터베이스 사용자를 자동으로 생성할 수도 있습니다.

IAM 데이터베이스 사용자가 로그인할 때 조인하게 하려는 권한을 가진 데이터베이스 사용자 그룹을 만들 수 있습니다. `GetClusterCredentials` 작업을 호출하면 새 사용자가 로그인 시 조인하는 사용자 그룹 이름의 목록을 지정할 수 있습니다. 이러한 그룹의 멤버쉽은 주어진 요청으로 생성한 자격 증명을 이용해 만든 세션에만 유효합니다.

**데이터베이스 사용자 및 데이터베이스 그룹 생성**

1. Amazon Redshift 데이터베이스에 로그인하여 [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html)를 이용해 데이터베이스 사용자를 생성하거나 [ALTER USER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html)를 이용해 기존 사용자를 변경합니다.

1. 선택적으로 그 사용자가 암호를 쓰지 못하도록 하려면 PASSWORD DISABLE 옵션을 지정합니다. 사용자 암호를 비활성화하면 그 사용자는 임시 보안 인증만 이용해 로그인할 수 있습니다. 사용자 암호를 비활성화하지 않으면 원래 암호 혹은 임시 보안 인증 중 하나를 이용해 로그인할 수 있습니다. 수퍼유저의 암호를 비활성화할 수는 없습니다.

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

   사용자에게 프로그래밍 방식의 액세스 권한을 부여하려면 다음 옵션 중 하나를 선택합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/generating-iam-credentials-steps.html)

   다음 예에서는 암호가 비활성화된 사용자를 만듭니다.

   ```
   create user temp_creds_user password disable; 
   ```

   다음 예에서는 기존 사용자의 암호를 비활성화합니다.

   ```
   alter user temp_creds_user password disable;
   ```

1. [CREATE GROUP](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_GROUP.html)으로 데이터베이스 사용자 그룹을 새로 만듭니다.

1. [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 명령으로 그룹의 액세스 권한을 정의합니다.

## 5단계: IAM 자격 증명을 사용하도록 JDBC 또는 ODBC 연결 구성
<a name="generating-iam-credentials-configure-jdbc-odbc"></a>

Amazon Redshift JDBC 또는 ODBC 드라이버를 사용하여 SQL 클라이언트를 구성할 수 있습니다. 이 드라이버는 데이터베이스 사용자 자격 증명을 생성하고 SQL 클라이언트와 Amazon Redshift 데이터베이스 간의 연결을 설정하는 프로세스를 관리합니다.

인증에 자격 증명 공급자를 쓰는 경우, 자격 증명 공급자 플러그인의 이름을 지정합니다. Amazon Redshift JDBC 및 ODBC 드라이버에는 다음 SAML 기반의 자격 증명 공급자를 위한 플러그인이 포함됩니다.
+ AD FS(Active Directory Federation Services)
+ PingOne
+ Okta
+ Microsoft Azure AD

  Microsoft Azure AD를 자격 증명 공급자로 설정하는 단계는 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 단원을 참조하십시오.<a name="to-configure-a-jdbc-connection"></a>

**IAM 자격 증명을 사용하도록 JDBC 연결 구성**

1. [Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성](jdbc20-install.md) 페이지에서 최신 Amazon Redshift JDBC 드라이버를 다운로드합니다.

1. 다음 형식 중 한 가지로 IAM 자격 증명 옵션이 있는 JDBC URL을 새로 만듭니다. IAM 인증을 사용하려면 다음 예시에 보이는 것처럼 `jdbc:redshift:` 다음에 `iam:`을 Amazon Redshift JDBC URL에 넣습니다.

   ```
   jdbc:redshift:iam://
   ```

   `cluster-name`, `region` 및 `account-id`를 추가합니다. JDBC 드라이버는 IAM 계정 정보와 클러스터 이름을 이용해 클러스터 ID와 AWS 리전을 검색합니다. 이렇게 하려면 사용자 또는 역할에 지정된 클러스터로 `redshift:DescribeClusters` 작업을 호출할 권한이 있어야 합니다. 사용자 또는 역할에 `redshift:DescribeClusters` 작업 호출 권한이 없다면, 다음 예에 보이는 것처럼 클러스터 ID, AWS 리전, 포트를 포함합니다. 포트 번호는 선택에 따릅니다.

   ```
   jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
   ```

1. JDBC 옵션을 추가하여 IAM 자격 증명을 제공하십시오. 다른 JDBC 옵션 조합을 이용해 IAM 자격 증명을 제공할 수 있습니다. 자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials)을 참조하세요.

   다음 URL은 사용자에 대한 AccessKeyID와 SecretAccessKey를 지정합니다.

   ```
   jdbc:redshift:iam://examplecluster:us-west-2/dev?AccessKeyID=AKIAIOSFODNN7EXAMPLE&SecretAccessKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   ```

    다음 예에서는 IAM 자격 증명을 포함한 이름 있는 프로필을 지정합니다.

   ```
   jdbc:redshift:iam://examplecluster:us-west-2/dev?Profile=user2
   ```

1. JDBC 드라이버가 `GetClusterCredentials` API 작업을 호출하는 데 사용하는 JDBC 옵션을 추가합니다. `GetClusterCredentials` API 작업을 프로그래밍 방식으로 호출하는 경우 이러한 옵션을 포함하지 마십시오.

   다음 예에는 JDBC `GetClusterCredentials` 옵션이 포함되어 있습니다.

   ```
   jdbc:redshift:iam://examplecluster:us-west-2/dev?plugin_name=com.amazon.redshift.plugin.AzureCredentialsProvider&UID=user&PWD=password&idp_tenant=my_tenant&client_secret=my_secret&client_id=my_id
   ```<a name="to-configure-an-odbc-connection"></a>

**IAM 자격 증명을 사용하도록 ODBC 연결 구성**

다음 절차에서는 IAM 인증 구성을 위한 단계만 안내합니다. 데이터베이스 사용자 이름과 암호를 이용한 표준 인증의 사용 단계는 [Amazon Redshift용 ODBC 드라이버 버전 2.x 연결 구성](odbc20-install.md) 단원을 참조하십시오.

1. 운영 체제에 맞는 최신 Amazon Redshift OBDC 드라이버를 설치하고 구성합니다. 자세한 내용은 [Amazon Redshift용 ODBC 드라이버 버전 2.x 연결 구성](odbc20-install.md) 페이지를 참조하십시오.
**중요**  
Amazon Redshift ODBC 드라이버는 버전 1.3.6.1000 이상이어야 합니다.

1. 운영 체제에 맞는 단계를 따라 연결 설정을 구성하십시오.

1. Microsoft Windows 운영 체제에서는 [Amazon Redshift ODBC 드라이버 DSN 설정(Amazon Redshift ODBC Driver DSN Setup)] 창에 액세스합니다.

   1. **연결 설정(Connection Settings)**에서 다음 정보를 입력하세요.
      + **Data Source Name(데이터 원본 이름** 
      + **서버**(선택 사항) 
      + **포트**(선택 사항) 
      + **데이터베이스**:  

      사용자 또는 역할에 `redshift:DescribeClusters` 작업을 호출할 수 있는 권한이 있는 경우 **Data Source Name**(데이터 소스 이름)과 **Database**(데이터베이스)만 필요합니다. Amazon Redshift는 [**ClusterId**]와 [**리전(Region)**]으로 `DescribeCluster` 작업을 호출하여 서버와 포트를 가져옵니다.

      사용자 또는 역할에 `redshift:DescribeClusters` 작업을 호출할 권한이 없다면 **서버** 및 **포트**를 지정하십시오.

   1. **인증** 아래에서 **Auth Type(인증 유형)** 값을 선택합니다.

      각 인증 유형에 대해 다음과 같이 값을 입력합니다.  
AWS 프로파일  
다음 정보를 입력합니다.  
      + **ClusterID** 
      + **리전(Region** 
      + **프로필 이름** 

        ODBC 연결 옵션에 대한 값을 포함한 AWS config 파일에 프로파일 이름을 입력합니다. 자세한 내용은 [구성 프로필 사용](options-for-providing-iam-credentials.md#using-configuration-profile) 섹션을 참조하세요.
(선택 사항) ODBC 드라이버가 `GetClusterCredentials` API 작업을 호출하는 데 사용하는 옵션에 대한 세부 정보를 입력합니다.  
      + **DbUser**
      + **User AutoCreate**
      + **DbGroups**

        자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) 섹션을 참조하세요.  
IAM 자격 증명  
다음 정보를 입력합니다.  
      + **ClusterID** 
      + **리전(Region** 
      + **AccessKeyID** 및 **SecretAccessKey** 

        IAM 데이터베이스 인증용으로 구성한 IAM 역할 또는 사용자에 대한 액세스 키 ID와 비밀 액세스 키.
      + **SessionToken** 

        **SessionToken**은 임시 자격 증명을 가진 IAM 역할에 필요합니다. 자세한 내용은 [임시 보안 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)을 참조하십시오.
ODBC 드라이버가 `GetClusterCredentials` API 작업을 호출하는 데 사용하는 옵션에 대한 세부 정보를 입력합니다.  
      + **DbUser**(필수) 
      + **User AutoCreate**(선택 사항) 
      + **DbGroups**(선택 사항) 

        자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) 섹션을 참조하세요.  
자격 증명 공급자: AD FS  
AD FS와의 Windows 통합 인증의 경우 **User(사용자)** 및 **Password(암호)**를 빈 칸으로 놔두십시오.  
IdP 세부 정보를 제공합니다.  
      + **IdP Host** 

        기업 자격 증명 제공업체 호스트의 이름입니다. 이 이름에 슬래시(/)가 포함되면 안 됩니다.
      + **IdP Port**(선택 사항)

        자격 증명 공급자가 사용하는 포트. 기본값은 443입니다.
      + **Preferred Role** 

        SAML 어설션에서 `AttributeValue` 속성에 대한 다중 값 `Role` 요소에서 IAM 역할의 Amazon 리소스 이름(ARN)입니다. 선호되는 역할에 적절한 값을 찾으려면 IdP 관리자에게 문의하십시오. 자세한 내용은 [2단계: IdP에 대한 SAML 어설션 구성](#configuring-saml-assertions) 섹션을 참조하세요.
(선택 사항) ODBC 드라이버가 `GetClusterCredentials` API 작업을 호출하는 데 사용하는 옵션에 대한 세부 정보를 입력합니다.  
      + **DbUser** 
      + **User AutoCreate** 
      + **DbGroups** 
자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) 섹션을 참조하세요.  
자격 증명 공급자: PingFederate  
**사용자(User)** 및 **암호(Password)**에 IdP 사용자 이름과 암호를 입력합니다.  
IdP 세부 정보를 제공합니다.  
      + **IdP Host** 

        기업 자격 증명 제공업체 호스트의 이름입니다. 이 이름에 슬래시(/)가 포함되면 안 됩니다.
      + **IdP Port**(선택 사항)

        자격 증명 공급자가 사용하는 포트. 기본값은 443입니다.
      + **Preferred Role** 

        SAML 어설션에서 `AttributeValue` 속성에 대한 다중 값 `Role` 요소에서 IAM 역할의 Amazon 리소스 이름(ARN)입니다. 선호되는 역할에 적절한 값을 찾으려면 IdP 관리자에게 문의하십시오. 자세한 내용은 [2단계: IdP에 대한 SAML 어설션 구성](#configuring-saml-assertions) 섹션을 참조하세요.
(선택 사항) ODBC 드라이버가 `GetClusterCredentials` API 작업을 호출하는 데 사용하는 옵션에 대한 세부 정보를 입력합니다.  
      + **DbUser** 
      + **User AutoCreate** 
      + **DbGroups** 
자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) 섹션을 참조하세요.  
자격 증명 공급자: Okta  
**User**(사용자) 및 **Password**(암호)에 IdP 사용자 이름과 암호를 입력합니다.  
IdP 세부 정보를 제공합니다.  
      + **IdP Host** 

        기업 자격 증명 제공업체 호스트의 이름입니다. 이 이름에 슬래시(/)가 포함되면 안 됩니다.
      + **IdP Port ** 

        이 값은 Okta에서 사용되지 않습니다.
      + **Preferred Role** 

        SAML 어설션에서 `AttributeValue` 속성에 대한 `Role` 요소에서 IAM 역할의 Amazon 리소스 이름(ARN)입니다. 선호되는 역할에 적절한 값을 찾으려면 IdP 관리자에게 문의하십시오. 자세한 내용은 [2단계: IdP에 대한 SAML 어설션 구성](#configuring-saml-assertions) 섹션을 참조하세요.
      + **Okta App ID** 

        Okta 애플리케이션을 위한 ID. Okta Application Embed Link에서 App ID의 값 뒤에 "amazon\$1aws"가 붙습니다. IdP 관리자에게 문의해 이 값을 얻으십시오.
(선택 사항) ODBC 드라이버가 `GetClusterCredentials` API 작업을 호출하는 데 사용하는 옵션에 대한 세부 정보를 입력합니다.  
      + **DbUser** 
      + **User AutoCreate** 
      + **DbGroups** 
자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) 섹션을 참조하세요.  
자격 증명 공급자: Azure AD  
**User**(사용자) 및 **Password**(암호)에 IdP 사용자 이름과 암호를 입력합니다.  
[**클러스터 ID(Cluster ID)**] 및 [**리전(Region)**]에 클러스터 ID와 Amazon Redshift 클러스터의 AWS 리전을 입력합니다.  
[**데이터베이스(Database)**]에 Amazon Redshift 클러스터에서 생성한 데이터베이스를 입력합니다.  
IdP 세부 정보를 제공합니다.  
      + **IdP 테넌트** 

        Azure AD에 사용되는 테넌트입니다.
      + **Azure 클라이언트 암호**

        Azure의 Amazon Redshift 엔터프라이즈 앱의 클라이언트 암호입니다.
      + **Azure 클라이언트 ID** 

        Azure의 Amazon Redshift 엔터프라이즈 앱의 클라이언트 ID(애플리케이션 ID)입니다.
(선택 사항) ODBC 드라이버가 `GetClusterCredentials` API 작업을 호출하는 데 사용하는 옵션에 대한 세부 정보를 입력합니다.  
      + **DbUser** 
      + **User AutoCreate** 
      + **DbGroups** 
자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) 섹션을 참조하세요.

# IAM 자격 증명 제공 옵션
<a name="options-for-providing-iam-credentials"></a>

JDBC 또는 ODBC 연결에 IAM 자격 증명을 제공하려면 다음 옵션 중 한 가지를 선택합니다.
+ **AWS 프로필** 

  JDBC 또는 ODBC 설정의 형태로 자격 증명 값을 제공하는 방식의 대안으로 이름 있는 프로필에 값을 입력할 수 있습니다. 자세한 내용은 [구성 프로필 사용](#using-configuration-profile) 섹션을 참조하세요.
+ **IAM 보안 인증**

  AccessKeyID, SecretAccessKey, 그리고 옵션으로 SessionToken에 대한 값을 JDBC 또는 ODBC 설정의 형태로 제공합니다. SessionToken은 임시 자격 증명을 가진 IAM 역할에만 필요합니다. 자세한 내용은 [IAM 자격 증명 제공을 위한 JDBC 및 ODBC 옵션](#jdbc-options-for-providing-iam-credentials) 섹션을 참조하세요.
+ **ID 제공업체 페더레이션** 

  자격 증명 공급자 페더레이션을 사용하여 자격 증명 공급자의 사용자가 Amazon Redshift에 인증할 수 있도록 하는 경우 자격 증명 공급자 플러그인의 이름을 지정합니다. 자세한 내용은 [자격 증명 제공업체 플러그인](#using-credentials-provider-plugin) 섹션을 참조하세요.

  Amazon Redshift JDBC 및 ODBC 드라이버에는 다음 SAML 기반의 자격 증명 페더레이션 자격 증명 공급자를 위한 플러그인이 포함됩니다.
  + Microsoft Active Identity Federation Services(AD FS)
  + PingOne
  + Okta
  + Microsoft Azure Active Directory (Azure AD)

  JDBC 또는 ODBC 설정의 형태로 혹은 프로필을 이용해 플러그인 이름과 관련 값을 입력할 수 있습니다. 자세한 내용은 [JDBC 드라이버 버전 2.x 구성 옵션](jdbc20-configuration-options.md) 섹션을 참조하세요.

자세한 내용은 [5단계: IAM 자격 증명을 사용하도록 JDBC 또는 ODBC 연결 구성](generating-iam-credentials-steps.md#generating-iam-credentials-configure-jdbc-odbc) 섹션을 참조하세요.

## 구성 프로필 사용
<a name="using-configuration-profile"></a>

IAM 자격 증명 옵션과 `GetClusterCredentials` 옵션은 AWS 구성 파일에서 이름 있는 프로파일의 설정대로 제공할 수 있습니다. 프로필 이름을 제공하려면 Profile JDBC 옵션을 사용합니다. 구성은 홈 디렉터리의 `.aws` 폴더의 `config` 또는 `credentials` 파일에 저장되어 있습니다.

Amazon Redshift JDBC 또는 ODBC 드라이버에 포함된 SAML 기반 자격 증명 공급자 플러그인의 경우 [자격 증명 제공업체 플러그인](#using-credentials-provider-plugin)의 바로 앞에서 설명한 설정을 사용할 수 있습니다. `plugin_name`을 사용하지 않으면 다른 옵션은 무시됩니다.

다음 예에서는 2개의 프로파일이 있는 \$1/.aws/credentials 파일을 보여줍니다.

```
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user2]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
session_token=AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
```

`user2` 예시에 대한 자격 증명을 사용하려면 JDBC URL에서 `Profile=user2`를 지정하십시오.

프로파일 사용에 대한 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [구성 및 자격 증명 파일 설정](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)을 참조하세요.

JDBC 드라이버에 대한 프로필 사용에 대한 자세한 내용은 [프로파일 지정](jdbc20-configure-authentication-ssl.md#jdbc20-aws-credentials-profiles)을 참조하세요.

ODBC 드라이버에 대한 프로필 사용에 대한 자세한 내용은 [인증 방법](odbc20-authentication-ssl.md)을 참조하세요.

## IAM 자격 증명 제공을 위한 JDBC 및 ODBC 옵션
<a name="jdbc-options-for-providing-iam-credentials"></a>

다음 표는 IAM 자격 증명 제공을 위한 JDBC 및 ODBC 옵션을 목록으로 보여줍니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/options-for-providing-iam-credentials.html)

## 데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션
<a name="jdbc-and-odbc-options-for-database-credentials"></a>

Amazon Redshift JDBC 또는 ODBC 드라이버로 데이터베이스 사용자 자격 증명을 생성하려면 데이터베이스 사용자 이름을 JDBC 또는 ODBC 옵션으로 제공합니다. 선택에 따라 데이터베이스 사용자가 없으면 드라이버가 새로 만들도록 할 수 있고, 사용자가 로그인 시 조인하는 데이터베이스 사용자 그룹 목록을 지정할 수 있습니다.

자격 증명 공급자(IdP)를 사용할 경우, IdP 관리자에게 문의하여 이들 옵션에 올바른 값을 정하십시오. IdP 관리자는 이러한 옵션 제공을 위해 사용자의 IdP를 구성할 수도 있으며, 이 경우 JDBC 또는 ODBC 옵션으로 제공하지 않아도 됩니다. 자세한 내용은 [2단계: IdP에 대한 SAML 어설션 구성](generating-iam-credentials-steps.md#configuring-saml-assertions) 섹션을 참조하세요.

**참고**  
`${redshift:DbUser}`에서 설명한 대로 IAM 정책 변수 [GetClusterCredentials에 대한 리소스 정책](redshift-iam-access-control-identity-based.md#redshift-policy-resources.getclustercredentials-resources)를 사용할 경우, `DbUser`의 값이, API 작업의 요청 컨텍스트에서 검색한 값으로 대체됩니다. Amazon Redshift 드라이버는 SAML 속성으로 제공된 값이 아니라 연결 URL에서 제공한 `DbUser` 변수의 값을 사용합니다.  
이 구성의 보안을 위해 IAM 정책의 조건을 사용하여 `DbUser`으로 `RoleSessionName` 값을 확인할 것을 권장합니다. IAM 정책을 사용하여 조건을 설정하는 방법의 예는 [예제 8: GetClusterCredentials 사용을 위한 IAM 정책 예제](redshift-iam-access-control-identity-based.md#redshift-policy-examples-getclustercredentials)에서 볼 수 있습니다.

다음 표는 데이터베이스 사용자의 자격 증명 생성 옵션을 목록으로 보여줍니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/options-for-providing-iam-credentials.html)

## 자격 증명 제공업체 플러그인
<a name="using-credentials-provider-plugin"></a>

Amazon Redshift는 Single Sign-On 인증을 위해 자격 증명 공급자 플러그인을 사용합니다.

Single Sign-On 인증을 지원하기 위해 Amazon Redshift는 Microsoft Azure Active Directory용 Azure AD 플러그인을 제공합니다. 이 플러그인을 구성하는 방법에 대한 자세한 내용은 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 단원을 참조하십시오.

### 다중 인증
<a name="setting_mfa"></a>

멀티 팩터 인증(MFA)을 지원하기 위해 Amazon Redshift는 브라우저 기반 플러그인을 제공합니다. Okta 및 PingOne용 브라우저 SAML 플러그인과 Microsoft Azure Active Directory용 브라우저 Azure AD 플러그인을 사용합니다.

브라우저 SAML 플러그인의 경우, OAuth 인증은 다음과 같이 흐릅니다.

![\[플러그인, 로컬 서버, 웹 브라우저 및 엔드포인트가 함께 작동하여 SAML 인증을 통해 사용자를 인증하는 방법에 대한 OAuth 워크플로입니다.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/BrowserSAML_plugin.png)


1. 사용자가 로그인을 시도합니다.

1. 플러그인은 로컬 서버를 시작하여 로컬 호스트에서 들어오는 연결을 수신합니다.

1. 플러그인은 웹 브라우저를 시작하여 지정된 Single Sign-On 로그인 URL 페더레이션 자격 증명 공급자 엔드포인트에서 HTTPS를 통해 SAML 응답을 요청합니다.

1. 웹 브라우저는 링크를 따라 사용자에게 자격 증명을 입력하라는 메시지를 표시합니다.

1. 사용자가 인증하고 동의하면 연동 자격 증명 공급자 엔드포인트가 HTTPS를 통해 `redirect_uri`에 표시된 URI에 SAML 응답을 반환합니다.

1. 웹 브라우저는 SAML 응답과 함께 응답 메시지를 표시된 `redirect_uri`로 이동합니다.

1. 로컬 서버는 수신 연결을 수락하고 플러그인은 SAML 응답을 검색하여 Amazon Redshift에 전달합니다.

브라우저 Azure AD 플러그인의 경우, SAML 인증은 다음과 같이 흐릅니다.

![\[플러그인, 로컬 서버, 웹 브라우저 및 엔드포인트가 함께 작동하여 SAML 인증을 통해 사용자를 인증하는 방법에 대한 Azure 워크플로입니다.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/BrowserAzure_plugin.png)


1. 사용자가 로그인을 시도합니다.

1. 플러그인은 로컬 서버를 시작하여 로컬 호스트에서 들어오는 연결을 수신합니다.

1. 플러그인은 웹 브라우저를 시작하여 Azure AD `oauth2/authorize` 엔드포인트로부터 권한 부여 코드를 요청합니다.

1. 웹 브라우저는 HTTPS를 통해 생성된 링크를 따라 사용자에게 자격 증명을 입력하라는 메시지를 표시합니다. 링크는 테넌트 및 client\$1id와 같은 구성 속성을 사용하여 생성됩니다.

1. 사용자가 인증하고 동의하면 Azure AD `oauth2/authorize` 엔드포인트가 HTTPS를 통해 표시된 `redirect_uri`에 권한 부여 코드와 함께 응답을 반환하고 보냅니다.

1. 웹 브라우저는 SAML 응답과 함께 응답 메시지를 표시된 `redirect_uri`로 이동합니다.

1. 로컬 서버는 수신 연결 및 플러그인 요청을 수락하고 권한 부여 코드를 검색하고 Azure AD `oauth2/token` 엔드포인트에 POST 요청을 보냅니다.

1. Azure AD `oauth2/token` 엔드포인트는 표시된 `redirect_uri`에 액세스 토큰이 있는 응답을 반환합니다.

1. 플러그인은 SAML 응답을 검색하여 Amazon Redshift에 전달합니다.

다음 단원을 참조하십시오.
+ AD FS(Active Directory Federation Services)

  자세한 내용은 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 섹션을 참조하세요.
+ PingOne(Ping) 

  Ping은 Forms 인증을 사용하여 사전에 지정한 PingOne IdP Adapter로만 지원됩니다.

  자세한 내용은 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 섹션을 참조하세요.
+ Okta 

  Okta는 AWS Management Console과 함께 사용되는 Okta 제공 애플리케이션에만 지원됩니다.

  자세한 내용은 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 섹션을 참조하세요.
+ Microsoft Azure Active Directory

  자세한 내용은 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 섹션을 참조하세요.

### 플러그인 옵션
<a name="configuring_plugin_options"></a>

SAML 기반의 자격 증명 공급자 플러그인을 사용하려면 JDBC 또는 ODBC 옵션을 사용하거나 명명된 프로파일에서 다음 옵션을 지정합니다. `plugin_name`을 지정하지 않으면 다른 옵션은 무시됩니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/options-for-providing-iam-credentials.html)

# Amazon Redshift CLI 또는 API를 이용한 IAM ID에 대한 데이터베이스 자격 증명 생성
<a name="generating-iam-credentials-cli-api"></a>

임시 데이터베이스 사용자 자격 증명을 프로그래밍 방식으로 생성하기 위해 Amazon Redshift는 [get-cluster-credentials](https://docs.aws.amazon.com/cli/latest/reference/redshift/get-cluster-credentials.html) 명령을 AWS Command Line Interface(AWS CLI) 및 [GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) API 작업에 제공합니다. 또는 `GetClusterCredentials` 작업을 호출하고, 데이터베이스 사용자 자격 증명을 검색하고, SQL 클라이언트와 Amazon Redshift 데이터베이스 사이를 연결하는 과정을 관리하는 Amazon Redshift JDBC 또는 ODBC 드라이버로 SQL 클라이언트를 구성할 수 있습니다. 자세한 내용은 [데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) 섹션을 참조하세요.

**참고**  
Amazon Redshift JDBC 또는 ODBC 드라이버를 사용해 데이터베이스 사용자 자격 증명을 만드는 방식을 권장합니다.

이 단원에서는 `GetClusterCredentials` 작업이나 get-cluster-credentials 명령을 프로그램 방식으로 호출하고, 데이터베이스 사용자 자격 증명을 검색하고, 데이터베이스에 연결하는 단계를 설명합니다.

**임시 데이터베이스 자격 증명의 생성 및 사용**

1. 필수 권한으로 역할 또는 사용자를 새로 만들거나 수정하십시오. IAM 권한에 대한 자세한 내용은 [3단계: GetClusterCredentialsWithIAM 또는 GetClusterCredentials 직접 호출 권한이 있는 IAM 역할 생성](generating-iam-credentials-steps.md#generating-iam-credentials-role-permissions) 단원을 참조하세요.

1. 사용자 또는 역할로서 귀하는 이전 단계에서 get-cluster-credentials CLI 명령을 실행하거나 `GetClusterCredentials` API 작업을 호출하고 다음 값을 제공할 권한이 있습니다.
   + [**클러스터 식별자(Cluster identifier)**] – 데이터베이스가 포함된 클러스터의 이름.
   + [**데이터베이스 사용자 이름(Database user name)**] – 기존 또는 신규 데이터베이스 사용자의 이름.
     + 데이터베이스에 사용자가 없고 AutoCreate가 True인 경우, PASSWORD 비활성 상태로 새 사용자를 만듭니다.
     +  사용자가 없고 AutoCreate가 False인 경우 이 요청이 실패합니다.
     + 이 예에서 데이터베이스 사용자 이름은 `temp_creds_user`입니다.
   +  [**Autocreate**] – (옵션) 데이터베이스 사용자 이름이 존재하지 않으면 새 사용자를 생성합니다.
   +  [**데이터베이스 이름(Database name)**] – (옵션) 사용자가 로그온할 권한이 있는 데이터베이스의 이름. 데이터베이스 이름이 지정되지 않은 경우 사용자는 모든 클러스터 데이터베이스에 로그온할 수 있습니다.
   +  [**데이터베이스 그룹(Database groups)**] – (옵션) 기존 데이터베이스 사용자 그룹의 목록. 성공적으로 로그인하면 지정된 사용자 그룹에 데이터베이스 사용자가 추가됩니다. 그룹을 지정하지 않으면 사용자는 PUBLIC 권한만 가집니다. 사용자 그룹 이름은 사용자 또는 역할에 연결된 IAM 정책에 지정된 dbgroup 리소스 ARN과 일치해야 합니다.
   +  [**만료 시간(Expiration time)**] – (옵션) 임시 자격 증명이 만료할 때까지 남은 시간(초). 900초(15분)\$13600초(60분) 사이로 지정할 수 있습니다. 기본값은 900초입니다.

1. Amazon Redshift는 사용자가 지정된 리소스로 `GetClusterCredentials` 작업을 호출할 권한이 있는지 검증합니다.

1. Amazon Redshift는 임시 암호와 데이터베이스 사용자 이름을 반환합니다.

   다음 예에서는 Amazon Redshift CLI를 사용하여 `temp_creds_user`라는 기존 사용자에 대한 임시 데이터베이스 자격 증명을 새로 만듭니다.

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600
   ```

   쿼리 결과는 다음과 같습니다.

   ```
   {
     "DbUser": "IAM:temp_creds_user", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

   다음 예에서는 Amazon Redshift CLI와 autocreate를 사용하여 신규 사용자에 대한 임시 데이터베이스 자격 증명을 생성하고 이 사용자를 그룹 `example_group`에 추가합니다.

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600
   ```

   쿼리 결과는 다음과 같습니다.

   ```
   {
     "DbUser": "IAMA:temp_creds_user:example_group", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

1. Amazon Redshift 클러스터로 Secure Socket Layer(SSL) 인증을 연결하고 사용자 이름과 암호로 `GetClusterCredentials` 응답에서 로그인 요청을 보냅니다. 사용자 이름에 `IAM:` 또는 `IAMA:`의 예처럼 `IAM:temp_creds_user` 또는 `IAMA:temp_creds_user` 접두사를 넣으십시오.
**중요**  
SQL 클라이언트를 구성하여 SSL을 요청합니다. 혹은 SQL 클라이언트가 자동으로 SSL과 연결 시도를 하면 어떤 식으로든 실패할 경우 SSL가 아닌 곳으로 대체할 수 있습니다. 이 경우 자격 증명이 만료되었거나 유효하지 않기 때문에 첫 번째 연결 시도가 실패할 수 있으며, 이후 SSL 연결이 아니기 때문에 두 번째 연결이 실패합니다. 이렇게 되면 첫 번째 오류 메시지가 누락될 수 있습니다. SSL을 이용한 클러스터 연결에 대한 자세한 내용은 [연결을 위한 보안 옵션 구성](connecting-ssl-support.md) 단원을 참조하십시오.

1. 연결이 SSL을 사용하지 않으면 연결 시도가 실패합니다.

1. 클러스터가 SQL 클라이언트로 `authentication` 요청을 보냅니다.

1. 그러면 SQL 클라이언트가 클러스터로 임시 암호를 보냅니다.

1. 암호가 유효하고 아직 만료되지 않았다면 클러스터가 연결을 완료합니다.

# JDBC 또는 ODBC Single Sign-On 인증 설정
<a name="setup-azure-ad-identity-provider"></a>

외부 ID 제공업체(idP)를 활용하여 사용자가 Amazon Redshift 클러스터에 액세스하도록 인증하고 권한을 부여하여 사용자 관리를 간소화하고 보안을 강화할 수 있습니다. 이를 통해 여러 서비스 전반에서 중앙 집중식 사용자 관리, 역할 기반 액세스 제어 및 감사 기능을 사용합니다. 일반적인 사용 사례에는 다양한 사용자 그룹에 대한 인증 간소화, 일관된 액세스 정책 적용, 규제 요구 사항 충족이 포함됩니다.

다음 페이지에서는 Redshift 클러스터와 idP 통합을 구성하는 방법을 안내합니다. IdP에 대한 서비스 공급자로 AWS 구성에 대한 자세한 내용은 *IAM User Guide*의 [Configuring Your SAML 2.0 IdP with Relying Party Trust and Adding Claims](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html#saml_relying-party)를 참조하세요.

# AD FS
<a name="setup-identity-provider-adfs"></a>

이 자습서에서는 AD FS를 ID 제공업체(idP)로 사용하여 Amazon Redshift 클러스터에 액세스하는 방법을 보여 줍니다.

## 1단계: AD FS와 AWS 계정을 서로 신뢰하도록 설정
<a name="setup-identity-provider-adfs-trust"></a>

 다음 절차에서는 신뢰 관계를 설정하는 방법을 설명합니다.

1. AD FS 사용자가 연결할 기존 Amazon Redshift 클러스터를 사용하거나 생성합니다. 연결을 구성하려면 이 클러스터의 특정 속성(예: 클러스터 식별자)이 필요합니다. 자세한 내용은 [클러스터 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html) 섹션을 참조하세요.

1. Microsoft Management Console에서 Amazon Redshift 액세스를 제어하도록 AD FS를 설정합니다.

   1. **ADFS 2.0**을 선택한 후 **Add Relying Party Trust(신뢰 당사자 신뢰 추가)**를 선택합니다. **Add Relying Party Trust Wizard(신뢰 당사자 신뢰 추가 마법사)** 페이지에서 **시작**을 선택합니다.

   1. **Select Data Source(데이터 원본 선택)** 페이지에서 **Import data about the relying party published online or on a local network(온라인 또는 로컬 네트워크에 게시된 신뢰 당사자에 대한 데이터 가져오기)**를 선택합니다.

   1. **Federation metadata address (host name or URL)(연동 메타데이터 주소(호스트 이름 또는 URL))**에 **https://signin.aws.amazon.com/saml-metadata.xml**을 입력합니다. 메타데이터 XML 파일은 AWS를 신뢰 당사자로 설명하는 표준 SAML 메타데이터 문서입니다.

   1. **표시 이름 지정** 페이지에서 **표시 이름**에 값을 입력합니다.

   1. **Choose Issuance Authorization Rules(발급 권한 부여 규칙 선택)** 페이지에서 발급 권한 부여 규칙을 선택하여 모든 사용자가 이 신뢰 당사자에 액세스할 수 있도록 허용하거나 거부합니다.

   1. **Ready to Add Trust(신뢰 추가 준비 완료)** 페이지에서 설정을 검토합니다.

   1. **Finish(완료)** 페이지에서 **Open the Edit Claim Rules dialog for this relying party trust when the wizard closes(마법사가 닫힐 때 이 신뢰 당사자 신뢰에 대한 클레임 규칙 편집 대화 상자 열기)**를 선택합니다.

   1. 컨텍스트(오른쪽 클릭) 메뉴에서 **Relying Party Trusts(신뢰 당사자 신뢰)**를 선택합니다.

   1. 신뢰 당사자의 경우 컨텍스트(오른쪽 클릭) 메뉴를 열고 **Edit Claim Rules(클레임 규칙 편집)**를 선택합니다. **클레임 규칙 편집(Edit Claim Rules)** 페이지에서 **규칙 추가(Add Rule)**를 선택합니다.

   1. **Claim rule template(클레임 규칙 템플릿)**에서 **Transform an Incoming Claim(수신 클레임 변환)**을 선택한 후 **Edit Rule – NameId(규칙 편집 – NameId)** 페이지에서 다음을 수행합니다.
      + **클레임 규칙 이름**에 **NameId**를 입력합니다.
      + **Incoming claim name(수신 클레임 이름)**으로 **Windows Account Name(Windows 계정 이름)**을 선택합니다.
      + **Outgoing claim name(발신 클레임 이름)**으로 **Name ID(이름 ID)**를 선택합니다.
      + **Outgoing name ID format(발신 이름 ID 형식)**으로 **Persistent Identifier(영구 식별자)**를 선택합니다.
      + **Pass through all claim values(모든 클레임 값 전달)**를 선택합니다.

   1. **Edit Claim Rules**(클레임 규칙 편집) 페이지에서 **Add Rule**(규칙 추가)를 선택합니다. **Select Rule Template(규칙 템플릿 선택)** 페이지에서 **Claim rule template(클레임 규칙 템플릿)**으로 **Send LDAP Attributes as Claims(LDAP 속성을 클레임으로 전송)**를 선택합니다.

   1. **규칙 구성** 페이지에서 다음 작업을 수행합니다.
      + **클레임 규칙 이름**에 **RoleSessionName**을 입력합니다.
      + **속성 저장**의 경우 **Active Directory**를 선택합니다.
      + **LDAP Attribute(LDAP 속성)**의 경우 **이메일 주소**를 선택합니다.
      + [**발신 클레임 유형(Outgoing Claim Type)**]으로 **https://aws.amazon.com/SAML/Attributes/RoleSessionName**을 선택합니다.

   1. **Edit Claim Rules**(클레임 규칙 편집) 페이지에서 **Add Rule**(규칙 추가)를 선택합니다. **규칙 템플릿 선택(Select Rule Template)** 페이지에서 **클레임 규칙 템플릿(Claim rule template)**으로 **사용자 지정 규칙을 사용하여 클레임 전송(Send Claims Using a Custom Rule)**을 선택합니다.

   1. **Edit Rule – Get AD Groups(규칙 편집 – AD 그룹 가져오기)** 페이지에서 **클레임 규칙 이름**에 **Get AD Groups(AD 그룹 가져오기)**를 입력합니다.

   1. **Custom rule(사용자 지정 규칙)**에 다음을 입력합니다.

      ```
      c:[Type ==
                                          "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
                                          Issuer == "AD AUTHORITY"] => add(store = "Active Directory",
                                          types = ("http://temp/variable"), query = ";tokenGroups;{0}",
                                          param = c.Value);
      ```

   1. **Edit Claim Rules**(클레임 규칙 편집) 페이지에서 **Add Rule**(규칙 추가)를 선택합니다. **Select Rule Template**(규칙 템플릿 선택) 페이지에서 **Claim rule template**(클레임 규칙 템플릿)으로 **Send Claims Using a Custom Rule**(사용자 지정 규칙을 사용하여 클레임 전송)을 선택합니다.

   1. **Edit Rule – Roles(규칙 편집 – 역할)** 페이지에서 **클레임 규칙 이름**에 **역할**을 입력합니다.

   1. **Custom rule(사용자 지정 규칙)**에 다음을 입력합니다.

      ```
      c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-"] => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-", "arn:aws:iam::123456789012:saml-provider/ADFS,arn:aws:iam::123456789012:role/ADFS-"));
      ```

      SAML 공급자 및 맡을 역할의 ARN을 적어 둡니다. 이 예에서 `arn:aws:iam:123456789012:saml-provider/ADFS`는 SAML 공급자의 ARN이고 `arn:aws:iam:123456789012:role/ADFS-`는 역할의 ARN입니다.

1. `federationmetadata.xml` 파일을 다운로드했는지 확인합니다. 문서 내용에 잘못된 문자가 없는지 확인합니다. 이는 AWS와의 신뢰 관계를 구성할 때 사용하는 메타데이터 파일입니다.

1. IAM 콘솔에서 IAM SAML 자격 증명 공급자를 만듭니다. 제공하는 메타데이터 문서는 Azure 엔터프라이즈 애플리케이션을 설정할 때 저장한 연동 메타데이터 XML 파일입니다. 자세한 단계는 *IAM User Guide*의 [Creating and Managing an IAM Identity Provider (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)를 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위한 IAM 역할을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating a Role for SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)을 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위해 생성한 IAM 역할에 연결할 수 있는 IAM 정책을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating IAM Policies (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)를 참조하세요. Azure AD 예제는 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 단원을 참조하십시오.

## 2단계: AD FS에 대한 인증을 위해 JDBC 또는 ODBC 설정
<a name="setup-identity-provider-adfs-auth"></a>

------
#### [ JDBC ]

 다음 절차에서는 AD FS에 대한 JDBC 관계를 설정하는 방법을 설명합니다.
+ AD FS Single Sign-On을 사용하여 JDBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  JDBC 드라이버를 사용하는 클라이언트를 사용하여 AD FS Single Sign-On으로 연결하거나 Java와 같은 언어를 사용하여 스크립트를 통해 연결할 수 있습니다. 설치 및 구성 정보는 [Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성](jdbc20-install.md) 단원을 참조하십시오.

  예를 들어 SQLWorkbench/J를 클라이언트로 사용할 수 있습니다. SQLWorkbench/j를 구성할 때 데이터베이스의 URL은 다음 형식을 사용합니다.

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  SQLWorkbench/J를 클라이언트로 사용하는 경우 다음 단계를 수행합니다.

  1. SQL Workbench/J를 시작합니다. [**연결 프로파일 선택(Select Connection Profile)**] 페이지에서 [**프로파일 그룹(Profile Group)**]을 추가합니다(예: **ADFS**).

  1. **Connection Profile(연결 프로파일)**에 연결 프로파일 이름을 입력합니다(예: **ADFS**).

  1. **Manage Drivers**(드라이버 관리)를 선택하고, **Amazon Redshift**를 선택합니다. [**라이브러리(Library)**] 옆에 있는 [**폴더 열기(Open Folder)**] 아이콘을 선택한 다음 적절한 JDBC .jar 파일을 선택합니다.

  1. **Select Connection Profile**(연결 프로파일 선택) 페이지에서 다음과 같이 연결 프로파일에 정보를 추가합니다.
     + **사용자**에 AD FS 사용자 이름을 입력합니다. 이는 Single Sign-On에 사용 중인 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다.
     + **암호**에 AD FS 암호를 입력합니다.
     + **드라이버(Drivers)**에서 **Amazon Redshift(com.amazon.redshift.jdbc.Driver)**를 선택합니다.
     + **URL**에 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***을 입력합니다.

  1. [**확장 속성(Extended Properties)**]을 선택합니다. **plugin\$1name**에 **com.amazon.redshift.plugin.AdfsCredentialsProvider**를 입력합니다. 이 값은 드라이버에 AD FS Single Sign-On을 인증 방법으로 사용하도록 지정합니다.

------
#### [ ODBC ]

**AD FS에 대한 인증을 위해 ODBC를 설정하려면**
+ AD FS Single Sign-On을 사용하여 ODBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  Amazon Redshift는 Linux, Windows 및 macOS 운영 체제용 ODBC 드라이버를 제공합니다. ODBC 드라이버를 설치하려면 먼저 SQL 클라이언트 도구가 32비트인지, 64비트인지 확인합니다. SQL 클라이언트 도구의 요구 사항에 맞는 ODBC 드라이버를 설치합니다.

  Windows의 경우 **Amazon Redshift ODBC 드라이버 DSN 설정(Amazon Redshift ODBC Driver DSN Setup)** 페이지의 **연결 설정(Connection Settings)** 아래에 다음 정보를 입력합니다.
  + **데이터 원본 이름(Data Source Name)**에 ***your-DSN***을 입력합니다. 이는 ODBC 프로파일 이름으로 사용되는 데이터 원본 이름을 지정합니다.
  + [**인증 유형(Auth type)**]에서 [**자격 증명 공급자: SAML(Identity Provider: SAML)**]을 선택합니다. 이는 ODBC 드라이버가 AD FS Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
  + **클러스터 ID(Cluster ID)**에 ***your-cluster-identifier***를 입력합니다.
  + **리전(Region)**에 ***your-cluster-region***을 입력합니다.
  + **데이터베이스(Database)**에 ***your-database-name***을 입력합니다.
  + **사용자(User)**에 ***your-adfs-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 AD FS 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **인증 유형(Auth type)**이 **자격 증명 공급자: SAML(Identity Provider: SAML)**인 경우에만 이를 사용합니다.
  + **Password**(암호)에 ***your-adfs-password***를 입력합니다. **Auth type**(인증 유형)이 **Identity Provider: SAML**(자격 증명 공급자: SAML)인 경우에만 이를 사용합니다.

  macOS 및 Linux에서는 다음과 같이 `odbc.ini` 파일을 편집합니다.
**참고**  
모든 항목은 대/소문자를 구분하지 않습니다.
  + **clusterid**에 ***your-cluster-identifier***를 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 이름입니다.
  + **리전(region)**에 ***your-cluster-region***을 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 AWS 리전입니다.
  + **데이터베이스(database)**에 ***your-database-name***을 입력합니다. 이는 Amazon Redshift 클러스터에서 액세스하려는 데이터베이스의 이름입니다.
  + **로캘(locale)**에 **en-us**를 입력합니다. 이는 오류 메시지가 표시되는 언어입니다.
  + **iam**에 **1**을 입력합니다. 이 값은 드라이버에 IAM 자격 증명을 사용하여 인증하도록 지정합니다.
  + **plugin\$1name**의 경우 다음 중 하나를 수행합니다.
    + MFA를 사용하는 Azure AD Single Sign-On 구성에 **BrowserSAML**을 입력합니다. 이는 ODBC 드라이버가 AD FS에 인증할 때 사용하는 인증 방법입니다.
    + Azure AD Single Sign-On 구성에 **ADFS**를 입력합니다. 이는 ODBC 드라이버가 Azure AD Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
  + **uid**에 ***your-adfs-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 Microsoft Azure 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **plugin\$1name**이 **ADFS**인 경우에만 이를 사용합니다.
  + **pwd**에 ***your-adfs-password***를 입력합니다. **plugin\$1name**이 **ADFS**인 경우에만 이를 사용합니다.

  macOS 및 Linux에서는 프로파일 설정을 편집하여 다음 내보내기도 추가합니다.

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------

# Azure
<a name="setup-identity-provider-azure"></a>

Microsoft Azure AD를 IdP(자격 증명 공급자)로 사용하여 Amazon Redshift 클러스터에 액세스할 수 있습니다. 이 자습서에서는 Azure를 ID 제공업체(idP)로 사용하여 Amazon Redshift 클러스터에 액세스하는 방법을 보여 줍니다.

Microsoft Azure AD Single Sign-On을 사용하여 Amazon Redshift 액세스를 페더레이션하는 방법을 알아봅니다.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/aXs9hEgJCss/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/aXs9hEgJCss)


## 1단계: Azure와 AWS 계정을 서로 신뢰하도록 설정
<a name="setup-identity-provider-azure-trust"></a>

다음 절차에서는 신뢰 관계를 설정하는 방법을 설명합니다.

**Azure AD와 AWS 계정을 서로 신뢰하도록 설정하려면**

1. Azure AD 사용자가 연결할 기존 Amazon Redshift 클러스터를 사용하거나 생성합니다. 연결을 구성하려면 이 클러스터의 특정 속성(예: 클러스터 식별자)이 필요합니다. 자세한 내용은 [클러스터 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html) 섹션을 참조하세요.

1. Microsoft Azure 포털에서 AWS에 사용되는 Azure Active Directory, 그룹, 사용자를 설정합니다.

1. Microsoft Azure 포털에서 Amazon Redshift를 AWS 콘솔에 대한 통합 인증 및 Amazon Redshift에 대한 페더레이션 로그인에 사용할 엔터프라이즈 애플리케이션으로 추가합니다. **Enterprise application(엔터프라이즈 애플리케이션)**을 선택합니다.

1. **\$1New application(새 애플리케이션 추가)**을 선택합니다. 애플리케이션 추가 페이지가 나타납니다.

1. 검색 필드에서 **AWS**를 검색합니다.

1. [**Amazon Web Services(AWS)**]와 [**추가(Add)**]를 차례로 선택합니다. 그러면 AWS 애플리케이션이 생성됩니다.

1. **관리**에서 **Single sign-on**을 선택합니다.

1. **SAML**을 선택합니다. Amazon Web Services(AWS) \$1 SAML -based Sign-on(SAML 기반 로그온) 페이지가 나타납니다.

1. **예**를 선택하여 Set up Single Sign-On with SAML(SAML을 사용하여 Single Sign-On 설정) 페이지로 이동합니다. 이 페이지에는 미리 구성된 Single Sign-On 관련 속성 목록이 나와 있습니다.

1. **Basic SAML Configuration(기본 SAML 구성)**에서 편집 아이콘을 선택하고 **저장**을 선택합니다.

1. 둘 이상의 애플리케이션에 대해 구성하는 경우 식별자 값을 제공합니다. 예를 들면 ***https://signin.aws.amazon.com/saml\$12***를 입력합니다. 두 번째 애플리케이션부터 이 형식을 \$1 기호와 함께 사용하여 고유한 SPN 값을 지정합니다.

1. **User Attributes and Claims(사용자 속성 및 클레임)** 섹션에서 편집 아이콘을 선택합니다.

   기본적으로 고유한 사용자 식별자(UID), 역할, RoleSessionName 및 SessionDuration 클레임은 미리 구성되어 있습니다.

1. **\$1 Add new claim(새 클레임 추가)**을 선택하여 데이터베이스 사용자에 대한 클레임을 추가합니다.

   **이름(Name)**에 **DbUser**을 입력합니다.

   **네임스페이스(Namespace)**에**https://redshift.amazon.com/SAML/Attributes**를 입력합니다.

   **소스(Source)**에서 **속성(Attribute)**를 선택합니다.

   **소스 속성**에서 **user.userprincipalname**을 선택합니다. 그런 다음 **저장(Save)**을 선택합니다.

1. **\$1 Add new claim(새 클레임 추가)**을 선택하여 AutoCreate에 대한 클레임을 추가합니다.

   **Name**(이름)에 **AutoCreate**을 입력합니다.

   **네임스페이스(Namespace)**에**https://redshift.amazon.com/SAML/Attributes**를 입력합니다.

   **Source**(소스)에서**Attribute**(속성)를 선택합니다.

   **소스 속성**에서 **"true"**를 선택합니다. 그런 다음 **Save**(저장)을 선택합니다.

   여기에서 `123456789012`는 AWS 계정, *`AzureSSO`*는 생성한 IAM 역할, *`AzureADProvider`*는 IAM 공급자입니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/setup-identity-provider-azure.html)

1. **앱 등록 > ***your-application-name*** > 인증**에서 **모바일 및 데스크톱 애플리케이션**을 추가합니다. URL을 http://localhost/redshift/로 지정합니다.

1. **SAML Signing Certificate(SAML 서명 인증서)** 섹션에서 **다운로드**를 선택하여 IAM SAML 자격 증명 공급자를 만들 때 사용할 연동 메타데이터 XML 파일을 다운로드하고 저장합니다. 이 파일은 Single Sign-On 페더레이션 자격 증명을 생성하는 데 사용됩니다.

1. IAM 콘솔에서 IAM SAML 자격 증명 공급자를 만듭니다. 제공하는 메타데이터 문서는 Azure 엔터프라이즈 애플리케이션을 설정할 때 저장한 연동 메타데이터 XML 파일입니다. 자세한 단계는 *IAM User Guide*의 [Creating and Managing an IAM Identity Provider (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)를 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위한 IAM 역할을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating a Role for SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)을 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위해 생성한 IAM 역할에 연결할 수 있는 IAM 정책을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating IAM Policies (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)를 참조하세요.

   환경에 맞게 다음 정책(JSON 형식)을 수정합니다.
   + `us-west-1`을 해당 클러스터의 AWS 리전으로 대체합니다.
   + *`123456789012`*를 AWS 계정으로 대체합니다.
   + *`cluster-identifier`*를 클러스터 식별자(또는 모든 클러스터의 경우 `*`)로 대체합니다.
   + *`dev`*를 데이터베이스(또는 모든 클러스터의 경우 `*`)로 대체합니다.
   + 을 해당 IAM 역할의 고유 식별자로 대체합니다..*`AROAJ2UCCR6DPCEXAMPLE`*
   + `example.com`은 해당 테넌트 또는 회사 이메일 도메인으로 대체합니다.
   + 은 사용자를 할당할 데이터베이스 그룹으로 대체합니다..*`my_dbgroup`*

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "redshift:GetClusterCredentials",
               "Resource": [
                   "arn:aws:redshift:us-west-1:123456789012:dbname:cluster-identifier/dev",
                   "arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}",
                   "arn:aws:redshift:us-west-1:123456789012:cluster:cluster-identifier"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:userid": "AROAJ2UCCR6DPCEXAMPLE:${redshift:DbUser}@example.com"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": "redshift:CreateClusterUser",
               "Resource": "arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}"
           },
           {
               "Effect": "Allow",
               "Action": "redshift:JoinGroup",
               "Resource": "arn:aws:redshift:us-west-1:123456789012:dbgroup:cluster-identifier/my_dbgroup"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "redshift:DescribeClusters",
                   "iam:ListRoles"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

   이 정책은 다음과 같이 권한을 부여합니다.
   + 첫 번째 섹션에서는 지정된 클러스터에 대한 임시 자격 증명을 얻기 위해 `GetClusterCredentials` API 작업에 권한을 부여합니다. 이 예에서 리소스는 `cluster-identifier`로, 데이터베이스 *`dev`*가 있으며, 계정 *`123456789012`*와 AWS 리전 *`us-west-1`*에 있습니다. `${redshift:DbUser}` 절은 Azure AD에 지정된 `DbUser` 값과 일치하는 사용자만 연결하도록 허용합니다.
   + 조건 절은 특정 사용자만 임시 자격 증명을 받도록 적용합니다. 이는 회사 이메일 도메인의 이메일 주소로 식별되는 IAM 계정에서 역할 고유 ID *`AROAJ2UCCR6DPCEXAMPLE`*로 지정된 역할을 가진 사용자입니다. 고유 ID에 대한 자세한 내용은 *IAM User Guide*의 [Unique IDs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)를 참조하세요.

     IdP(이 경우 Azure AD) 설정에 따라 조건 절의 작성 방법이 결정됩니다. 직원의 이메일이 `johndoe@example.com`인 경우, 먼저 `${redshift:DbUser}`를 해당 직원의 사용자 이름 `johndoe`와 일치하는 수퍼 필드로 설정합니다. 그런 다음 AWS SAML `RoleSessionName` 필드를 해당 직원의 이메일 `johndoe@example.com`과 일치하는 수퍼 필드로 설정하여 이 조건을 작동시킵니다. 이 접근 방식을 이용할 때는 다음 사항을 고려하십시오.
     + `${redshift:DbUser}`를 직원의 이메일이 되도록 설정한 경우, `@example.com`과 일치하도록 JSON 예에서 `RoleSessionName`을 제거합니다.
     + `RoleSessionId`를 직원의 사용자 이름이 되도록 설정한 경우, `@example.com`과 일치하도록 예에서 `RoleSessionName`을 제거합니다.
     + JSON 예제에서 `${redshift:DbUser}` 및 `RoleSessionName` 모두 직원의 이메일로 설정됩니다. 이 JSON 예에서는 Amazon Redshift 데이터베이스 사용자 이름과 `@example.com`을 사용해 사용자를 로그인하여 클러스터에 액세스합니다.
   + 두 번째 섹션에서는 지정된 클러스터에 `dbuser` 이름을 만들 수 있는 권한을 부여합니다. 이 JSON 예에서는 생성을 `${redshift:DbUser}`로 제한합니다.
   + 세 번째 섹션에서는 사용자가 참여할 수 있는 `dbgroup`을 지정할 권한을 부여합니다. 이 JSON 예에서는 사용자가 지정된 클러스터의 `my_dbgroup` 그룹에 참여할 수 있습니다.
   + 네 번째 섹션에서는 사용자가 모든 리소스에 대해 수행할 수 있는 작업에 대한 권한을 부여합니다. 이 JSON 예에서는 사용자가 `redshift:DescribeClusters`를 호출하여 클러스터 엔드포인트, AWS 리전 및 포트와 같은 클러스터 정보를 가져올 수 있도록 합니다. 또한 사용자가 `iam:ListRoles`를 호출하여 사용자가 맡을 수 있는 역할을 확인할 수 있도록 합니다.

## 2단계: Azure에 대한 인증을 위해 JDBC 또는 ODBC 설정
<a name="setup-identity-provider-azure-auth"></a>

------
#### [ JDBC ]

**Microsoft Azure AD에 대한 인증을 위해 JDBC를 설정하려면**
+ Azure AD Single Sign-On을 사용하여 JDBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  JDBC 드라이버를 사용하는 클라이언트를 사용하여 Azure AD Single Sign-On으로 연결하거나 Java와 같은 언어를 사용하여 스크립트를 통해 연결할 수 있습니다. 설치 및 구성 정보는 [Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성](jdbc20-install.md) 단원을 참조하십시오.

  예를 들어 SQLWorkbench/J를 클라이언트로 사용할 수 있습니다. SQLWorkbench/j를 구성할 때 데이터베이스의 URL은 다음 형식을 사용합니다.

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  SQLWorkbench/J를 클라이언트로 사용하는 경우 다음 단계를 수행합니다.

  1. SQL Workbench/J를 시작합니다. [**연결 프로파일 선택(Select Connection Profile)**] 페이지에서 **AzureAuth**라는 [**프로파일 그룹(Profile Group)**]을 추가합니다.

  1. **Connection Profile(연결 프로파일)**에 **Azure**를 입력합니다.

  1. **드라이버 관리(Manage Drivers)**를 선택하고, **Amazon Redshift**를 선택합니다. [**라이브러리(Library)**] 옆에 있는 [**폴더 열기(Open Folder)**] 아이콘을 선택한 다음 적절한 JDBC .jar 파일을 선택합니다.

  1. **연결 프로파일 선택(Select Connection Profile)** 페이지에서 다음과 같이 연결 프로파일에 정보를 추가합니다.
     + **사용자**에 Microsoft Azure 사용자 이름을 입력합니다. 이는 Single Sign-On에 사용 중인 Microsoft Azure 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다.
     + **암호**에 Microsoft Azure 암호를 입력합니다.
     + **드라이버(Drivers)**에서 **Amazon Redshift(com.amazon.redshift.jdbc.Driver)**를 선택합니다.
     + **URL**에 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***을 입력합니다.

  1. **Extended Properties(확장 속성)**를 선택하여 다음 설명과 같이 연결 속성에 추가 정보를 추가합니다.

     Azure AD Single Sign-On 구성의 경우 다음과 같이 추가 정보를 추가합니다.
     + **plugin\$1name**에 **com.amazon.redshift.plugin.AzureCredentialsProvider**를 입력합니다. 이 값은 드라이버에 Azure AD Single Sign-On을 인증 방법으로 사용하도록 지정합니다.
     + **idp\$1tenant**에 ***your-idp-tenant***를 입력합니다. Microsoft Azure AD에만 사용됩니다. 이는 Azure AD에 구성된 회사의 테넌트 이름입니다. 이 값은 테넌트 이름이거나 하이픈이 있는 테넌트 고유 ID일 수 있습니다.
     + **client\$1secret**에 ***your-azure-redshift-application-client-secret***를 입력합니다. Microsoft Azure AD에만 사용됩니다. 이는 Azure Single Sign-On 구성을 설정할 때 생성한 Amazon Redshift 애플리케이션의 클라이언트 암호입니다. 이는 com.amazon.redshift.plugin.AzureCredentialsProvider 플러그인에만 적용됩니다.
     + **client\$1id**에 ***your-azure-redshift-application-client-id***를 입력합니다. Microsoft Azure AD에만 사용됩니다. 이는 Azure Single Sign-On 구성을 설정할 때 생성한 Amazon Redshift 애플리케이션의 클라이언트 ID(하이픈 포함)입니다.

     MFA를 사용하는 Azure AD Single Sign-On 구성의 경우 다음과 같이 연결 속성에 추가 정보를 추가합니다.
     + **plugin\$1name**에 **com.amazon.redshift.plugin.BrowserAzureCredentialsProvider**를 입력합니다. 이는 드라이버에 MFA를 사용하는 Azure AD Single Sign-On을 인증 방법으로 사용하도록 지정합니다.
     + **idp\$1tenant**에 ***your-idp-tenant***를 입력합니다. Microsoft Azure AD에만 사용됩니다. 이는 Azure AD에 구성된 회사의 테넌트 이름입니다. 이 값은 테넌트 이름이거나 하이픈이 있는 테넌트 고유 ID일 수 있습니다.
     + **client\$1id**에 ***your-azure-redshift-application-client-id***를 입력합니다. 이 옵션은 Microsoft Azure AD에만 사용됩니다. 이는 MFA를 사용하는 Azure AD Single Sign-On 구성을 설정할 때 생성한 Amazon Redshift 애플리케이션의 클라이언트 ID(하이픈 포함)입니다.
     + **listen\$1port**에 ***your-listen-port***를 입력합니다. 로컬 서버가 수신 대기하는 포트입니다. 기본값은 7890입니다.
     + **idp\$1response\$1timeout**에 ***the-number-of-seconds***를 입력합니다. 이는 IdP 서버가 응답을 다시 보낼 때 제한 시간이 지나기 전까지 대기하는 시간(초)입니다. 최소 시간(초)은 10이어야 합니다. 연결 구성이 이 제한 시간보다 어래 걸리면 연결이 중단됩니다.

------
#### [ ODBC ]

**Microsoft Azure AD에 대한 인증을 위해 ODBC를 설정하려면**
+ Azure AD Single Sign-On을 사용하여 ODBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  Amazon Redshift는 Linux, Windows 및 macOS 운영 체제용 ODBC 드라이버를 제공합니다. ODBC 드라이버를 설치하려면 먼저 SQL 클라이언트 도구가 32비트인지, 64비트인지 확인합니다. SQL 클라이언트 도구의 요구 사항에 맞는 ODBC 드라이버를 설치합니다.

  Windows의 경우 **Amazon Redshift ODBC 드라이버 DSN 설정(Amazon Redshift ODBC Driver DSN Setup)** 페이지의 **연결 설정(Connection Settings)** 아래에 다음 정보를 입력합니다.
  + **데이터 원본 이름(Data Source Name)**에 ***your-DSN***을 입력합니다. 이는 ODBC 프로파일 이름으로 사용되는 데이터 원본 이름을 지정합니다.
  + Azure AD Single Sign-On 구성을 위한 **Auth type**(인증 유형)에서 **Identity Provider: Azure AD**를 선택합니다. 이는 ODBC 드라이버가 Azure Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
  + MFA를 사용하는 Azure AD Single Sign-On 구성을 위한 **Auth type**(인증 유형)에서 **Identity Provider: Browser Azure AD**를 선택합니다. 이는 ODBC 드라이버가 MFA를 사용하는 Azure Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
  + **클러스터 ID(Cluster ID)**에 ***your-cluster-identifier***를 입력합니다.
  + **리전(Region)**에 ***your-cluster-region***을 입력합니다.
  + **데이터베이스(Database)**에 ***your-database-name***을 입력합니다.
  + **사용자(User)**에 ***your-azure-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 Microsoft Azure 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **인증 유형(Auth Type)**이 **자격 증명 공급자: Azure AD(Identity Provider: Azure AD)**인 경우에만 이를 사용합니다.
  + **암호(Password)**에 ***your-azure-password***를 입력합니다. **Auth Type**(인증 유형)이 **Identity Provider: Azure AD**(자격 증명 공급자: Azure AD)인 경우에만 이를 사용합니다.
  + **IdP 테넌트**에 ***your-idp-tenant***를 입력합니다. 이는 IdP(Azure)에 구성된 회사의 테넌트 이름입니다. 이 값은 테넌트 이름이거나 하이픈이 있는 테넌트 고유 ID일 수 있습니다.
  + **Azure 클라이언트 암호**에 ***your-azure-redshift-application-client-secret***를 입력합니다. 이는 Azure Single Sign-On 구성을 설정할 때 생성한 Amazon Redshift 애플리케이션의 클라이언트 암호입니다.
  + **Azure 클라이언트 ID**에 ***your-azure-redshift-application-client-id***를 입력합니다. 이는 Azure Single Sign-On 구성을 설정할 때 생성한 Amazon Redshift 애플리케이션의 클라이언트 ID(하이픈 포함)입니다.
  + **수신 대기 포트(Listen Port)**에 ***your-listen-port***를 입력합니다. 로컬 서버가 수신하는 기본 수신 대기 포트입니다. 기본값은 7890입니다. 이는 브라우저 Azure AD 플러그인에만 적용됩니다.
  + **응답 제한 시간(Response Timeout)**에 ***the-number-of-seconds***를 입력합니다. 이는 IdP 서버가 응답을 다시 보낼 때 제한 시간이 지나기 전까지 대기하는 시간(초)입니다. 최소 시간(초)은 10이어야 합니다. 연결 구성이 이 제한 시간보다 어래 걸리면 연결이 중단됩니다. 이 옵션은 브라우저 Azure AD 플러그인에만 적용됩니다.

  macOS 및 Linux에서는 다음과 같이 `odbc.ini` 파일을 편집합니다.
**참고**  
모든 항목은 대/소문자를 구분하지 않습니다.
  + **clusterid**에 ***your-cluster-identifier***를 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 이름입니다.
  + **리전(region)**에 ***your-cluster-region***을 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 AWS 리전입니다.
  + **데이터베이스(database)**에 ***your-database-name***을 입력합니다. 이는 Amazon Redshift 클러스터에서 액세스하려는 데이터베이스의 이름입니다.
  + **로캘(locale)**에 **en-us**를 입력합니다. 이는 오류 메시지가 표시되는 언어입니다.
  + **iam**에 **1**을 입력합니다. 이 값은 드라이버에 IAM 자격 증명을 사용하여 인증하도록 지정합니다.
  + Azure AD Single Sign-On 구성을 위한 **plugin\$1name**에 **AzureAD**를 입력합니다. 이는 드라이버에 Azure Single Sign-On을 인증 방법으로 사용하도록 지정합니다.
  + MFA를 사용하는 Azure AD Single Sign-On 구성을 위한 **plugin\$1name**에 **BrowserAzureAD**를 입력합니다. 이는 드라이버에 MFA를 사용하는 Azure Single Sign-On을 인증 방법으로 사용하도록 지정합니다.
  + **uid**에 ***your-azure-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 Microsoft Azure 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **plugin\$1name**이 **AzureAD**인 경우에만 이를 사용합니다.
  + **pwd**에 ***your-azure-password***를 입력합니다. **plugin\$1name**이 **AzureAD**인 경우에만 이를 사용합니다.
  + **idp\$1tenant**에 ***your-idp-tenant***를 입력합니다. 이는 IdP(Azure)에 구성된 회사의 테넌트 이름입니다. 이 값은 테넌트 이름이거나 하이픈이 있는 테넌트 고유 ID일 수 있습니다.
  + **client\$1secret**에 ***your-azure-redshift-application-client-secret***를 입력합니다. 이는 Azure Single Sign-On 구성을 설정할 때 생성한 Amazon Redshift 애플리케이션의 클라이언트 암호입니다.
  + **client\$1id**에 ***your-azure-redshift-application-client-id***를 입력합니다. 이는 Azure Single Sign-On 구성을 설정할 때 생성한 Amazon Redshift 애플리케이션의 클라이언트 ID(하이픈 포함)입니다.
  + **listen\$1port**에 ***your-listen-port***를 입력합니다. 로컬 서버가 수신 대기하는 포트입니다. 기본값은 7890입니다. 이는 브라우저 Azure AD 플러그인에 적용됩니다.
  + **idp\$1response\$1timeout**에 ***the-number-of-seconds***를 입력합니다. 이는 Azure로부터 응답을 기다리는 지정된 시간(초)입니다. 이 옵션은 브라우저 Azure AD 플러그인에 적용됩니다.

  macOS 및 Linux에서는 프로파일 설정을 편집하여 다음 내보내기도 추가합니다.

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------

## 문제 해결
<a name="setup-identity-provider-azure-auth"></a>

브라우저 Azure AD 플러그인 문제를 해결하려면 다음을 고려합니다.
+ 브라우저 Azure AD 플러그인을 사용하려면 요청에 지정된 회신 URL을 애플리케이션에 대해 구성된 회신 URL과 일치하도록 설정해야 합니다. Microsoft Azure 포털에서 **SAML을 사용하여 SSO(Single Sign-On) 설정** 페이지로 이동합니다. 그런 다음 **회신 URL**이 http://localhost/redshift/로 설정되어 있는지 확인합니다.
+ IdP 테넌트 오류가 발생하면 **IdP 테넌트** 이름이 Microsoft Azure에서 Active Directory를 설정하는 데 처음 사용한 도메인 이름과 일치하는지 확인합니다.

  Windows에서 [**Amazon Redshift ODBC DSN 설정(Amazon Redshift ODBC DSN Setup)**] 페이지의 [**연결 설정(Connection Settings)**] 섹션으로 이동합니다. 그런 다음 IdP(Azure)에 구성된 회사의 테넌트 이름이 Microsoft Azure에서 Active Directory를 설정하는 데 처음 사용한 도메인 이름과 일치하는지 확인합니다.

  macOS 및 Linux에서 *odbc.ini* 파일을 찾습니다. 그런 다음 IdP(Azure)에 구성된 회사의 테넌트 이름이 Microsoft Azure에서 Active Directory를 설정하는 데 처음 사용한 도메인 이름과 일치하는지 확인합니다.
+ 요청에 지정된 회신 URL이 애플리케이션에 대해 구성된 회신 URL과 일치하지 않는 오류가 발생하는 경우 **리디렉션 URI**가 회신 URL과 동일한지 확인합니다.

  Microsoft Azure 포털에서 애플리케이션의 **앱 등록** 페이지로 이동합니다. 그런 다음 리디렉션 URI가 응답 URL과 일치하는지 확인합니다.
+ 예기치 않은 응답: 무단 오류가 발생하는 경우 **모바일 및 데스크톱 애플리케이션** 구성을 완료했는지 확인합니다.

  Microsoft Azure 포털에서 애플리케이션의 **앱 등록** 페이지로 이동합니다. 그런 다음 **인증**으로 이동하여 http://localhost/redshift/를 리디렉션 URI로 사용하도록 **모바일 및 데스크톱 애플리케이션**을 구성했는지 확인합니다.

# Ping Identity
<a name="setup-identity-provider-ping"></a>

Ping Identity를 IdP(자격 증명 공급자)로 사용하여 Amazon Redshift 클러스터에 액세스할 수 있습니다. 이 자습서에서는 Ping Identity를 ID 제공업체(idP)로 사용하여 Amazon Redshift 클러스터에 액세스하는 방법을 보여 줍니다.

## 1단계: Ping Identity와 AWS 계정을 서로 신뢰하도록 설정
<a name="setup-identity-provider-ping-trust"></a>

다음 절차에서는 PingOne 포털을 사용하여 신뢰 관계를 설정하는 방법을 설명합니다.

**Ping Identity와 AWS 계정을 서로 신뢰하도록 설정하려면**

1. Ping Identity 사용자가 연결할 기존 Amazon Redshift 클러스터를 사용하거나 생성합니다. 연결을 구성하려면 이 클러스터의 특정 속성(예: 클러스터 식별자)이 필요합니다. 자세한 내용은 [클러스터 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html) 섹션을 참조하세요.

1. Amazon Redshift를 PingOne 포털의 새 SAML 애플리케이션으로 추가합니다. 자세한 단계는 [Ping Identity 설명서](https://docs.pingidentity.com/)를 참조하십시오.

   1. **내 애플리케이션**으로 이동합니다.

   1. **애플리케이션 추가**에서 **New SAML Application(새 SAML 애플리케이션)**을 선택합니다.

   1. **애플리케이션 이름**에 **Amazon Redshift**를 입력합니다.

   1. **Protocol Version(프로토콜 버전)**에서 **SAML v2.0**을 선택합니다.

   1. **Category(범주)**에서 ***your-application-category***를 선택합니다.

   1. **Assertion Consumer Service (ACS)**에 ***your-redshift-local-host-url***을 입력합니다. 이는 SAML 어설션이 리디렉션하는 로컬 호스트 및 포트입니다.

   1. **Entity ID(개체 ID)**에 `urn:amazon:webservices`를 입력합니다.

   1. **서명(Signing)**에서 **어설션 서명(Sign Assertion)**을 선택합니다.

   1. **SSO Attribute Mapping(SSO 속성 매핑)** 섹션에서 다음 표와 같이 클레임을 만듭니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/setup-identity-provider-ping.html)

1. **Group Access(그룹 액세스)**에서 필요한 경우 다음 그룹 액세스를 설정합니다.
   + **https://aws.amazon.com/SAML/Attributes/Role**
   + **https://aws.amazon.com/SAML/Attributes/RoleSessionName**
   + **https://redshift.amazon.com/SAML/Attributes/AutoCreate**
   + **https://redshift.amazon.com/SAML/Attributes/DbUser**

1. 필요한 경우 설정을 검토하고 변경합니다.

1. **Initiate Single Sign-On (SSO) URL(시작 Single Sign-On(SSO) URL)**을 브라우저 SAML 플러그인의 로그인 URL로 사용합니다.

1. IAM 콘솔에서 IAM SAML 자격 증명 공급자를 만듭니다. 제공하는 메타데이터 문서는 Ping Identity를 설정할 때 저장한 연동 메타데이터 XML 파일입니다. 자세한 단계는 *IAM User Guide*의 [Creating and Managing an IAM Identity Provider (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)를 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위한 IAM 역할을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating a Role for SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)을 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위해 생성한 IAM 역할에 연결할 수 있는 IAM 정책을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating IAM Policies (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)를 참조하세요. Azure AD 예제는 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 단원을 참조하십시오.

## 2단계: Ping Identity에 대한 인증을 위해 JDBC 또는 ODBC 설정
<a name="setup-identity-provider-ping-auth"></a>

------
#### [ JDBC ]

**Ping Identity에 대한 인증을 위해 JDBC를 설정하려면**
+ Ping Identity Single Sign-On을 사용하여 JDBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  JDBC 드라이버를 사용하는 클라이언트를 사용하여 Ping Identity Single Sign-On으로 연결하거나 Java와 같은 언어를 사용하여 스크립트를 통해 연결할 수 있습니다. 설치 및 구성 정보는 [Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성](jdbc20-install.md) 단원을 참조하십시오.

  예를 들어 SQLWorkbench/J를 클라이언트로 사용할 수 있습니다. SQLWorkbench/j를 구성할 때 데이터베이스의 URL은 다음 형식을 사용합니다.

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  SQLWorkbench/J를 클라이언트로 사용하는 경우 다음 단계를 수행합니다.

  1. SQL Workbench/J를 시작합니다. [**연결 프로파일 선택(Select Connection Profile)**] 페이지에서 [**프로파일 그룹(Profile Group)**]을 추가합니다(예: **Ping**).

  1. **연결 프로파일(Connection Profile)**에 ***your-connection-profile-name***을 입력합니다(예: **Ping**).

  1. **Manage Drivers**(드라이버 관리)를 선택하고, **Amazon Redshift**를 선택합니다. [**라이브러리(Library)**] 옆에 있는 [**폴더 열기(Open Folder)**] 아이콘을 선택한 다음 적절한 JDBC .jar 파일을 선택합니다.

  1. **Select Connection Profile**(연결 프로파일 선택) 페이지에서 다음과 같이 연결 프로파일에 정보를 추가합니다.
     + **User(사용자)**에 PingOne 사용자 이름을 입력합니다. 이는 Single Sign-On에 사용 중인 PingOne 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다.
     + **Password(암호)**에 PingOne 암호를 입력합니다.
     + **드라이버(Drivers)**에서 **Amazon Redshift(com.amazon.redshift.jdbc.Driver)**를 선택합니다.
     + **URL**에 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***을 입력합니다.

  1. **확장 속성(Extended Properties)**를 선택하고 다음 중 하나를 수행합니다.
     + **login\$1url**에 ***your-ping-sso-login-url***을 입력합니다. 이 값은 URL에 Single Sign-On을 로그인하기 위한 인증으로 사용하도록 지정합니다.
     + Ping Identity의 경우 **plugin\$1name**에 **com.amazon.redshift.plugin.PingCredentialsProvider**를 입력합니다. 이 값은 드라이버에 Ping Identity Single Sign-On을 인증 방법으로 사용하도록 지정합니다.
     + Single Sign-On을 사용한 Ping Identity의 경우 **plugin\$1name**에 **com.amazon.redshift.plugin.BrowserSamlCredentialsProvider**를 입력합니다. 이 값은 드라이버에 Ping Identity PingOne과 함께 Single Sign-On을 인증 방법으로 사용하도록 지정합니다.

------
#### [ ODBC ]

**Ping Identity에 대한 인증을 위해 ODBC를 설정하려면**
+ Ping Identity PingOne Single Sign-On을 사용하여 ODBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  Amazon Redshift는 Linux, Windows 및 macOS 운영 체제용 ODBC 드라이버를 제공합니다. ODBC 드라이버를 설치하려면 먼저 SQL 클라이언트 도구가 32비트인지, 64비트인지 확인합니다. SQL 클라이언트 도구의 요구 사항에 맞는 ODBC 드라이버를 설치합니다.

  Windows의 경우 **Amazon Redshift ODBC 드라이버 DSN 설정(Amazon Redshift ODBC Driver DSN Setup)** 페이지의 **연결 설정(Connection Settings)** 아래에 다음 정보를 입력합니다.
  + **데이터 원본 이름(Data Source Name)**에 ***your-DSN***을 입력합니다. 이는 ODBC 프로파일 이름으로 사용되는 데이터 원본 이름을 지정합니다.
  + **인증 유형(Auth type)**에서 다음 중 하나를 수행합니다.
    + Ping Identity 구성의 경우 **자격 증명 공급자: Ping Federate**를 선택합니다. 이는 ODBC 드라이버가 Ping Identity Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
    + Single Sign-On 구성을 사용하는 Ping Identity의 경우 **자격 증명 공급자: 브라우저 SAML**을 선택합니다. 이는 ODBC 드라이버가 Single Sign-On이 포함된 Ping Identity를 사용하여 인증할 때의 인증 방법입니다.
  + **클러스터 ID(Cluster ID)**에 ***your-cluster-identifier***를 입력합니다.
  + **리전(Region)**에 ***your-cluster-region***을 입력합니다.
  + **데이터베이스(Database)**에 ***your-database-name***을 입력합니다.
  + **사용자(User)**에 ***your-ping-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 PingOne 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **인증 유형(Auth type)**이 **자격 증명 공급자: PingFederate(Identity Provider: PingFederate)**인 경우에만 이를 사용합니다.
  + **암호(Password)**에 ***your-ping-password***를 입력합니다. **인증 유형(Auth type)**이 **자격 증명 공급자: PingFederate(Identity Provider: PingFederate)**인 경우에만 이를 사용합니다.
  + **수신 대기 포트(Listen Port)**에 ***your-listen-port***를 입력합니다. 로컬 서버가 수신 대기하는 포트입니다. 기본값은 7890입니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.
  +  **응답 제한 시간(Response Timeout)**에 ***the-number-of-seconds***를 입력합니다. 이는 IdP 서버가 응답을 다시 보낼 때 제한 시간이 지나기 전까지 대기하는 시간(초)입니다. 최소 시간(초)은 10이어야 합니다. 연결 구성이 이 제한 시간보다 어래 걸리면 연결이 중단됩니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.
  + **로그인 URL**에 ***your-login-url***을 입력합니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.

  macOS 및 Linux에서는 다음과 같이 `odbc.ini` 파일을 편집합니다.
**참고**  
모든 항목은 대/소문자를 구분하지 않습니다.
  + **clusterid**에 ***your-cluster-identifier***를 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 이름입니다.
  + **리전(region)**에 ***your-cluster-region***을 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 AWS 리전입니다.
  + **데이터베이스(database)**에 ***your-database-name***을 입력합니다. 이는 Amazon Redshift 클러스터에서 액세스하려는 데이터베이스의 이름입니다.
  + **로캘(locale)**에 **en-us**를 입력합니다. 이는 오류 메시지가 표시되는 언어입니다.
  + **iam**에 **1**을 입력합니다. 이 값은 드라이버에 IAM 자격 증명을 사용하여 인증하도록 지정합니다.
  + **plugin\$1name**의 경우 다음 중 하나를 수행합니다.
    + Ping Identity 구성의 경우 **BrowserSAML**을 입력합니다. 이는 ODBC 드라이버가 Ping Identity에 인증할 때 사용하는 인증 방법입니다.
    + Single Sign-On을 사용하는 Ping Identity 구성에 **Ping**을 입력합니다. 이는 ODBC 드라이버가 Single Sign-On이 포함된 Ping Identity를 사용하여 인증할 때의 인증 방법입니다.
  + **uid**에 ***your-ping-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 Microsoft Azure 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **plugin\$1name**이 **Ping**인 경우에만 이를 사용합니다.
  + **pwd**에 ***your-ping-password***를 입력합니다. **plugin\$1name**이 **Ping**인 경우에만 이를 사용합니다.
  + **login\$1url**에 ***your-login-url***을 입력합니다. 이는 SAML 응답을 반환하는 시작 Single Sign-On URL입니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.
  + **idp\$1response\$1timeout**에 ***the-number-of-seconds***를 입력합니다. 이는 PingOne Identity로부터 응답을 기다리는 지정된 시간(초)입니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.
  + **listen\$1port**에 ***your-listen-port***를 입력합니다. 로컬 서버가 수신 대기하는 포트입니다. 기본값은 7890입니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.

  macOS 및 Linux에서는 프로파일 설정을 편집하여 다음 내보내기도 추가합니다.

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------

# Okta
<a name="setup-identity-provider-okta"></a>

Okta를 IdP(자격 증명 공급자)로 사용하여 Amazon Redshift 클러스터에 액세스할 수 있습니다. 이 자습서에서는 Okta를 ID 제공업체(idP)로 사용하여 Amazon Redshift 클러스터에 액세스하는 방법을 보여 줍니다.

## 1단계: Okta와 AWS 계정을 서로 신뢰하도록 설정
<a name="setup-identity-provider-okta-trust"></a>

다음 절차에서는 신뢰 관계를 설정하는 방법을 설명합니다.

**Okta와 AWS 계정을 서로 신뢰하도록 설정하려면**

1. Okta 사용자가 연결할 기존 Amazon Redshift 클러스터를 사용하거나 생성합니다. 연결을 구성하려면 이 클러스터의 특정 속성(예: 클러스터 식별자)이 필요합니다. 자세한 내용은 [클러스터 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html) 섹션을 참조하세요.

1. Amazon Redshift를 Okta 포털의 새 애플리케이션으로 추가합니다. 자세한 단계는 [Okta documentation](https://developer.okta.com/docs/)을 참조하십시오.
   + **애플리케이션 추가**를 선택합니다.
   + **애플리케이션 추가**에서 **Create New App(새 앱 생성)**을 선택합니다.
   + **Create a New Add Application Integration(새 애플리케이션 통합 추가 생성)** 페이지의 **플랫폼**에서 **웹**을 선택합니다.
   + **Sign on method(로그인 방법)**에서 **SAML v2.0**을 선택합니다.
   + **일반 설정** 페이지에서 **앱 이름**에 ***your-redshift-saml-sso-name***을 입력합니다. 이는 애플리케이션 이름입니다.
   + **SAML 설정** 페이지에서 **SSO(Single Sign-On) URL**에 ***your-redshift-local-host-url***을 입력합니다. 이는 SAML 어설션이 리디렉션하는 로컬 호스트 및 포트입니다(예: `http://localhost:7890/redshift/`).

1. [**통합 인증 URL(Single sign on URL)**] 값을 [**수신자 URL(Recipient URL)**] 및 [**대상 URL(Destination URL)**]로 사용합니다.

1. **Signing**(서명)에서 **Sign Assertion**(어설션 서명)을 선택합니다.

1. [**대상 URI(SP 엔터티 ID)(Audience URI (SP Entity ID))**]에 다음 표와 같이 클레임의 **urn:amazon:webservices**를 입력합니다. 

1. **고급 설정** 섹션에서 **SAML 발급자 ID**에 ***your-Identity-Provider-Issuer-ID***를 입력합니다. 이는 **설정 지침 보기** 섹션에서 찾을 수 있습니다.

1. **Attribute Statements(속성 설명)** 섹션에서 다음 표와 같이 클레임을 만듭니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/setup-identity-provider-okta.html)

1. **App Embed Link(앱 포함 링크)** 섹션에서 브라우저 SAML 플러그인의 로그인 URL로 사용할 수 있는 URL을 찾습니다.

1. IAM 콘솔에서 IAM SAML 자격 증명 공급자를 만듭니다. 제공하는 메타데이터 문서는 Okta를 설정할 때 저장한 연동 메타데이터 XML 파일입니다. 자세한 단계는 *IAM User Guide*의 [Creating and Managing an IAM Identity Provider (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)를 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위한 IAM 역할을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating a Role for SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)을 참조하세요.

1. IAM 콘솔에서 SAML 2.0 연동을 위해 생성한 IAM 역할에 연결할 수 있는 IAM 정책을 만듭니다. 자세한 단계는 *IAM User Guide*의 [Creating IAM Policies (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)를 참조하세요. Azure AD 예제는 [JDBC 또는 ODBC Single Sign-On 인증 설정](setup-azure-ad-identity-provider.md) 단원을 참조하십시오.

## 2단계: Okta에 대한 인증을 위해 JDBC 또는 ODBC 설정
<a name="setup-identity-provider-okta-auth"></a>

------
#### [ JDBC ]

**Okta에 대한 인증을 위해 JDBC를 설정하려면**
+ Okta Single Sign-On을 사용하여 JDBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  JDBC 드라이버를 사용하는 클라이언트를 사용하여 Okta Single Sign-On으로 연결하거나 Java와 같은 언어를 사용하여 스크립트를 통해 연결할 수 있습니다. 설치 및 구성 정보는 [Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성](jdbc20-install.md) 단원을 참조하십시오.

  예를 들어 SQLWorkbench/J를 클라이언트로 사용할 수 있습니다. SQLWorkbench/j를 구성할 때 데이터베이스의 URL은 다음 형식을 사용합니다.

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  SQLWorkbench/J를 클라이언트로 사용하는 경우 다음 단계를 수행합니다.

  1. SQL Workbench/J를 시작합니다. [**연결 프로파일 선택(Select Connection Profile)**] 페이지에서 [**프로파일 그룹(Profile Group)**]을 추가합니다(예: **Okta**).

  1. **연결 프로파일(Connection Profile)**에 ***your-connection-profile-name***을 입력합니다(예: **Okta**).

  1. **Manage Drivers**(드라이버 관리)를 선택하고, **Amazon Redshift**를 선택합니다. [**라이브러리(Library)**] 옆에 있는 [**폴더 열기(Open Folder)**] 아이콘을 선택한 다음 적절한 JDBC .jar 파일을 선택합니다.

  1. **연결 프로파일 선택(Select Connection Profile)** 페이지에서 다음과 같이 연결 프로파일에 정보를 추가합니다.
     + **사용자**에 Okta 사용자 이름을 입력합니다. 이는 Single Sign-On에 사용 중인 Okta 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다.
     + **암호**에 Okta 암호를 입력합니다.
     + **드라이버(Drivers)**에서 **Amazon Redshift(com.amazon.redshift.jdbc.Driver)**를 선택합니다.
     + **URL**에 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***을 입력합니다.

  1. **확장 속성(Extended Properties)**를 선택하고 다음 중 하나를 수행합니다.
     + **login\$1url**에 ***your-okta-sso-login-url***을 입력합니다. 이 값은 URL에 Single Sign-On을 Okta에 로그인하기 위한 인증으로 사용하도록 지정합니다.
     + Okta Single Sign-On에서 **plugin\$1name**에 **com.amazon.redshift.plugin.OktaCredentialsProvider**를 입력합니다. 이 값은 드라이버에 Okta Single Sign-On을 인증 방법으로 사용하도록 지정합니다.
     + MFA를 사용하는 Okta Single Sign-On에서 **plugin\$1name**에 **com.amazon.redshift.plugin.BrowserSamlCredentialsProvider**를 입력합니다. 이는 드라이버에 MFA를 사용하는 Okta Single Sign-On을 인증 방법으로 사용하도록 지정합니다.

------
#### [ ODBC ]

**Okta에 대한 인증을 위해 ODBC를 설정하려면**
+ Okta Single Sign-On을 사용하여 ODBC를 통해 클러스터에 연결하도록 데이터베이스 클라이언트를 구성합니다.

  Amazon Redshift는 Linux, Windows 및 macOS 운영 체제용 ODBC 드라이버를 제공합니다. ODBC 드라이버를 설치하려면 먼저 SQL 클라이언트 도구가 32비트인지, 64비트인지 확인합니다. SQL 클라이언트 도구의 요구 사항에 맞는 ODBC 드라이버를 설치합니다.

  Windows의 경우 **Amazon Redshift ODBC 드라이버 DSN 설정(Amazon Redshift ODBC Driver DSN Setup)** 페이지의 **연결 설정(Connection Settings)** 아래에 다음 정보를 입력합니다.
  + **데이터 원본 이름(Data Source Name)**에 ***your-DSN***을 입력합니다. 이는 ODBC 프로파일 이름으로 사용되는 데이터 원본 이름을 지정합니다.
  + **인증 유형(Auth type)**에서 다음 중 하나를 수행합니다.
    + Okta Single Sign-On 구성에서 **Identity Provider: Okta**를 선택합니다. 이는 ODBC 드라이버가 Okta Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
    + MFA를 사용하는 Okta Single Sign-On 구성에서 **Identity Provider: Browser SAML**을 선택합니다. 이는 ODBC 드라이버가 MFA를 사용하는 Okta Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
  + **클러스터 ID(Cluster ID)**에 ***your-cluster-identifier***를 입력합니다.
  + **리전(Region)**에 ***your-cluster-region***을 입력합니다.
  + **데이터베이스(Database)**에 ***your-database-name***을 입력합니다.
  + **사용자(User)**에 ***your-okta-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 Okta 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **Auth type**(인증 유형)이 **Identity Provider: Okta**(자격 증명 공급자: Okta)인 경우에만 이를 사용합니다.
  + **암호(Password)**에 ***your-okta-password***를 입력합니다. **인증 유형(Auth type)**이 **자격 증명 공급자: Okta(Identity Provider: Okta)**인 경우에만 이를 사용합니다.

  macOS 및 Linux에서는 다음과 같이 `odbc.ini` 파일을 편집합니다.
**참고**  
모든 항목은 대/소문자를 구분하지 않습니다.
  + **clusterid**에 ***your-cluster-identifier***를 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 이름입니다.
  + **리전(region)**에 ***your-cluster-region***을 입력합니다. 이는 생성된 Amazon Redshift 클러스터의 AWS 리전입니다.
  + **데이터베이스(database)**에 ***your-database-name***을 입력합니다. 이는 Amazon Redshift 클러스터에서 액세스하려는 데이터베이스의 이름입니다.
  + **로캘(locale)**에 **en-us**를 입력합니다. 이는 오류 메시지가 표시되는 언어입니다.
  + **iam**에 **1**을 입력합니다. 이 값은 드라이버에 IAM 자격 증명을 사용하여 인증하도록 지정합니다.
  + **plugin\$1name**의 경우 다음 중 하나를 수행합니다.
    + MFA를 사용하는 Okta Single Sign-On 구성에 **BrowserSAML**을 입력합니다. 이는 ODBC 드라이버가 MFA가 포함된 Okta Single Sign-On을 사용하여 인증할 때의 인증 방법입니다.
    + Okta Single Sign-On 구성에 **Okta**를 입력합니다. 이는 ODBC 드라이버가 Okta Single Sign-On을 사용하여 인증할 때 사용하는 인증 방법입니다.
  + **uid**에 ***your-okta-username***을 입력합니다. 이는 Single Sign-On에 사용 중인 Okta 계정의 사용자 이름으로, 인증하려는 클러스터에 대한 권한이 있습니다. **plugin\$1name**이 **Okta**인 경우에만 이를 사용합니다.
  + **pwd**에 ***your-okta-password***를 입력합니다. **plugin\$1name**이 **Okta**인 경우에만 이를 사용합니다.
  + **login\$1url**에 ***your-login-url***을 입력합니다. 이는 SAML 응답을 반환하는 시작 Single Sign-On URL입니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.
  + **idp\$1response\$1timeout**에 ***the-number-of-seconds***를 입력합니다. 이는 PingOne으로부터 응답을 기다리는 지정된 시간(초)입니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.
  + **listen\$1port**에 ***your-listen-port***를 입력합니다. 로컬 서버가 수신 대기하는 포트입니다. 기본값은 7890입니다. 이는 브라우저 SAML 플러그인에만 적용됩니다.

  macOS 및 Linux에서는 프로파일 설정을 편집하여 다음 내보내기도 추가합니다.

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------

# Amazon Redshift가 사용자를 대신하여 AWS 서비스에 액세스할 수 있도록 권한 부여
<a name="authorizing-redshift-service"></a>

일부 Amazon Redshift 기능을 사용하려면 Amazon Redshift가 사용자 대신 다른 AWS 서비스에 액세스해야 합니다. 예를 들어 [COPY](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html) 및 [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html) 명령은 Amazon S3 버킷을 사용하여 Amazon Redshift 클러스터로 데이터를 로드하거나 언로드할 수 있습니다. [CREATE EXTERNAL FUNCTION](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html) 명령은 스칼라 Lambda 사용자 정의 함수(UDF)를 사용하여 AWS Lambda 함수를 호출할 수 있습니다. Amazon Redshift Spectrum은 Amazon Athena 또는 AWS Glue의 데이터 카탈로그를 사용할 수 있습니다. Amazon Redshift 클러스터가 사용자를 대신하여 작동하도록 하려면 클러스터에 보안 자격 증명을 제공해야 합니다. 보안 자격 증명을 제공하는 데 선호되는 방법은 AWS Identity and Access Management(IAM) 역할을 지정하는 것입니다. COPY 및 UNLOAD의 경우 임시 자격 증명을 제공할 수 있습니다.

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

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


****  

| 프로그래밍 방식 액세스가 필요한 사용자 | 목적 | 방법 | 
| --- | --- | --- | 
| IAM | (권장됨) 콘솔 자격 증명을 임시 자격 증명으로 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/authorizing-redshift-service.html)  | 
|  작업 인력 ID (IAM Identity Center에서 관리되는 사용자)  | 임시 자격 증명을 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/authorizing-redshift-service.html)  | 
| IAM | 임시 자격 증명을 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. | IAM 사용자 설명서의 [AWS 리소스와 함께 임시 자격 증명 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)에 나와 있는 지침을 따르세요. | 
| IAM | (권장되지 않음)장기 자격 증명을 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/authorizing-redshift-service.html)  | 

다음을 통해 다른 AWS 서비스에 액세스하는 데 필요한 권한과 함께 IAM 역할을 생성하는 방법을 알아봅니다. Amazon Redshift 명령을 실행할 때 역할을 클러스터와 연관시키고 역할의 Amazon 리소스 이름(ARN)을 지정해야 합니다. 자세한 내용은 [IAM 역할을 사용하여 COPY, UNLOAD, CREATE EXTERNAL FUNCTION 및 CREATE EXTERNAL SCHEMA 작업에 대한 권한 부여IAM 역할을 사용하여 작업 승인](copy-unload-iam-role.md) 섹션을 참조하세요.

또한 슈퍼 사용자는 특정 사용자 및 그룹에 ASSUMEROLE 권한을 부여하여 COPY 및 UNLOAD 작업을 위한 역할에 대한 액세스 권한을 제공할 수 있습니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html)를 참조하세요.

## Amazon Redshift 클러스터가 AWS 서비스에 액세스 할 수 있도록 IAM 역할 생성


## 권한을 사용하여 IAM 역할 생성
<a name="authorizing-redshift-service-creating-an-iam-role"></a>

Amazon Redshift 클러스터에서 사용자를 대신하여 다른 AWS 서비스와 통신하도록 허용하는 IAM 역할을 생성하려면 다음 단계를 수행합니다. 이 섹션에 사용된 값은 예시이며 필요에 따라 값을 선택할 수 있습니다.<a name="create-iam-role-for-aws-services"></a>

**Amazon Redshift에서 AWS 서비스에 액세스하도록 허용하는 IAM 역할을 생성하려면**

1. [IAM 콘솔(IAM console)](https://console.aws.amazon.com/iam/home?#home)을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성(Create role)**을 선택합니다.

1. **AWS 서비스**를 선택한 다음 **Redshift**를 선택합니다.

1. **사용 사례 선택** 아래에서, **Redshift - 사용자 지정 가능(Redshift - Customizable)**을 선택한 후 **다음: 권한(Next: Permissions)**을 선택합니다. **첨부 파일 권한 정책(Attach permissions policy)** 페이지가 나타납니다.

1. 예를 들어 COPY를 사용하여 Amazon S3에 액세스하려면 **AmazonS3ReadOnlyAccess**를 사용하고 추가할 수 있습니다. COPY 또는 UNLOAD를 사용하여 Amazon S3에 액세스하려면 원하는 버킷 및 접두사에 대한 액세스를 제한하는 관리형 정책을 생성하는 것이 좋습니다. 읽기 및 쓰기 작업 모두에 대해 최소 권한을 적용하고 Amazon Redshift에 필요한 Amazon S3 버킷 및 키 접두사로만 제한하는 것이 좋습니다.

   CREATE EXTERNAL FUNCTION 명령에 대한 Lambda 함수 호출에 액세스하려면 **AWSLambdaRole**을 추가합니다.

   Redshift Spectrum의 경우 Amazon S3 액세스 외에 **AWSGlueConsoleFullAccess** 또는 **AmazonAthenaFullAccess**를 추가합니다.

   **다음: 태그**를 선택합니다.

1. **태그 추가(Add tags)** 페이지가 나타납니다. 선택적으로 태그를 추가할 수 있습니다. **다음: 검토**를 선택합니다.

1. **Role name(역할 이름)**에는 역할 이름을 입력합니다(예: **RedshiftCopyUnload**). ****역할 생성(Create role)****을 선택합니다.

1. 새로운 역할은 해당 역할을 사용하는 클러스터의 사용자라면 모두에게 제공됩니다. 특정 클러스터의 일부 사용자로 액세스를 제한하거나, 혹은 특정 리전의 클러스터로 제한하려면 역할에 대한 신뢰 관계를 편집하세요. 자세한 내용은 [IAM 역할에 대한 액세스 제한](authorizing-redshift-service-database-users.md) 섹션을 참조하세요.

1. 역할을 클러스터와 연결합니다. IAM 역할은 새롭게 생성한 클러스터와 연결할 수도 있고, 혹은 기존 클러스터에 추가할 수도 있습니다. 자세한 내용은 [IAM 역할을 클러스터와 연결](copy-unload-iam-role-associating-with-clusters.md) 섹션을 참조하세요.
**참고**  
특정 데이터에 대한 액세스를 제한하려면 필요한 최소 권한을 부여하는 IAM 역할을 사용합니다.

# IAM 역할에 대한 액세스 제한
<a name="authorizing-redshift-service-database-users"></a>

기본적으로 Amazon Redshift 클러스터에서 사용할 수 있는 IAM 역할은 해당 클러스터의 모든 사용자가 사용할 수 있습니다. IAM 역할을 특정 클러스터 또는 특정 영역의 특정 Amazon Redshift 데이터베이스 사용자로 제한하도록 선택할 수 있습니다.

특정 데이터베이스 사용자에 한해 IAM 역할을 사용할 수 있도록 하려면 다음 단계를 따르세요.<a name="identify-db-users-for-iam-role"></a>

**특정 데이터베이스 사용자로 IAM 역할에 대한 액세스 권한을 제한하려면**

1. Amazon Redshift 클러스터의 데이터베이스 사용자에 대한 Amazon 리소스 이름(ARN)을 확인합니다. 데이터베이스 사용자의 ARN 형식은 `arn:aws:redshift:region:account-id:dbuser:cluster-name/user-name`입니다.

   Amazon Redshift Serverless의 경우 다음 ARN 형식을 사용합니다. `arn:aws:redshift:region:account-id:dbuser:serverless-account-id-workgroup-id/user-name` 

1. [IAM 콘솔(IAM console)](https://console.aws.amazon.com/iam/home?#home)을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. 특정 Amazon Redshift 데이터베이스 사용자로 제한하려는 IAM 역할을 선택합니다.

1. **신뢰 관계(Trust Relationships)** 탭을 선택한 다음 **신뢰 관계 편집(Edit Trust Relationship)**을 선택합니다. Amazon Redshift가 귀하를 대신하여 다른 AWS 서비스에 액세스 할 수 있게 해주는 새로운 IAM 역할은 다음과 같이 신뢰 관계를 갖습니다.

------
#### [ JSON ]

****  

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

------

1. 신뢰 관계의 `sts:AssumeRole` 작업 영역에 `sts:ExternalId` 필드를 지정하는 값으로 제한하는 조건을 추가합니다. 역할에 대한 액세스 권한을 부여할 각 데이터베이스 사용자의 ARN을 추가합니다. 외부 ID는 고유한 문자열일 수 있습니다.

   예를 들어 다음 신뢰 관계는 `user1` 리전의 `user2` 클러스터에 속한 데이터베이스 사용자인 `my-cluster`과 `us-west-2`에게만 IAM 역할을 사용할 권한을 부여하고 있습니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
     {
       "Effect": "Allow",
       "Principal": { 
         "Service": "redshift.amazonaws.com" 
       },
       "Action": "sts:AssumeRole",
       "Condition": {
         "StringEquals": {
           "sts:ExternalId": [
             "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user1",
             "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user2"
           ]
         }
       }
     }]
   }
   ```

------

1. **신뢰 정책 업데이트**를 선택합니다.

# IAM 역할을 한 AWS 리전으로 제한
<a name="authorizing-redshift-service-regions"></a>

특정 AWS 리전에만 액세스할 수 있도록 IAM 역할을 제한할 수 있습니다. 기본적으로 Amazon Redshift에 대한 IAM 역할은 단일 리전으로 제한되지 않습니다.

IAM 역할 사용을 리전별로 제한하려면 다음 단계를 수행합니다.<a name="identify-regionsfor-iam-role"></a>

**IAM 역할에 대해 허용되는 리전을 확인하려면**

1. [https://console.aws.amazon.com/](https://console.aws.amazon.com/)에서 [IAM 콘솔](https://console.aws.amazon.com/iam/home?#home)을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. 특정 리전에 제한되도록 수정할 역할을 선택합니다.

1. **신뢰 관계(Trust Relationships)** 탭을 선택한 다음 **신뢰 관계 편집(Edit Trust Relationship)**을 선택합니다. Amazon Redshift가 귀하를 대신하여 다른 AWS 서비스에 액세스 할 수 있게 해주는 새로운 IAM 역할은 다음과 같이 신뢰 관계를 갖습니다.

------
#### [ JSON ]

****  

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

------

1. `Service`의 `Principal` 목록을 역할 사용을 허용할 특정 리전의 목록으로 수정합니다. `Service` 목록에서 각 리전은 `redshift.region.amazonaws.com` 형식이어야 합니다.

   예를 들어, 다음과 같이 편집된 신뢰 관계는 `us-east-1` 및 `us-west-2` 리전에서만 IAM 역할을 사용하도록 허용합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "redshift.us-east-1.amazonaws.com",
             "redshift.us-west-2.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. **신뢰 정책 업데이트(Update Trust Policy)**를 선택합니다.

# Amazon Redshift에서 IAM 역할 연결
<a name="authorizing-redshift-service-chaining-roles"></a>

역할을 클러스터에 연결하면 클러스터가 Amazon S3, Amazon Athena, AWS Glue 및 AWS Lambda에 액세스할 수 있는 역할을 맡을 수 있습니다. 클러스터에 연결된 역할에 필요한 리소스에 대한 액세스 권한이 없는 경우 다른 계정에 속한 다른 역할을 함께 묶을 수 있습니다. 그러면 클러스터는 함께 묶은 역할을 일시적으로 수임하여 데이터에 액세스합니다. 역할을 함께 묶어 교차 계정 액세스를 부여할 수도 있습니다. 체인의 각 역할은 클러스터가 체인의 끝에 있는 역할을 수임할 때까지 체인의 다음 역할을 수임합니다. 연결할 수 있는 최대 IAM 역할 수는 할당량에 따라 달라집니다. 자세한 내용은 [Amazon Redshift 객체에 대한 할당량](amazon-redshift-limits.md#amazon-redshift-limits-quota)에서 할당량 "Amazon Redshift Redshift가 다른 AWS 서비스에 액세스하기 위한 클러스터 IAM 역할" 섹션을 참조하세요.

**참고**  
체인이 올바르게 작동하려면 IAM 역할을 지정해야 합니다.

예를 들어, 회사 A가 회사 B에 속한 Amazon S3 버킷의 데이터에 액세스하려고 한다고 가정합니다. 회사 A는 `RoleA`라는 Amazon Redshift에 대한 AWS 서비스 역할을 생성하고 해당 클러스터에 연결합니다. 회사 B는 `RoleB`라는 이름의 역할을 생성합니다. 이는 회사 B 버킷의 데이터에 액세스할 수 있는 권한을 받았습니다. 회사 B 버킷의 데이터에 액세스하려면 회사 A는 `iam_role` 파라미터를 사용하여 COPY 명령을 실행하고 `RoleA`와 `RoleB`를 묶습니다. COPY 작업 기간 동안 `RoleA`은 `RoleB`를 수임하여 Amazon S3 버킷에 액세스합니다.

역할을 함께 묶으려면 역할 간에 신뢰 관계를 구성해야 합니다. 또 다른 역할을 수임하는 역할(예: `RoleA`)에는 다음 묶인 역할(예: `RoleB`)을 수임하도록 허용하는 권한 정책이 있어야 합니다. 반대로 권한을 전달하는 역할(`RoleB`)에는 권한을 이전에 묶인 역할(`RoleA`)로 전달하도록 허용하는 신뢰 정책이 있어야 합니다. 자세한 내용은 IAM User Guide의 [Using IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)를 참조하세요.

체인의 첫 번째 역할은 클러스터에 연결된 역할이어야 합니다. 첫 번째 역할과 체인의 다음 역할을 수임하는 각 후속 역할에는 특정 문이 포함된 정책이 있어야 합니다. 이 문은 `Allow`작업 및 `sts:AssumeRole ` 요소에 있는 다음 역할의 Amazon 리소스 이름(ARN)에 `Resource` 효과를 줍니다. 예를 들어 `RoleA`에는 `RoleB`를 수임하도록 허용하는 권한 정책이 있고, 이는 AWS 계정 `210987654321`이 소유합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1487639602000",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/RoleB"        
       }
    ]
}
```

------

다른 역할로 전달하는 역할은 역할을 수임하는 역할 또는 해당 역할을 소유한 AWS 계정과의 신뢰 관계를 설정해야 합니다. 예를 들어 `RoleB`에는 신뢰 정책이 있어 `RoleA`와의 신뢰 관계를 설정합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/RoleA"
      }
    }
  ]
}
```

------

다음 신뢰 정책은 `RoleA`의 소유자인 AWS 계정 `123456789012`와의 신뢰 관계를 설정합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      }
    }      
  ]
}
```

------

**참고**  
특정 사용자로 역할 연결 권한 부여를 제한하려면 조건을 정의합니다. 자세한 내용은 [IAM 역할에 대한 액세스 제한](authorizing-redshift-service-database-users.md) 섹션을 참조하세요.

UNLOAD, COPY, CREATE EXTERNAL FUNCTION 또는 CREATE EXTERNAL SCHEMA 명령을 실행할 때 `iam_role` 파라미터에서 쉼표로 구분된 역할 ARN 목록을 포함해 역할을 함께 묶습니다. 다음은 `iam_role` 파라미터에서 역할을 묶기 위한 구문을 나타냅니다.

```
unload ('select * from venue limit 10') 
to 's3://acmedata/redshift/venue_pipe_'
IAM_ROLE 'arn:aws:iam::<aws-account-id-1>:role/<role-name-1>[,arn:aws:iam::<aws-account-id-2>:role/<role-name-2>][,...]';
```

**참고**  
전체 역할 체인은 작은따옴표로 묶여 있으며, 공백을 포함해서는 안 됩니다.

다음 예에서 `RoleA`는 AWS 계정 `123456789012`에 속하는 클러스터에 연결됩니다. 계정 `210987654321`에 속한 `RoleB`는 `s3://companyb/redshift/`라는 버킷에 액세스할 수 있는 권한을 가집니다. 다음 예에서는 `RoleA`와 `RoleB`를 묶어 s3://companyb/redshift/ 버킷에 데이터 UNLOAD를 수행합니다.

```
unload ('select * from venue limit 10') 
to 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

다음 예에서는 COPY 명령을 사용하여 이전 예에서 언로드된 데이터를 로드합니다.

```
copy venue 
from 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

다음 예에서는 CREATE EXTERNAL SCHEMA가 묶인 역할을 사용하여 `RoleB`를 수임합니다.

```
create external schema spectrumexample from data catalog 
database 'exampledb' region 'us-west-2' 
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

다음 예에서는 CREATE EXTERNAL FUNCTION이 묶인 역할을 사용하여 역할 `RoleB`를 수임합니다.

```
create external function lambda_example(varchar)
returns varchar
volatile
lambda 'exampleLambdaFunction'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

# IAM 역할을 사용하여 COPY, UNLOAD, CREATE EXTERNAL FUNCTION 및 CREATE EXTERNAL SCHEMA 작업에 대한 권한 부여
<a name="copy-unload-iam-role"></a>

[COPY](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html) 명령을 사용하여 데이터를 Amazon Redshift에 로드(또는 가져오기)하고 [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html) 명령을 사용하여 Amazon Redshift에서 데이터를 언로드(또는 내보내기)할 수 있습니다. CREATE EXTERNAL FUNCTION 명령을 사용하여 AWS Lambda에서 함수를 호출하는 사용자 정의 함수를 생성할 수 있습니다.

Amazon Redshift Spectrum을 사용하면 [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) 명령을 사용하여 데이터가 들어있는 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 서비스에 액세스할 수 있도록 권한 부여](authorizing-redshift-service.md) 섹션을 참조하세요.

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

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


****  

| 프로그래밍 방식 액세스가 필요한 사용자 | 목적 | 방법 | 
| --- | --- | --- | 
| IAM | (권장됨) 콘솔 자격 증명을 임시 자격 증명으로 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/copy-unload-iam-role.html)  | 
|  작업 인력 ID (IAM Identity Center에서 관리되는 사용자)  | 임시 자격 증명을 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/copy-unload-iam-role.html)  | 
| IAM | 임시 자격 증명을 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. | IAM 사용자 설명서의 [AWS 리소스와 함께 임시 자격 증명 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)에 나와 있는 지침을 따르세요. | 
| IAM | (권장되지 않음)장기 자격 증명을 사용하여 AWS CLI, AWS SDK 또는 AWS API에 대한 프로그래밍 요청에 서명합니다. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/copy-unload-iam-role.html)  | 

IAM 역할 사용 단계는 다음과 같습니다.
+ Amazon Redshift 클러스터에서 사용할 IAM 역할을 생성합니다.
+ IAM 역할을 클러스터와 연결합니다.
+ COPY, UNLOAD, CREATE EXTERNAL SCHEMA 또는 CREATE EXTERNAL FUNCTION 명령을 호출할 때 IAM 역할의 ARN을 포함합니다.

# IAM 역할을 클러스터와 연결
<a name="copy-unload-iam-role-associating-with-clusters"></a>

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

## IAM 역할을 클러스터와 연결하는 데 필요한 권한
<a name="copy-unload-iam-role-associating-with-clusters-perms"></a>

IAM 역할을 클러스터와 연결하려면 사용자에게 해당 IAM 역할에 대한 `iam:PassRole` 권한이 필요합니다. 이 권한을 통해 관리자는 사용자가 Amazon Redshift 클러스터와 연결할 수있는 IAM 역할을 제한 할 수 있습니다. 가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)를 참조하세요.

다음은 이러한 작업이 가능하도록 사용자에게 추가할 수 있는 IAM 정책 예입니다.
+ 해당 사용자의 계정이 소유한 모든 Amazon Redshift 클러스터에 대한 세부 정보를 가져옵니다.
+ 3가지 IAM 역할 중 하나를 2개의 Amazon Redshift 클러스터 중 하나와 연결합니다.

------
#### [ JSON ]

****  

```
{
    "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 Guide*의 [Overview of IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)를 참조하세요.

## 클러스터와 IAM 역할 연결 관리
<a name="managing-iam-role-association-with-cluster"></a>

클러스터를 생성할 때는 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/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

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

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

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

1. **완료(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 역할 연결 나열
<a name="w2aac37c30c30c35c31b7b9c29"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)*를 참조하세요.

# Amazon Redshift의 기본값으로 IAM 역할 생성
<a name="default-iam-role"></a>

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

## 콘솔에서 만들어진 IAM 역할
<a name="default-iam-role-overview"></a>

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 역할에는 `AmazonRedshiftAllCommandsFullAccess` 관리형 정책이 자동으로 연결됩니다. 이 IAM 역할을 통해 Amazon Redshift는 IAM 계정의 AWS 리소스에 대한 데이터를 복사, 언로드, 쿼리 및 분석할 수 있습니다. 관리형 정책은 [COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-authorization.html), [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html), [CREATE EXTERNAL FUNCTION](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html), [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html), [CREATE MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html) 및 [CREATE LIBRARY](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_LIBRARY.html) 작업을 제공합니다. 이 정책은 Amazon S3, Amazon CloudWatch Logs, Amazon SageMaker AI 및 AWS Glue와 같은 관련 AWS 서비스에 대해 SELECT 문을 실행할 수 있는 권한도 부여합니다.

CREATE EXTERNAL FUNCTION, CREATE EXTERNAL SCHEMA, CREATE MODEL 및 CREATE LIBRARY 명령에는 `default` 키워드가 있습니다. 이러한 명령에 대한 이 키워드의 경우 Amazon Redshift는 기본값으로 설정되고 명령이 실행될 때 클러스터와 연결된 IAM 역할을 사용합니다. [DEFAULT\$1IAM\$1ROLE](https://docs.aws.amazon.com/redshift/latest/dg/r_DEFAULT_IAM_ROLE.html) 명령을 실행하여 클러스터에 연결된 현재 기본 IAM 역할을 확인할 수 있습니다.

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

Amazon Redshift 콘솔을 사용하여 다음 작업을 수행할 수 있습니다.
+ [IAM 역할을 기본값으로 생성](#create-iam)
+ [클러스터에서 IAM 역할 제거](#remove-iam)
+ [클러스터와 IAM 역할 연결](#associate-iam)
+ [IAM 역할을 기본값으로 설정](#set-default-iam)
+ [클러스터의 기본값으로 IAM 역할 설정 취소](#clear-default-iam)

## AmazonRedshiftAllCommandsFullAccess 관리형 정책의 권한
<a name="default-iam-role-permissions"></a>

다음 예에서는 클러스터에 대해 기본값으로 설정된 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 역할 관리
<a name="managing-iam-role-console"></a>

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

### IAM 역할을 기본값으로 생성
<a name="create-iam"></a>

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

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

**새 클러스터와 해당 클러스터의 기본값으로 설정된 IAM 역할을 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

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

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

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

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

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

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

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

1. 다음 방법 중 하나를 선택하여 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 버킷을 하나 이상 선택합니다.

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

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

### 클러스터에서 IAM 역할 제거
<a name="remove-iam"></a>

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

**클러스터에서 IAM 역할을 제거하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

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

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

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

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

### 클러스터와 IAM 역할 연결
<a name="associate-iam"></a>

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

**클러스터와 IAM 역할을 연결하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

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

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

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

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

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

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

### IAM 역할을 기본값으로 설정
<a name="set-default-iam"></a>

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

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

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

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

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

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

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

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

### 클러스터의 기본값으로 IAM 역할 설정 취소
<a name="clear-default-iam"></a>

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

**클러스터의 기본값으로 IAM 역할 설정을 취소하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

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

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

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

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

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

## AWS CLI를 사용하여 클러스터에 생성된 IAM 역할 관리
<a name="managing-iam-role-association-with-cluster-cli"></a>

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

### IAM 역할이 기본값으로 설정된 Amazon Redshift 클러스터를 생성하려면
<a name="create-cluster-iam"></a>

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 역할을 하나 이상 추가하려면
<a name="modify-cluster-add-iam"></a>

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

다음 AWS CLI 명령은 클러스터에 `myrole3`과 `myrole4`를 추가합니다.

```
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 역할을 하나 이상 제거하려면
<a name="modify-cluster-remove-iam"></a>

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

다음 AWS CLI 명령은 클러스터에서 `myrole3`과 `myrole4`를 제거합니다.

```
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 역할을 클러스터의 기본값으로 설정하려면
<a name="modify-cluster-default-iam-associated"></a>

연결된 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 역할을 클러스터의 기본값으로 설정하려면
<a name="modify-cluster-default-iam-not-associated"></a>

연결되지 않은 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 역할을 클러스터의 기본값으로 설정하려면
<a name="restore-cluster-iam"></a>

스냅샷에서 클러스터를 복원할 때 기존 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"
            }
        ],
        ...
    }
}
```

# 페더레이션형 ID를 사용하여 로컬 리소스 및 Amazon Redshift Spectrum 외부 테이블에 대한 Amazon Redshift 액세스 관리
<a name="authorization-fas-spectrum"></a>

`GetDatabaseCredentials`에서 제공한 보안 인증 정보와 함께 AWS에서 아이덴티티 페더레이션을 사용하면 로컬 데이터와 외부 데이터에 대한 권한 부여 및 액세스를 간소화할 수 있습니다. 이 자습서에서는 특정 IAM 역할을 사용하는 대신 AWS ID 페더레이션을 통해 리소스에 대한 액세스를 제공하는 방법을 보여 줍니다.

현재는 Amazon S3에 있는 외부 데이터에 대한 액세스 권한을 사용자에게 부여하려면 권한 정책에 정의된 권한으로 IAM 역할을 생성해야 합니다. 그러면 역할이 연결된 사용자가 외부 데이터에 액세스할 수 있습니다. 이 방법이 작동하지만 특정 사용자가 특정 열을 사용할 수 없도록 하는 것과 같은 세분화된 규칙을 제공하려는 경우 외부 스키마에서 추가 구성을 수행해야 할 수 있습니다.

`GetDatabaseCredentials`에서 제공된 자격 증명 인증 정보를 사용하는 ID 페더레이션은 지정 및 변경이 더 쉬운 세분화된 IAM 규칙을 통해 AWS Glue 및 Redshift Spectrum 리소스에 대한 액세스를 제공할 수 있습니다. 이렇게 하면 비즈니스 규칙을 준수하는 액세스를 쉽게 적용할 수 있습니다.

페더레이션형 보안 인증을 사용하면 다음과 같은 이점이 있습니다.
+ Redshift Spectrum용으로 클러스터에 연결된 IAM 역할을 관리할 필요가 없습니다.
+ 클러스터 관리자는 다양한 IAM 컨텍스트를 사용하는 소비자가 액세스할 수 있는 외부 스키마를 생성할 수 있습니다. 이는 예를 들어 여러 소비자가 한 테이블에서 동일한 외부 스키마를 쿼리하고 반환된 레코드에서 다양한 필드를 가져오는 열 필터링을 수행하는 데 유용합니다.
+ 역할뿐만 아니라 IAM 권한이 있는 사용자를 사용하여 Amazon Redshift를 쿼리할 수 있습니다.

## 페더레이션형 ID로 로그인하기 위한 ID 준비
<a name="authorization-fas-spectrum-getting-started-iam"></a>

페더레이션형 ID로 로그인하려면 먼저 몇 가지 예비 단계를 수행해야 합니다. 이 지침에서는 Amazon S3 버킷에 저장된 데이터 파일을 참조하는 기존 Redshift Spectrum 외부 스키마가 있고 해당 버킷이 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 데이터 웨어하우스와 동일한 계정에 있다고 가정합니다.

1. IAM ID를 생성합니다. 이는 사용자 또는 IAM 역할일 수 있습니다. IAM에서 지원하는 이름을 사용합니다.

1. ID에 권한 정책을 연결합니다. 다음 중 하나를 지정합니다.
   + `redshift:GetClusterCredentialsWithIAM`(Amazon Redshift에서 프로비저닝된 클러스터의 경우)
   + `redshift-serverless:GetCredentials`(Amazon Redshift Serverless의 경우)

   IAM 콘솔을 사용하여 정책 편집기로 권한을 추가할 수 있습니다.

   IAM ID에는 외부 데이터에 액세스할 수 있는 권한도 필요합니다. 다음 AWS 관리형 정책을 직접 추가하여 Amazon S3 대한 액세스 권한을 부여합니다.
   + `AmazonS3ReadOnlyAccess`
   + `AWSGlueConsoleFullAccess`

    AWS Glue를 사용하여 외부 데이터를 준비하는 경우 마지막 관리형 정책이 필요합니다. Amazon Redshift Spectrum에 대한 액세스 권한을 부여하는 단계에 대한 자세한 내용은 Amazon Redshift 및 Redshift Spectrum 시작 안내서의 일부인 [Amazon Redshift에 대한 IAM 역할 생성](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-role.html) 섹션을 참조하세요. Redshift Spectrum에 액세스하기 위한 IAM 정책을 추가하는 단계를 보여 줍니다.

1. Amazon Redshift에 연결하도록 SQL 클라이언트를 설정합니다. Amazon Redshift JDBC 드라이버를 사용하고 사용자의 보안 인증 정보를 도구의 보안 인증 정보 속성에 추가합니다. SQL Workbench/J와 같은 클라이언트가 이 작업에 적합합니다. 다음과 같은 클라이언트 연결 확장 속성을 설정합니다.
   + *AccessKeyID* - 액세스 키 식별자입니다.
   + *SecretAccessKey* - 비밀 액세스 키입니다. (암호화를 사용하지 않는 경우 비밀 키를 전송할 때 발생할 수 있는 보안 위험에 유의하세요.) 
   + *SessionToken* - IAM 역할용 임시 보안 인증 정보 집합입니다.
   + *groupFederation* - 프로비저닝된 클러스터의 페더레이션형 ID를 구성하는 경우 `true`로 설정합니다. Amazon Redshift Serverless를 사용하는 경우 이 파라미터를 설정하지 마세요.
   + *LogLevel* - 정수 로그 수준 값입니다. 이는 선택 사항입니다.

1. URL을 Amazon Redshift 또는 Amazon Redshift Serverless 콘솔에서 찾은 JDBC 엔드포인트로 설정합니다. URL 스키마를 *jdbc:redshift:iam:*으로 바꾸고 다음 형식을 사용합니다.
   + Amazon Redshift에서 프로비저닝된 클러스터의 형식: `jdbc:redshift:iam://<cluster_id>.<unique_suffix>.<region>.redshift.amazonaws.com:<port>/<database_name>`

     예시: `jdbc:redshift:iam://test1.12345abcdefg.us-east-1.redshift.amazonaws.com:5439/dev`
   + Amazon Redshift Serverless의 형식: `jdbc:redshift:iam://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439:<port>/<database_name>`

     예시: `jdbc:redshift:iam://default.123456789012.us-east-1.redshift-serverless.amazonaws.com:5439/dev`

   IAM ID를 사용하여 처음으로 데이터베이스에 연결한 후 Amazon Redshift는 접두사 `IAM:`(사용자의 경우) 또는 접두사 `IAMR:`(IAM 역할의 경우)가 붙은 동일한 이름의 Amazon Redshift ID를 자동으로 생성합니다. 이 주제의 나머지 단계에서는 사용자에 대한 예를 보여줍니다.

   Redshift 사용자가 자동으로 생성되지 않는 경우 관리자 계정으로 `IAM:<user name>` 형식의 사용자 이름을 지정해 `CREATE USER` 문을 실행하여 사용자를 생성할 수 있습니다.

1.  Amazon Redshift 클러스터 관리자로서 Redshift 사용자에게 외부 스키마에 액세스하는 데 필요한 권한을 부여합니다.

   ```
   GRANT ALL ON SCHEMA my_schema to "IAM:my_user";
   ```

   Redshift 사용자에게 외부 스키마에서 테이블을 생성할 수 있는 권한을 부여하려면 해당 사용자가 스키마 소유자여야 합니다. 예를 들면 다음과 같습니다.

   ```
   ALTER SCHEMA my_schema owner to "IAM:my_user";
   ```

1. 구성을 확인하려면 권한이 부여된 후 SQL 클라이언트를 사용하여 사용자로 쿼리를 실행합니다. 이 쿼리 샘플은 외부 테이블에서 데이터를 검색합니다.

   ```
   SELECT * FROM my_schema.my_table;
   ```

## Redshift Spectrum에 ID 및 권한 부여 전파 시작하기
<a name="authorization-fas-spectrum-getting-started"></a>

외부 테이블을 쿼리하기 위해 페더레이션형 ID를 전달하려면 `SESSION`을 `CREATE EXTERNAL SCHEMA`의 `IAM_ROLE` 쿼리 파라미터 값으로 설정합니다. 다음 단계에서는 `SESSION`을 설정하고 활용하여 외부 스키마에 대한 쿼리 권한을 부여하는 방법을 보여줍니다.

1. 로컬 테이블과 외부 테이블을 생성합니다. AWS Glue를 통해 카탈로그로 작성된 외부 테이블을 이에 사용할 수 있습니다.

1. IAM ID로 Amazon Redshift에 연결합니다. 이전 섹션에서 설명한 것처럼 ID가 Amazon Redshift에 연결되면 Redshift 데이터베이스 사용자가 생성됩니다. 사용자가 이전에 존재하지 않은 경우 생성됩니다. 사용자가 새 사용자인 경우 관리자는 Amazon Redshift에서 쿼리 및 테이블 생성과 같은 작업을 수행할 수 있는 권한을 사용자에게 부여해야 합니다.

1. 관리자 계정으로 Redshift에 연결합니다. `SESSION` 값을 사용해 명령을 실행하여 외부 스키마를 생성합니다.

   ```
   create external schema spectrum_schema from data catalog
   database '<my_external_database>' 
   region '<my_region>'
   iam_role 'SESSION'
   catalog_id '<my_catalog_id>';
   ```

   이 경우 `catalog_id`가 설정됩니다. `SESSION`이 특정 역할을 대체하기 때문에 기능에 추가된 새로운 설정입니다.

   이 예에서 쿼리의 값은 실제 값이 나타나는 방식을 모방한 것입니다.

   ```
   create external schema spectrum_schema from data catalog
   database 'spectrum_db' 
   region 'us-east-1'
   iam_role 'SESSION'
   catalog_id '123456789012'
   ```

   이 경우의 `catalog_id` 값은 AWS 계정 ID입니다.

1. 2단계에서 연결한 IAM ID를 사용해 쿼리를 실행하여 외부 데이터에 액세스합니다. 예를 들면 다음과 같습니다.

   ```
   select * from spectrum_schema.table1;
   ```

   이 경우 `table1`은 예를 들어 Amazon S3 버킷에 있는 파일의 JSON 형식 데이터일 수 있습니다.

1. 외부 데이터베이스 또는 스키마를 가리키는 클러스터 연결 IAM 역할을 사용하는 외부 스키마가 이미 있는 경우 이 단계에 설명된 대로 기존 스키마를 교체하고 페더레이션형 ID를 사용하거나 새 스키마를 생성할 수 있습니다.

`SESSION`은 페더레이션형 ID 보안 인증 정보가 외부 스키마를 쿼리하는 데 사용됨을 나타냅니다. `SESSION` 쿼리 파라미터를 사용할 때는 `catalog_id`를 설정해야 합니다. 스키마에 사용되는 데이터 카탈로그를 가리키기 때문에 필요합니다. 이전에는 `iam_role`에 할당된 값에서 `catalog_id`가 검색되었습니다. 예를 들어 외부 스키마를 쿼리할 때 페더레이션형 보안 인증 정보를 사용하여 Redshift Spectrum에 이러한 방식으로 ID 및 권한 부여를 전파하도록 설정하면 IAM 역할을 통한 권한 부여가 필요하지 않습니다.

### 사용 노트
<a name="authorization-fas-access-usage-notes"></a>

일반적인 연결 오류는 다음과 같습니다. **임시 자격 증명을 검색하는 중 IAM 오류: 제공된 언마셜러로 예외 응답을 언마셜링할 수 없음. 이 오류는 레거시 JDBC 드라이버가 있기 때문에 발생합니다. 페더레이션 ID에 필요한 최소 드라이버 버전은 2.1.0.9입니다. JDBC 드라이버는 [Amazon Redshift JDBC 드라이버, 버전 2.x 다운로드](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-download-driver.html)에서 다운로드할 수 있습니다.

### 추가 리소스
<a name="authorization-fas-spectrum-resources"></a>

이러한 링크는 외부 데이터에 대한 액세스를 관리하기 위한 추가 정보를 제공합니다.
+ IAM 역할을 사용하여 Redshift Spectrum 데이터에 액세스할 수 있습니다. 자세한 내용은 [Amazon Redshift가 사용자를 대신하여 AWS 서비스에 액세스할 수 있도록 권한 부여](authorizing-redshift-service.md) 섹션을 참조하세요.
+ AWS Lake Formation으로 외부 테이블에 대한 액세스를 관리할 때 페더레이션 IAM 자격 증명과 함께 Redshift Spectrum을 사용하여 쿼리할 수 있습니다. 더 이상 AWS Lake Formation에 등록된 데이터를 쿼리하기 위해 Redshift Spectrum에 대한 클러스터 연결 IAM 역할을 관리할 필요가 없습니다. 자세한 내용은 [Amazon Redshift Spectrum과 함께 AWS Lake Formation 사용](https://docs.aws.amazon.com/lake-formation/latest/dg/RSPC-lf.html) 섹션을 참조하세요.