AWS Identity and Access Management (IAM) ロールの認証情報を使用して Amazon Athena への JDBC ドライバー接続を認証したいです。また、Amazon Athena に接続するために、JDBC ドライバーを使用する前に他の IAM ロールに切り替えたいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
IAM ロールの認証情報を使用して Athena JDBC ドライバーに接続する
ロールの一時認証情報を取得します。一時認証情報を取得するプロセスは、ロールの引き受け方法によって異なります。
SAML ID プロバイダーを使用してロールを引き受ける
Active Directory Federation Services (AD FS) 3.0、Okta、PingFederate、Microsoft Entra ID のみが、Athena JDBC ドライバーで直接サポートされる SAML 2.0 ID プロバイダーです。別の ID プロバイダーでロールを引き受ける場合は、assume-role-with-saml コマンドを実行し、一時認証情報を取得する必要があります。
アカウント内の別のロールを引き受ける
同じ AWS アカウント内の別のロールを引き受ける場合は、assume-role コマンドを実行して一時認証情報を取得します。
詳細については、「ロールを引き受ける方法」を参照してください。
一時認証情報には、Amazon Athena への JDBC 接続を認証するために必要なセッショントークン、アクセスキー ID、シークレットアクセスキーが含まれます。
注: 一時認証情報は 12 時間のみ有効です。
マシン上の一時認証情報を、名前付きプロファイルとして AWS 認証情報 ~/.aws/credentials に保存します。詳細については、「AWS CLI で設定ファイルと認証情報ファイルを設定する」を参照してください。
testprofile という名前の AWS CLI プロファイルに保存されている一時認証情報の例を次に示します。
[testprofile]aws_access_key_id=ASIA#########
aws_secret_access_key=########
aws_session_token=##################
Athena への接続に JDBC ドライバーを使用するには、JDBC 接続文字列でプロファイル名を指定します (例: jdbc:awsathena://AwsRegion=us-west-2;Profile=testprofile;)。または、JDBC の設定プロパティ Profile にプロファイル名を設定します。
注: JDBC の設定プロパティProfile は、Athena JDBC ドライバーバージョン 2.0.6 以降で使用できます。最新の JDBC ドライバーを取得する方法については、「JDBC を使用して Amazon Athena に接続する」を参照してください。
別の IAM ロールに切り替えて Athena JDBC ドライバーに接続する
Athena JDBC ドライバーに接続する前にロールを切り替えるには、指定したプロファイルで source_profile オプションを使用します。
お使いのマシンで、名前付きプロファイルを AWS CLI 認証情報ファイル ~/.aws/credentials に追加します。詳しくは、「名前付きプロファイルを使用する」を参照してください。
プロファイルには、次のプロパティを含める必要があります。
- role_arn: 引き受けるロールの ARN。
- source_profile: ロールを引き受けるためのアクセス許可を持つ IAM ユーザーまたは IAM ロールの認証情報を含むプロファイル
ARN が arn:aws:iam::123456789012:role/testrole である、testrole という名前のロールを引き受けるための設定例を次に示します。
[switchroletest]role_arn=arn:aws:iam::123456789012:role/testrole
source_profile=default
次の例では、default プロファイルには、testrole を引き受けるためのアクセス許可を持つ IAM ユーザーまたはロールの認証情報が含まれています。
[default]aws_access_key_id=ASIA#########
aws_secret_access_key=########
aws_session_token=##################
注: AWS CLI では、AWS CLI 設定ファイル /.aws/config の source_profile およびユーザー認証情報を、別の AWS CLI 認証情報ファイルで指定できます。ただし、Athena JDBC ドライバーは AWS CLI 認証情報ファイルからのみ、認証情報を読み取りできます。この制限があるので、各プロファイルは同じ AWS CLI 認証情報ファイルに配置する必要があります。なお、プロファイルには profile プレフィックスを使用しないでください。
Athena への接続に JDBC ドライバーを使用するには、JDBC 接続文字列でプロファイル名を指定します (例: jdbc:awsathena://AwsRegion=us-west-2;Profile=switchroletest;)。または、JDBC の設定プロパティ Profile にプロファイル名を設定します。
関連情報
一時セキュリティ認証情報をリクエストする
SQL コネクタ付き Simba Athena JDBC ドライバーのインストールと設定ガイド (バージョン 2.0.9)
IAM ロールに切り替える (AWS CLI)
AWS CLI で IAM ロールを使用する