チュートリアル: Azure AD SSO と AWS Single-Account Access の統合

このチュートリアルでは、AWS Single-Account Access と Azure Active Directory (Azure AD) を統合する方法について説明します。 AWS Single-Account Access を Azure AD と統合すると、次のことができます。

  • AWS Single-Account Access にアクセスできるユーザーを Azure AD で制御できます。
  • ユーザーが自分の Azure AD アカウントで AWS Single-Account Access に自動的にサインインするように設定できます。
  • 1 つの中央サイト (Azure Portal) で自分のアカウントを管理します。

下記の情報を利用して、Azure AD アプリケーション ギャラリーの AWS Single Sign-On アプリケーションと AWS Single-Account Access アプリケーションのどちらを使用するかを判断します。

AWS Single Sign-On

AWS Single Sign-On は、2021 年 2 月に Azure AD アプリケーション ギャラリーに追加されました。 Microsoft Azure AD を通してサインインすると、複数の AWS アカウントや AWS アプリケーションへのアクセスを一元的に管理しやすくなります。 一度 Microsoft Azure AD と AWS SSO とのフェデレーションを行って、1 つの場所から AWS SSO を使用して、すべての AWS アカウントにわたってアクセス許可を管理します。 AWS SSO では、アクセス許可が自動的にプロビジョニングされ、それらは、ポリシーやアクセスの割り当てを更新するときに最新の状態に維持されます。 エンド ユーザーは、自分の Azure AD 資格情報を使用して認証し、AWS コンソール、コマンド ライン インターフェイス、AWS SSO 統合アプリケーションにアクセスすることができます。

AWS Single-Account Access

AWS Single-Account Access は、これまで数年間にわたってお客様に使用されており、これを使用すると、Azure AD を 1 つの AWS アカウントにフェデレーションし、Azure AD を使用して AWS IAM ロールへのアクセスを管理できます。 AWS IAM 管理者は、各 AWS アカウントにロールとポリシーを定義します。 各 AWS アカウントのために、Azure AD 管理者は、AWS IAM へのフェデレーション、アカウントへのユーザーまたはグループの割り当て、ロールのアクセスを承認するアサーションを送信するための Azure AD の構成を行います。

機能 AWS Single Sign-On AWS Single-Account Access
条件付きアクセス すべての AWS アカウントに対して単一の条件付きアクセス ポリシーがサポートされます。 すべてのアカウントに対して単一の条件付きアクセス ポリシーまたはアカウントごとにカスタム ポリシーがサポートされます
CLI アクセス サポートされています サポートされています
Privileged Identity Management まだサポートされていません まだサポートされていません
アカウント管理の一元化 AWS でのアカウント管理を一元化します。 Azure AD でのアカウント管理を一元化します (おそらく、アカウントごとに Azure AD のエンタープライズ アプリケーションが必要になります)。
SAML 証明書 単一の証明書 アプリやアカウントごとに別個の証明書

AWS Single-Account Access のアーキテクチャ

Azure AD と AWS の関係を示すスクリーンショット。

複数のインスタンスに対して複数の識別子を構成できます。 次に例を示します。

  • https://signin.aws.amazon.com/saml#1

  • https://signin.aws.amazon.com/saml#2

Azure AD ではこれらの値から # の値を削除し、正しい値 https://signin.aws.amazon.com/saml を SAML トークンの対象 URL として送信します。

次の理由により、このアプローチをお勧めします。

  • アプリケーションごとに一意の X509 証明書が提供されます。 AWS アプリのインスタンスごとに異なる証明書の有効期限を設定でき、それらを個別の AWS アカウントに基づいて管理できます。 この場合、証明書全体のロールオーバーが容易になります。

  • Azure AD での AWS アプリによるユーザー プロビジョニングを有効にでき、続いてその AWS アカウントからすべてのロールが Microsoft のサービスによってフェッチされます。 アプリでの AWS ロールの追加や更新は手動で行う必要はありません。

  • アプリに対してアプリ所有者を個別に割り当てることができます。 このユーザーは、Azure AD で直接アプリを管理できます。

注意

必ずギャラリー アプリケーションのみを使用してください。

前提条件

開始するには、次が必要です。

  • Azure AD サブスクリプション。 サブスクリプションがない場合は、無料アカウントを取得できます。
  • AWS で IAM IdP が有効なサブスクリプション。
  • クラウド アプリケーション管理者に加え、アプリケーション管理者も、Azure AD でアプリケーションを追加または管理することができます。 詳細については、Azure の組み込みロールに関するページを参照してください。

