AD FS - Amazon Redshift

AD FS

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

ステップ 1: AD FS と AWS アカウントを相互に信頼するように設定する

以下の手順では、信頼関係を設定する方法を説明します。

  1. AD FS ユーザーが接続するための既存の Amazon Redshift クラスターを作成または使用します。接続を設定するには、クラスター識別子など、このクラスターの特定のプロパティが必要です。詳細については、「クラスターの作成」を参照してください。

  2. Microsoft マネジメントコンソールで Amazon Redshift アクセスを制御するために AD FS を設定します。

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

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

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

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

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

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

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

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

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

    10. クレームルールテンプレートで、受信クレームの変換を選択し、ルールの編集 – NameIdページで、次の操作を行います。

      • クレームルール名NameIdを入力します。

      • 受信クレーム名で、Windows アカウント名を選択します。

      • 発信クレーム名で、名前 IDを選択します。

      • 発信者名 ID フォームで、永続的識別子を選択します。

      • すべてのクレーム値を通過を選択します。

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

    12. ルールの設定 ページで、次の手順を実行します。

      • クレームルール名に、RoleSessionNameと入力します。

      • 属性を保存するアクティブディレクトリを選択します。

      • LDAP 属性E-Mail-Addressesを選択します。

      • 送信クレームタイプhttps://aws.amazon.com/SAML/Attributes/RoleSessionNameを選択します。

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

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

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

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

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

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

      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 です。

  3. federationmetadata.xml ファイルをダウンロードしたことを確認します。ドキュメントの内容に無効な文字が含まれていないことを確認してください。これは、AWSとの信頼関係を設定する際に使用するメタデータファイルです。

  4. IAM コンソールで、IAM SAML アイデンティティプロバイダーを作成します。指定したメタデータドキュメントは、Azure エンタープライズアプリケーションの設定時に保存したフェデレーションメタデータ XML ファイルです。詳細な手順については、「IAM ユーザーガイド」の「IAM ID プロバイダーを作成および管理する (コンソール)」を参照してください。

  5. IAM コンソールで、SAML 2.0 フェデレーション用の IAM ロールを作成します。詳細なステップについては、「IAM ユーザーガイド」の「SAML 用のロールの作成」を参照してください。

  6. IAM コンソールで SAML 2.0 フェデレーション用に作成した IAM ロールにアタッチできる IAM ポリシーを作成します。詳細な手順については、「IAM ユーザーガイド」の「IAM ポリシーの作成 (コンソール)」を参照してください。Azure AD の例については、「JDBC または ODBC シングルサインオン認証の設定」を参照してください。

ステップ 2: AD FS への認証用に JDBC または ODBC を設定する

JDBC

以下の手順では、AD FS と JDBC の関係を設定する方法を説明します。

  • AD FS シングルサインオンを使用して JDBC 経由でクラスターに接続するようにデータベースクライアントを構成します。

    JDBC ドライバーを使用する任意のクライアントを使用して AD FS シングルサインオンを使用して接続、または Java などの言語を使用してスクリプトを使用して接続することもできます。インストールおよび設定の詳細については、「Amazon Redshift での JDBC ドライバーのバージョン 2.1 による接続の構成」を参照してください。

    たとえば、SQLWorkbench/J をクライアントとして使用できます。SQLWorkbench/J を設定する場合、データベースの URL は次の形式を使用します。

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

    SQLWorkbench/J をクライアントとして使用する場合は、次の手順を実行します。

    1. 接続プロファイルの選択 ページで、プロファイルグループを追加します (例: ADFS)。

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

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

    4. 接続プロファイルの選択ページで、次のように接続プロファイルに情報を追加します。

      • ユーザーには、AD FS ユーザー名を入力します。これは、使用認証しようとしているクラスターに対するアクセス許可を持つ、シングルサインオンに使用しているアカウントのユーザー名です。

      • パスワードには、AD FS パスワードを入力します。

      • [ドライバ] では、[Amazon Redshift (com.amazon.redshift.jdbc.Driver)] を選択します。

      • [URL] には、jdbc:redshift:iam://your-cluster-identifier:your-cluster-region/your-database-name と入力します。

    5. 拡張プロパティを選択します。[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 typeID プロバイダー: SAML である場合にのみ使用します。

    • [パスワード] には、your-adfs-password と入力します。Auth typeID プロバイダー: 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_nameADFS である場合にのみ使用します。

    • [pwd] には、your-adfs-password と入力します。これは、plugin_nameADFSである場合にのみ使用します。

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

    export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
    export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini