Azure AD で AWS マネジメントコンソールと SSO 連携してみた

Microsoft Entra ID

今回は最強の IdP である Azure AD を使って AWS のマネジメントコンソールにアクセスするユーザーの SSO を構成した手順を紹介します。ほぼほぼ Microsoft 公式の Docs をなぞれば構成できましたが、一部ハマったところがあったので紹介します。

Azure AD は無料バージョンでも10個までのアプリケーションを SSO できます。条件付きアクセスなどの他機能を使わないのであれば Premium ライセンスは不要です。また、AWS でアカウントを作成済みの前提です。

スポンサーリンク

Azure AD と AWS の SSO 連携手順

Azure AD と AWS で SSO 連携するには次の3ステップで行います。

  1. Azure AD で SSO アプリケーション(AWS)を構成
  2. AWS 側で SSO 用ロール設定
  3. 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) の統合

コメント

タイトルとURLをコピーしました