ODBC クライアントを使用して Microsoft AD FS ユーザーに Amazon Athena へのフェデレーテッドアクセスを設定する - Amazon Athena

ODBC クライアントを使用して Microsoft AD FS ユーザーに Amazon Athena へのフェデレーテッドアクセスを設定する

ODBC クライアントを使用して Microsoft Active Directory フェデレーションサービス (AD FS) ユーザーに Amazon Athena へのフェデレーテッドアクセスをセットアップするには、まず AD FS と AWS アカウントとの間に信頼を確立します。この信頼性が確立されると、AD ユーザーは AD 認証情報を使用して AWS へフェデレーションを行い、AWS Identity and Access Management (IAM) ロールのアクセス許可を引き継ぎ、Athena API などの AWS リソースにアクセスできるようになります。

この信頼を作成するには、SAML プロバイダとして AD FS を AWS アカウント に追加し、フェデレーションユーザーが推定できる IAM ロールを作成します。AD FS 側では、証明書利用者として AWS を追加し、認証用 (具体的には Athena と Amazon S3) に適切なユーザー属性を AWS に送信する SAML クレームルールを作成します。

Athena への AD FS アクセスを設定するには、主に次の手順が必要です。

1. IAM SAML プロバイダとロールのセットアップ

2. AD FS の設定

3. Active Directory ユーザーとグループの作成

4. Athena への AD FS ODBC 接続を設定する

1. IAM SAML プロバイダとロールのセットアップ

このセクションでは、AD FS を SAML プロバイダとして AWS アカウントに追加し、フェデレーションユーザーが推定できる IAM ロールを作成します。

SAML プロバイダをセットアップするには
  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[Identity providers (ID プロバイダ)] を選択します。

  3. [プロバイダーを追加] をクリックします。

  4. [プロバイダのタイプ] では [SAML] を選択します。

    SAML を選択します。
  5. [プロバイダ名] では adfs-saml-provider を入力します。

  6. ブラウザで、次のアドレスを入力して、AD FS サーバーのフェデレーション XML ファイルをダウンロードします。この手順を実行するには、ブラウザが AD FS サーバーにアクセスできる必要があります。

    https://adfs-server-name/federationmetadata/2007-06/federationmetadata.xml
  7. IAM コンソールの [Metadata document] (メタデータドキュメント) で、[Choose file] (ファイルを選択) を選択し、フェデレーションメタデータファイルを AWS にアップロードします。

  8. 終了するには、[Add provider] (プロバイダを追加) を選択します。

次に、フェデレーションユーザーが設定できる IAM ロールを作成します。

フェデレーションユーザーに IAM ロールを作成するには
  1. IAM コンソールのナビゲーションペインで、[Roles] (ロール) を選択します。

  2. [ロールの作成] を選択します。

  3. [Trusted entity type] (信頼されたエンティティのタイプ) で、[SAML 2.0 Federation] (SAML 2.0 フェデレーション) を選択します。

  4. [SAML 2.0-based provider] (SAML 2.0 ベースのプロバイダ) の場合は、作成した [adfs-saml-provider] プロバイダを選択します。

  5. [プログラムと AWS 管理コンソールへのアクセスを許可する] 〉 [次へ] の順に選択します。

    信頼できるエンティティタイプとして SAML を選択します。
  6. [Add permissions] (アクセス許可の追加) ページで、このロールに必要な IAM のアクセス許可ポリシーをフィルタリングし、対応するチェックボックスを選択します。このチュートリアルでは、AmazonAthenaFullAccess および AmazonS3FullAccess ポリシーをアタッチします。

    Athena のフルアクセスポリシーをロールにアタッチします。
    Amazon S3 フルアクセスポリシーをロールにアタッチします。
  7. [Next] を選択します。

  8. [Name, review, and create] (名前、確認、および作成) ページの [Role name] (ロール名) に、ロールの名前を入力します。このチュートリアルでは、[adfs-data-access] という名前を使用します。

    [Step 1: Select trusted entities] (ステップ 1: 信頼できるエンティティを選択する) では、[Principal] (プリンシパル) フィールドは自動的に "Federated:" "arn:aws:iam::account_id:saml-provider/adfs-saml-provider" に設定されます。Condition フィールドには "SAML:aud""https://signin.aws.amazon.com/saml" を含める必要があります。

    信頼できるエンティティ JSON。

    [Step 2: Add permissions] (ステップ 2: アクセス許可の追加) には、ロールにアタッチしたポリシーが表示されます。

    ロールにアタッチされたポリシーの一覧表示。
  9. [ロールの作成] を選択します。ロールの作成を確認するバナーメッセージが表示されます。

  10. [Roles] (ロール) ページで、作成したロールを選択します。ロールの概要ページには、アタッチされているポリシーが表示されます。

    ロールの概要ページ。

