Amazon WorkSpacesでYubiKeyの二要素認証(U2F)を試してみた

2021.08.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

以前の記事でAmazon WorkSpacesのWindows用クライアントがメジャーバージョンアップし、PCoIP環境におけるUSBリダイレクトとYubiKeyを使った二要素認証(U2F)をサポートした旨をお伝えしました。

この記事を書いた際に購入したYubiKeyが届き、実際に二要素認証を試してみたのでその手順を紹介します。

事前準備

実際試してみて分かったのですがWorkSpacesでYubiKeyを使うには前提条件が結構複雑です。
分かってしまえば大したことではないのですが情報ゼロの状態からだと正直大変でした。

というわけで最初に満たしておく必要のある前提条件から紹介します。

前提1. 所定のYubiKeyを持っていること

当たり前ですがYubiKeyの物理デバイスを持ってなければお話になりません。
WorkSpacesでサポートされるデバイスの種類は以下のドキュメント記載されています。

本日時点では、

  • YubiKey 4
  • YubiKey 5 NFC
  • YubiKey 5 Nano
  • YubiKey 5C
  • YubiKey 5C Nano
  • YubiKey 5 NFC

および

  • Most USB type C to USB type A adapters can be used with a supported YubiKey

がサポートされています。
なお、以下の2種類のデバイスはWorkSpacesでの利用は非サポートとのことです。

  • Thetis Security Key
    • WorkSpacesでの動作は検証済みだが非サポート
  • Kensington Security Key
    • WorkSpacesでは動作せず

前提2. クライアントバージョン

USBリダイレクトをサポートするWorkSpacesクライアントのバージョンはVer.4.0.1からです。
古いバージョンのクライアントは使えません。
またVer.4系は64bit版のみのリリースのためご注意ください。

WorkSpacesクライアントはマシン全体へのインストール(要管理者権限)およびユーザー単位のインストールの二種類選べますがどちらの場合でもUSBリダイレクトは使えます。
ただしUSBリダイレクトを有効にするには専用のドライバをインストールする必要があり、この時だけは管理者権限が必要となります。

詳細は後述しますがUSBリダイレクトを使う際はマシン全体へのインストールをした方が良いです。

前提3. WorkSpaces環境 (PCoIP, グループポリシー)

現時点でUSBリダイレクトを使用可能なWorkSpacesはPCoIP環境のみです。WSP環境ではサポートされていません。
また、初期状態ではUSBリダイレクトは無効にされており、有効にするには所定のグループポリシーを設定する必要があります。

具体的な手順は後述します。

やってみた

それではここからは実際に試していきます。

0. 検証環境

今回YubiKeyはYubiKey 5 NFCを使っています。
接続するクライアントはWindows 10(21H1)にVer.4.0.1をインストールします。

WorkSpaces環境は任意の環境で良いのですが、今回は検証用VPCにAWS Managed Microsoft ADを認証基盤とした環境を用意しました。
具体的な構築手順は割愛しますが、

  • ドメインはcorp.contoso.com
  • PCoIPのWorkSpaceを一人分用意 (Windows Server 2019ベース)

としています。
全体図としては下図となります。

1. YubiKeyの準備

前準備の一つとして今回はAWSのログインにYubiKeyを使うことにしました。
以下の記事を参考に私の開発環境にyubikey-userというIAMユーザーを作り二要素認証を必須としておきました。

2. WorkSpacesクライアントのインストール

WorkSpacesクライアントのインストールはダウンロードサイトから最新の64bit版Windowsクライアントをダウンロードしてインストールしてください。
インストール手順は画面の指示に従うだけでOKですが、今回は「全ユーザーへのインストール時にUSBリダイレクト用のドライバをインストールしています。

今回は画面のスクリーンショットだけ載せておきます。

(All usersへのインストールを選ぶ)

(USBリダイレクト用ドライバのインストールにチェックを付ける)

3. グループポリシーの設定

AWS Managed Microsoft ADおよびWorkSpace環境を準備したのち、USBリダイレクトを有効にするために所定のグループポリシーを設定する必要があります。
グループポリシーを設定するための前準備(テンプレートファイルの配備)についてはこちらの記事を参考にしてください。

ADMファイルおよびADMXファイルどちらを選ぶかは環境次第ですが、今回は新規環境ですのでADMXファイルを使っています。
利用しているWorkSpace環境からPCoIP.admx(+PCoIP.adml)をドメインのセントラルストアに配備してください。

その上で踏み台サーバーなどのドメインを管理できる環境からWorkSpacesに適用するGPOを作成し、次の2つのポリシーを編集します。

3-1. USBリダイレクトの有効化

まずはPCoIP WorkSpaceの全体設定としてUSBリダイレクトを有効にします。
セントラルストアに登録したポリシーから

  • PCoIP Session Variables → Not Overridable Administrator Settings (または Overridable Administrator Defaults)

を選択します。
Not Overridable Administrator Settingsは管理者が設定しユーザーに変更させない設定、Overridable Administrator Defaultsはユーザーが変更可能な設定のデフォルト値となりどちらでも良いのですが、今回はNot Overridable Administrator Settingsを選んでいます。
(USBリダイレクトの様な設定はユーザーに変更させないのが妥当との判断です)

右ペインに表示されるポリシーから「Enable/disalbe USB in the PCoIP session」を選択し「有効」にします。

