SAML のセットアップ - Amazon AppStream 2.0

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SAML のセットアップ

ユーザーが既存の認証情報を使用して AppStream 2.0 にサインインし、ストリーミングアプリケーションを起動できるようにするには、SAML 2.0 を使用して ID フェデレーションを設定できます。これを行うには、IAM ロールとリレーステート URL を使用して SAML 2.0 準拠の ID プロバイダー (IdP ) を設定し、 を有効に AWS してフェデレーティッドユーザーが AppStream 2.0 スタックにアクセスできるようにします。IAM ロールは、スタックへのアクセス許可をユーザーに付与します。リレーステートは、 AWS による認証に成功した後にユーザーが転送されるスタックポータルです。

前提条件

SAML 2.0 接続を設定する前に、以下の前提条件を満たしていることを確認してください。

  1. AWS との信頼関係を確立するように SAML ベースの IdP を設定します。

    • 組織のネットワーク内で、ID ストアを SAML ベースの IdP で機能するように設定します。設定のリソースについては、AppStream 2.0 と SAML 2.0 の統合 を参照してください。

    • SAML ベースの IdP を使用して、組織を IdP として定義するフェデレーションメタデータドキュメントを生成し、ダウンロードします。署名されたこの XML ドキュメントは、証明書利用者の信頼を確立するために使用されます。後で IAM コンソールからアクセスできる場所にこのファイルを保存します。

  2. AppStream 2.0 マネジメントコンソールを使用して AppStream 2.0 スタックを作成します。このトピックで後述するように、IAM ポリシーを作成し、IdP と AppStream 2.0 の統合を設定するには、スタック名が必要です。

    AppStream 2.0 マネジメントコンソール、、または AppStream 2.0 API を使用して AWS CLI、 AppStream 2.0 スタックを作成できます。詳細については、「 AppStream 2.0 フリートとスタックを作成する」を参照してください。

ステップ 1: AWS IAM で SAML ID プロバイダーを作成する

まず、 AWS IAM で SAML IdP を作成します。この IdP は、組織内の IdP ソフトウェアによって生成されたメタデータドキュメントを使用して、組織の IdP とAWS 信頼の関係を定義します。詳細については、IAM ユーザーガイドCreating and Managing a SAML Identity Provider (Amazon Web Services Management Console) を参照してください。 AWS GovCloud (US) リージョン IdPs での SAML の使用については、 AWS GovCloud (US) ユーザーガイドAWS Identity and Access Management を参照してください。

ステップ 2: SAML 2.0 フェデレーション IAM ロールを作成する

次に、SAML 2.0 フェデレーション IAM ロールを作成します。この手順では、IAM と組織の IdP 間に、IdP をフェデレーションの信頼されるエンティティと識別する信頼関係を確立します。

