Athena API へのフェデレーションアクセスを有効にする
このセクションでは、組織内のユーザーまたはクライアントアプリケーションによる Amazon Athena API オペレーションの呼び出しを許可するフェデレーションアクセスについて説明します。この場合、組織のユーザーは Athena に直接アクセスできません。代わりに、AWS 外部の Microsoft Active Directory でユーザーの認証情報を管理します。Active Directory は SAML 2.0
このシナリオでのユーザーの認証には、Active Directory Federation Services (ADFS) 3.0 にアクセスし、クライアントアプリケーションによる Athena API オペレーションの呼び出しを有効にするために、SAML 2.0 をサポートする JDBC または ODBC ドライバーを使用します。
AWS での SAML 2.0 のサポートに関する詳細については、「IAM ユーザーガイド」の「SAML 2.0 フェデレーションについて」を参照してください。
注記
Athena API へのフェデレーションアクセスは、特定のタイプの ID プロバイダー (IdP)、および Windows Server の一部である Active Directory Federation Service (ADFS 3.0) に対してサポートされています。フェデレーションアクセスは、IAM アイデンティティセンターの信頼できる ID 伝達機能と互換性がありません。アクセスは、SAML 2.0 をサポートするバージョンの JDBC や ODBC ドライバーを通じて確立されます。詳細については、「JDBC で Amazon Athena に接続する」および「ODBC で Amazon Athena に接続する」を参照してください。
開始する前に
開始する前に、次の前提条件を完了します。
-
組織内で、IdP として ADFS 3.0 をインストールして設定します。
-
Athena へのアクセスに使用されるクライアントで、最新バージョンの JDBC または ODBC ドライバーをインストールして設定します。そのドライバーには、SAML 2.0 と互換性のあるフェデレーションアクセスのサポートが含まれている必要があります。詳細については、「JDBC で Amazon Athena に接続する」および「ODBC で Amazon Athena に接続する」を参照してください。
認証プロセスを理解する
次の図は、Athena API へのフェデレーションアクセスの認証プロセスを示しています。
-
組織のユーザーが、クライアントアプリケーションと JDBC または ODBC ドライバーを使用して、組織の IdP に認証をリクエストします。IdP は ADFS 3.0 です。
-
IdP がユーザーを Active Directory に対して認証します。これは組織の ID ストアです。
-
IdP はユーザーに関する情報を使用して SAML アサーションを構築し、JDBC または ODBC ドライバーを介してクライアントアプリケーションにアサーションを送信します。
-
JDBC または ODBC ドライバーは、AWS Security Token Service AssumeRoleWithSAML API オペレーションを呼び出し、以下のパラメータを渡します。
-
SAML プロバイダーの ARN
-
引き受けるロールの ARN。
-
IdP からの SAML アサーション
詳細については、「AWS Security Token Service API リファレンス」の「AssumeRoleWithSAML」を参照してください。
-
-
JDBC または ODBC ドライバーを介したクライアントアプリケーションへの API レスポンスには、一時的なセキュリティ認証情報が含まれています。
-
クライアントアプリケーションは、一時的なセキュリティ認証情報を使用して Athena API オペレーションを呼び出すことで、ユーザーが Athena API オペレーションにアクセスできるようにします。
手順: Athena API への SAML ベースのフェデレーション アクセスを有効にする
この手順で、組織の IdP と AWS アカウント間の信頼が確立され、Amazon Athena API オペレーションへの SAML ベースのフェデレーションアクセスが可能になります。
Athena API へのフェデレーションアクセスを有効にするには、以下を実行します。
-
組織内で、IdP のサービスプロバイダー (SP) として AWS を登録します。このプロセスは、証明書利用者の信頼と呼ばれます。詳細については、「IAM ユーザーガイド」で「証明書利用者の信頼によって SAML 2.0 IdP を設定する」を参照してください。このタスクの一部として、次のステップを実行します。
-
URL https://signin.aws.amazon.com/static/saml-metadata.xml
からサンプル SAML メタデータドキュメントを取得します。 -
組織の IdP (ADFS) で、AWS への ID プロバイダーとして IdP を記述する同等のメタデータ XML ファイルを生成します。メタデータファイルには、発行元名、作成日、有効期限、AWS が組織からの認証レスポンス (アサーション) を検証するために使用するキーを含める必要があります。
-
-
IAM コンソールで、SAML ID プロバイダーのエンティティを作成します。詳細については、「IAM ユーザーガイド」の「SAML ID プロバイダーの作成」を参照してください。このステップの一部として、以下の操作を行います。
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
この手順のステップ 1 で IdP (ADFS) によって生成された SAML メタデータドキュメントをアップロードします。
-
IAM コンソールで、IdP のために 1 つ、または複数の IAM ロールを作成します。詳細については、「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成」を参照してください。このステップの一部として、以下の操作を行います。
-
ロールのアクセス権限ポリシーで、AWS で組織のユーザーが実行できるアクションをリストします。
-
ロールの信頼ポリシーで、この手順のステップ 2 でプリンシパルとして作成した SAML プロバイダーエンティティを設定します。
これにより、組織と AWS 間で信頼関係が確立されます。
-
-
組織の IdP (ADFS) で、組織のユーザーまたはグループを IAM ロールにマップするアサーションを定義します。IAM ロールへのユーザーとグループのマッピングは、クレームルールとしても知られています。組織内の異なるユーザーとグループは、異なる IAM ロールにマップされている場合があることに注意してください。
ADFS でマッピングを設定する方法については、ブログ記事「Windows Active Directory、ADFS、SAML 2.0 を使用した AWS へのフェデレーションの有効化
」を参照してください。 -
JDBC または ODBC ドライバーと SAML 2.0 のサポートをインストールして設定します。詳細については、「JDBC で Amazon Athena に接続する」および「ODBC で Amazon Athena に接続する」を参照してください。
-
アプリケーションから JDBC または ODBC ドライバーへの接続文字列を指定します。アプリケーションが使用する接続文字列の詳細については、JDBC で Amazon Athena に接続する および ODBC で Amazon Athena に接続する トピックから 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 ドライバーのインストールおよび設定ガイド) の同様のトピックを参照してください。
以下に示しているのは、ドライバーに対する接続文字列の設定の概要です。
-
AwsCredentialsProviderClass configuration
で、ADFS IdP を介した SAML 2.0 ベースの認証を使用するようにcom.simba.athena.iamsupport.plugin.AdfsCredentialsProvider
を設定します。 -
idp_host
で、ADFS IdP サーバーのホスト名を指定します。 -
idp_port
で、SAML アサーションリクエストで ADFS IdP がリッスンするポート番号を指定します。 -
UID
およびPWD
で、AD ドメインユーザーの認証情報を提供します。Windows でドライバーを使用する場合、UID
およびPWD
が指定されていない場合、ドライバーは Windows マシンにログインしているユーザーの認証情報の取得を試みます。 -
必要に応じて、
ssl_insecure
をtrue
に設定します。この場合、ドライバーは ADFS IdP サーバーの SSL 証明書の信頼性を確認しません。ADFS IdP の SSL 証明書がドライバーによって信頼されるように設定されていない場合は、true
に設定する必要があります。 -
(この手順のステップ 4 で説明しているように) Active Directory ドメインまたはグループの 1 つ以上の IAM ロールへのマッピングを有効にするには、JDBC または ODBC 接続の
preferred_role
で、ドライバー接続のために引き受ける IAM ロール (ARN) を指定します。preferred_role
の指定はオプションであり、そのロールが、クレームルールに登録された最初のロールではない場合に役立ちます。
この手順の結果として、以下のアクションが実行されます。
-
アーキテクチャ図のステップ 4 にあるように、JDBC または ODBC ドライバーが AWS STS AssumeRoleWithSAML API を呼び出し、それにアサーションを渡します。
-
AWS は、ロールを引き受けるリクエストは SAML プロバイダーエンティティで参照される IdP からのリクエストであることを確認します。
-
リクエストが成功すると、AWS STS AssumeRoleWithSAML API オペレーションから一時的セキュリティ認証情報一式が返され、クライアントアプリケーションではこれを使用して Athena に対して署名付きリクエストを作成します。
これで、アプリケーションが現在のユーザーに関する情報を取得し、プログラム的に Athena にアクセスできるようになりました。
-