AppStream2.0でユーザーごとに使用できるStackを制御する方法

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

概要

AppStreamではDesktopビューを利用できます。
Desktopビューで複数の環境を利用しようとすると、Fleet・Stackも複数作成することになります。
ログイン後にAppStreamの画面でCatalog(Stack)を選択するのですが、ユーザが利用しないStackは表示させたくないという場合もあるかと思います。
今回は、SAML2.0で認証した際に、エンドユーザごとに表示するStackを制限する方法を紹介します。

表示制御のしくみ

StackのApplication Entitlement設定を利用します。
イメージとしては、Stackにタグをつけて、エンドユーザが指定したタグがついているStackだけをCatalog画面に表示するという方法です。

下の図は、部署のタグが付いているStackを表示させる例です。
ユーザごとに設定されている部署の業務で使用するStackだけを表示させることができます。

設定方法

AWSとIdPの双方で設定を入れる必要があります。

AWS設定

AWS側では2つ設定を行います。

リレーステートの発行

SAML2.0の設定時にリレーステートを作成します。
リレーステートURLの作成時、Stack名は指定しない形でURLを作成します。

基本的なリレーステートURL:
https://relay-state-region-endpoint?stack=stackname&accountId=aws-account-id-without-hyphens
Stack名は指定しない形のリレーステートURL:
https://relay-state-region-endpoint?accountId=aws-account-id-without-hyphens

IAMロールの修正

SAML2.0を利用するにはIAMロールが必要になりますが、Application Entitlement設定を利用するには、IAMロールの修正が必要になります。
ロールのActionに「"sts:TagSession"」を追加してください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::<AWSアカウントID>:saml-provider/<IdP名>"
            },
            "Action": [
                "sts:AssumeRoleWithSAML",
                "sts:TagSession"
            ],
            "Condition": {
                "StringEquals": {
                    "SAML:aud": "https://signin.aws.amazon.com/saml"
                }
            }
        }
    ]
}
Application Entitleament設定

StackのApplication Entitleament設定でタグを作成します。
1つのStackで複数のタグを作成することもできます。


Stackの設定画面からApplication Entitlementの[Create]をクリックします。

設定項目 設定内容 備考
Name 任意の名称
Description 任意の説明 オプション
Attribute Name タグの種類を選択 組織だったらorganization、部署だったらdepartmentなどご自身が分かりやすいものを選択してください
Attribute Value 任意のタグ名
Application options Desktopビューの場合はAllを選択

IdP設定

IdP側では2つ設定を入れます。

リレーステートの設定

Stack名は指定しない形のリレーステートURLをIdPに伝えて設定してもらいます。
すでにリレーステートが設定されている場合はURLを置き換えてもらう必要があります。

SAMLアサーションの設定

SAMLアサーションを追加します。
IdPに以下の情報を伝えて追加してもらう必要があります。
値については、ユーザごとに変える必要があるので、AD連携するなどしてください。

項目:https://aws.amazon.com/SAML/Attributes/PrincipalTag:SessionContext
値:タグ名(Application Entitlementで設定した値)
SessionContext はタグの種類(groupsなど)を設定

参考URL

リレーステートの発行

docs.aws.amazon.com

SAMLアサーションの作成

docs.aws.amazon.com