SAML IdP への IAM ロールを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [ロール][ロールの作成] の順に選択します。

  3. [ロールタイプ] で [SAML 2.0 フェデレーション] を選択します。

  4. [SAML プロバイダー] で、作成した SAML IdP を選択します。

    重要

    2 つの SAML 2.0 アクセスメソッド ([プログラムによるアクセスのみを許可する] または [プログラムによるアクセスと Amazon Web Services マネジメントコンソールによるアクセスを許可する]) のいずれも選択しないでください。

  5. [属性] で [SAML:aud] を選択します。

  6. [] に「https://signin.aws.amazon.com/saml」と入力します。この値は、persistent の値の SAML サブジェクトタイプアサーションを含む SAML ユーザーストリーミングリクエストへのロールアクセスを制限します。SAML:sub_type が persistent の場合、IdP は特定のユーザーからのすべての SAML リクエストで同じ一意の値を NameID 要素に送信します。SAML:sub_type アサーションの詳細については、「Using SAML-Based Federation for API Access to 」の「Uniquely Identitying Users in SAML-Based Federation AWS」セクションを参照してください。

  7. 正しい信頼されたエンティティおよび条件を確認して SAML 2.0 の信頼情報を確かめたら、[Next: Permissions] (次: アクセス許可) を選択します。

  8. [アクセス権限ポリシーをアタッチする] ページで、[Next: Tags] を選択します。

  9. (オプション) 追加する各タグのキーと値を入力します。詳細については、Tagging IAM Users and Roles を参照してください。

  10. 終了したら、[Next: Review] を選択します。後でこのロールにインラインポリシーを作成して埋め込みます。

  11. [Role name] (ロール名) に、このロールの目的を識別できる名前を入力します。なぜなら複数エンティティがロールを参照している可能性があります。ロールが作成された後のロールの名前の編集はできません。

  12. (オプション) [Role description] (ロールの説明) に、新しいロールの説明を入力します。

  13. ロールの詳細を確認し、[ロールの作成] を選択します。

  14. (オプション) サードパーティーの SAML 2.0 ID プロバイダーまたは証明書ベースの認証を使用して属性ベースのアプリケーションの使用権限を使用する場合は、新しい IAM ロールの信頼ポリシーに sts:TagSession permission を追加する必要があります。詳細については、「サードパーティーの SAML 2.0 アイデンティティプロバイダーを使用した属性ベースのアプリケーションの使用権限」および「AWS STS でのセッションタグの受け渡し」を参照してください。

    新しい IAM ロールの詳細ページで、[Trust relationships] (信頼関係) タブを選択してから、[Edit trust relationship] (信頼関係の編集) を選択します。[信頼関係の編集] ポリシーエディタが起動します。sts:TagSession アクセス許可を次のように追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:saml-provider/IDENTITY-PROVIDER" }, "Action": [ "sts:AssumeRoleWithSAML", "sts:TagSession" ], "Condition": { "StringEquals": { "SAML:sub_type": "persistent" } } } ] }

    [IDENTITY-PROVIDER] を、ステップ 1 で作成した SAML IdP の名前と置き換えます。次に、[Update Trust Policy] (信頼ポリシーの更新) を選択します。

ステップ 3: IAM ロールにインラインポリシーを埋め込む

次に、作成したロールにインライン IAM ポリシーを埋め込みます。インラインポリシーを埋め込むと、ポリシーのアクセス許可が、間違ったプリンシパルエンティティにアタッチされることを回避できます。インラインポリシーは、フェデレーティッドユーザーに、作成した AppStream 2.0 スタックへのアクセスを提供します。

  1. 作成した IAM ロールの詳細で、[Permissions (アクセス許可)] タブを選択し、[Add inline policy (インラインポリシーの追加)] を選択します。ポリシーの作成ウィザードが起動します。

  2. [ポリシーの作成] で、[JSON] タブを選択します。

  3. 次の JSON ポリシーを JSON ウィンドウにコピーして貼り付けます。次に、 AWS リージョン コード、アカウント ID、スタック名を入力してリソースを変更します。次のポリシーでは、 "Action": "appstream:Stream"は、作成したスタックのストリーミングセッションに接続するアクセス許可を AppStream 2.0 ユーザーに付与するアクションです。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "appstream:Stream", "Resource": "arn:aws:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/STACK-NAME", "Condition": { "StringEquals": { "appstream:userId": "${saml:sub}" } } } ] }

    REGION-CODE を、 AppStream 2.0 スタックが存在する AWS リージョンに置き換えます。STACK-NAME をこのスタック名に置き換えます。STACK-NAME では大文字と小文字が区別され、 AppStream 2.0 マネジメントコンソールの スタックダッシュボードに表示されるスタック名として大文字と小文字が正確に一致する必要があります。

    AWS GovCloud (US) リージョン内のリソースの場合は、ARN に次の形式を使用します。

    arn:aws-us-gov:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/STACK-NAME

  4. (オプション) SAML 2.0 マルチスタックアプリケーションカタログのサードパーティー SAML 2.0 アイデンティティプロバイダーを使用して、属性ベースのアプリケーションの使用権限を使用する予定の場合は、IAM ロールのインラインポリシー内のリソースは "Resource": "arn:aws:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/*" である必要があり、アプリケーション使用権限がスタックへのストリーミングアクセスを制御します。スタックリソースに追加の保護を適用するには、ポリシーに明示的拒否を追加します。詳細については、「サードパーティーの SAML 2.0 アイデンティティプロバイダーを使用した属性ベースのアプリケーションの使用権限」、および「ポリシーの評価論理」を参照してください。

  5. 完了したら、[ポリシーの確認] をクリックします。構文エラーがある場合は、Policy Validator (ポリシー検証) によってレポートされます。

