【初心者】AWS Managed Microsoft AD を試してみる　（AWSマネージメントコンソールでのログイン認証用途）

# 目的
- AWS上でのAD連携の案件があったため、確認したことをまとめておく。

# AWS Managed Microsoft AD とは（自分の理解）
- AWS Managed Microsoft AD は、その名の通りMicrosoft ADがマネージドサービスとして提供されているもの。
- デフォルトでの2重化、OSメンテナンス不要等のメリットがある一方、RDP接続ができないので、ドメインにユーザを追加するには、別途管理ツールをインストールしたクライアントを用意しないといけない等の不便な点もある。

# やったこと
- AWS Managed Microsoft AD を作成。ドメイン：mksamba-aws.com
- EC2(Windows Server 2016)インスタンス上に通常のADを作成（オンプレADみなしとして)。ドメイン：mksamba-onpremises.com
- AWS Managed Microsoft AD と 自作AD間で、信頼関係を設定。
- AWSマネージメントコンソールへのログオン時の認証に、AWS Managed Microsoft ADを使用するように設定。
- 自作AD上のユーザ(mksamba-onpremises.com\onpremises-user)で、AWSマネージメントコンソールにログインできることを確認。

# 構成図
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/8743eb9e-91c9-2e0a-d892-a0092c16e1ed.png)


# 手順
## AWS Managed Microsoft ADの作成
- マネージメントコンソールの「Directory Service」から、AWS Managed Microsoft ADを作成する。
    - ディレクトリタイプ：　AWS Managed Microsoft AD
    - エディション：　Standard Edition
    - ディレクトリの DNS 名：　mksamba-aws.com
- 以下の図のように、2つのAZにまたがって作成される。 

![ad01b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/1bac5c9c-564b-5887-bc3a-47e2b69c3d7d.png)

- AWS Managed Microsoft ADのドメインを管理する用のEC2インスタンス(Windows Server 2016)を作成
    - AWS Managed Microsoft ADは、ドメインにユーザを追加したりするUIがないので、別途ドメインの管理ツールを入れたWindows Server を用意する。
    - AMI: Windows_Server-2016-Japanese-Full-Base-2020.01.15 を使用しインスタンスを作成。
    - AWS Managed Microsoft AD で作成したmksamba-aws.comドメインに参加する。
        - DNS設定をAWS Managed Microsoft ADのIPに変更
        - mksamba-aws.comへ参加(mksamba-aws.com\adminユーザを使用)
    - ADの操作(admin以外のユーザIDの追加等)ができるように、管理ツールを入れる。
        - サーバーマネージャー - ローカルサーバ - 機能 - リモートサーバ管理ツール - 役割管理ツール - Active Directory 管理センター

![ad02a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/6f200137-998f-67b1-4774-dece302ca7a9.png)


- 検証用ユーザの作成
    - 「Active Directory ユーザとコンピュータ」 を開いてAWS Managed Microsoft ADに接続し、テスト用のユーザ「mksamba-aws.com\aws-user」を作成しておく。なお「admin」は、AWS Managed Microsoft AD で管理用に最初から用意されているユーザ。
 
![ad03a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/0349f9bb-10a2-5970-0bbb-caf57e88ea6a.png)

        
## EC2インスタンス(Windows Server 2016)でADを作成

- AMI: Windows_Server-2016-Japanese-Full-Base-2020.01.15 を使用しインスタンスを作成。
- ADの設定
    - サーバマネージャー - ローカルサーバ - 役割 - Active Directory ドメインサービス を追加。
    - 自身のドメインを 「mksamba-onpremises.com」とする。
- 検証用ユーザの追加
    - 「Active Directory ユーザとコンピュータ」　を開いて、ユーザ「mksamba-onpremises.com\onpremises-user」を作成しておく。

![ad04a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/ef8c5ab4-17da-8fbb-7cb9-833af0a936e1.png)

## AWS Managed Microsoft AD(mksamba-aws.com) と自作のAD(mksamba-onpremises.com) の信頼関係の設定
- 条件付きフォワーダーの設定(自作ADにて)
    - 「管理ツール - DNS」 にて、条件付きフォワーダーの設定を行う。mksamba-aws.com の名前解決を行う際のDNSサーバのIPアドレスとして、AWS Managed Microsoft AD のIPを設定する。

![ad05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/1bfe7c18-04be-46a9-586b-b917ee417069.png)

- 信頼関係の設定(自作ADにて)
    - 「Active Directory ドメインと信頼関係」 を開いて、「mksamba-onpremises.com」のプロパティ」 - 「信頼」- 「新しい信頼」から、対向のドメイン(mksamba-aws.com)の情報を入力する。

