

 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/)を参照してください。

# JDBC または ODBC シングルサインオン認証の設定
<a name="setup-azure-ad-identity-provider"></a>

外部 ID プロバイダー (IdP) を利用して、Amazon Redshift クラスターにアクセスするユーザーを認証および承認することで、ユーザー管理を簡素化してセキュリティを強化できます。これにより、複数のサービスにわたって、一元化されたユーザー管理、ロールベースのアクセスコントロール、監査機能が可能になります。一般的なユースケースとして、さまざまなユーザーグループの認証の合理化、一貫したアクセスポリシーの適用、規制要件の遵守などがあります。

以下のページでは、Redshift クラスターとの IdP 統合の設定について説明します。AWS を IdP のサービスプロバイダーとして設定する方法については、*IAM ユーザーガイド*の [証明書利用者の信頼とクレームの追加によって SAML 2.0 IdP を設定する](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 マネジメントコンソールで Amazon Redshift アクセスを制御するために AD FS を設定します。

   1. **ADFS 2.0**を選択し、**証明書利用者信頼の追加**を選択します。**証明書利用者信頼の追加ウィザード** ページで、**開始**を選択します。

   1. **データソースの選択** ページで、**オンラインまたはローカルネットワーク上で公開されている証明書利用者に関するデータのインポート**を選択します。

   1. **フェデレーションメタデータアドレス (ホスト名またはURL）**に **https://signin.aws.amazon.com/saml-metadata.xml**と入力します。メタデータ XML ファイルは、AWS を証明書利用者として記述する標準の SAML メタデータドキュメントです。

   1. **表示名の指定** ページで、**表示名**に値を入力します。

   1. **発行認可ルールの選択** ページで、この証明書利用者へのアクセスをすべてのユーザーに許可または拒否する発行認可ルールを選択します。

   1. **信頼の追加の準備** ページで、設定を確認します。

   1. **終了** ページで、**ウィザードが終了すると、この証明書利用者信頼のための [クレームルールの編集] ダイアログが開きます**を選択します。

   1. コンテキスト (右クリック) メニューで、**証明書利用者信頼**を選択します。

   1. 証明書利用者については、コンテキスト (右クリック) メニューを開き、**クレームルールの編集**を選択します。**[クレームルールの編集]** ページで、**[ルールを追加]** を選択します。

   1. **クレームルールテンプレート**で、**受信クレームの変換**を選択し、**ルールの編集 – NameId**ページで、次の操作を行います。
      + **クレームルール名**に **NameId**を入力します。
      + **受信クレーム名**で、**Windows アカウント名**を選択します。
      + **発信クレーム名**で、**名前 ID**を選択します。
      + **発信者名 ID フォーム**で、**永続的識別子**を選択します。
      + **すべてのクレーム値を通過**を選択します。

   1. **[クレームルールの編集]** ページで、**[ルールを追加]** を選択します。**ルールテンプレートの選択** ページの **クレームルールテンプレート**で、**LDAP 属性をクレームとして送信**を選択します。

   1. **ルールの設定** ページで、次の手順を実行します。
      + **クレームルール名**に、**RoleSessionName**と入力します。
      + **属性を保存する**で **アクティブディレクトリ**を選択します。
      + **LDAP 属性**で **E-Mail-Addresses**を選択します。
      + **送信クレームタイプ**で **https://aws.amazon.com/SAML/Attributes/RoleSessionName**を選択します。

   1. **[クレームルールの編集]** ページで、**[ルールを追加]** を選択します。**[ルールテンプレートの選択]** ページの **[クレームルールテンプレート]**で、**[カスタムルールによるクレーム送信]** を選択します。

   1. **ルールの編集 - AD グループの取得** ページで、**クレームルール名**に **AD グループの取得**と入力します。

   1. **カスタムルール**で、次のように入力します。

      ```
      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. **[クレームルールの編集]** ページで、**[ルールを追加]** を選択します。**[ルールテンプレートの選択]** ページの **[クレームルールテンプレート]**で、**[カスタムルールによるクレーム送信]** を選択します。

   1. **ルールの編集 - ロール** ページの **クレームルール名**に **ロール**と入力します。

   1. **カスタムルール**で、次のように入力します。

      ```
      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 ユーザーガイド」**の「[IAM ID プロバイダーを作成および管理する (コンソール)](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 ユーザーガイド」**の「[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 ユーザーガイド」**の「[IAM ポリシーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)」を参照してください。Azure AD の例については、「[JDBC または ODBC シングルサインオン認証の設定](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 シングルサインオンを使用して JDBC 経由でクラスターに接続するようにデータベースクライアントを構成します。

  JDBC ドライバーを使用する任意のクライアントを使用して AD FS シングルサインオンを使用して接続、または 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. **接続プロファイルの選択** ページで、**プロファイルグループ**を追加します (例: **ADFS**)。

  1. **接続プロファイル**に、接続プロファイル名を入力します (例: **ADFS**)。

  1. **[ドライバの管理]** を選択し、**[Amazon Redshift]** を選択します。**[フォルダを開く]** アイコン、**[ライブラリ]** を選択し、適切な JDBC .jar ファイルを選択します。

  1. **接続プロファイルの選択**ページで、次のように接続プロファイルに情報を追加します。
     + **ユーザー**には、AD FS ユーザー名を入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているアカウントのユーザー名です。
     + **パスワード**には、AD FS パスワードを入力します。
     + **[ドライバ]** では、**[Amazon Redshift (com.amazon.redshift.jdbc.Driver)]** を選択します。
     + **[URL]** には、**jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name*** と入力します。

  1. **拡張プロパティ**を選択します。**[plugin\$1name]** には、**com.amazon.redshift.plugin.AdfsCredentialsProvider** と入力します。この値は、認証方法として AD FS シングルサインオンを使用するドライバーに指定します。

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

**AD FS への認証用に ODBC を設定するには**
+ AD FS シングルサインオンを使用して ODBC 経由でクラスターに接続するようにデータベースクライアントを構成します。

  Amazon Redshift には Linux、Windows、macOS オペレーティングシステム用の ODBC ドライバが用意されています。ODBC ドライバをインストールする前に、SQL クライアントツールが 32 ビットであるか 64 ビットであるかを調べます。SQL クライアントツールの要件と一致する ODBC ドライバをインストールします。

  Windows の場合、**Amazon Redshift ODBC ドライバ DSN セットアップ** ページの **[接続設定]** で、次の情報を入力します。
  + **[データソース名]** には、***your-DSN*** と入力します。ODBC プロファイル名として使用するデータソース名を指定します。
  + **Auth type**で **アイデンティティプロバイダー: SAML**を選択します。これは、ODBC ドライバが AD FS シングルサインオンを使用した認証に使用する認証方法です。
  + **[クラスター ID]** には、***your-cluster-identifier*** と入力します。
  + **[リージョン]** には、***your-cluster-region*** と入力します。
  + **[データベース]** には、***your-database-name*** と入力します。
  + **[ユーザー]** には、***your-adfs-username*** と入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用している AD FS アカウントのユーザー名です。**Auth type** が **ID プロバイダー: SAML** である場合にのみ使用します。
  + **[パスワード]** には、***your-adfs-password*** と入力します。**Auth type** が **ID プロバイダー: SAML**である場合にのみ使用します。

  macOS および Linux では、次のように `odbc.ini` ファイルを編集します。
**注記**  
すべてのエントリでは、大文字と小文字は区別されません。
  + **[clusterid]** には、***your-cluster-identifier*** と入力します。これは、作成された Amazon Redshift クラスターの名前です。
  + **[リージョン]** には、***your-cluster-region*** と入力します。これは、作成された Amazon Redshift クラスターの AWS リージョンです。
  + **[データベース]** には、***your-database-name*** と入力します。これは、Amazon Redshift クラスター上でアクセスしようとしているデータベースの名前です。
  + **[ロケール]** には、**en-us** と入力します。これは、エラーメッセージが表示される言語です。
  + **[iam]** には、**1** と入力します。この値は、IAM 認証情報を使用して認証するためにドライバに指定します。
  + **plugin\$1name** には、次のいずれかの操作を行います。
    + MFA 設定を使用した AD FS シングルサインオンの場合は、**BrowserSAML** と入力します。これは、ODBC ドライバが AD FS への認証に使用する認証方法です。
    + AD FS シングルサインオン設定の場合は、**ADFS** と入力します。これは、ODBC ドライバが Azure AD シングルサインオンを使用した認証に使用する認証方法です。
  + **[uid]** には、***your-adfs-username*** と入力します。これは、認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用している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>

Amazon Redshift クラスターにアクセスするためのアイデンティティプロバイダー (IdP) として Microsoft の Azure AD を使用できます。このチュートリアルでは、Azure を ID プロバイダー (IdP) として使用して、Amazon Redshift クラスターにアクセスする方法を説明します。

Microsoft Azure AD シングルサインオンで 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. AWS コンソールへのシングルサインオンおよび Amazon Redshift へのフェデレーテッドログインに使用する Microsoft Azure ポータルに、エンタープライズアプリケーションとして Amazon Redshift を追加します。**Enterprise application** を選択します。

1. **\$1New application** を選択します。[アプリケーションを追加] ページが表示されます。

1. 検索フィールドで **AWS** を検索します。

1. **Amazon Web Services (AWS)** を選択し、**追加** をクリックします。これにより、AWS アプリケーションが作成されます。

1. **管理** で、**シングルサインオン**を選択します。

1. **SAML** を選択します。[Amazon Web Services (AWS) \$1 SAML ベースのサインオン] ページが表示されます。

1. **はい** を選択して、[SAML によるシングルサインオンのセットアップ] ページに進みます。このページには、事前設定されたシングルサインオン関連属性のリストが表示されます。

1. **ベーシック SAML 設定** で、編集アイコンを選択し、**保存** を選択します。

1. 複数のアプリケーションを設定する場合は、識別子の値を指定します。たとえば、***https://signin.aws.amazon.com/saml\$12***と入力します。2 番目のアプリケーション以降では、この形式を \$1 記号とともに使用して、一意の SPN 値を指定します。

1. **ユーザー属性とクレーム** セクションで、編集アイコンを選択します。

   既定では、一意のユーザー識別子 (UID)、ロール、RoleSessionName、SessionDuration クレームは事前に設定されています。

1. **\$1 新しいクレームの追加** を選択して、データベースユーザーのクレームを追加します。

   **[名前]** に **DbUser** と入力します。

   [**Namespace**] に **https://redshift.amazon.com/SAML/Attributes** と入力します。

   **[出典]** で、**[属性]** を選択します。

   **出典属性**で、**user.userprincipalname**を選択します。次に、**[保存]** を選択します。

1. **\$1 新しいクレームの追加** を選択して、AutoCreate のクレームを追加します。

   **[名前]** に **AutoCreate** と入力します。

   [**Namespace**] に **https://redshift.amazon.com/SAML/Attributes** と入力します。

   **[出典]** で、**[属性]** を選択します。

   **出典属性**で、**true**を選択します。次に、**[保存]** を選択します。

   ここで、`123456789012` は AWS アカウント、*`AzureSSO`* はユーザーが作成した IAM ロール、*`AzureADProvider`* は IAM プロバイダーです。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/setup-identity-provider-azure.html)

1. **アプリの登録 > ***your-application-name*** > 認証**で、**モバイルとデスクトップアプリケーション**を追加します。URL を http://localhost/redshift と指定します。

1. **証明書の SAML 署名** セクションで **ダウンロード** を選択し、IAM SAMLアイデンティティプロバイダーを作成するときに使用するフェデレーションメタデータ XML ファイルをダウンロードして保存します。このファイルは、シングルサインオンアイデンティティの作成に使用されます。

1. IAM コンソールで、IAM SAML アイデンティティプロバイダーを作成します。指定したメタデータドキュメントは、Azure エンタープライズアプリケーションの設定時に保存したフェデレーションメタデータ XML ファイルです。詳細なステップついては *IAM ユーザーガイド*の [IAMアイデンティティプロバイダー (コンソール) の作成と管理](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 ユーザーガイド」**の「[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 ユーザーガイド」**の「[IAM ポリシーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)」を参照してください。

   環境に合わせて次のポリシー (JSON 形式) を変更します。
   + クラスターの AWS リージョンを `us-west-1`に置き換えます。
   + AWS アカウントを *`123456789012`*に置き換えます。
   + クラスター識別子 (またはすべてのクラスターの `*`) を *`cluster-identifier`*に置き換えます。
   + データベース (またはすべてのクラスターの `*`) を *`dev`*に置き換えます。
   + IAM ロールの一意の識別子を *`AROAJ2UCCR6DPCEXAMPLE`*に置き換えます。
   + テナントまたは会社の E メールドメインを `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` 値に一致するユーザーのみが接続できます。
   + 条件句は、特定のユーザーだけが強制的に一時認証情報を取得します。これらのユーザーは、会社の E メールドメインの E メールアドレスで識別される IAM アカウントのロール固有 ID *`AROAJ2UCCR6DPCEXAMPLE`* で指定されたロールのユーザーです。固有 ID の詳細については、*IAM ユーザーガイド*の [固有 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) を参照してください。

     IdP (この場合は Azure AD) を使用したセットアップによって、条件句の記述方法が決まります。従業員の E メールが `johndoe@example.com` の場合は、まず、`${redshift:DbUser}` を従業員のユーザー名 `johndoe`に一致するスーパーフィールドに設定します。次に、この条件を機能させるため、AWS SAML `RoleSessionName` フィールドを従業員の E メール `johndoe@example.com`に一致するスーパーフィールドに設定します。このアプローチを使用する場合は、以下の点を考慮します。
     + `${redshift:DbUser}` を従業員の E メールに設定した場合は、例の JSON の `@example.com` を削除して、`RoleSessionName`に一致させます。
     + 従業員のユーザー名だけ `RoleSessionId` に設定した場合は、例の `@example.com` を削除して`RoleSessionName`と一致させます。
     + 例の JSON では、`${redshift:DbUser}` と `RoleSessionName` の両方が従業員の E メールに設定されます。この例では、JSONで Amazon Redshift データベースのユーザー名 `@example.com` を使用して、クラスターにアクセスするためにユーザーをサインインします。
   + 2 番目のセクションでは、指定したクラスターに `dbuser` 名を作成する権限を付与します。この例の JSON では、作成を `${redshift:DbUser}` に制限しています。
   + 3 番目のセクションでは、どの `dbgroup` にユーザーが参加できるかを指定する権限を付与します。この例の JSON では、ユーザーは指定したクラスターの `my_dbgroup` グループに参加できます。
   + 4 番目のセクションでは、ユーザーがすべてのリソースに対して実行できるアクションへのアクセス許可を付与します。この例の 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 シングルサインオンを使用して JDBC 経由でクラスターに接続するようにデータベースクライアントを構成します。

  JDBC ドライバーを使用する任意のクライアントを使用して Azure AD シングルサインオンを使用して接続、または 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 を起動します。 **接続プロファイルの選択** ページで、**AzureAuth**という **プロファイルグループ** を追加します。

  1. **接続プロファイル**には、**Azure**と入力します。

  1. **[ドライバの管理]** を選択し、**[Amazon Redshift]** を選択します。**[フォルダを開く]** アイコン、**[ライブラリ]** を選択し、適切な JDBC .jar ファイルを選択します。

  1. **接続プロファイルの選択**ページで、次のように接続プロファイルに情報を追加します。
     + **ユーザー**には、マイクロソフトの Azure ユーザー名を入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているマイクロソフトの Azure アカウントのユーザー名です。
     + **パスワード**には、マイクロソフトの Azure のパスワードを入力します。
     + **[ドライバ]** では、**[Amazon Redshift (com.amazon.redshift.jdbc.Driver)]** を選択します。
     + **[URL]** には、**jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name*** と入力します。

  1. **拡張されたプロパティ** を選択して、次のように接続プロパティに情報を追加します。

     Azure AD シングルサインオン設定の場合は、次のように追加情報を追加します。
     + **plugin\$1name** には、**com.amazon.redshift.plugin.AzureCredentialsProvider** と入力します。この値は、認証方法として Azure 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 アプリケーションのクライアントシークレットです。これは、ccom.amazon.redshift.plugin.AzureCredentialsProvider プラグインにのみ適用されます。
     + **[client\$1id]** には、***your-azure-redshift-application-client-id*** と入力します。Microsoft Azure AD のみに使用されます。これは、Azure シングルサインオン設定をセットアップするときに作成した Amazon Redshift アプリケーションのクライアント ID (ハイフン付き) です。

     MFA 設置を使用した Azure AD シングルサインオンの場合は、次のように接続プロパティに情報を追加します。
     + **[plugin\$1name]** には、**com.amazon.redshift.plugin.BrowserAzureCredentialsProvider** と入力します。この値は、認証方法として MFA と Azure シングルサインオンを使用するようドライバに指定します。
     + **[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 シングルサインオン設定をセットアップするときに作成した 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 シングルサインオンを使用して ODBC 経由でクラスターに接続するようにデータベースクライアントを構成します。

  Amazon Redshift には Linux、Windows、macOS オペレーティングシステム用の ODBC ドライバが用意されています。ODBC ドライバをインストールする前に、SQL クライアントツールが 32 ビットであるか 64 ビットであるかを調べます。SQL クライアントツールの要件と一致する ODBC ドライバをインストールします。

  Windows の場合、**Amazon Redshift ODBC ドライバ DSN セットアップ** ページの **[接続設定]** で、次の情報を入力します。
  + **[データソース名]** には、***your-DSN*** と入力します。ODBC プロファイル名として使用するデータソース名を指定します。
  + Azure AD シングルサインオン設定の **Auth type** には、**Identity Provider: Azure AD** を選択します。これは、ODBC ドライバが Azure シングルサインオンを使用した認証に使用する認証方法です。
  + MFA設定の Azure AD シングルサインオンの **Auth type** には、**Identity Provider: Browser Azure AD** を選択します。これは、ODBC ドライバが MFA と Azure シングルサインオンを使用した認証に使用する認証方法です。
  + **[クラスター ID]** には、***your-cluster-identifier*** と入力します。
  + **[リージョン]** には、***your-cluster-region*** と入力します。
  + **[データベース]** には、***your-database-name*** と入力します。
  + **[ユーザー]** には、***your-azure-username*** と入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているマイクロソフトの Azure アカウントのユーザー名です。これは、**Auth Type** が **アイデンティティプロバイダー: Azure AD** のみに使用します。
  + **[パスワード]** には、***your-azure-password*** と入力します。これは、**Auth Type** が **アイデンティティプロバイダー: Azure AD**のみに使用します。
  + **IdP Tenant**には、***your-idp-tenant***と入力します。これは、IdP (Azure) で設定されている会社のテナント名です。この値は、テナント名またはハイフン付きのテナント固有 ID のいずれかになります。
  + **Azure Client Secret**には、***your-azure-redshift-application-client-secret***と入力します。これは、Azure シングルサインオン設定をセットアップするときに作成した Amazon Redshift アプリケーションのクライアントの秘密です。
  + **Azure Client ID**には、***your-azure-redshift-application-client-id***と入力します。これは、Azure シングルサインオン設定をセットアップするときに作成した Amazon Redshift アプリケーションのクライアント ID (ハイフン付き) です。
  + **[Listen Port]** には、***your-listen-port*** と入力します。これは、ローカルサーバーがリッスンしているデフォルトのリッスンポートです。デフォルト値は 7890 です。これは、ブラウザ Azure AD プラグインのみに適用されます。
  + **[応答タイムアウト]** には、***the-number-of-seconds*** と入力します。IdP サーバーが応答を返すときにタイムアウトするまで待機する秒数です。最小秒数は 10 である必要があります。接続を確立するときにこのしきい値よりも時間がかかると、接続は中止されます。これは、ブラウザ Azure AD プラグインのみに適用されます。

  macOS および Linux では、次のように `odbc.ini` ファイルを編集します。
**注記**  
すべてのエントリでは、大文字と小文字は区別されません。
  + **[clusterid]** には、***your-cluster-identifier*** と入力します。これは、作成された Amazon Redshift クラスターの名前です。
  + **[リージョン]** には、***your-cluster-region*** と入力します。これは、作成された Amazon Redshift クラスターの AWS リージョンです。
  + **[データベース]** には、***your-database-name*** と入力します。これは、Amazon Redshift クラスター上でアクセスしようとしているデータベースの名前です。
  + **[ロケール]** には、**en-us** と入力します。これは、エラーメッセージが表示される言語です。
  + **[iam]** には、**1** と入力します。この値は、IAM 認証情報を使用して認証するためにドライバに指定します。
  + Azure AD シングルサインオン設定の **plugin\$1name** には、**AzureAD** と入力します。これにより、認証方法として Azure シングルサインオンを使用するようドライバに指定します。
  + MFA 設定の Azure AD シングルサインオンの **plugin\$1name** には、**BrowserAzureAD** と入力します。これにより、認証方法として MFA と Azure Single Sign-On を使用するようドライバに指定します。
  + **[uid]** には、***your-azure-username*** と入力します。これは、認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用している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 シングルサインオン設定をセットアップするときに作成した Amazon Redshift アプリケーションのクライアントの秘密です。
  + **[client\$1id]** には、***your-azure-redshift-application-client-id*** と入力します。これは、Azure シングルサインオン設定をセットアップするときに作成した 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 を使用したシングルサインオンのセットアップ** ページに移動します。次に、**返信 URL** が http://localhost/redshift/ に設定されていることを確認します。
+ IdP テナントエラーが発生した場合は、**IdP テナント** 名が、Microsoft Azure で Active Directory をセットアップするために最初に使用したドメイン名と一致することを確認します。

  Windows の場合、**接続の設定** の セクション **Amazon Redshift ODBC DSN セットアップ**ページに移動します。次に、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 ポータルでアプリケーションの **アプリ登録** ページに移動します。次に、**認証** に移動し、リダイレクト URI として http://localhost/redshift/ を使用するように **モバイルとデスクトップアプリケーション** が構成されていることを確認します。

# Ping Identity
<a name="setup-identity-provider-ping"></a>

Amazon Redshift クラスターにアクセスするには、ID プロバイダー (IdP) として Ping Identity を使用できます。このチュートリアルでは、Ping Identity を ID プロバイダー (IdP) として使用して、Amazon Redshift クラスターにアクセスする方法を説明します。

## ステップ 1: Ping Identity と AWS アカウントを相互に信頼するように設定する
<a name="setup-identity-provider-ping-trust"></a>

以下の手順では、PingOne ポータルを使用して信頼関係を設定する方法を説明します。

**相互に信頼するように Ping ID と AWS アカウントを設定するには**

1. Ping Identity ユーザーが接続するための既存の Amazon Redshift クラスターを作成または使用します。接続を設定するには、クラスター識別子など、このクラスターの特定のプロパティが必要です。詳細については、「[クラスターの作成](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html)」を参照してください。

1. Amazon Redshift を新しい SAML アプリケーションとして PingOne ポータルに追加します。詳細な手順については、[Ping Identity のドキュメント](https://docs.pingidentity.com/)を参照してください。

   1. **マイアプリケーション**に移動します。

   1. **アプリケーションの追加**で、**新しい SAML アプリケーション**を選択します。

   1. **アプリケーション名**には **Amazon Redshift**と入力します。

   1. **プロトコルバージョン**には、**SAML v2.0**を選択します。

   1. **カテゴリ**には、***your-application-category***を選択します。

   1. **Assertion Consumer Service (ACS)**には、***your-redshift-local-host-url***と入力します。これは、SAML アサーションがリダイレクトするローカルホストとポートです。

   1. **エンティティ ID**には、`urn:amazon:webservices`と入力します。

   1. **[署名]** には、**[アサーションに署名]** を選択します。

   1. **SSO 属性マッピング** セクションで、次の表に示すように要求を作成します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/setup-identity-provider-ping.html)

1. **グループアクセス**で、必要に応じて次のグループアクセスを設定します。
   + **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. ブラウザ SAML プラグインのログイン URL として **Single Sign-On (SSO) 用 URL の初期化** を使用します。

1. IAM コンソールで、IAM SAML アイデンティティプロバイダーを作成します。指定したメタデータドキュメントは、Ping Identity のセットアップ時に保存したフェデレーションメタデータ XML ファイルです。詳細な手順については、「IAM ユーザーガイド」**の「[IAM ID プロバイダーを作成および管理する (コンソール)](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 ユーザーガイド」**の「[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 ユーザーガイド」**の「[IAM ポリシーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)」を参照してください。Azure AD の例については、「[JDBC または ODBC シングルサインオン認証の設定](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 シングルサインオンを使用して JDBC 経由でクラスターに接続するようにデータベースクライアントを設定します。

  JDBC ドライバーを使用する任意のクライアントを使用して Ping Identity シングルサインオンを使用して接続、または 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. [**Select Connection Profile**] ページで、[**Profile Group**] を追加します (例: **Ping**)。

  1. **[接続プロファイル]** に、***your-connection-profile-name*** と入力します (例: **Ping**)。

  1. [**Manage Drivers (ドライバーの管理)]** を選択し、[**Amazon Redshift**] を選択します。**[フォルダを開く]** アイコン、**[ライブラリ]** を選択し、適切な JDBC .jar ファイルを選択します。

  1. **接続プロファイルの選択**ページで、次のように接続プロファイルに情報を追加します。
     + **ユーザー**に、PingOne ユーザー名を入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用している PingOne アカウントのユーザー名です。
     + **パスワード**に、PingOne のパスワードを入力します。
     + **[ドライバ]** では、**[Amazon Redshift (com.amazon.redshift.jdbc.Driver)]** を選択します。
     + **[URL]** には、**jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name*** と入力します。

  1. **[拡張プロパティ]** を選択し、次のいずれかの操作を行います。
     + **[login\$1url]** には、***your-ping-sso-login-url*** と入力します。この値は、ログインするための認証としてシングルサインオンを使用する URL を指定します。
     + Ping Identity の場合は、**plugin\$1name**に **com.amazon.redshift.plugin.PingCredentialsProvider**と入力します。この値は、認証方法として Ping Identity シングルサインオンを使用するドライバーに指定します。
     + シングルサインオンを使用した Ping Identity の場合は、**plugin\$1name**に **com.amazon.redshift.plugin.BrowserSamlCredentialsProvider** と入力します。この値は、シングルサインオンを使用した Ping Identity PingOneを認証方法として使用するようにドライバーに指定します。

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

**Ping Identity への認証用に ODBC を設定するには**
+ Ping Identity PingOne シングルサインオンを使用して ODBC 経由でクラスターに接続するように、データベースクライアントを設定します。

  Amazon Redshift には Linux、Windows、macOS オペレーティングシステム用の ODBC ドライバが用意されています。ODBC ドライバをインストールする前に、SQL クライアントツールが 32 ビットであるか 64 ビットであるかを調べます。SQL クライアントツールの要件と一致する ODBC ドライバをインストールします。

  Windows の場合、**Amazon Redshift ODBC ドライバ DSN セットアップ** ページの **[接続設定]** で、次の情報を入力します。
  + **[データソース名]** には、***your-DSN*** と入力します。ODBC プロファイル名として使用するデータソース名を指定します。
  + **Auth type**で、以下のいずれかを実行します。
    + Ping Identity の設定で、**アイデンティティプロバイダー: Ping Federate**を選択します。これは、ODBC ドライバが Ping Identity シングルサインオンを使用して認証するために使用する認証方法です。
    + MFA を使用した Ping Identity PingOne シングルサインオンの設定で、**[Identity Provider: Browser SAML]** (ID プロバイダー: ブラウザ SAML) を選択します。これは、ODBC ドライバーがシングルサインオンを使用した Ping Identity で認証するために使用する認証方法です。
  + **[クラスター ID]** には、***your-cluster-identifier*** と入力します。
  + **[リージョン]** には、***your-cluster-region*** と入力します。
  + **[データベース]** には、***your-database-name*** と入力します。
  + **[ユーザー]** には、***your-ping-username*** と入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているマイクロソフトの PingOne アカウントのユーザー名です。これは、**Auth type** が **アイデンティティプロバイダー: PingFederate** である場合にのみ使用します。
  + **[パスワード]** には、***your-ping-password*** と入力します。これは、**Auth type** が **アイデンティティプロバイダー: PingFederate**である場合にのみ使用します。
  + **[Listen Port]** には、***your-listen-port*** と入力します。これは、ローカルサーバーがリッスンしているポートです。デフォルト値は 7890 です。これは、ブラウザの SAML プラグインにのみ適用されます。
  +  **[応答タイムアウト]** には、***the-number-of-seconds*** と入力します。IdP サーバーが応答を返すときにタイムアウトするまで待機する秒数です。最小秒数は 10 である必要があります。接続を確立するときにこのしきい値よりも時間がかかると、接続は中止されます。これは、ブラウザの SAML プラグインにのみ適用されます。
  + **ログイン URL**には、***your-login-url***と入力します。これは、ブラウザの SAML プラグインにのみ適用されます。

  macOS および Linux では、次のように `odbc.ini` ファイルを編集します。
**注記**  
すべてのエントリでは、大文字と小文字は区別されません。
  + **[clusterid]** には、***your-cluster-identifier*** と入力します。これは、作成された Amazon Redshift クラスターの名前です。
  + **[リージョン]** には、***your-cluster-region*** と入力します。これは、作成された Amazon Redshift クラスターの AWS リージョンです。
  + **[データベース]** には、***your-database-name*** と入力します。これは、Amazon Redshift クラスター上でアクセスしようとしているデータベースの名前です。
  + **[ロケール]** には、**en-us** と入力します。これは、エラーメッセージが表示される言語です。
  + **[iam]** には、**1** と入力します。この値は、IAM 認証情報を使用して認証するためにドライバに指定します。
  + [**plugin\$1name**] には、次のいずれかの操作を行います。
    + Ping Identity 設定の場合は、**BrowserSAML**を入力します。これは、ODBC ドライバが Ping Identity に対して認証するために使用する認証方法です。
    + シングルサインオン設定を使用した Ping Identity の場合は、**Ping** と入力します。これは、ODBC ドライバーがシングルサインオンを使用した Ping Identity で認証するために使用する認証方法です。
  + **[uid]** には、***your-ping-username*** と入力します。これは、認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているMicrosoft Azure アカウントのユーザー名です。これは、**plugin\$1name** が **Ping** である場合にのみ使用します。
  + **[pwd]** には、***your-ping-password*** と入力します。これは、**plugin\$1name** が **Ping**である場合にのみ使用します。
  + **[login\$1url]** には、***your-login-url*** と入力します。これは、SAML 応答を返すシングルサインオンの開始 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 を ID プロバイダー (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. Okta ポータルに新しいアプリケーションとして Amazon Redshift を追加します。詳細な手順については、[Okta のドキュメント](https://developer.okta.com/docs/)を参照してください。
   + **アプリケーションの追加**を選択します。
   + **アプリケーションの追加**で、**新しいアプリの作成**を選択します。
   + **新規追加のアプリケーション統合の作成** ページの **プラットフォーム**で、**ウェブ**を選択します。
   + **サインオンメソッド**で、**SAML v2.0**を選択します。
   + **一般設定** ページで、**アプリ名**に ***your-redshift-saml-sso-name***と入力します。これは、アプリケーションの名前です。
   + **SAML 設定** ページの **シングルサインオンの URL**に ***your-redshift-local-host-url***と入力します。これは、SAML アサーションがリダイレクトするローカルホストとポート (例: `http://localhost:7890/redshift/`) です。

1. **シングルサインオン URL** 値を **受取人URL** と **送信先 URL**として使用します。

1. **[署名]** には、**[アサーションに署名]** を選択します。

1. **対象 URI (SP エンティティ ID)**に、次の表に示すように、クレームに対して **urn:amazon:webservices** を入力します。

1. **[高度な設定]** セクションの **[SAML 発行者 ID]** に、**[セットアップ手順を表示]** セクションに表示されている ***your-Identity-Provider-Issuer-ID*** を入力します。

1. **属性ステートメント** セクションで、次の表に示すようにクレームを作成します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/setup-identity-provider-okta.html)

1. **App Embed Link** セクションで、ブラウザ SAML プラグインのログイン URL として使用できる URL を見つけます。

1. IAM コンソールで、IAM SAML アイデンティティプロバイダーを作成します。指定したメタデータドキュメントは、Okta の設定時に保存したフェデレーションメタデータ XML ファイルです。詳細な手順については、「IAM ユーザーガイド」**の「[IAM ID プロバイダーを作成および管理する (コンソール)](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 ユーザーガイド」**の「[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 ユーザーガイド」**の「[IAM ポリシーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)」を参照してください。Azure AD の例については、「[JDBC または ODBC シングルサインオン認証の設定](setup-azure-ad-identity-provider.md)」を参照してください。

## ステップ 2: Okta への認証用に JDBC または ODBC を設定する
<a name="setup-identity-provider-okta-auth"></a>

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

**Okta への認証用に JDBC を設定するには**
+ Okta シングルサインオンを使用して JDBC 経由でクラスターに接続するようにデータベースクライアントを構成します。

  JDBC ドライバーを使用する任意のクライアントを使用して Okta シングルサインオンを使用して接続、または 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. [**Select Connection Profile**] ページで、[**Profile Group**] を追加します (例: **Okta**)。

  1. **[接続プロファイル]** に、***your-connection-profile-name*** と入力します (例: **Okta**)。

  1. [**Manage Drivers (ドライバーの管理)]** を選択し、[**Amazon Redshift**] を選択します。**[フォルダを開く]** アイコン、**[ライブラリ]** を選択し、適切な JDBC .jar ファイルを選択します。

  1. **接続プロファイルの選択**ページで、次のように接続プロファイルに情報を追加します。
     + **ユーザー**には、Okta ユーザー名を入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用している Okta アカウントのユーザー名です。
     + **パスワード**には、Okta パスワードを入力します。
     + **[ドライバ]** では、**[Amazon Redshift (com.amazon.redshift.jdbc.Driver)]** を選択します。
     + **[URL]** には、**jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name*** と入力します。

  1. **[拡張プロパティ]** を選択し、次のいずれかの操作を行います。
     + **[login\$1url]** には、***your-okta-sso-login-url*** と入力します。この値は、Okta にログインするための認証としてシングルサインオンを使用する URL を指定します。
     + Okta シングルサインオンの場合は、**plugin\$1name** に **com.amazon.redshift.plugin.OktaCredentialsProvider** と入力します。この値は、認証方法として Okta シングルサインオンを使用するドライバーに指定します。
     + MFA を使用した Okta シングルサインオンの場合は、**plugin\$1name**に **com.amazon.redshift.plugin.BrowserSamlCredentialsProvider**と入力します。これにより、認証方法として MFA での Okta シングルサインオンを使用するようドライバーに指定します。

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

**Okta への認証用に ODBC を設定するには**
+ Okta シングルサインオンを使用して ODBC 経由でクラスターに接続するようにデータベースクライアントを構成します。

  Amazon Redshift には Linux、Windows、macOS オペレーティングシステム用の ODBC ドライバが用意されています。ODBC ドライバをインストールする前に、SQL クライアントツールが 32 ビットであるか 64 ビットであるかを調べます。SQL クライアントツールの要件と一致する ODBC ドライバをインストールします。

  Windows の場合、**Amazon Redshift ODBC ドライバ DSN セットアップ** ページの **[接続設定]** で、次の情報を入力します。
  + **[データソース名]** には、***your-DSN*** と入力します。ODBC プロファイル名として使用するデータソース名を指定します。
  + **Auth type** で、以下のいずれかを実行します。
    + Okta シングルサインオン設定の場合は、**Identity Provider: Okta** を選択します。これは、ODBC ドライバーが ODBC シングルサインオンを使用した認証に使用する認証方法です。
    + MFA 設定を使用した Okta シングルサインオンの場合は、**Identity Provider: Browser SAML** を選択します。これは、ODBC ドライバーが MFA での Okta シングルサインオンを使用した認証に使用する認証方法です。
  + **クラスター ID** には、***your-cluster-identifier*** と入力します。
  + **[リージョン]** には、***your-cluster-region*** と入力します。
  + **[データベース]** には、***your-database-name*** と入力します。
  + **[ユーザー]** には、***your-okta-username*** と入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているマイクロソフトの Okta アカウントのユーザー名です。[**Auth type**] が **Identity Provider: Okta** である場合にのみ使用します。
  + **[パスワード]** には、***your-okta-password*** と入力します。[**Auth type**] が **Identity Provider: Okta** である場合にのみ使用します。

  macOS と Linux では、次のように `odbc.ini` ファイルを編集します。
**注記**  
すべてのエントリでは、大文字と小文字は区別されません。
  + **[clusterid]** には、***your-cluster-identifier*** と入力します。これは、作成された Amazon Redshift クラスターの名前です。
  + **[リージョン]** には、***your-cluster-region*** と入力します。これは、作成された Amazon Redshift クラスターの AWS リージョンです。
  + **[データベース]** には、***your-database-name*** と入力します。これは、Amazon Redshift クラスター上でアクセスしようとしているデータベースの名前です。
  + **[ロケール]** には、**en-us** と入力します。これは、エラーメッセージが表示される言語です。
  + **[iam]** には、**1** と入力します。この値は、IAM 認証情報を使用して認証するためにドライバに指定します。
  + **plugin\$1name** には、次のいずれかの操作を行います。
    + MFA 設定を使用した Okta シングルサインオンの場合は、**BrowserSAML** と入力します。これは、ODBC ドライバーが MFA での Azure シングルサインオンを使用した認証に使用する認証方法です。
    + Okta シングルサインオン設定の場合は、**Okta** と入力します。これは、ODBC ドライバーが ODBC シングルサインオンを使用した認証に使用する認証方法です。
  + **[uid]** には、***your-okta-username*** と入力します。これは、認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用している Okta アカウントのユーザー名です。これは、[**plugin\$1name**] が **Okta**である場合にのみ使用します。
  + **[pwd]** には、***your-okta-password*** と入力します。これは、[**plugin\$1name**] が **Okta**である場合にのみ使用します。
  + **[login\$1url]** には、***your-login-url*** と入力します。これは、SAML 応答を返すシングルサインオンの開始 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
  ```

------