AD認証で QuickSight のマルチアカウント環境を構築する

### やったこと
- Amazon QuickSight の認証に AWS Managed Microsoft AD を利用する
- 一つのAD認証で、マルチアカウントのQuickSightの認証を実現する

### 主な流れ

アカウントAでの作業
1. AWS Managed Microsoft AD ディレクトリを作成
1. AD管理用インスタンス作成
1. AD管理用インスタンスからADグループ、ユーザーを作成
1. QuickSightのサインアップ時にActive Directoryを選択。（Tokyoリージョンにするための操作が必要）

アカウントBでの作業
1. アカウントAで作成したADに接続するAD Connectorを構成する (事前にVPC Peeringの設定を済ませておく。)
1. QuickSightサインアップ時にActive Directoryを選択する。

### 注意
- ユーザー管理、アセット管理等は IAM管理となり、AD認証のAdminユーザーであっても操作不可
- 上記オペレーションを行う場合は、別途QuickSightのAdminポリシーを持つIAMプリンシパルでQuickSightにアクセスする必要がある。（運用がめんどい。）


## AWS Managed Microsoft Active Directoryを作成する

ナビゲーションペインで、[Directories] (ディレクトリ)、[Set up directory] (ディレクトリの設定) の順に選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a84d772a-412f-836c-f706-461527f406ad.png)

[Select directory type] (ディレクトリタイプの選択) ページで [AWS Managed Microsoft AD] を選択してから、[Next] (次へ) をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1475bad2-3b20-15ed-e5ea-b87ae72afe7e.png)

[Enter directory information] (ディレクトリ情報の入力) ページに、以下の情報を指定します。

エディション
AWS Managed Microsoft AD の [Standard Edition] (スタンダードエディション) または [Enterprise Edition] (エンタープライズエディション) を選択します。エディションの詳細については、「AWS Directory Service for Microsoft Active Directory」を参照してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/0268993d-ce7c-f472-f99c-c4e0d8a8e028.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/026c57c3-3746-a550-5941-16a81ff1b289.png)

[Choose VPC and subnets] (VPC とサブネットの選択) ページで、次の情報を指定して [Next] (次へ) をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d023c3c3-7d4c-f7bb-9d73-0f97fb1890a5.png)

[Review & create] (確認と作成) ページでディレクトリ情報を確認し、必要に応じて変更を加えます。情報が正しい場合は、[Create directory] (ディレクトリの作成) を選択します。ディレクトリの作成所要時間は 20～40 分です。作成が完了すると、[Status] (ステータス) 値が [Active] (アクティブ) に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d54748eb-bce2-8498-40bc-e73606ce6c58.png)

### AD管理用インスタンスを作成する
今回は以下手順を実行。
> AWS Systems ManagerAutomationを使用して、AWS Directory Service コンソールから直接 EC2 インスタンスを起動してActive Directoryドメインに参加させることもできます。

1. AWS Directory Service コンソールにサインインします。
2. [Active Directory] で [ディレクトリ] を選択します。
3. Active Directory 管理 EC2 インスタンスを起動するディレクトリのディレクトリ ID を選択します。
4. ディレクトリページの右上隅にある [アクション] を選択します。
5. [アクション] ドロップダウンで、[ディレクトリ管理 EC2 インスタンスを起動する] を選択します。
6. [ディレクトリ管理 EC2 インスタンスを起動する] ページの [入力パラメータ] のフィールドに入力します。
7. (オプション) [AWS CLI コマンドを表示] を選択すると、このオートメーションを実行するために AWS CLI で使用する例が表示されます。
8. [Submit] (送信) を選択します。
9. ディレクトリページに戻ります。起動処理が正常に開始されたことを示す緑色のフラッシュバーが画面の上部に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a6024824-89d3-adf5-5a54-936b77515b76.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/21f31240-49a4-edf1-eefc-20f205e2b82f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/6209e068-71e5-ff7b-33f4-a206d61ff37b.png)


### AWS Managed Microsoft AD の Active Directory 管理ツールをインストールする

今回の手順では既に管理ツールはインストール済みなので、[こちら](https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/ms_ad_install_ad_tools.html) の以下手順を実施して、ディレクトリ管理用のEC2起動した。
> 「管理対象の Microsoft AD AWS Active Directoryでディレクトリ管理インスタンスを起動する」の手順に従って Active Directory Domain Services と Active Directory Lightweight Directory Services ツールが既にインストールされている AWS Management Consoleでディレクトリ管理 EC2 インスタンスを起動することもできます。

1. [Active Directory] で [ディレクトリ] を選択し、表示するディレクトリを選択します。
2. [ディレクトリの詳細] の [ディレクトリ管理 EC2 インスタンス] で、表示する １ つまたはすべてのインスタンスを選択します。
3. インスタンスを選択すると、リモートデスクトップをインスタンスに接続するための EC2 の [インスタンスに接続] ページにルーティングされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1cfdaaf0-7e0d-772d-8811-a873d4d9843c.png)

4. Fleet Manager を使用して、ディレクトリ作成時の `Admin` ユーザーでログイン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/20cd9b8c-c49a-4a27-94ef-0c88a22fad63.png)

### QuickSightログイン用のユーザー、グループを作成