2. AD FS の設定

これで、証明書利用者として AWS を追加して SAML クレームルールを作成する準備が整い、認証用に適切なユーザー属性を AWS に送信できるようになります。

SAML ベースのフェデレーションには、IdP (Active Directory) と、IdP からの認証を使用するサービスまたはアプリケーションである証明書利用者 (AWS) の 2 人の参加者がいます。

AD FS を設定するには、まず証明書利用者の信頼を追加し、次に証明書利用者の SAML クレームルールを設定します。AD FS はクレームルールを使用して SAML アサーションを作成し、証明書利用者に送信します。SAML アサーションには、AD ユーザーに関する情報が真実であり、ユーザーが認証されていることが記載されています。

証明書利用者の信頼を追加する

AD FS に証明書利用者の信頼を追加するには、AD FS サーバーマネージャーを使用します。

AD FS で証明書利用者の信頼を追加する
  1. AD FS サーバーにサインインします。

  2. [Start] (スタート) メニューで、[Server Manager] (サーバーマネージャー) を開きます。

  3. [Tools] (ツール) を選択し、[AD FS Management] (AD FS 管理) を選択します。

    [Tools] (ツール)、[AD FS Management] (AD FS 管理) を選択します。
  4. ナビゲーションペインの [Trust Relationships] (信頼関係) で、[Relying Party Trusts] (証明書利用者の信頼) を選択します。

  5. [Actions] (アクション) で、[Add Relying Party Trust] (証明書利用者の信頼を追加) を選択します。

    [Add Relying Party Trust] (証明書利用者の信頼を追加) を選択します。
  6. 証明書利用者信頼の追加ウィザード ページで、開始を選択します。

    [開始] を選択します。
  7. [Select Data Source] (データソースを選択) ページで、[Import data about the relying party published online or on a local network] (オンラインまたはローカル ネットワークで公開されている証明書利用者に関するデータをインポート) を選択します。

  8. [Federation metadata address (host name or URL)] (フェデレーションメタデータアドレス (ホスト名または URL)) に、URL https://signin.aws.amazon.com/static/saml-metadata.xml を入力します。

  9. [Next] を選択します。

    データソースの設定。
  10. [Specify Display Name] (表示名の指定) ページの [Display name] (表示名) に、証明書利用者の表示名を入力し、[Next] (次へ) を選択します。

    証明書利用者の表示名を入力します。
  11. このチュートリアルでは、[Configure Multi-factor Authentication Now] (多要素認証を今すぐ設定) ページで、[I do not want to configure multi-factor authentication for this relying party trust at this time] (現時点ではこの依存パーティの信頼に多要素認証を設定しない) を選択します。

    セキュリティを向上させるには、多要素認証を設定して AWS リソースを保護することを推奨します。サンプルデータセットを使用しているため、このチュートリアルでは多要素認証を有効にしていません。

    多要素認証の設定。
  12. [Next] を選択します。

  13. [Choose Issuance Authorization Rules] (発行承認ルールの選択) ページで、[Permit all users to access this relying party] (この証明書利用者へのアクセスをすべてのユーザーに許可) を選択します。

    このオプションを使用すると、AWS で Active Directory 内のすべてのユーザーが AD FS を証明書利用者として使用できます。セキュリティ要件を考慮して、この設定を適宜調整します。

    証明書利用者へのユーザーアクセスを設定します。
  14. [Next] を選択します。

  15. [Ready to Add Trust] (信頼を追加する準備完了) ページで、[Next] (次へ) を選択して証明書利用者の信頼を AD FS 設定データベースに追加します。

    [Next] を選択します。
  16. [Finish] (終了) ページで、[Close] (閉じる) を選択します。

    [閉じる] を選択します。

証明書利用者向け SAML クレームルールの設定

このタスクでは、クレームルールを 2 セット作成します。

最初のセットであるルール 1~4 には、AD グループメンバーシップに基づいて IAM ロールを設定するために必要な AD FS クレームルールが含まれています。これらは、AWS Management Console へのフェデレーションアクセスを確立する場合に作成するのと同じルールです。

2 番目のセットであるルール 5~6 は、Athena のアクセス制御に必要なクレームルールです。