注意

ロールのインポートを行う際に、Azure AD でロールを手動で編集することは避けてください。

シナリオの説明

このチュートリアルでは、テスト環境で Azure AD の SSO を構成してテストします。

  • AWS Single-Account Access では、SP および IDP によって開始される SSO がサポートされます。

注意

このアプリケーションの識別子は固定文字列値であるため、1 つのテナントで構成できるインスタンスは 1 つだけです。

Azure AD への AWS Single-Account Access の統合を構成するには、ギャラリーからマネージド SaaS アプリの一覧に AWS Single-Account Access を追加する必要があります。

  1. 職場アカウント、学校アカウント、または個人の Microsoft アカウントを使用して、Azure portal にサインインします。
  2. Azure portal で、 [Azure Active Directory] を検索して選択します。
  3. Azure Active Directory の概要メニューで、[エンタープライズ アプリケーション][すべてのアプリケーション] を選択します。
  4. アプリケーションを追加するには、 [新しいアプリケーション] を選択します。
  5. [ギャラリーから追加する] セクションで、検索ボックスに「AWS Single-Account Access」と入力します。
  6. 結果のパネルから [AWS Single-Account Access] を選択し、アプリを追加します。 お使いのテナントにアプリが追加されるのを数秒待機します。

または、Enterprise App Configuration ウィザードを使用することもできます。 このウィザードでは、SSO の構成に加えて、テナントへのアプリケーションの追加、アプリへのユーザーとグループの追加、ロールの割り当てを行うことができます。 Microsoft 365 ウィザードの詳細をご覧ください。

または、Enterprise App Configuration ウィザードを使用することもできます。 このウィザードでは、SSO の構成に加えて、テナントへのアプリケーションの追加、アプリへのユーザーとグループの追加、ロールの割り当てを行うことができます。 O365 ウィザードの詳細については、こちらを参照してください。

AWS Single-Account Access の Azure AD SSO の構成とテスト

B.Simon というテスト ユーザーを使用して、AWS Single-Account Access に対する Azure AD SSO を構成してテストします。 SSO が機能するためには、Azure AD ユーザーと AWS Single-Account Access の関連ユーザーとの間にリンク関係を確立する必要があります。

AWS Single-Account Access で Azure AD SSO を構成してテストするには、次の手順に従います。

  1. Azure AD SSO の構成 - ユーザーがこの機能を使用できるようにします。
    1. Azure AD のテスト ユーザーの作成 - B.Simon で Azure AD のシングル サインオンをテストします。
    2. Azure AD テスト ユーザーの割り当て - B.Simon が Azure AD シングル サインオンを使用できるようにします。
  2. AWS Single-Account Access の SSO の構成 - アプリケーション側でシングル サインオン設定を構成します。
    1. AWS Single-Account Access のテスト ユーザーの作成 - AWS Single-Account Access で B.Simon に対応するユーザーを作成し、Azure AD のこのユーザーにリンクさせます。
    2. AWS Single-Account Access でロール プロビジョニングを構成する方法
  3. SSO のテスト - 構成が機能するかどうかを確認します。

Azure AD SSO の構成

これらの手順に従って、Azure portal で Azure AD SSO を有効にします。

  1. Azure portal の AWS Single-Account Access アプリケーション統合ページで、 [管理] セクションを見つけて、 [シングル サインオン] を選択します。

  2. [シングル サインオン方式の選択] ページで、 [SAML] を選択します。

  3. [SAML によるシングル サインオンのセットアップ] ページで、 [基本的な SAML 構成] の鉛筆アイコンをクリックして設定を編集します。

    基本的な SAML 構成の編集を示すスクリーンショット。

  4. [基本的な SAML 構成] セクションで、[識別子 (エンティティ ID)][応答 URL] の両方を同じ既定値 () に更新します。 [保存] を選択して構成の変更を保存する必要があります。

  5. 複数のインスタンスを構成している場合は、識別子の値を指定します。 2 番目のインスタンス以降は、次の形式を使用します。これには、一意の SPN 値を指定するための # 符号が含まれます。

    https://signin.aws.amazon.com/saml#2

  6. AWS アプリケーションでは特定の形式の SAML アサーションが使用されるため、カスタム属性のマッピングを SAML トークンの属性の構成に追加する必要があります。 次のスクリーンショットには、既定の属性一覧が示されています。

    既定の属性を示すスクリーンショット。

  7. その他に、AWS アプリケーションでは、いくつかの属性が SAML 応答で返されることが想定されています。それらの属性を次に示します。 これらの属性も値が事前に設定されますが、要件に従ってそれらの値を確認することができます。

    名前 ソース属性 名前空間
    RoleSessionName user.userprincipalname https://aws.amazon.com/SAML/Attributes
    Role user.assignedroles https://aws.amazon.com/SAML/Attributes
    SessionDuration 「900 秒 (15 分) から43200 秒 (12 時間) の値を指定してください」 https://aws.amazon.com/SAML/Attributes

    注意

    AWS では、アプリケーションに対してユーザーのロールが割り当てられていることを想定しています。 ユーザーに適切なロールを割り当てることができるように、Azure AD でこれらのロールを設定してください。 Azure AD でロールを構成する方法については、こちらを参照してください

  8. [SAML によるシングル サインオンのセットアップ] ページの [SAML 署名証明書] (手順 3) ダイアログ ボックスで、 [証明書の追加] を選択します。

    新しい SAML 証明書の作成を示すスクリーンショット。

  9. 新しい SAML 署名証明書を生成し、 [新しい証明書] を選択します。 証明書通知のメール アドレスを入力します。

    新しい SAML 証明書を示すスクリーンショット。

  10. [SAML 署名証明書] セクションで、 [フェデレーション メタデータ XML] を探して [ダウンロード] を選択し、証明書をダウンロードして、お使いのコンピューターに保存します。

    証明書のダウンロード リンクを示すスクリーンショット。

  11. [AWS Single-Account Access のセットアップ] セクションで、要件に基づいて適切な URL をコピーします。

    構成 URL のコピーを示すスクリーンショット。

Azure AD のテスト ユーザーの作成

このセクションでは、Azure portal 内で B.Simon というテスト ユーザーを作成します。

  1. Azure portal で、 [Azure Active Directory] を検索して選択します。
  2. Azure Active Directory の概要メニューで、[ユーザー][すべてのユーザー] を選択します。
  3. 画面の上部にある [新しいユーザー] を選択します。
  4. [ユーザー] プロパティで、以下の手順を実行します。
    1. [名前] フィールドに「B.Simon」と入力します。
    2. [ユーザー名] フィールドに「username@companydomain.extension」と入力します。 たとえば、「 B.Simon@contoso.com 」のように入力します。
    3. [パスワードを表示] チェック ボックスをオンにし、 [パスワード] ボックスに表示された値を書き留めます。
    4. Create をクリックしてください。

Azure AD テスト ユーザーの割り当て

このセクションでは、B.Simon に AWS Single-Account Access へのアクセスを許可することで、このユーザーが Azure シングル サインオンを使用できるようにします。

  1. Azure portal で [エンタープライズ アプリケーション] を選択し、 [すべてのアプリケーション] を選択します。
  2. アプリケーション一覧で [AWS Single-Account Access] を選択します。
  3. アプリの概要ページで、 [管理] セクションを見つけて、 [ユーザーとグループ] を選択します。
  4. [ユーザーの追加] を選択し、 [割り当ての追加] ダイアログで [ユーザーとグループ] を選択します。
  5. [ユーザーとグループ] ダイアログの [ユーザー] の一覧から [B.Simon] を選択し、画面の下部にある [選択] ボタンをクリックします。
  6. ユーザーにロールが割り当てられることが想定される場合は、 [ロールの選択] ドロップダウンからそれを選択できます。 このアプリに対してロールが設定されていない場合は、[既定のアクセス] ロールが選択されていることを確認します。
  7. [割り当ての追加] ダイアログで、 [割り当て] をクリックします。

AWS Single-Account Access SSO の構成

  1. 別のブラウザー ウィンドウで、管理者として AWS 企業サイトにサインオンします。

  2. AWS ホーム ページで、IAM を検索してクリックします。

    IAM が強調表示された AWS サービス ページのスクリーンショット。

  3. [アクセス管理] ->[ID プロバイダー] に移動し、[プロバイダーの追加] ボタンをクリックします。

    [ID プロバイダー] と [プロバイダーの作成] が強調表示された IAM ページのスクリーンショット。

  4. [ID プロバイダーの追加] ページで、次の手順を実行します。

    [プロバイダーの設定] のスクリーンショット。

    a。 [Provider type](プロバイダーの種類)[SAML] を選択します。

    b. [プロバイダー名] にプロバイダー名を入力します (例: WAAD)。

    c. Azure portal からダウンロードしたメタデータ ファイルをアップロードするには、[Choose file](ファイルの選択) を選択します。

    d. [プロバイダーの追加] をクリックします。

  5. [ロール][ロールの作成] を選択します。

    [ロール] ページのスクリーンショット。

  6. [Create role] ページで、以下の手順を実行します。

    [ロールの作成] ページのスクリーンショット。

    a。 [信頼されたエンティティの種類] を選択し、[SAML 2.0 フェデレーション] を選択します。

    b. [SAML 2.0 ベースのプロバイダー] で、先ほど作成した SAML プロバイダーを選択します (例: WAAD)。

    c. [Allow programmatic and AWS Management Console access] を選択します。

    d. [次へ] を選択します。

  7. [アクセス許可ポリシー] ダイアログ ボックスで、組織の規定に準拠した適切なポリシーをアタッチします。 [次へ] を選択します。

    アクセス許可ポリシーをアタッチするダイアログ ボックスのスクリーンショット。

  8. [確認] ダイアログ ボックスで、次の手順を行います。

    [確認] ダイアログ ボックスのスクリーンショット。

    a. [ロール名] に、使用するロール名を入力します。

    b. [説明] に、ロールの説明を入力します。

    c. [ロールの作成] を選択します。

    d. 必要な数のロールを作成し、それらを ID プロバイダーにマップします。

  9. Azure AD ユーザー プロビジョニングの際に AWS アカウントからロールをフェッチするには、AWS サービス アカウントの資格情報を使用します。 そのためには、AWS コンソール ホームを開きます。

  10. [IAM] セクションで [ポリシー] を選択し、[ポリシーを作成する] をクリックします。

    [ポリシー] が強調表示された [IAM] セクションのスクリーンショット。

  11. AWS アカウントからすべてのロールをフェッチする独自のポリシーを作成します。

    [JSON] が強調表示された [ポリシーの作成] ページのスクリーンショット。

    a. [ポリシーの作成] セクションで、 [JSON] タブを選択します。

    b. ポリシー ドキュメントで、次の JSON を追加します。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                "iam:ListRoles"
                ],
                "Resource": "*"
            }
        ]
    }
    

    c. [次へ: タグ] をクリックします。

  12. 次のページで必要なタグを追加し、[次へ: 確認] をクリックすることもできます。

    [ポリシー タグの作成] ページのスクリーンショット。

  13. 新しいポリシーを定義します。

    [名前] と [説明] のフィールドが強調表示された [ポリシーの作成] ページのスクリーンショット。

    a. [名前] に「AzureAD_SSOUserRole_Policy」と入力します。

    b. ポリシーの [説明] に、「This policy will allow to fetch the roles from AWS accounts」と入力します。

    c. [ポリシーの作成] を選択します。

  14. AWS IAM サービスの新しいユーザー アカウントを作成します。

    a. AWS IAM コンソールで、[ユーザー] を選択し、[ユーザーの追加] をクリックします。

    [ユーザー] が強調表示された AWS IAM コンソールのスクリーンショット。

    b. [ユーザーの詳細の指定] セクションで、ユーザー名として「AzureADRoleManager」を入力し、[次へ] を選択します。

    [ユーザー名] と [アクセスの種類] が強調表示された [ユーザーを追加] ページのスクリーンショット。

    c. このユーザー用の新しいポリシーを作成します。

    このスクリーンショットは、[Add user]\(ユーザーを追加\) ページを示しています。ここで、ユーザーのポリシーを作成できます。

    d. [既存のポリシーを直接アタッチ] を選択します。

    e. [フィルター] セクションで、新しく作成されたポリシー AzureAD_SSOUserRole_Policy を検索します。

    f. ポリシーを選択し、[次へ] を選択します。

  15. 選択内容を確認し、[ユーザーの作成] を選択します。

  16. ユーザーのユーザー資格情報をダウンロードするには、[セキュリティ資格情報] タブでコンソール アクセスを有効にします。

    セキュリティ資格情報を示すスクリーンショット。

  17. これらの資格情報を Azure AD の [ユーザー プロビジョニング] セクションに入力して、AWS コンソールからロールをフェッチします。

    ユーザー資格情報のダウンロードを示すスクリーンショット。

注意

AWS には、AWS SSO を構成するためのAWSの権限や制限のセットが必要です。 AWS の制限の詳細については、 こちらの ページを参照してください。