ユーザー追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/beb4cbce-9969-59d9-ef8c-9d5d3f85c0a6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/c34585d5-cc68-d6a7-a1b6-0a8fe8cfa6c7.png)


グループ作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e71e7b5e-b3ca-101d-12e6-851d323e47f9.png)

グループメンバーシップ登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/2e4fb42d-4eb6-5079-6457-bc3a38fb49da.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/446e225f-4c05-c97c-edc3-ccc8838d767f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/7d0e2a17-3358-7d1b-0fcb-a9c34a59b453.png)

リモートデスクトップ接続の設定
(検証目的の為、ドメイン管理用サーバーを共有PC化する。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/6999d3cc-45f9-d4a4-784a-3ddc0de8b61d.png)

ログイン確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/286595cc-a62c-c7b5-86f0-030e63166c81.png)

無事にログインに成功
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d394d877-b64d-fa1d-0f4d-762f06e248dc.png)


以上で アカウントA での AD環境構築は完了。


## Amazon QuickSight サインアップ

QuickSight にアクセス。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/01fb702b-29b9-5dcb-ecbf-6ed3141c0316.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/13f6a084-0029-ef3b-a3a9-bb208965a0a9.png)


Enterprise を選択 (右上のアイコンから言語設定を日本語にすることが可能)
※ 2024/1/19 時点で東京リージョンで Q はサポートされていない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/b141ca40-9853-05cc-89cb-4de3b14dbb7c.png)

ページ分割レポートのサブスクリプションは有効にしない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/fc5354a6-91b8-f1ac-542e-ffc8dcfde1af.png)

認証に Use Active Directory を選択。
ディレクトリをTokyoリージョンに作成した為、デフォルトだとディレクトが表示されない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/b2b3fc75-e069-c432-3ff3-09d1ae60d611.png)

したがって、一旦、別の認証方式を選んで、リージョンを Tokyo に変更する。
(この操作、めちゃくちゃ重要。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/53dcaebf-d7ae-eb90-8923-176915c65bc0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/6fe28ab7-44c3-ce4c-0c79-da875c80f6df.png)


Tokyoリージョンで作成したディレクトが表示されたので、ディレクトリを選択して承認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/45063236-ed7a-9837-577b-c5ede32281f8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/385b4472-660c-102c-bb07-78f289784102.png)


作成したADグループとの紐づけを行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a8835b40-7b17-2e97-d3de-616fe57c9493.png)


その他はデフォルトのまま完了をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/c2ef20b6-68a3-e8a6-3174-ad0d852b5489.png)


### ログイン確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e82c168e-e685-e9f1-f96b-aac413879cbf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/b016d312-d3b2-b452-ea0f-775bade89867.png)


ADユーザー/パスワード でログインできた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d6ae5217-ec9c-7e4d-bf70-4e501b6f0a45.png)


## マルチアカウント環境を構成する


### （失敗パターン）アカウントAのDirectory Service を アカウントBに共有する
アカウントAで Directory Service の スケールと共有タブから、ディレクトリを共有する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/56fdfe63-66b4-559e-b643-6ba4b005eff4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/0cd5ef59-3fe9-7a07-6c7d-0bdd426fc208.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e4ea1911-2772-313b-fe83-1cf612ddb290.png)

アカウントBでディレクトリ共有を承認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/8536ad6a-0a03-e969-541e-79438e7211a6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/2d92e7ff-f954-992b-4f5c-8fe6b152ef9f.png)

QuickSight へ移動。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/4b8b0523-054c-e47f-ae5f-1afc3e5b4e4f.png)


アカウントBに共有されたディレクトリをQuickSightの認証と統合するのはできなそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/5f09d7e0-8f9f-7458-94f5-df21b8339b20.png)


### (成功パターン) アカウントBで、AD Connecotrを作成し、アカウントAのADにアクセスする。

:::note warn
事前にVPC Peeringの設定を終えておくこと。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/7834cf0c-f03c-f28e-0d28-49929aa2e1a0.png)


AD Connectorの設定がうまく行っていると、アカウントBにおいても、Directoryが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/22168019-ca2c-297b-85d2-28869e895e6d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/05d8e0b4-df95-d78c-6edd-3730c4be0774.png)

無事にアカウントBにおいてもAD認証でサインアップが完了した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/22a9a1d9-e3cf-3998-f45c-9529930cd624.png)


無事にログイン完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/77b03751-c357-bad4-ced8-99ebe09d9554.png)


なお、AD認証にするとそれ以外の認証経路でサインインすることはできない。
試しに Admin 権限を有するIAMプリンシパルでQuickSightを開くと以下のようになり、IAM 権限でしか操作できない内容のみ表示される。つまり、AD認証のAdmin と IAM(Admin) → QS で、できることが異なり、管理作業によって入口が分かれることになる。
（ユーザー管理やアセット管理がADユーザーのAdminで行えないのは結構痛い。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/f349d0c5-fd97-be3f-0d1d-9169e007df17.png)


以上

### 参考
1. https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/ms_ad_getting_started.html#ms_ad_getting_started_create_directory
2. https://repost.aws/ja/knowledge-center/quicksight-enterprise-account
3. https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/managing-users-enterprise.html