

# Athena API へのフェデレーションアクセスを有効にする
<a name="access-federation-saml"></a>

このセクションでは、組織内のユーザーまたはクライアントアプリケーションによる Amazon Athena API オペレーションの呼び出しを許可するフェデレーションアクセスについて説明します。この場合、組織のユーザーは Athena に直接アクセスできません。代わりに、AWS 外部の Microsoft Active Directory でユーザーの認証情報を管理します。Active Directory は [SAML 2.0](https://wiki.oasis-open.org/security) (Security Assertion Markup Language 2.0) をサポートしています。

このシナリオでのユーザーの認証には、Active Directory Federation Services (ADFS) 3.0 にアクセスし、クライアントアプリケーションによる Athena API オペレーションの呼び出しを有効にするために、SAML 2.0 をサポートする JDBC または ODBC ドライバーを使用します。

AWS での SAML 2.0 のサポートに関する詳細については、「*IAM ユーザーガイド*」の「[SAML 2.0 フェデレーションについて](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html)」を参照してください。

**注記**  
Athena API へのフェデレーションアクセスは、特定のタイプの ID プロバイダー (IdP)、および Windows Server の一部である Active Directory Federation Service (ADFS 3.0) に対してサポートされています。フェデレーションアクセスは、IAM アイデンティティセンターの信頼できる ID 伝達機能と互換性がありません。アクセスは、SAML 2.0 をサポートするバージョンの JDBC や ODBC ドライバーを通じて確立されます。詳細については、「[JDBC で Amazon Athena に接続する](connect-with-jdbc.md)」および「[ODBC で Amazon Athena に接続する](connect-with-odbc.md)」を参照してください。

**Topics**
+ [[開始する前に]](#access-federation-before-you-begin)
+ [認証プロセスを理解する](#access-federation-diagram)
+ [手順: Athena API への SAML ベースのフェデレーション アクセスを有効にする](#access-federation-procedure)

## [開始する前に]
<a name="access-federation-before-you-begin"></a>

 開始する前に、次の前提条件を完了します。
+ 組織内で、IdP として ADFS 3.0 をインストールして設定します。
+ Athena へのアクセスに使用されるクライアントで、最新バージョンの JDBC または ODBC ドライバーをインストールして設定します。そのドライバーには、SAML 2.0 と互換性のあるフェデレーションアクセスのサポートが含まれている必要があります。詳細については、「[JDBC で Amazon Athena に接続する](connect-with-jdbc.md)」および「[ODBC で Amazon Athena に接続する](connect-with-odbc.md)」を参照してください。

## 認証プロセスを理解する
<a name="access-federation-diagram"></a>

次の図は、Athena API へのフェデレーションアクセスの認証プロセスを示しています。

![\[Athena API へのフェデレーションアクセスの図。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/athena-saml-based-federation.png)


1. 組織のユーザーが、クライアントアプリケーションと JDBC または ODBC ドライバーを使用して、組織の IdP に認証をリクエストします。IdP は ADFS 3.0 です。

1. IdP がユーザーを Active Directory に対して認証します。これは組織の ID ストアです。

1. IdP はユーザーに関する情報を使用して SAML アサーションを構築し、JDBC または ODBC ドライバーを介してクライアントアプリケーションにアサーションを送信します。

1. JDBC または ODBC ドライバーは、AWS Security Token Service [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API オペレーションを呼び出し、以下のパラメータを渡します。
   + SAML プロバイダーの ARN
   + 引き受けるロールの ARN。
   + IdP からの SAML アサーション

   詳細については、「*AWS Security Token Service API リファレンス*」の「[AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)」を参照してください。

1. JDBC または ODBC ドライバーを介したクライアントアプリケーションへの API レスポンスには、一時的なセキュリティ認証情報が含まれています。

1. クライアントアプリケーションは、一時的なセキュリティ認証情報を使用して Athena API オペレーションを呼び出すことで、ユーザーが Athena API オペレーションにアクセスできるようにします。

## 手順: Athena API への SAML ベースのフェデレーション アクセスを有効にする
<a name="access-federation-procedure"></a>

この手順で、組織の IdP と AWS アカウント間の信頼が確立され、Amazon Athena API オペレーションへの SAML ベースのフェデレーションアクセスが可能になります。

**Athena API へのフェデレーションアクセスを有効にするには、以下を実行します。**

1. 組織内で、IdP のサービスプロバイダー (SP) として AWS を登録します。このプロセスは、*証明書利用者の信頼*と呼ばれます。詳細については、「*IAM ユーザーガイド*」で「[証明書利用者の信頼によって SAML 2.0 IdP を設定する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html)」を参照してください。このタスクの一部として、次のステップを実行します。

   1. URL からサンプル SAML メタデータドキュメントを取得します[https://signin.aws.amazon.com/static/saml-metadata.xml](https://signin.aws.amazon.com/static/saml-metadata.xml)

   1. 組織の IdP (ADFS) で、AWS への ID プロバイダーとして IdP を記述する同等のメタデータ XML ファイルを生成します。メタデータファイルには、発行元名、作成日、有効期限、AWS が組織からの認証レスポンス (アサーション) を検証するために使用するキーを含める必要があります。

1. IAM コンソールで、SAML ID プロバイダーのエンティティを作成します。詳細については、「*IAM ユーザーガイド*」の「[SAML ID プロバイダーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html)」を参照してください。このステップの一部として、以下の操作を行います。

   1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

   1. この手順のステップ 1 で IdP (ADFS) によって生成された SAML メタデータドキュメントをアップロードします。

1. IAM コンソールで、IdP のために 1 つ、または複数の IAM ロールを作成します。詳細については、「*IAM ユーザーガイド*」の「[サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)」を参照してください。このステップの一部として、以下の操作を行います。
   + ロールのアクセス許可ポリシーで、AWS で組織のユーザーが実行できるアクションをリストします。
   + ロールの信頼ポリシーで、この手順のステップ 2 でプリンシパルとして作成した SAML プロバイダーエンティティを設定します。

   これにより、組織と AWS 間で信頼関係が確立されます。

1. 組織の IdP (ADFS) で、組織のユーザーまたはグループを IAM ロールにマップするアサーションを定義します。IAM ロールへのユーザーとグループのマッピングは、クレームルールとしても知られています。組織内の異なるユーザーとグループは、異なる IAM ロールにマップされている場合があることに注意してください。

   ADFS でマッピングを設定する方法については、ブログ記事「[Windows Active Directory、ADFS、SAML 2.0 を使用した AWS へのフェデレーションの有効化](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)」を参照してください。

1. JDBC または ODBC ドライバーと SAML 2.0 のサポートをインストールして設定します。詳細については、「[JDBC で Amazon Athena に接続する](connect-with-jdbc.md)」および「[ODBC で Amazon Athena に接続する](connect-with-odbc.md)」を参照してください。

1. アプリケーションから JDBC または ODBC ドライバーへの接続文字列を指定します。アプリケーションが使用する接続文字列の詳細については、[JDBC で Amazon Athena に接続する](connect-with-jdbc.md) および [ODBC で Amazon Athena に接続する](connect-with-odbc.md) トピックから PDF 形式でダウンロードできる「*JDBC Driver Installation and Configuration Guide*」(JDBC ドライバーのインストールおよび設定ガイド) の「*Using the Active Directory Federation Services (ADFS) Credentials Provider*」(Active Directory Federation Services (ADFS) 認証情報プロバイダの使用)、または「*ODBC Driver Installation and Configuration Guide*」(ODBC ドライバーのインストールおよび設定ガイド) の同様のトピックを参照してください。

   以下に示しているのは、ドライバーに対する接続文字列の設定の概要です。

   1. `AwsCredentialsProviderClass configuration` で、ADFS IdP を介した SAML 2.0 ベースの認証を使用するように `com.simba.athena.iamsupport.plugin.AdfsCredentialsProvider` を設定します。

   1. `idp_host` で、ADFS IdP サーバーのホスト名を指定します。

   1. `idp_port` で、SAML アサーションリクエストで ADFS IdP がリッスンするポート番号を指定します。

   1. `UID` および `PWD` で、AD ドメインユーザーの認証情報を提供します。Windows でドライバーを使用する場合、`UID` および `PWD` が指定されていない場合、ドライバーは Windows マシンにログインしているユーザーの認証情報の取得を試みます。

   1. 必要に応じて、`ssl_insecure` を `true` に設定します。この場合、ドライバーは ADFS IdP サーバーの SSL 証明書の信頼性を確認しません。ADFS IdP の SSL 証明書がドライバーによって信頼されるように設定されていない場合は、`true` に設定する必要があります。

   1. (この手順のステップ 4 で説明しているように) Active Directory ドメインまたはグループの 1 つ以上の IAM ロールへのマッピングを有効にするには、JDBC または ODBC 接続の `preferred_role` で、ドライバー接続のために引き受ける IAM ロール (ARN) を指定します。`preferred_role` の指定はオプションであり、そのロールが、クレームルールに登録された最初のロールではない場合に役立ちます。

   この手順の結果として、以下のアクションが実行されます。

   1. [アーキテクチャ図](#access-federation-diagram)のステップ 4 にあるように、JDBC または ODBC ドライバーが AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API を呼び出し、それにアサーションを渡します。

   1. AWS は、ロールを引き受けるリクエストは SAML プロバイダーエンティティで参照される IdP からのリクエストであることを確認します。

   1. リクエストが成功すると、AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API オペレーションから一時的セキュリティ認証情報一式が返され、クライアントアプリケーションではこれを使用して Athena に対して署名付きリクエストを作成します。

      これで、アプリケーションが現在のユーザーに関する情報を取得し、プログラム的に Athena にアクセスできるようになりました。