こんにちは。SCSKの谷です。
本記事ではAmazon WorkSpaces Pools について、とりあえず利用できるように最低限の設定を行い、WorkSpaces Client からWorkSpaces Pools へ接続するまでの手順を紹介しようと思います。
最低限の設定となるため、設定の詳細説明は省略しています。詳細については以下参考資料をご確認いただければと思います。
参考資料
今回WorkSpaces Poolsを使用するにあたり、以下のサイトを参考にしています。
- Amazon WorkSpaces Poolsを試してみた | DevelopersIO
- SAML 2.0 を設定して WorkSpaces Pools ディレクトリを作成する – Amazon WorkSpaces
前提条件
以下を作成済みであることを前提とします。
- VPC(NATゲートウェイ作成済み)
- Azure Portal のアカウント(無料登録可能)
⇒今回IdPとしてEntra IDを使用するため
概要
Amazon WorkSpaces Pools を利用するには、SAMLに対応したIdPとの連携が必要になります。今回はIdPとしてEntra IDを使用するため、AWSだけでなくEntra ID の設定も必要になってきます。
今回設定するサービスは以下になります。
- Entra ID(エンタープライズアプリケーション)
- IAM ID プロバイダ
- IAMロール
- WorkSpaces プールディレクトリ
- WorkSpaces Pools
手順
1.Azure Portal へサインイン(Azure)
Azure Portal へサインインし、[Entra ID]の概要からプライマリドメイン名をメモしておきます。
アカウントを登録していない場合は無料登録します。
2.WorkSpaces プールディレクトリの仮作成(AWS)
AWSコンソールより、[WorkSpaces]>[ディレクトリ]>[ディレクトリの作成]を選択します。
以下のように設定を行います。
- WorkSpace タイプ:プール
- ユーザアクセスURL:https://dammy
⇒後続のEntra ID の設定が完了した後に再設定するため、一旦ダミー値を設定しています。 - ディレクトリ名:手順1でメモした Azure Portal のプライマリドメイン名
- インターネットへのアクセス:チェックを外す
- VPC:用意したもの(デフォルトでも可)
- サブネット:プライベートサブネット
- セキュリティグループ:デフォルトのセキュリティグループ
他の設定はデフォルトで、[ディレクトリの作成]をクリックします。
3.Entra ID でエンタープライズアプリケーションを作成(Azure)
エンタープライズアプリケーションを作成
Azure Portal へサインイン >[Entra ID]>左ペインの[エンタープライズアプリケーション]>[新しいアプリケーション]>[独自のアプリケーションの作成]を選択します。
以下のように設定を行い、[作成]をクリックします。
- アプリの名前:AWS WorkSpaces Pools(任意)
- アプリの操作:ギャラリーに見つからないその他のアプリケーションを統合します (ギャラリー以外)
シングルサインオンの設定
次に、作成されたアプリケーションから[シングルサインオン]>[SAML]>[メタデータファイルをアップロードする]より、以下のXMLファイルをアップロードします。
signin.aws.amazon.com/static/saml-metadata.xml
アップロード後に表示される、「基本的なSAML構成」についてはそのまま[保存]をクリックします。
フェデレーションメタデータ XML の取得
次に、「SAML証明書」セクションより、「フェデレーション メタデータ XML」を[ダウンロード]します。
このXMLファイルは次の「IAMでのIDプロバイダの作成」で使用します。
4.IAMでのIDプロバイダの作成(AWS)
AWSコンソールより、[IAM]>[IDプロバイダ]>[プロバイダを追加]を選択し、以下のように設定しプロバイダを作成します。
- プロバイダのタイプ:SAML
- プロバイダ名:EntraID-WorkSpacesPools(任意)
- メタデータドキュメント:先ほど取得したフェデレーション メタデータ XML ファイル
5.フェデレーション用IAMロールの作成(AWS)
IAMロールの作成
AWSコンソールより、[IAM]>[ロール]>[ロールの作成]を選択し、以下のように設定します。
- 信頼されたエンティティタイプ:SAML 2.0 フェデレーション
- SAML 2.0 ベースのプロバイダー:先ほど作成したIDプロバイダ(EntraID-WorkSpacesPools)
- 許可されるアクセス:プログラムによるアクセスのみを許可する
- 属性:SAML:sub_type
- 値:persistent
- 許可ポリシー:選択しない
- ロール名:WorkSpacesPools-SAML-Role(任意)
その他はデフォルトで、一旦ロールを作成します。
IAMロールの「信頼されたエンティティ」の編集
IAMロール作成後、IAMロールの「信頼されたエンティティ」を編集します。
以下のように、”Action”内に”sts:TagSession”を追記して更新します。
インラインポリシーの追加
次に、作成したIAMロールにインラインポリシーを追加します。
追加するポリシーの内容は以下です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "workspaces:Stream",
"Resource": "<WorkSpacesプールディレクトリのARN>",
"Condition": {
"StringEquals": {"workspaces:userId": "${saml:sub}"}
}
}
]
}
6.Entra ID エンタープライズアプリケーションの設定更新(Azure)
新しいクレームの追加・既存クレームの更新
再度Azure Portal に戻り、「属性とクレーム」セクションの[編集]を選択します。
(Azure Portal を閉じてしまった場合は、Azure Portal にサインインし[Entra ID]>[エンタープライズアプリケーション]>[作成したエンタープライズアプリケーション(AWS WorkSpaces Pools)]>[シングルサインオン]より、「属性とクレーム」セクションの[編集]を選択してください。)
[新しいクレームの追加]を選択し、以下を追加してください。
| 名前 | ソース | ソース属性 |
| https://aws.amazon.com/SAML/Attributes/Role | 属性 | <IAMロールのARN>,<IDプロバイダのARN> |
| https://aws.amazon.com/SAML/Attributes/RoleSessionName | 属性 | user.userprincipalname |
| https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email | 属性 | Azure Portal 登録時に登録したメールアドレス |
続けて、「一意のユーザー識別子(名前 ID)」の内容を修正します。
「属性とクレーム」セクションの[編集]より「一意のユーザー識別子(名前 ID)」を選択し、以下のように設定します。
- 名前識別子の形式:永続的
- ソース:属性
- ソース属性:user.userprincipalname
「リレー状態」の追加
続けて、「基本的な SAML 構成」セクションの[編集]を選択します。
編集画面の下部にある「リレー状態」に以下の値を入力して保存します。
利用ユーザの登録
続けて、エンタープライズアプリケーションの左ペインより、[ユーザーとグループ]>[Add user/group]を選択してユーザを追加します。
今回は「testuser1」を追加しています。
※ユーザについては、Azure Portal 上部の検索バーから「ユーザー」と検索し、[新しいユーザー]より新規作成できます。
7.WorkSpaces プールディレクトリの本作成(AWS)
AWSコンソールより、[WorkSpaces]>[ディレクトリ]>[手順2で仮作成したプールディレクトリ]>認証セクションの[編集]>[SAML 2.0 アイデンティティプロバイダーの編集]を選択し、以下のように設定します。
- SAML 2.0 認証の有効化:チェック
- ユーザーアクセス URL:https://myapps.microsoft.com/signin/<エンタープライズアプリケーションID>?tenantId=<Entra IDテナントID>
WorkSpaces Pools を作成するための事前準備は以上です。
8.WorkSpaces Pools の作成(AWS)
WorkSpaces Pools を作成していきます。
AWSコンソールより、[WorkSpaces]>[WorkSpaceの作成]を選択し、以下のように設定します。
- オンボーディングのオプション:私は、自分のユースケースに必要な WorkSpace オプションを認識しています。
- WorkSpace タイプ:プール
- 名前、説明:任意の値
- バンドル:Standard with Windows 10 (Server 2022 based)
- WorkSpace プールディレクトリ:今回作成したWorkSpacesプールディレクトリ
今回は接続することが目的なので、その他の設定はデフォルトで[WorkSpace プールの作成]をクリックします。
WorkSpaceプールが停止済みで作成されるので起動します。(起動までに10分程かかります。)
状態が「実行中」になったことを確認し、「登録コード」をメモします。(「登録コード」は次の手順で使用します。)
9.WorkSpaces Pools へ接続する(WorkSpaces Client)
WorkSpaces Client から、作成したWorkSpaces Pools へ接続してみます。
WorkSpaces Client を起動し、WorkSpaces Pools の登録コードを入力し[Register]>[Continue to sign in WorkSpaces]をクリックします。
ブラウザにてシングルサインオンの画面が表示されるので、Entra ID で登録した利用ユーザの情報を入力します。
ユーザ名は「ユーザープリンシパル名」を、パスワードは利用ユーザー作成時に設定したものを入力してください。
※「ユーザープリンシパル名」はAzure Portal より確認してください。
少し待つと、WorkSpaces Client の画面に戻り、以下のように接続することができました!
苦労したこと
初回設定後にWorkSpaces Client からWorkSpaces Pools へ接続を試みた際、WorkSpaces Client の画面に「Something went wrong」というエラーが表示され接続ができませんでした。原因としてはEntra ID 側での設定ミスだったのですが、エラーが詳細に記載されているわけではないため原因特定に時間がかかりました。。
接続がうまくいかない場合は、設定値の確認、VPCやセキュリティグループなどネットワークの確認をお願いします。設定値については環境によって手順通りではない可能性もありますので、公式ドキュメントや他の技術ブログなども参考にしてみてください。ネットワークとしては、インターネットへの経路があるか、インバウンドルール・アウトバウンドルールで特別な制限をしていないか等の確認をお願いします。
まとめ
Amazon WorkSpaces Pools について、最低限の設定を行いWorkSpaces Client から接続をしてみました。
Poolsについては多数のユーザからの接続を想定したものになりますので、今回はデフォルト値としましたが、スケーリングの設定を行うことができます。今後はPoolsのスケーリング設定などをいじってみてどのようなスケーリングの挙動となるのか、またファイルはユーザ毎に保存できるのか等を試していければと思います。



