![ad06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/bc97e5cf-03c2-7416-c8d4-8e96156ae4be.png)


- 信頼関係の設定(マネージメントコンソールにて)
    - 作成済のAWS Managed Microsoft AD の「ネットワークとセキュリティ」のタブを開き、「信頼関係」- 「信頼関係の追加」を行う。
    - 対向のドメイン「mksamba-onpremises.com」及び条件付きフォワーダのIP（自営AD化したEC2インスタンスのIP）を指定する。
    - しばらくすると、信頼関係のステータスが「検証済み」となり、信頼関係が確立される。

![ad08.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/f5383dc7-7e6c-d8f3-5d2e-57180e641880.png)   
![ad08a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/004fa15b-eb51-0149-8d74-c841d00cd442.png)



## マネージメントコンソールのログイン認証にADを使うための設定

- 作成済のAWS Managed Microsoft AD の「アプリケーションアクセス管理」のタブを開き、「アプリケーションアクセスURL」を作成する。ADに登録したユーザを使ってマネージメントコンソールにログインする場合は、このURLにアクセスして、ユーザID/パスワードを入力してログインすることになる。

![ad09.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/60b56f6c-b3ed-12ae-1e17-560276a4f6e9.png)

- 「アプリケーションアクセス管理」のタブの「AWSマネジメントコンソール」を「有効」に変更する。変更後、「AWSアプリ及びサービス」にて、「AWS Management Console」のステータスが有効になっていることを確認する。

![ad10a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/45492a5d-4881-e62f-de61-9b30ac1ab54f.png)

- IAM Roleを作成する。Roleに設定する権限は、ADでの認証を使ってログインするユーザに与えたい権限を設定する。次に、Roleに対して、マネージメントコンソールとの連携を行うため、「信頼関係」タブにて、「信頼関係の編集」を開き、設定を追加する必要がある。設定する内容は以下のページを参照のこと。([AWS公式: Editing the Trust Relationship for an Existing Role](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html))



- 作成したIAM Role(mksamba-ec2role)が「アプリケーションアクセス管理」の「コンソールアクセスの委任」のところに表示されることを確認する。
![ad13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/75baa0bc-57c7-61f1-ab86-593d0daee08b.png)


- Role(mksamba-ec2role)を選択し、ユーザを追加する。今回は、AWS Managed Microsoft AD上のユーザ「mksamba-aws.com\aws-user」と、信頼関係がある自作AD上のユーザ「mksamba-onpremises.com\onpremises-user」の2つのユーザを追加する。

![ad14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/08a58dc3-abc6-c434-6bcf-bcfdbd692d0b.png)


# 動作確認

## ログイン画面
- 先のステップで作成した「アプリケーションアクセスURL」にアクセスする。AWS Managed Microsoft AD上のユーザ「mksamba-aws.com\aws-user」もしくは、信頼関係がある自作AD上のユーザ「mksamba-onpremises.com\onpremises-user」でログインしてみる。
![ad15a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/e4de18cd-efb8-b3f6-eb39-109fb29db1e4.png)



## ログイン後の画面
- 「mksamba-onpremises.com\onpremises-user」でログインすると、「フェデレーションログイン」として表示される。

![ad16b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/f97307e0-bc46-7803-a171-8cbf1f5e8a81.png)

## CloudTrail アクセスログ
- CloudTrailで ConsoleLoginのログを確認する。以下のようにユーザ名部分(ドメイン名なし)で表示されている。

![ad17b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/8ac1b62f-0289-e9db-9257-c515acb1f85a.png)


# 所感
- 久しぶりにADの設定などを行い、AWSというよりはWindowsの知識が求められると感じた。幅広いジャンルの知識を得られるよういろんなサービスを触っていきたい。

# 参考記事
- [AWS公式：オンプレミスの Active Directory ユーザーに AWS マネジメントコンソールへのアクセス権を付与するにはどうすればよいですか?](https://aws.amazon.com/jp/premiumsupport/knowledge-center/enable-active-directory-console-access/)
    - IAMユーザではなく、別立てのADでマネージメントコンソールのログイン認証を行うための概要手順説明。基本的にはこれに沿ってやっていけばよい。
- [AWS公式：チュートリアル: AWS Managed Microsoft AD とオンプレミスドメインの間の信頼関係を作成する](https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust.html)
    - AWS Managed Microsoft AD と 自前のADの信頼関係を設定する手順の説明。