Amazon AppStream 2.0
開発者ガイド

SAML のセットアップ

既存の認証情報を使用してユーザーが AppStream 2.0 にサインインしたり、アプリケーションのストリーミングを開始したりできるように、SAML 2.0. を使用して ID フェデレーションを設定します。このためには、IAM ロールとリレーステート URL を使用して SAML 2.0 準拠 ID プロバイダー (IdP) を設定し、フェデレーティッドユーザーが AppStream 2.0 スタックにアクセスすることを AWS が許可するようにします。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 ポリシーを作成し、AppStream 2.0 で IdP 統合を設定するには、このスタック名が必要です。

    AppStream 2.0 スタックを作成するには、AppStream 2.0 管理コンソール、AWS CLI、または AppStream 2.0 API を使用します。詳細については、「AppStream 2.0 フリートおよびスタックの作成」を参照してください。

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

まず、AWS IAM で SAML IdP を作成します。この IdP は、組織の IdP ソフトウェアで生成するメタデータドキュメントを使用して、組織の AWS 信頼関係用 IdP を定義します。詳細については、『IAM ユーザーガイド』の「SAML ID プロバイダーの作成と管理 (AWS マネジメントコンソール)」を参照してください。

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

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

SAML IdP の IAM ロールを作成するには

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles]、[Create role] の順に選択します。

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

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

    重要

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

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

  6. [Value] に、「persistent」と入力します。この手順は、persistent の値の SAML サブジェクトタイプアサーションを含む SAML ユーザーストリーミングリクエストのみにアクセスできるように、ロールを制限します。SAML:sub_type が persistent の場合、IdP は特定のユーザーからのすべての SAML リクエストで同じ一意の値を NameID 要素に送信します。SAML:sub_type アサーションに関する詳細は、『SAML ベースのフェデレーションを使用した AWS への API アクセス』で「SAML ベースのフェデレーションでユーザーを一意に識別する」を参照してください。

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

  8. [Attach permissions policies (アクセス許可ポリシーをアタッチする)] ページで、[Next: Review (次: 確認)] を選択します。後でこのロールにインラインポリシーを作成して埋め込みます。

  9. [ name] に、このロールの目的を識別しやすくするロール名を入力します。多くのエンティティによりロールが参照されるため、作成後にロール名を変更することはできません。

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

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

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

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

ユーザーあるいはロールにインラインポリシーを埋め込む手順におけるステップを実行するときに、[JSON] でポリシーを作成するように注意してください。これを行うには、次の 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}", "saml:sub_type": "persistent" } } } ] }

AppStream 2.0 スタックが存在する AWS リージョンに該当する REGION-CODE の値を選択します。STACK-NAME をこのスタック名に置き換えます。この値では大文字と小文字が区別されるため、このポリシーで指定するスタック名は、AppStream 2.0 マネジメントコンソールの [スタック] ダッシュボードで表示される AppStream 2.0 スタック名と一致する必要があることに注意してください。

注記

JSON ポリシーをコピーして貼り付けた後、憲章に失敗したことを示すエラーメッセージが表示されることがあります。このエラーを無視して、ポリシーの作成を続行します。このポリシーがアクセス許可を付与しないことを示すエラーが [ポリシーの確認] に表示される場合もあります。このエラーを無視します。JSON のポリシーは有効であり、必要なアクセス許可を付与します。

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

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

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

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

次に、SAML ベース IdP によっては、認証レスポンスの一部として IdP が AWS に渡す SAML 属性としての情報を設定する必要がある場合もあります。一部の IdP では、この情報はすでに設定されています。一部の IdP では、この情報はすでに設定されています。

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

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

    注記

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

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

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

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

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

これらの要素を設定する方法については、『IAM ユーザーガイド』 の「認証レスポンスの SAML アサーションを設定する」を参照してください。IdP に特定の設定要件に関する詳細は、IdP のドキュメンテーションを参照してください。

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

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

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

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

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

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

https://relay-state-region-endoint?stack=stackname&accountId=aws-account-id-without-hyphens&app=application-name-to-launch

次の表は、AppStream 2.0 を利用できるリージョンのリレーステートエンドポイントを示しています。

リージョン リレーステートのエンドポイント
us-east-1 (バージニア北部) https://appstream2.us-east-1.aws.amazon.com/saml
us-west-2 (オレゴン) https://appstream2.us-west-2.aws.amazon.com/saml
ap-northeast-1 (東京) https://appstream2.ap-northeast-1.aws.amazon.com/saml
ap-northeast-2 (ソウル) https://appstream2.ap-northeast-2.aws.amazon.com/saml
ap-southeast-1 (シンガポール) https://appstream2.ap-southeast-1.aws.amazon.com/saml
ap-southeast-2 (シドニー) https://appstream2.ap-southeast-2.aws.amazon.com/saml
eu-central-1 (フランクフルト) https://appstream2.eu-central-1.aws.amazon.com/saml
eu-west-1 (アイルランド) https://appstream2.eu-west-1.aws.amazon.com/saml