

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

# 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\_name]** には、**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\_name** には、次のいずれかの操作を行います。
    + MFA 設定を使用した AD FS シングルサインオンの場合は、**BrowserSAML** と入力します。これは、ODBC ドライバが AD FS への認証に使用する認証方法です。
    + AD FS シングルサインオン設定の場合は、**ADFS** と入力します。これは、ODBC ドライバが Azure AD シングルサインオンを使用した認証に使用する認証方法です。
  + **[uid]** には、**{{your-adfs-username}}** と入力します。これは、認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているMicrosoft Azure アカウントのユーザー名です。これは、**plugin\_name** が **ADFS** である場合にのみ使用します。
  + **[pwd]** には、**{{your-adfs-password}}** と入力します。これは、**plugin\_name** が **ADFS**である場合にのみ使用します。

  macOS と Linux では、プロファイル設定を編集して、次のエクスポートも追加できます。

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

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

------