チュートリアル: Azure Active Directory シングル サインオン (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 シングル サインオン (SSO) が有効なサブスクリプション。

注意

ロールのインポートを行う際に、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] を選択し、アプリを追加します。 お使いのテナントにアプリが追加されるのを数秒待機します。

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] の両方を同じ既定値 (https://signin.aws.amazon.com/saml) に更新します。 [保存] を選択して構成の変更を保存する必要があります。

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

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

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

    image

  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 ホーム を選択します。

    AWS ホーム アイコンが強調表示された AWS 企業サイトのスクリーンショット

  3. [Identity and Access Management](ID とアクセス管理) を選択します。

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

  4. [ID プロバイダー] > [プロバイダーの作成] を選択します。

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

  5. [プロバイダーの設定] ページで、次の手順を行います。

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

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

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

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

    d. [Next Step](次のステップ) を選択します。

  6. [プロバイダー情報の検証] ページで [作成] を選択します。

    [作成] が強調表示された [プロバイダー情報の検証] のスクリーンショット

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

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

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

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

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

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

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

    d. Permissions(次へ: アクセス許可) をクリックします。

  9. [Attach アクセス権限ポリシー] ダイアログ ボックスで、組織の規定に準拠した適切なポリシーをアタッチします。 次に、次のステップ: 確認) をクリックします。

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

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

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

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

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

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

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

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

  12. [サービス] を選択します。 [セキュリティ、アイデンティティ、コンプライアンス][IAM] を選択します。

    [サービス] と [IAM] が強調表示された AWS コンソール ホームのスクリーンショット

  13. IAM セクションで [ポリシー] を選択します。

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

  14. Azure AD ユーザー プロビジョニングの際に AWS アカウントからロールをフェッチするために、 [ポリシーの作成] を選択して新しいポリシーを作成します。

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

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

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

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

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

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

    c. [Review policy] ボタン を選択して、ポリシーを検証します。

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

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

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

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

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

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

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

    a. AWS IAM コンソールで、 [ユーザー] を選択します。

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

    b. 新しいユーザーを作成するために、 [ユーザーを追加] を選択します。

    [ユーザーを追加] ボタンのスクリーンショット

    c. [ユーザーを追加] セクションで、次の手順を行います。

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

    • ユーザー名として「AzureADRoleManager」を入力します。

    • [アクセスの種類] で [プログラムによるアクセス] を選択します。 こうすると、ユーザーは API を呼び出し、AWS アカウントからロールをフェッチできます。

    • [次のステップ: アクセス権限] を選択します。

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

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

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

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

    c. ポリシーを選択し、次のステップ: 確認) をクリックします。

  19. ユーザーにアタッチしたポリシーを確認します。

    [ユーザーの作成] が強調表示された [ユーザーを追加] ページのスクリーンショット

    a. ユーザー名、アクセスの種類、ユーザーにマップされているポリシーを確認します。

    b. [Create user](ユーザーの作成) を選択します。

  20. ユーザーのユーザー資格情報をダウンロードします。

    このスクリーンショットは、ユーザー資格情報を取得するための [Download c s v](c s v のダウンロード) ボタンを備えた [Add user](ユーザーを追加) ページを示しています。

    a. ユーザーの [Access key ID][Secret access key] をコピーします。

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

    c. [閉じる] を選択します。

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 Single-Account Access プロビジョニング統合を使用して AWS Government 環境にアクセスすることはできません。

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

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

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

    回避策として、Microsoft Graph API を使用して、プロビジョニングが構成されている各 AWS servicePrincipal にインポートされたすべての appRoles を抽出できます。 その後、これらのロール文字列を、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 Cloud App Security でセッション制御を適用する方法をご覧ください。