AWS Single-Account Access でロール プロビジョニングを構成する方法

  1. Azure AD 管理ポータルの AWS アプリで、 [プロビジョニング] に移動します。

    [プロビジョニング] が強調表示された AWS アプリのスクリーンショット。

  2. アクセス キーとシークレットをそれぞれ [クライアント シークレット] フィールドと [シークレット トークン] フィールドに入力します。

    [管理者資格情報] ダイアログ ボックスのスクリーンショット。

    a. AWS ユーザーのアクセス キーを [clientsecret]/(clientsecret/) フィールドに入力します。

    b. AWS ユーザー シークレットを [シークレット トークン] フィールドに入力します。

    c. [接続テスト] を選択します。

    d. [保存] を選択して設定を保存します。

  3. [設定] セクションの [プロビジョニング状態][オン] を選択します。 次に、 [保存] を選択します。

    [オン] が強調表示された [設定] セクションのスクリーンショット。

注意

プロビジョニング サービスは、AWS から Azure AD にロールをインポートするだけです。 Azure AD のユーザーとグループが、このサービスによって AWS にプロビジョニングされることはありません。

注意

プロビジョニングの資格情報を保存したら、初回同期サイクルが実行されるまで待機する必要があります。 同期には通常、約 40 分かかります。 その状態は、 [プロビジョニング] ページ下部の [現在の状態] で確認できます。

AWS Single-Account Access のテスト ユーザーの作成

このセクションの目的は、AWS Single-Account Access で B.Simon というユーザーを作成することです。 AWS Single-Account Access では、SSO 用にユーザーをシステムに作成する必要がないため、ここで操作を実行する必要はありません。

SSO のテスト

このセクションでは、次のオプションを使用して Azure AD のシングル サインオン構成をテストします。

SP Initiated:

  • Azure portal で [このアプリケーションをテストします] をクリックします。 これにより、ログイン フローを開始できる AWS Single-Account Access のサインオン URL にリダイレクトされます。

  • AWS Single-Account Access のサインオン URL に直接移動し、そこからログイン フローを開始します。

IDP Initiated:

  • Azure portal で [このアプリケーションをテストします] をクリックすると、SSO を設定した AWS Single-Account Access に自動的にサインインされます。

また、Microsoft マイ アプリを使用して、任意のモードでアプリケーションをテストすることもできます。 マイ アプリで [AWS Single-Account Access] タイルをクリックすると、SP モードで構成されている場合は、ログイン フローを開始するためのアプリケーション サインオン ページにリダイレクトされます。IDP モードで構成されている場合は、SSO を設定した AWS Single-Account Access に自動的にサインインされます。 マイ アプリの詳細については、マイ アプリの概要に関するページを参照してください。

既知の問題

  • AWS Single-Account Access プロビジョニング統合は、AWS 中国リージョンでは使用できません。

  • [プロビジョニング] セクションの [マッピング] サブセクションには、"読み込み中..." というメッセージが表示され、属性マッピングは表示されません。 現在サポートされている唯一のプロビジョニング ワークフローは、ユーザーまたはグループ割り当て時の選択のために、AWS から Azure AD にロールをインポートすることです。 このための属性マッピングは事前に決定されており、構成はできません。

  • [準備中] セクションでは、1 つの AWS テナントに対して、一度に 1 セットの資格情報の入力だけがサポートされています。 インポートされたすべてのロールは、AWS テナントの Azure AD appRolesappRoles プロパティに書き込まれます。

    プロビジョニングのために複数の AWS テナント (servicePrincipals によって表される) をギャラリーから Azure AD に追加できます。 ただし、プロビジョニングに使用される複数の AWS servicePrincipals からインポートされたすべてのロールを、SSO に使用される単一の servicePrincipal に自動的に書き込むことができないという既知の問題があります。

    回避策として、Microsoft Graph API を使用して、プロビジョニングが構成されている各 AWS servicePrincipal にインポートされたすべての を抽出できます。 その後、これらのロール文字列を、SSO が構成されている AWS servicePrincipal に追加できます。

  • AWS から Azure AD へのインポート対象となるロールは、次の要件を満たす必要があります。

    • ロールには、AWS で SAML プロバイダーが 1 つだけ定義されている必要があります。
    • ロールの ARN (Amazon Resource Name) と、関連付けられている SAML プロバイダーの ARN を組み合わせた長さが 240 文字未満である必要があります。

ログの変更

  • 01/12/2020 - ロールの長さの上限が 119 文字から 239 文字に増加。

次の手順

AWS Single-Account Access を構成したら、組織の機密データを流出と侵入からリアルタイムで保護するセッション制御を適用することができます。 セッション制御は、条件付きアクセスを拡張したものです。 Microsoft Defender for Cloud Apps でセッション制御を強制する方法をご覧ください。