3-2. 使用可能USBデバイスの制限

続けて「Configure PCoIP USB allowed and unallowed device rules」のポリシーを選択し、ポリシーを「有効」にしたうえで以下の値を設定します。

  • Enter the USB authorization table : '110500407' などのデバイスID (詳細は後述)
  • Enter the USB authorization table : ' ' 空文字列

このEnter the USB authorization tableおよびEnter the USB authorization tableに許可/不許可とするUSBデバイスのデバイスIDを記載します。
デバイスIDの指定方法は管理ガイド (YubiKey U2F の USB リダイレクトを有効にする)にある様に

  • 1xxxxyyyy
    • xxxxはベンダーID : Yubicoは 0x1050
    • yuuuはプロダクトID : デバイスごとに異なる値。詳細はここを参照

の形式で指定する必要があり、YubiKey 5 NFC(デバイス名としてはYubiKey OTP+FIDO+CCIDになる)の場合であれば110500407と指定します。
もし複数デバイス登録したい場合は|区切りにします。(最大10デバイスまで)

そしてEnter the USB authorization tableは空文字列を設定してください。
空文字列を入れると「許可デバイス以外すべて不許可」の扱いとなります。

これらのポリシーはマシンポリシーですので設定後は各WorkSpace環境を再起動してください。
(マシンポリシーは再起動時に反映されます)

これで前準備がすべて終わりました。

4. YubiKey U2Fを試す

ここまでの前準備を終えてWorkSpace環境に接続するとUSBリダイレクトが使える様になっています。
クライアント右上にある「デバイスマーク」欄をクリックするとUSBリダイレクト設定のダイアログが表示され、Yubikeyを接続すると下図の様にリストアップされます。

もしYubiKeyを接続しても何も表示されない場合は前準備の手順が誤っている、クライアント端末側でUSBデバイスの使用が制限されている、などの可能性がありますので適宜対応してください。

USBリダイレクトが有効なことを確認したうえでWorkSpaces内部からAWSへのサインインを試みます。
(今回はWorkSpaceに組み込み済みのFirefoxを使っています)

するとMFAの承認画面になりますので

YubiKeyをクライアント端末に接続し、ウィンドウ右上にある「デバイスマーク」欄をクリック、表示されたデバイスを「リモートWorkSpaceで使用」にし「保存」をクリックします。

これでUSBリダイレクトによりYubiKeyがWorkSpace内部で使える様になるので、YubiKeyにタッチしてMFA認証を続行します。

無事認証できAWSのマネジメントコンソールが表示されました。

注意事項

手順としては以上となりますが、前提条件を調査した際に気になる点がいくつかあったので注意事項として記載しておきます。

注意1. WorkSpacesクライアントをローカルユーザーインストールした場合

本記事ではWorkSpacesクライアントを全ユーザーインストールしましたが、ローカルユーザーインストールした場合は後からUSBリダイレクトを有効にすることができます。
この場合USBリダイレクトのダイアログを表示した際にドライバインストールを促すボタンが表示されます。

このボタンをクリックするとドライバのインストーラーが実行されます。(要管理者権限)

これはこれで動作するのですが、

  • USBリダイレクト用の専用サービスがユーザーインストールディレクトリ(AppData配下)にインストールされる
  • インストーラーがPowerShellスクリプトであり、クライアントの実行ポリシーによっては正常に動作しない

という感じだったため、私個人としては「どうせ管理者権限を要求されるし、これなら全ユーザーインストールの方が良いな」という体感でした。

後者のスクリプトが正常に動作しない件については何らかの形でAWSにフィードバックしようと思いますが、現時点でも以下の様な感じで一時的に実行ポリシーを変えることで回避可能です。

# -Scope Process 指定でこのプロセスが起動している間だけ実行ポリシーを緩める
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
& "C:\Users\<Username>\AppData\Local\Programs\Amazon Web Services, Inc\Amazon WorkSpaces\pcoipusb\install-pcoip-usb-driver.ps1"

注意2. グループポリシーについて

USBリダイレクトを有効にするにあたりグループポリシーを設定しましたが、この設定のデフォルトが

  • USBリダイレクトの使用可否 : デフォルト無効
  • USBリダイレクトのデバイス制限 : デフォルト制限なし

となっており、デバイス制限を掛けないとクライアント端末の全USBデバイスをリダイレクト可能になってしまいます。

(デバイス制限を掛けない状態でUSBリダイレクトを試した場合)

マウスやキーボードといったローカルデバイスもリダイレクト可能であり、誤ってこれをリダイレクトしてしまうとえらいことになります。
また、USBメモリといったストレージデバイスも、正常に動作するかは別として、リダイレクト対象にリストアップされ使えてしまいます。

このためUSBリダイレクトを利用する際は必ずデバイス制限を掛ける様にしてください。

※AWSとしてはYubiKeyのみサポートしています。仕組み上他のデバイスもUSBリダイレクト対象にリストアップされ正常に動作するかもしれませんが当然ながら無保証です。

最後に

長々と語りましたが以上となります。

事前準備が結構複雑ですが良い感じにYubiKeyが使えました。
注意事項もいくつかありますがそこにさえ気を付けてもらえば非常に便利に使えると思いますのでぜひ試してみてください。