

 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/)을 참조하세요.

# 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
  ```

------