AD FS クレームルールを作成するには
  1. AD FS 管理コンソールのナビゲーションペインで、[Trust Relationships] (信頼関係)、[Relying Party Trusts] (証明書利用者の信頼) を選択します。

  2. 以前のセクションで作成した証明書利用者を検索します。

  3. 証明書利用者を右クリックして [Edit Claim Rules] (クレームルールを編集) を選択するか、[Actions] (アクション) メニューから [Edit Claim Rules] (クレームルールを編集) を選択します。

    [Edit Claim Rules] (クレームルールの編集) を選択します。
  4. ルールの追加] を選択します。

  5. 変換要求規則の追加ウィザードの [Configure Rule] (ルールの設定) ページで、次の情報を入力してクレームルール 1 を作成し、[Finish] (完了) を選択します。

    • [Claim Rule name] (クレームルール名) に NameID を入力します。

    • [Rule template] (ルールテンプレート) には、[Transform an Incoming Claim] (受信クレームの変換) を使用してください。

    • [Incoming claim type] (受信クレーム型) で、[Windows account name] (Windows アカウント名) を選択します。

    • [Outgoing claim type] (発信クレーム型) で、[Name ID] (名前 ID) を選択します。

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

    • [Pass through all claim values] (すべてのクレーム値を通過) を選択します。

    最初のクレームルールを作成します。
  6. [Add Rule] (ルールを追加) を選択し、次の情報を入力してクレームルール 2 を作成し、[Finish] (完了) を選択します。

    • [Claim rule name] (クレームルール名) に RoleSessionName を入力します。

    • [Rule template] (ルールテンプレート) には、[Send LDAP Attribute as Claims] (LDAP 属性をクレームとして送信) を使用してください。

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

    • [Mapping of LDAP attributes to outgoing claim types] (LDAP 属性を送信クレームタイプにマッピング) には、属性 E-Mail-Addresses を追加します。[Outgoing Claim Type] (送信クレーム型) には、 https://aws.amazon.com/SAML/Attributes/RoleSessionName を入力します。

    2 番目のクレームルールを作成します。
  7. [Add Rule] (ルールを追加) を選択し、次の情報を入力してクレームルール 3 を作成し、[Finish] (完了) を選択します。

    • [Claim rule name] (クレームルール名) に Get AD Groups を入力します。

    • [Rule template] (ルールテンプレート) には、[Send Claims Using a Custom Rule] (カスタムルールを使用してクレームを送信) を使用してください。

    • [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);
      3 番目のクレームルールを作成します。
  8. ルールの追加] を選択します。次の情報を入力してクレームルール 4 を作成し、[Finish] (完了) を選択します。

    • [Claim rule name] (クレームルール名) に Role を入力します。

    • [Rule template] (ルールテンプレート) には、[Send Claims Using a Custom Rule] (カスタムルールを使用してクレームを送信) を使用してください。

    • [Custom rule] (カスタムルール) には、アカウント番号と以前に作成した SAML プロバイダの名前を含む次のコードを入力します。

      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::AWS_ACCOUNT_NUMBER:saml-provider/adfs-saml-provider,arn:aws:iam:: AWS_ACCOUNT_NUMBER:role/"));
    4 番目のクレームルールを作成します。

3. Active Directory ユーザーとグループの作成

これで、Athena にアクセスする AD ユーザーと、そのユーザーを配置する AD グループを作成して、グループごとにアクセスレベルを制御できる準備ができました。データアクセスのパターンを分類する AD グループを作成後、ユーザーをそれらのグループに追加します。

Athena へアクセスするための AD ユーザーを作成するには
  1. サーバーマネージャーダッシュボードで、[Tools] (ツール) を選択し、次に [Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) を選択します。

    [Tools] (ツール)、[Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) を選択します。
  2. ナビゲーションペインで [Users (ユーザー)] を選択します。

  3. [Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) のツールバーで、[Create user] (ユーザーの作成) オプションを選択します。

    [ユーザーの作成] を選択します。
  4. [New Object - User] (新規オブジェクト - ユーザー) ダイアログボックスの [First name] (名)、[Last name] (姓)、[Full name] (フルネーム) には名前を入力します。このチュートリアルでは、Jane Doe を使用します。

    ユーザー名を入力します。
  5. [Next] を選択します。

  6. [Password] (パスワード) には、パスワードを入力し、確認のため再入力します。

    わかりやすくするために、このチュートリアルでは、[User must change password at next sign on] (ユーザーは次のサインオン時にパスワードを変更する必要がある) を選択解除しています。実際のシナリオでは、新しく作成したユーザーにはパスワードの変更を要求する必要があります。

    パスワードを入力します。
  7. [Next] を選択します。

  8. [Finish] を選択します。

    [Finish] を選択します。
  9. [Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) で、[user name] (ユーザー名) を選択します。

  10. ユーザーの [Properties] (プロパティ) ダイアログボックスの [E-mail] (メール) に、メールアドレスを入力します。このチュートリアルでは、jane@example.com を使用します。

    メールアドレスを入力します。
  11. [OK] を選択します。

データアクセスパターンを表す AD グループを作成する

メンバーが AWS にログインしたときに adfs-data-access IAM ロールを設定する AD グループを作成できます。次の例では、aws-adfs-data-access という名前の AD グループを作成します。