ステップ 4: SAML ベースの IdP を設定する

次に、SAML ベースの IdP によっては、https://signin.aws.amazon.com/static/saml-metadata.xml にあるsaml-metadata.xmlファイルを IdP にアップロードして、サービスプロバイダー AWS として信頼するように IdP を手動で更新する必要がある場合があります。このステップは、IdP のメタデータを更新します。一部の では IdPs、更新がすでに設定されている可能性があります。この場合は、次のステップに進みます。

IdP でこの更新がまだ設定されていない場合には、IdP から提供されるドキュメンテーションでメタデータを更新する方法に関する情報を確認します。プロバイダーによっては、URL を入力し、また IdP によってファイルを取得してインストールするオプションが提供されます。また、URL からファイルをダウンロードし、ローカルファイルとして指定する必要があるプロバイダーもあります。

ステップ 5: SAML 認証レスポンスのアサーションを作成する

次に、認証レスポンスで IdP が に送信する情報を SAML 属性 AWS として設定する必要がある場合があります。IdP によっては、この情報はすでに設定されています。この場合、この手順をスキップしてステップ 6 に進みます。

この情報がまだ設定されていない場合は、IdP で次を実行します。

  • SAML Subject NameID (SAML サブジェクト名 ID) – 署名するユーザーの一意の識別子。

    注記

    ドメイン結合フリートを持つスタックの場合、ユーザーの NameID 値は、sAM domain\usernameを使用して「」、AccountName または を使用して「」の形式で指定する必要がありますusername@domain.com userPrincipalName。sAM AccountName 形式を使用している場合は、NetBIOS 名または完全修飾ドメイン名 (FQDN) domainを使用して を指定できます。Active Directory の一方向信頼シナリオでは、sAM AccountName 形式が必要です。詳細については、「AppStream 2.0 でのアクティブディレクトリの使用」を参照してください。

  • SAML Subject Type (SAML サブジェクトタイプ) (値を persistent に設定) – 値を persistent に設定すると、特定のユーザーからのすべての SAML リクエストの NameID 要素に同じ一意の値を IdP が送信することを確保できます。persistent で説明するように、SAML sub_type が ステップ 2: SAML 2.0 フェデレーション IAM ロールを作成する に設定されている SAML リクエストのみを許可する条件が IAM ポリシーに含まれていることを確認します。

  • Attribute 要素 (Name 属性が https://aws.amazon.com/SAML/Attributes/Role に設定) – この要素には、IdP によってマッピングされたユーザーの IAM ロールと SAML IdP を一覧表示する 1 つ以上の AttributeValue 要素が含まれます。このロールと IdP は、カンマ区切りの ARN のペアとして指定されます。

  • Attribute Name 属性が https://aws.amazon.com/SAML/Attributes/RoleSessionName に設定された 要素 – この要素には、 SSO 用に発行される AWS 一時的な認証情報の識別子を提供する AttributeValue要素が 1 つ含まれています。AttributeValue 要素の値は 2~64 文字で、英数字、アンダースコア、および + (プラス記号)、= (等号)、, (カンマ)、. (ピリオド)、@ (アットマーク)、- (ハイフン) のみで構成する必要があります。スペースを含めることはできません。通常、この値はユーザー ID (bobsmith) またはメールアドレス (bobsmith:bobsmith@example.com) になります。ユーザーの表示名 (Bob Smith) のように、スペースを含む値とすることはできません。

  • Attribute Name 属性が https://aws.amazon.com/SAML/Attributes/PrincipalTag:SessionContext (オプション) に設定されている 要素 – この要素には、ストリーミングアプリケーションにセッションコンテキストパラメータを渡すために使用できるパラメータを提供する AttributeValue 要素が 1 つ含まれています。詳細については、「セッションコンテキスト」を参照してください。

  • Attribute Name 属性が https://aws.amazon.com/SAML/Attributes/PrincipalTag:ObjectSid (オプション) に設定されている 要素 – この要素には、サインインしているユーザーの Active Directory セキュリティ識別子 (SID) を提供する AttributeValue 要素が 1 つ含まれています。このパラメータを証明書ベースの認証で使用すると、Active Directory ユーザーへの強力なマッピングが可能になります。

  • Attribute Name 属性が https://aws.amazon.com/SAML/Attributes/PrincipalTag:Domain (オプション) に設定されている 要素 – この要素には、サインインしているユーザーの Active Directory DNS 完全修飾ドメイン名 (FQDN) を提供する AttributeValue要素が 1 つ含まれています。このパラメータは、ユーザーの Active Directory userPrincipalName に代替サフィックスが含まれている場合に、証明書ベースの認証で使用されます。値は、サブドメインを含め、domain.com の形式で指定する必要があります。

  • Attribute SessionDuration 属性が https://aws.amazon.com/SAML/Attributes/SessionDuration (オプション) に設定された 要素 – この要素には、ユーザーのフェデレーティッドストリーミングセッションが再認証が必要になる前にアクティブのままにできる最大時間を指定する AttributeValue要素が 1 つ含まれています。デフォルト値は 60 分 (3,600 秒) です。詳細については、「認証レスポンスの SAML アサーションの設定」の SessionDuration 「属性が https://aws.amazon.com/SAML/Attributes/SessionDuration に設定されているオプションの属性要素」セクションを参照してください。 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html

    注記

    SessionDuration はオプションの属性ですが、これを SAML レスポンスに含めることをお勧めします。この属性を指定しない場合、セッション時間はデフォルト値の 60 分に設定されます。

    ユーザーが AppStream 2.0 ネイティブクライアントを使用するか、新しいエクスペリエンスでウェブブラウザを使用して AppStream 2.0 でストリーミングアプリケーションにアクセスする場合、セッション期間が終了するとセッションは切断されます。ユーザーが古い/クラシックエクスペリエンスのウェブブラウザを使用して 2.0 で AppStreamストリーミングアプリケーションにアクセスする場合、ユーザーのセッション期間が終了してブラウザページを更新すると、セッションは切断されます。

これらの要素を設定する方法については、IAM ユーザーガイドConfiguring SAML Assertions for the Authentication Response を参照してください。IdP に特定の設定要件に関する詳細は、IdP のドキュメンテーションを参照してください。

ステップ 6: フェデレーションのリレーステートを設定する

最後に、IdP を使用して AppStream 2.0 スタックのリレーステート URL を指すようにフェデレーションのリレーステートを設定します。による認証に成功すると AWS、ユーザーは AppStream 2.0 スタックポータルに誘導され、SAML 認証レスポンスでリレーステートとして定義されます。

リレーステートの URL の形式は次のようになります。

https://relay-state-region-endpoint?stack=stackname&accountId=aws-account-id-without-hyphens

Amazon Web Services アカウント ID、スタック名、およびスタックが位置するリージョンと関連付けられたリレーステートのエンドポイントを基に、リレーステートの URL を構成します。

オプションで、自動的に起動するアプリケーションの名前を指定できます。アプリケーション名を確認するには、 AppStream 2.0 コンソールでイメージを選択し、アプリケーションタブを選択し、アプリケーション名列に表示される名前をメモします。または、イメージをまだ作成していない場合は、アプリケーションをインストールした Image Builder に接続し、Image Assistant を開きます。アプリケーション名は [Add Apps] タブに表示されます。

[Desktop (デスクトップ)] ストリームビューに対してフリートが有効になっている場合は、オペレーティングシステムのデスクトップに直接起動することもできます。これを行うには、リレー状態 URL の最後の Desktop の末尾に、&app= を指定します。

サードパーティー SAML 2.0 アイデンティティプロバイダーを使用する属性ベースのアプリケーションの使用権限を使用すると、単一のリレー状態 URL から複数のスタックへのアクセスを有効にできます。次のように、リレー状態 URL からスタックと アプリケーション (存在する場合) パラメータを削除します。

https://relay-state-region-endpoint?accountId=aws-account-id-without-hyphens

ユーザーが AppStream 2.0 アプリケーションカタログにフェデレートすると、スタックが配置されているリージョンに関連付けられたアカウント ID およびリレーステートエンドポイントについて、アプリケーションの使用権限が 1 つ以上のアプリケーションをユーザーに一致させたすべてのスタックが表示されます。ユーザーがカタログを選択すると、アプリケーションの使用権限には、そのユーザーが資格を持つアプリケーションのみが表示されます。

詳細については、「サードパーティーの SAML 2.0 アイデンティティプロバイダーを使用した属性ベースのアプリケーションの使用権限」を参照してください。

次の表は、 AppStream 2.0 が利用可能なリージョンのリレーステートエンドポイントの一覧です。ユーザーに FIPS 準拠の接続を使用してストリーミングするように求める場合は、FIPS 準拠のエンドポイントを使用する必要があります。FIPS エンドポイントの詳細については、FIPS エンドポイントを使用した転送中のデータの保護 を参照してください。

リージョン リレーステートのエンドポイント
米国東部 (バージニア北部)

https://appstream2.us-east-1.aws.amazon.com/saml

(FIPS) https://appstream2-fips.us-east-1.aws.amazon.com/saml

米国東部(オハイオ) https://appstream2.us-east-2.aws.amazon.com/saml
米国西部(オレゴン)

https://appstream2.us-west-2.aws.amazon.com/saml

(FIPS) https://appstream2-fips.us-west-2.aws.amazon.com/saml

アジアパシフィック (ムンバイ) https://appstream2.ap-south-1.aws.amazon.com/saml
アジアパシフィック (ソウル) https://appstream2.ap-northeast-2.aws.amazon.com/saml
アジアパシフィック (シンガポール) https://appstream2.ap-southeast-1.aws.amazon.com/saml
アジアパシフィック (シドニー) https://appstream2.ap-southeast-2.aws.amazon.com/saml
アジアパシフィック (東京) https://appstream2.ap-northeast-1.aws.amazon.com/saml

カナダ (中部)

https://appstream2.ca-central-1.aws.amazon.com/saml
欧州 (フランクフルト) https://appstream2.eu-central-1.aws.amazon.com/saml
欧州 (アイルランド) https://appstream2.eu-west-1.aws.amazon.com/saml
欧州 (ロンドン) https://appstream2.eu-west-2.aws.amazon.com/saml
AWS GovCloud (米国東部)

https://appstream2.us-gov-east-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2-fips.us-gov-east-1.amazonaws-us-gov.com/saml

注記

AWS GovCloud (US) リージョンでの AppStream 2.0 の使用の詳細については、 AWS GovCloud (US) ユーザーガイド「Amazon AppStream 2.0」を参照してください。

AWS GovCloud (米国西部)

https://appstream2.us-gov-west-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2-fips.us-gov-west-1.amazonaws-us-gov.com/saml

注記

AWS GovCloud (US) リージョンでの AppStream 2.0 の使用の詳細については、 AWS GovCloud (US) ユーザーガイド「Amazon AppStream 2.0」を参照してください。

南米(サンパウロ) https://appstream2.sa-east-1.aws.amazon.com/saml