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にする。
2.Workspaces作成
次にWorkspacesを作成。
先ほど作成したディレクトリを登録。
3.エンタープライズアプリケーション作成、SAML設定
実質的にここから本題。
Entra IDにログインし、SAML2.0用のエンタープライズアプリケーションを作成する。
AWSが提供されているWorkspacesのSAMLメタデータを保存。
4.IAM Identity Provider作成
AWSのIAMコンソールに移動。
[IDプロバイダ]をクリック。
任意のプロバイダ名を入力し、先ほどDLしたフェデレーションメタデータXMLファイルをアップロードする。
IDプロバイダを作成できたので、[ロールの割り当て]をクリック。
5.IAMロール作成
属性:SAML:sub_type
値:persistent
をそれぞれ設定する。
作成した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認証応答のアサーション設定
追加の要求は以下の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.フェデレーションのリレーステート設定
リレー状態を入力する。
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