AD グループを作成するには
  1. サーバーマネージャーダッシュボードの [Tools] (ツール) メニューで、[Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) を選択します。

  2. ツールバーで、[Create new group] (新規グループを作成) オプションを選択します。

    [Create New Group] (新しいグループの作成) を選択します。
  3. [New Object - Group] (新しいオブジェクト - グループ) ダイアログボックスで、次の情報を入力します。

    • [Group name] (グループ名) に、「aws-adfs-data-access」と入力します。

    • [Group scope] (グループスコープ) には、[Global] (グローバル) を選択します。

    • [Group type] (グループタイプ) には、[Security] (セキュリティ) を選択します。

    AD でグローバルセキュリティグループを作成します。
  4. [OK] を選択します。

AD ユーザーを適切なグループに追加する

AD ユーザーと AD グループの両方を作成したため、ユーザーをグループに追加できるようになりました。

AD グループに AD ユーザーを追加するには
  1. サーバーマネージャーダッシュボードで、[Tools] (ツール) メニューで、[Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) を選択します。

  2. [First name] (ファーストネーム) と [Last name] (ラストネーム) には、[user] (ユーザー) ([Jane Doe] など) を選択します。

  3. ユーザーの [Properties] (プロパティ) ダイアログボックスの [Member Of] (メンバー) タブで、[Add] (追加) を選択します。

    追加] を選択します。
  4. 要件に応じて、1 つ以上の AD FS グループを追加します。このチュートリアルでは、[aws-adfs-data-access] グループを追加します。

  5. [Select Groups] (グループの選択) ダイアログボックスの [Enter the object names to select] (選択するオブジェクト名を入力) に、作成した AD FS グループの名前 (例: aws-adfs-data-access) を入力し、[Check Names] (名前の確認) を選択します。

    [Check Names] (名前の確認) を選択します。
  6. [OK] を選択します。

    ユーザーの [Properties] (プロパティ) ダイアログボックスの [Member of] (メンバー) リストに AD グループの名前が表示されます。

    AD グループがユーザープロパティに追加されました。
  7. [Apply] (適用)、[OK] の順に選択します。

4. Athena への AD FS ODBC 接続を設定する

AD のユーザーとグループを作成すると、Windows で ODBC データソースプログラムを使用して、AD FS 用の Athena ODBC 接続を設定する準備が整います。

AD FS ODBC による Athena への接続を設定するには
  1. Athena 用の ODBC ドライバーをインストールします。ダウンロードリンクについては、「ODBC を使用した Amazon Athena への接続」(ODBC を使用して Amazon Athena に接続する) を参照してください。

  2. Windows で、[Start] (開始)、[ODBC Data Sources] (ODBC データソース) を選択します。

  3. [ODBC Data Source Administrator] (ODBC データソースの管理者) プログラムで、[Add] (追加) をクリックします。

    [Add] (追加) を選択して、ODBC データソースを追加します。
  4. [Create New Data Source] (新しいデータソースの作成) ダイアログボックスで、[Simba Athena ODBC Driver] (Simba Athena ODBC ドライバー) を選択し、[Finish] (完了) を選択します。

    [Simba Athena ODBC Driver] (Simba Athena ODBC ドライバー) を選択します。
  5. [Simba Athena ODBC Driver DSN Setup] (Simba Athena ODBC ドライバーの DSN 設定) ダイアログで、以下の値を入力します。

    • [Data Source Name] (データソース名) に、使用するデータソースの名前 (例えば、 Athena-odbc-test) を入力します。

    • [Description] (説明) に、データソースの説明を入力します。

    • [AWS リージョン] には、使用している AWS リージョン (例: us-west-1) を入力します

    • [S3 Output Location] (S3 出力場所) には、出力を保存する先の Amazon S3 パスを入力します。

    [Simba Athena ODBC Driver DSN Setup] (Simba Athena ODBC ドライバーの DSN 設定) には値を入力します。
  6. [Authentication Options] (認証オプション) をクリックします。

  7. [Authentication Options] (認証オプション) ダイアログボックスで、以下の値を指定します。

    • [Authentication Type] (認証タイプ) で、[ADFS] を選択します。

    • [User] (ユーザー) には、ユーザーのメールアドレス (例: jane@example.com) を入力します。

    • [Password] (パスワード) には、ユーザーの ADFS パスワードを入力します。

    • [IdP Host] (IdP ホスト) には、AD FS サーバー名 (例: adfs.example.com) を入力します。

    • [IdP Host] (IdP ポート) には、デフォルト値の [443] を使用します。

    • [SSL Insecure] (SSL 非セキュア) オプションを選択します。

    認証オプションの設定。
  8. [OK] をクリックして、[Authentication Options] (認証オプション) を閉じます。

  9. 接続をテストするには [Test] (テスト) を、終了するには [OK] をクリックします。