AzureADのユーザーでAWSのマネコンにSSOで接続してみた
はじめに
こんにちは。大阪オフィスの林です。
特に大きな思い入れは無いのですが無性にAzureADのユーザーでAWSのマネコンにログインしてみたいなと思ったので実装してみました!
大きな流れ
- Azure側の作業(セットアップ)
- Azure SSOのセットアップ
- フェデレーション設定用メタデータ取得
- AWS側の作業(セットアップ)
- AWS SSOのセットアップ
- Azure登録用のSAMLメタデータ取得
- Azure側の作業(セットアップ続き、ユーザー登録)
- SAMLメタデータの登録
- ユーザー作成/割り当て
- AWS側の作業(ユーザー登録)
- ユーザー/権限割り当て
- 接続確認
Azure側の作業(セットアップ)
Azureのコンソールにログインし、左上の「ハンバーガーメニュー」を選択します。
「Azure Active Directory」を選択します。
Azure AD Premiumが必要とのことなので評価版でアクティベートします。
右上にアクティブ化されたメッセージが表示されたことを確認します。
※私は一度サインアウトしてサインインしないとアクティブ化が反映されなかったので、次の手順で名前を入力できない場合はサインアウト/サインインをお試しください。
「フェデレーションメタデータXML」のダウンロードを選択します。
次にAWS側の作業に移ります。ただし後述するAWS側の作業完了後、再びAzure側で作業があるのでページは閉じないでください。
AWS側の作業(セットアップ)
AWS Single Sign-On Consoleにサインインします。
本日(2020年1月31日)時点で東京リージョンはAWSSSOをサポートしていないので、任意のリージョンを選択します。(検証ではオレゴンを選択します。)
「AWS SSOを有効にする」を選択します。なおルートアカウントでないと有効化できません。
サービスプロバイダーのメタデータから「メタデータファイルのダウンロード」を選択します。ダウンロードしたファイルを後ほどAzure側にアップロードします。
「IDプロバイダーのメタデータ」で「Azure側の作業1」でダウンロードしたXMLファイルをアップロードし「確認」を選択します。
次にAzure側の作業に移ります。ただし後述するAzure側の作業完了後、再びAWS側で作業があるのでページは閉じないでください。
Azure側の作業(セットアップ続き、ユーザー登録)
エンタープライズアプリケーションの「AWS SSO」の設定画面から「メタデータファイルをアップロードする」を選択します。
「AWS側の作業1」でダウンロードしたメタデータファイルをアップロードします。
このタイミングでユーザーアクセステストが出来るのですが、まだユーザーを作成していないので「いいえ、後でtestします」を選択します。
エンタープライズアプリケーションの「AWS SSO」の設定画面に戻り、「ユーザーの追加」を選択します。
AWS側の作業(ユーザー登録)
Azureで登録されたユーザーを自動でAWSに登録する機能もあるのですがここでの手順では手動作成とします。本記事の最後に自動登録の方法は載せています。
AWS側でユーザーを登録します。「ユーザー」から「ユーザー追加」を選択します。
AzureADで登録したユーザー名を入力し、「グループ」を選択します。
今回は特に設定しないため、「ユーザーの追加」を選択し次に進みます。
「AWSアカウント」から「アクセス権限セット」タブを選択し、「アクセス権限セットを作成」を選択します。
今回はカスタムアクセス権限セットを作成していきます。名前は「MySSOPolicy」とします。
「AWS管理ポリシーをアタッチ」を選択し、「AdministrationAccess」を選択します。(環境に応じてポリシーの内容は適宜変更ください。)
「AWS組織」タブを選択し、アカウント名のリンクをクリックします。※アカウント名が表示されているのでマスクしていますがリンクになっています。
先ほど作成したユーザーにチェックを入れ、「アクセス権限セット」を選択します。
先ほど作成したアクセス権限セットにチェックを入れ、「完了」を選択します。
完了したことを確認し、「AWSアカウントに進む」を選択します。
アクセス権限セット付きのユーザーが作成されたことを確認します。
接続確認
AWS SSOのダッシュボードからユーザーポータルのURLを探し、クリックします。
Microsoftのサインイン画面が表示されるので、AzureADのユーザー名を入力します。
次にパスワードを入力します。※設定にもよりますが初回の場合、パスワード変更を促される場合があるので適宜対応します。
「AWS Account」をクリックするとアカウント名が表示(マスクしている部分)され、さらに展開できるので展開すると、割り当てたアクセス権限セットがあるので、その右の「Management Console」を選択します。
フェデレーションログインという形でアカウントが表示されています。
ユーザーの自動同期
前述した手順だとわざわざAzureADにもAWSにもユーザー作る手順なのでメンドウですよね。「自動プロビジョニング」という機能があるのでそこだけ説明して終わりにしたいと思います。
AWS SSOの画面から「設定」を選択し「自動プロビジョニングを有効化」を選択します。
「SCIMエンドポイント」と「アクセストークン」が表示されるのでメモします。後述のAzure側の作業で必要になります。
Azure側の移り、エンタープライズアプリケーションの「AWS SSO」の設定画面から「プロビジョニング」を選択し、プロビジョニングモードを「自動」に変更します。
先ほどメモした「SCIMエンドポイント」を「テナントのURL」に、「アクセストークン」を「シークレットトークン」にコピーし、「テスト接続」を選択します。
「mailNickname」の「ソース属性」を「objectId」に変更し「OK」を選択します。
エンタープライズアプリケーションの「AWS SSO」の設定画面に戻り、「ユーザーの追加」を選択します。
「プロビジョニングの状態」が「オン」であることを確認し現在の状態のステータスが完了に変わるまでしばらく待ちます。※検証であれば「現在の状態を消去して、同期を再開します」を選択しても良いかと思います。
AWSのコンソールに移りAWS SSOにユーザーが登録されたことを確認します。前述の手順と同様にアカウントに対してユーザーの割り当てと、アクセス権限セットの適用をおこないます。
まとめ
細かいパラメータとかはあまり考慮せず進めたせいか、当初思っていたより実装だけであれば比較的簡単にSSO連携できたかなと思います。もちろん本番導入するのであれば詰めなければいけない設計やセキュリティ面での考慮や運用面での考慮など考えることは多くあると思いますが、概念というか動きを掴むにはちょうどいい検証でした!
以上、大阪オフィスの林がお送りしました!