AppStream 2.0 で IAM Identity Center を SAML 2.0 IdPとして利用する 〜 (4) フェデレーションまわりの設定

記事タイトルとURLをコピーする

はじめに

こんにちは、ドウミョウ と申します。

AppStream 2.0 の認証先として、IAM Identity Center を利用する検証を行ってみました。 何回かに分けて、実構築の模様をお届けします。

細かいチューニングは別途で行う前提で、
基本的な環境を構築し、フェデレーション設定を終わらせることをゴールとします。

本ポストでは

本ポストでは、実際に IAM Identity Center を利用し、 AppStream 2.0 スタックへの ID フェデレーションを設定していきます。

多くの場合、IAM Identity Center側と、AppStream 2.0 側で、別々のAWSアカウント環境になっていると思います。
フェデレーション設定にあたっては、双方のコンソール、アカウント間を行ったりきたりすることになりますので、1つ1つ確実に設定していきましょう。

実構築

IAM Identity Center で、アプリケーションを追加する

それではさっそく、設定をしていきます。

IAM Identity Center の管理コンソールで、アプリケーション > アプリケーションの追加 を実行します。

「アプリケーションタイプを選択」画面にて、「カタログからアプリケーションを選択する」を選択し、アプリケーションカタログ内から、Amazon AppStream 2.0 を選択します。
検索ボックスで絞り込むと探しやすいと思います。
次へ を 押下します。

「アプリケーションを設定」画面では、幾つか作業があります。

1)表示名 を設定します。
2)IAM Identity Center SAML メタデータファイル をダウンロードして、ローカルPCに保存しておきます。すぐ後で利用します。

3)「アプリケーションのプロパティ」セクションに、リレースレートの URLを記述します。リレーステートの URL の形式は、次のとおりです。

* https://リレーステート用リージョンエンドポイント?stack=スタック名&accountId=ハイフン無しのAWSアカウントID

参考までに、AppStream 2.0 リレーステートのリージョンごとのエンドポイントは、公式ドキュメントのコチラに記載があります。

4) アプリケーションメタデータの値を以下の通りとします。(デフォルト値)

設定が終わったら、送信 を押下します。

アプリケーションが作成されました。

IDプロバイダの作成

次は、AppStream 側のAWSアカウントにスイッチします。

IAM の作成画面にて、IDプロバイダと、フェデレーション用のIAMロールを作成していきます。

ID プロバイダの作成

IAM > IDプロバイダ > プロバイダを追加 を実行します。

プロバイダ名を設定します。
そして「メタデータドキュメント」に、先ほど入手した SAML メタデータファイルを、アップロードします。

プロバイダを追加 を押下します。

ID プロバイダが追加されました。
この ID プロバイダの ARN は、後ほど必要になりますので、メモしておきましょう。

ID プロバイダ用の IAM ロール作成

この ID プロバイダ用の IAM ロールを作成します。
ID プロバイダを選択して「ロールの割り当て」を押下します。

「新しいロールを作成」を選択し、次へ。

「信頼されたエンティティを選択」画面にて、「SAML 2.0 フェデレーション」を選択します。 先ほど作成した ID プロバイダを選択し、「属性」と「値」に、以下を設定します。

  • 属性:SAML:sub_type
  • 値:persistent

次へ を押下します。

許可ポリシーは何も追加せず、「次へ」を押下します。

任意の名前でロール名、説明を設定します。
内容を確認して、「ロールを作成」を押下します。

ロールが作成できました。
この IAM ロールの ARN は、後ほど必要になりますので、メモしておきましょう。

インラインポリシーの追加

作成した IAM ロールに、インラインポリシーを1つ追加します。

作成したロールを表示し、インラインポリシーを作成 を実行します。

JSONポリシーエディタにて、以下のテンプレートを貼り付けます。

{
    "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、ACCOUNT-ID-WITHOUT-HYPHENS、STACK-NAME の部分を、AppStream側のスタックを指定するように書き換えて下さい。

最後に、任意の名前を設定し、インラインポリシーを作成します。

これで、ID プロバイダと、ID フェデレーション用の IAM ロールの設定が終わりました。

IAM Identity Center 側で属性マッピングを設定

IAM Identity Center 側のAWSアカウントにスイッチします。

アプリケーションを選択し、属性マッピングを編集します。

属性を1行追加します。

「この文字列値または AWS SSO のユーザー属性にマッピング」には、
先ほど作成した「IDプロバイダ用のIAMロールのARN」と「IDプロバイダのARN」を、カンマ区切りで入力します。

  • アプリケーションのユーザー属性 : https://aws.amazon.com/SAML/Attributes/Role
  • この文字列値または AWS SSO のユーザー属性にマッピング : IAMロールのARN,IDプロバイダのARN
  • 形式 : unspecified

変更の保存 を押下します。

最後に、IAM Identity Center のアプリケーション上で、「ユーザーとグループを割り当てる」ボタンを押下し、アプリケーションを使うユーザー/グループを割り当てます。

今回は、予め作成しておいた AppStreamを利用するグループを割り当てました。

これで、全ての設定が完了です!
動作確認をしていきましょう。

動作確認

ブラウザから、AWS access portal URL にアクセスし、予め設定しておいたユーザーでログインします。
(AWS access portal のURLは、IAM Identity Center から確認できます)

設定した AppStream 2.0 のアプリケーションが表示されているはずです。
押下して実行します。

Continue with browser を実行します。

Chrome を設定したスタックが見えました!
押下して実行します。

初回は、読み込みに2分程度時間がかかります。

ブラウザの中で、AppStream 2.0 で作成したアプリケーション(Chrome)が立ち上がりました!

以上で、設定は終わりです。お疲れ様でした。

さいごに

本記事が、何かしら皆様の AppStream 2.0 利用の参考になれば幸いです。

本記事は、以下の弊社内のブログ記事、および AWS公式ブログ記事とドキュメントを参考にさせて頂きました。

blog.serverworks.co.jp

AWS Single Sign-On と Amazon AppStream 2.0 を使用してフェデレーションを有効にする | Amazon Web Services ブログ

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


Yoshitaka Domyo (記事一覧)

エンタープライズクラウド本部所属 プログラムマネージャー/プロジェクトマネージャー。

好きなものは、AWS、電子音楽、マンガです。