Amazon WorkspacesをEntraIDでSAML2.0認証
WorkspacesでMFAの設定は面倒
代表的なDaaSであるAWSのWorkspacesとAzureのAVD。
主な違いは
Workspaces | AVD |
---|---|
Windows Serverのみ | Windows10/11利用可 |
1台=1人の占有 | 1台=複数人の共有もOK |
認証は内部 or AD | 認証はEntra ID利用可脳 |
MFAはRadius必要 | MFAはEntra ID依存 |
と挙げだしたらキリがないのだけど、
WorkspaceでMFAを利用するためにはRadius環境が必要。
そのRadisuサーバを個別に立てるのは面倒なので、
別の方法として、
SAML2.0の連携を行い、その連携先でMFAを設定すれば
WorkspacesでもMFAを利用可能するのでは、と思い
設定することにしてみた。
構成図
同じアカウントに作ったら面白みがないので、
ADサーバは別アカウントに作る。
加えて、ADとEntra IDはEntra ID Connectでユーザーを同期。
これで同じID/PassでWorkspacesにもログインができるようになる。
Workspaces構築
ADの構築やEntra ID Connectの設定等は省略。
VPCやPeeringも省略。
Workspacesの構築から。
1.Directory Service設定
Workspacesで使うディレクトリをセットアップする。
ここではAD Connectorにする。
サイズは当然スモール。
設置先のVPC、サブネットを設定。
ADサーバへの接続情報を入力。
作成完了。
2.Workspaces作成
次にWorkspacesを作成。
先ほど作成したディレクトリを登録。
ユーザー作成は不要。
対象のユーザーを選択。
バンドル(スペック)を選択。
OSイメージも選択。
実行モードを選択。
必要に応じてカスタマイズ。
Workspaces作成完了。
3.エンタープライズアプリケーション作成、SAML設定
実質的にここから本題。
Entra IDにログインし、SAML2.0用のエンタープライズアプリケーションを作成する。
[独自アプリケーションの作成]をクリック。
任意の名前を入力して、アプリ作成。
[シングルサインオンの設定 - 作業の開始]をクリック。
[SAML]をクリック。
AWSが提供されているWorkspacesのSAMLメタデータを保存。
DLしたSAMLメタデータをアップロードする。
[保存]をクリック。
[フェデレーションメタデータXML]をダウンロードする。
4.IAM Identity Provider作成
AWSのIAMコンソールに移動。
[IDプロバイダ]をクリック。
[プロバイダを追加]をクリック。
任意のプロバイダ名を入力し、先ほどDLしたフェデレーションメタデータXMLファイルをアップロードする。
IDプロバイダを作成できたので、[ロールの割り当て]をクリック。
5.IAMロール作成
[新しいロールを作成]を選択して[次へ]をクリック。
信頼されたエンティティタイプ等はそのまま。
属性:SAML:sub_type
値:persistent
をそれぞれ設定する。
許可ポリシーは未設定のまま次へ。
任意のロール名を入力して、IAMロール作成。
作成したIAMロールを開き、[信頼関係]タブをクリックして、[信頼ポリシーを編集]をクリック。
Actionに**"sts:TagSession"**を追記する。
次にインラインポリシーを作成する。
次のポリシーを入力する。
自分の環境に合わせて書き換える。
- リージョン名 : ap-northeast-1
- アカウントID : 111111111111
- ディレクトリID : d-XXXXXXXX
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "workspaces:Stream",
"Resource": "arn:aws:workspaces:ap-northeast-1:111111111111:directory/d-XXXXXXXX",
"Condition": {
"StringEquals": {
"workspaces:userId": "${saml:sub}"
}
}
}
]
}
任意のポリシー名を入力して、ポリシー作成。
6.SAML認証応答のアサーション設定
再びEntra IDに戻って、属性とクレームを編集する。
デフォルトで設定されている4つの項目を削除する。
追加の要求は以下の3つを設定する。
名前 | 値 |
---|---|
https://aws.amazon.com/SAML/Attributes/Role | <ロールARN>,<プロバイダARN>(1) |
https://aws.amazon.com/SAML/Attributes/RoleSessionName | user.mail |
https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email | user.mail |
(1)の部分は具体的にはこんな感じ。
arn:aws:iam::111111111111:role/workspaces_saml2.0_role,arn:aws:iam::111111111111:saml-provider/workspaces_saml2.0
追加の要求の入力が終わったら、必要な要求のクレームをクリックする。
名前識別子の形式を[永続的]に変更する。
最後にユーザーを追加する。
ここに登録したユーザーがSAMLログイン可能になる。
7.フェデレーションのリレーステート設定
続けて、[基本的なSAML構成]を編集する。
リレー状態を入力する。
https://workspaces.euc-sso.ap-northeast-1.aws.amazon.com/sso-idp?registrationCode=registration-code
"regitration-code"はWorkspacesの登録コード。
こんな感じ。
8.Entra IDアプリリンクのコピー
にアクセス。
先ほど作成したエンタープライズアプリケーションが表示されているので、[リンクのコピー]をクリックする。
こんなURLがコピーされるので、
https://launcher.myapps.microsoft.com/api/signin/cc6f9bde-441c-4890-9772-XXXXXX?tenantId=07795552-9618-42cd-ad64-XXXXXXXX
[https://launcher.myapps.microsoft.com/api]の部分を
[https://myapps.microsoft.com]に置き換える。
置き換え後↓
https://myapps.microsoft.com/signin/cc6f9bde-441c-4890-9772-XXXXXX?tenantId=07795552-9618-42cd-ad64-XXXXXXXX
9.WorkspacesのSAML2.0設定
最後の設定。
Workspacesのディレクトリをクリック。
[認証を編集]をクリック。
[SAML2.0アイデンティティプロバイダーの編集]をクリック。
[SAML2.0認証の有効化]にチェックを入れ、
[ユーザーアクセスURL]は先ほど確認したURLを入力する。
以上で設定完了。
10.動作確認
早速動作確認を行なってみる。
Workspacesクライアントで登録コードを入力すると、ログイン画面が以下のようになっている。
サインインボタンをクリックすると、ブラウザが立ち上がり
Entra IDのサインインを求められる。
ここでMFAの設定を行っておけば、MFAの入力が求められる。
サインインが完了すると、Safariの場合は以下のようにアプリに戻るように促される。
その後はWorkspacesにログインするためのID/Passを入力する。
SAML2.0連携でセキュリティレベル向上
WorkspacesだとPCにログインするID/Passだけだと心許ない。
それを解消するための方法としてSAML2.0連携を行い、MFA対応可能なIdpに認証させることが可能。
設定はかなりクセがあるが、この方法で一定のセキュリティレベルに向上させることができる。
SAML2.0なのでさまざまなIdpに対応していると思うが、
IAM Identity Centerで試したところうまくいかずに断念。。
SAMLの属性マッピング(アサーション)のところがよくわからなかったので、
同じAWSサービス同士なのでそのうち対応してくれるようになることを期待。
参考URL
Discussion