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
この信頼を作成するには、SAML プロバイダとして AD FS を AWS アカウント に追加し、フェデレーションユーザーが推定できる IAM ロールを作成します。AD FS 側では、証明書利用者として AWS を追加し、認証用 (具体的には Athena と Amazon S3) に適切なユーザー属性を AWS に送信する SAML クレームルールを作成します。
Athena への AD FS アクセスを設定するには、主に次の手順が必要です。
3. Active Directory ユーザーとグループの作成
4. Athena への AD FS ODBC 接続を設定する
1. IAM SAML プロバイダとロールのセットアップ
このセクションでは、AD FS を SAML プロバイダとして AWS アカウントに追加し、フェデレーションユーザーが推定できる IAM ロールを作成します。
SAML プロバイダをセットアップするには
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[Identity providers (ID プロバイダ)] を選択します。
-
[プロバイダーを追加] をクリックします。
-
[プロバイダのタイプ] では [SAML] を選択します。
-
[プロバイダ名] では
adfs-saml-provider
を入力します。 -
ブラウザで、次のアドレスを入力して、AD FS サーバーのフェデレーション XML ファイルをダウンロードします。この手順を実行するには、ブラウザが AD FS サーバーにアクセスできる必要があります。
https://
adfs-server-name
/federationmetadata/2007-06/federationmetadata.xml -
IAM コンソールの [Metadata document] (メタデータドキュメント) で、[Choose file] (ファイルを選択) を選択し、フェデレーションメタデータファイルを AWS にアップロードします。
-
終了するには、[Add provider] (プロバイダを追加) を選択します。
次に、フェデレーションユーザーが設定できる IAM ロールを作成します。
フェデレーションユーザーに IAM ロールを作成するには
-
IAM コンソールのナビゲーションペインで、[Roles] (ロール) を選択します。
-
[ロールの作成] を選択します。
-
[Trusted entity type] (信頼されたエンティティのタイプ) で、[SAML 2.0 Federation] (SAML 2.0 フェデレーション) を選択します。
-
[SAML 2.0-based provider] (SAML 2.0 ベースのプロバイダ) の場合は、作成した [adfs-saml-provider] プロバイダを選択します。
-
[プログラムと AWS 管理コンソールへのアクセスを許可する] 〉 [次へ] の順に選択します。
-
[Add permissions] (アクセス許可の追加) ページで、このロールに必要な IAM のアクセス許可ポリシーをフィルタリングし、対応するチェックボックスを選択します。このチュートリアルでは、
AmazonAthenaFullAccess
およびAmazonS3FullAccess
ポリシーをアタッチします。 -
[Next] を選択します。
-
[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"
を含める必要があります。[Step 2: Add permissions] (ステップ 2: アクセス許可の追加) には、ロールにアタッチしたポリシーが表示されます。
-
[ロールの作成] を選択します。ロールの作成を確認するバナーメッセージが表示されます。
-
[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 で証明書利用者の信頼を追加する
-
AD FS サーバーにサインインします。
-
[Start] (スタート) メニューで、[Server Manager] (サーバーマネージャー) を開きます。
-
[Tools] (ツール) を選択し、[AD FS Management] (AD FS 管理) を選択します。
-
ナビゲーションペインの [Trust Relationships] (信頼関係) で、[Relying Party Trusts] (証明書利用者の信頼) を選択します。
-
[Actions] (アクション) で、[Add Relying Party Trust] (証明書利用者の信頼を追加) を選択します。
-
証明書利用者信頼の追加ウィザード ページで、開始を選択します。
-
[Select Data Source] (データソースを選択) ページで、[Import data about the relying party published online or on a local network] (オンラインまたはローカル ネットワークで公開されている証明書利用者に関するデータをインポート) を選択します。
-
[Federation metadata address (host name or URL)] (フェデレーションメタデータアドレス (ホスト名または URL)) に、URL
https://signin.aws.amazon.com/static/saml-metadata.xml
を入力します。 -
[Next] を選択します。
-
[Specify Display Name] (表示名の指定) ページの [Display name] (表示名) に、証明書利用者の表示名を入力し、[Next] (次へ) を選択します。
-
このチュートリアルでは、[Configure Multi-factor Authentication Now] (多要素認証を今すぐ設定) ページで、[I do not want to configure multi-factor authentication for this relying party trust at this time] (現時点ではこの依存パーティの信頼に多要素認証を設定しない) を選択します。
セキュリティを向上させるには、多要素認証を設定して AWS リソースを保護することを推奨します。サンプルデータセットを使用しているため、このチュートリアルでは多要素認証を有効にしていません。
-
[Next] を選択します。
-
[Choose Issuance Authorization Rules] (発行承認ルールの選択) ページで、[Permit all users to access this relying party] (この証明書利用者へのアクセスをすべてのユーザーに許可) を選択します。
このオプションを使用すると、AWS で Active Directory 内のすべてのユーザーが AD FS を証明書利用者として使用できます。セキュリティ要件を考慮して、この設定を適宜調整します。
-
[Next] を選択します。
-
[Ready to Add Trust] (信頼を追加する準備完了) ページで、[Next] (次へ) を選択して証明書利用者の信頼を AD FS 設定データベースに追加します。
-
[Finish] (終了) ページで、[Close] (閉じる) を選択します。
証明書利用者向け SAML クレームルールの設定
このタスクでは、クレームルールを 2 セット作成します。
最初のセットであるルール 1~4 には、AD グループメンバーシップに基づいて IAM ロールを設定するために必要な AD FS クレームルールが含まれています。これらは、AWS Management Console
2 番目のセットであるルール 5~6 は、Athena のアクセス制御に必要なクレームルールです。
AD FS クレームルールを作成するには
-
AD FS 管理コンソールのナビゲーションペインで、[Trust Relationships] (信頼関係)、[Relying Party Trusts] (証明書利用者の信頼) を選択します。
-
以前のセクションで作成した証明書利用者を検索します。
-
証明書利用者を右クリックして [Edit Claim Rules] (クレームルールを編集) を選択するか、[Actions] (アクション) メニューから [Edit Claim Rules] (クレームルールを編集) を選択します。
-
ルールの追加] を選択します。
-
変換要求規則の追加ウィザードの [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] (すべてのクレーム値を通過) を選択します。
-
-
[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
を入力します。
-
-
[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);
-
-
ルールの追加] を選択します。次の情報を入力してクレームルール 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/"));
-
3. Active Directory ユーザーとグループの作成
これで、Athena にアクセスする AD ユーザーと、そのユーザーを配置する AD グループを作成して、グループごとにアクセスレベルを制御できる準備ができました。データアクセスのパターンを分類する AD グループを作成後、ユーザーをそれらのグループに追加します。
Athena へアクセスするための AD ユーザーを作成するには
-
サーバーマネージャーダッシュボードで、[Tools] (ツール) を選択し、次に [Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) を選択します。
-
ナビゲーションペインで [Users (ユーザー)] を選択します。
-
[Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) のツールバーで、[Create user] (ユーザーの作成) オプションを選択します。
-
[New Object - User] (新規オブジェクト - ユーザー) ダイアログボックスの [First name] (名)、[Last name] (姓)、[Full name] (フルネーム) には名前を入力します。このチュートリアルでは、
Jane Doe
を使用します。 -
[Next] を選択します。
-
[Password] (パスワード) には、パスワードを入力し、確認のため再入力します。
わかりやすくするために、このチュートリアルでは、[User must change password at next sign on] (ユーザーは次のサインオン時にパスワードを変更する必要がある) を選択解除しています。実際のシナリオでは、新しく作成したユーザーにはパスワードの変更を要求する必要があります。
-
[Next] を選択します。
-
[Finish] を選択します。
-
[Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) で、[user name] (ユーザー名) を選択します。
-
ユーザーの [Properties] (プロパティ) ダイアログボックスの [E-mail] (メール) に、メールアドレスを入力します。このチュートリアルでは、
jane@example.com
を使用します。 -
[OK] を選択します。
データアクセスパターンを表す AD グループを作成する
メンバーが AWS にログインしたときに adfs-data-access
IAM ロールを設定する AD グループを作成できます。次の例では、aws-adfs-data-access という名前の AD グループを作成します。
AD グループを作成するには
-
サーバーマネージャーダッシュボードの [Tools] (ツール) メニューで、[Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) を選択します。
-
ツールバーで、[Create new group] (新規グループを作成) オプションを選択します。
-
[New Object - Group] (新しいオブジェクト - グループ) ダイアログボックスで、次の情報を入力します。
-
[Group name] (グループ名) に、「
aws-adfs-data-access
」と入力します。 -
[Group scope] (グループスコープ) には、[Global] (グローバル) を選択します。
-
[Group type] (グループタイプ) には、[Security] (セキュリティ) を選択します。
-
-
[OK] を選択します。
AD ユーザーを適切なグループに追加する
AD ユーザーと AD グループの両方を作成したため、ユーザーをグループに追加できるようになりました。
AD グループに AD ユーザーを追加するには
-
サーバーマネージャーダッシュボードで、[Tools] (ツール) メニューで、[Active Directory Users and Computers] (Active Directory ユーザーとコンピュータ) を選択します。
-
[First name] (ファーストネーム) と [Last name] (ラストネーム) には、[user] (ユーザー) ([Jane Doe] など) を選択します。
-
ユーザーの [Properties] (プロパティ) ダイアログボックスの [Member Of] (メンバー) タブで、[Add] (追加) を選択します。
-
要件に応じて、1 つ以上の AD FS グループを追加します。このチュートリアルでは、[aws-adfs-data-access] グループを追加します。
-
[Select Groups] (グループの選択) ダイアログボックスの [Enter the object names to select] (選択するオブジェクト名を入力) に、作成した AD FS グループの名前 (例:
aws-adfs-data-access
) を入力し、[Check Names] (名前の確認) を選択します。 -
[OK] を選択します。
ユーザーの [Properties] (プロパティ) ダイアログボックスの [Member of] (メンバー) リストに AD グループの名前が表示されます。
-
[Apply] (適用)、[OK] の順に選択します。
4. Athena への AD FS ODBC 接続を設定する
AD のユーザーとグループを作成すると、Windows で ODBC データソースプログラムを使用して、AD FS 用の Athena ODBC 接続を設定する準備が整います。
AD FS ODBC による Athena への接続を設定するには
-
Athena 用の ODBC ドライバーをインストールします。ダウンロードリンクについては、「ODBC を使用した Amazon Athena への接続」(ODBC を使用して Amazon Athena に接続する) を参照してください。
-
Windows で、[Start] (開始)、[ODBC Data Sources] (ODBC データソース) を選択します。
-
[ODBC Data Source Administrator] (ODBC データソースの管理者) プログラムで、[Add] (追加) をクリックします。
-
[Create New Data Source] (新しいデータソースの作成) ダイアログボックスで、[Simba Athena ODBC Driver] (Simba Athena ODBC ドライバー) を選択し、[Finish] (完了) を選択します。
-
[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 パスを入力します。
-
-
[Authentication Options] (認証オプション) をクリックします。
-
[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 非セキュア) オプションを選択します。
-
-
[OK] をクリックして、[Authentication Options] (認証オプション) を閉じます。
-
接続をテストするには [Test] (テスト) を、終了するには [OK] をクリックします。