今回は最強の IdP である Azure AD を使って AWS のマネジメントコンソールにアクセスするユーザーの SSO を構成した手順を紹介します。ほぼほぼ Microsoft 公式の Docs をなぞれば構成できましたが、一部ハマったところがあったので紹介します。
Azure AD は無料バージョンでも10個までのアプリケーションを SSO できます。条件付きアクセスなどの他機能を使わないのであれば Premium ライセンスは不要です。また、AWS でアカウントを作成済みの前提です。
Azure AD と AWS の SSO 連携手順
Azure AD と AWS で SSO 連携するには次の3ステップで行います。
- Azure AD で SSO アプリケーション(AWS)を構成
- AWS 側で SSO 用ロール設定
- Azure AD で AWS からのロールプロビジョニングを構成
Azure AD で SSO アプリケーション(AWS)を構成
Azure ポータルにて、[Azure Active Directory]>[エンタープライズ アプリケーション]>[すべてのアプリケーション] を選択します。検索バーに「AWS」と入力し、[Amazon Web Services (AWS)] を選択します。
[名前] はそのままで [追加] をクリックします。
作成したアプリケーションで [シングル サインオン] をクリックします。
[SAML] パネルを選択します。
SAML 構成に必要な情報を確認します。[基本的な SAML 構成] と [ユーザー属性とクレーム] はデフォルトのままで構いません。
ただし、複数の AWS アカウントを登録する際は [識別子(エンティティ ID)] の末尾に ‘#’ と数字を付記することで一意に識別出来るようにします。https://signin.aws.amazon.com/saml#2
[SAML 署名証明書] の [フェデレーション メタデータ XML] 横のリンクからメタデータが埋め込まれた XML ファイルをダウンロードします。
AWS 側で SSO 用ロール設定
ここから AWS のマネジメントコンソールでの作業です。[サービス] から [IAM] を選択します。
メニューから [ID プロバイダー] を選択し、[プロバイダの作成] をクリックします。
[プロバイダーの設定] では次のように設定します。入力したら [次のステップ]、[作成] をクリックします。
- [プロバイダーのタイプ]:[SAML]
- [プロバイダ名]:AzureAD(IdP を識別するフレンドリ名)
- [メタデータドキュメント]:[フェデレーション メタデータ XML]でダウンロードしたファイル
メニューから [ロール] を選択し、[ロールの作成] をクリックします。
[ロールの作成] では、次のように選択します。入力したら [次のステップ] をクリックします。
- [信頼されたエンティティの種類]:[SAML 2.0 フェデレーション]
- [SAML プロバイダー]:AzureAD(先ほど作成したプロバイダ)
- プログラムによるアクセスと AWS マネジメントコンソールによるアクセスを許可する:有効
ロールにアクセスするポリシーを選択します。ここで選択した権限を Azure AD ユーザーに割り当てる形となります。
[ロール名] に作成するロールの識別名を入力し、[ロールの作成] をクリックします。
メニューから [ポリシー] を選択し、[ポリシーの作成] をクリックします。
[JSON] タブを選択し、次のような JSON を追加します。追加したら [ポリシーの確認] をクリックします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListRoles"
],
"Resource": "*"
}
]
}
[名前] にポリシーの名前を入力して [ポリシーの作成] をクリックします。
メニューから [ユーザー] を選択し、[ユーザーを追加] をクリックします。
アクセスの種類で [プログラムによるアクセス] を選択することで、Azure AD は AWS アカウントからロールをフェッチできます。
- [ユーザー名]:SSO 用のユーザー名を入力
- [アクセスの種類]:プログラムによるアクセス
先ほど作成したポリシーを選択し、割り当てます。
入力した情報を確認し、[ユーザーの追加] をクリックします。
この後表示されるユーザー情報の [アクセスキー ID] と [シークレットアクセスキー] を控えておきます。
※アクセスさせたい Azure AD のユーザーを AWS 側に作成する必要はありません。
Azure AD で AWS からのロールプロビジョニングを構成
再び Azure AD に戻り、AWS で設定したロールのプロビジョニングを行います。AWS のアプリでメニューから [プロビジョニング] を選択します。
次のように設定します。ここで AWS のユーザー作成時に表示された [アクセスキー ID] と [シークレットアクセスキー] を使用します。入力できたら [保存] をクリックします。
- [プロビジョニング モード]:自動
- [clientsecret]:<アクセスキー ID>
- [シークレット トークン]:<シークレットアクセスキー>
一度保存したら同じページ下部にある [プロビジョニング状態] を [オン] にして[保存] をクリックします。
しばらく時間をおいて、次のようにロールがプロビジョンされることを確認します。
メニューから [ユーザーとグループ] を選択し、アプリにアクセスさせたいユーザーを追加します。割り当てるロールは AWS で設定した [(ユーザー名), (プロバイダ名)] となっています。
Docs では前半の手順でユーザーを追加していましたが、その場合割り当てられたロールが [DefaultAccess] のままとなってしまい、次の接続確認でアクセスできませんでした。
SSO 接続確認
アクセス権を割り当てたユーザーでサインインし、アプリケーションパネルから AWS を選択します。
無事、AWS のマネジメントコンソールにアクセスできました!
AWS 側にユーザーのプロビジョニングは不要です。AWS → Azure AD へのロールプロビジョニングの手順でした。
参考リンク
チュートリアル:Azure Active Directory シングル サインオン (SSO) とアマゾン ウェブ サービス (AWS) の統合
コメント