WorkSpaces Personal での認証にスマートカードを使用する
Windows および Linux WorkSpaces DCV バンドルでは、認証に Common Access Card (CAC)
Amazon WorkSpaces は、セッション前認証とセッション内認証の両方でスマートカードの使用をサポートします。セッション前認証とは、ユーザーが WorkSpaces にログインしている間に実行されるスマートカード認証をいいます。セッション内認証とは、ログイン後に実行される認証をいいます。
例えば、ユーザーは、ウェブブラウザやアプリケーションを操作しながら、セッション内認証にスマートカードを使用できます。また、管理アクセス許可が必要な操作にスマートカードを使用することもできます。例えば、ユーザーが Linux WorkSpace に対する管理アクセス許可を持っている場合、sudo
および sudo -i
コマンドの実行時にスマートカードを使用して自身を認証できます。
要件
-
セッション前認証には、Active Directory Connector (AD Connector) ディレクトリが必要です。AD Connector は、証明書ベースの相互 Transport Layer Security (相互 TLS) 認証を使用し、ハードウェアまたはソフトウェアベースのスマートカード証明書を使用して Active Directory に対してユーザーを認証します。AD Connector およびオンプレミスのディレクトリを設定する方法の詳細については、ディレクトリ設定 を参照してください。
-
Windows または Linux WorkSpace でスマートカードを使用するには、Amazon WorkSpaces Windows クライアントバージョン 3.1.1 以降または WorkSpaces MacOS クライアントのバージョン 3.1.5 以降を使用する必要があります。Windows および MacOSクライアントでスマートカードを使用する方法の詳細については、Amazon WorkSpaces ユーザーガイドのスマートカードのサポートを参照してください。
-
ルート CA 証明書およびスマートカード証明書は、特定の要件を満たしている必要があります。詳細については、 AWS Directory Service 管理ガイドの「スマートカードで使用する AD Connector で mTLS 認証を有効にする」および Microsoft のドキュメントの「証明書の要件
」を参照してください。 これらの要件に加えて、Amazon WorkSpaces へのスマートカード認証に使用されるユーザー証明書には、以下の属性を含める必要があります。
-
証明書の subjectAltName (SAN) フィールドの AD ユーザーの userPrincipalName (UPN)。ユーザーのデフォルト UPN のスマートカード証明書を発行することをお勧めします。
-
クライアント認証 (1.3.6.1.5.5.7.3.2) 拡張キー使用法 (EKU) 属性。
-
スマートカードログオン (1.3.6.1.4.1.311.20.2.2) EKU 属性。
-
-
セッション前認証では、証明書失効チェックにオンライン証明書状態プロトコル (OCSP) は必須です。セッション内認証では、OCSP を使用することをお勧めしますが、必須ではありません。
制約事項
-
現在、WorkSpaces の Windows クライアントアプリケーションバージョン 3.1.1 以降と macOS クライアントアプリケーションバージョン 3.1.5 以降のみが、スマートカード認証をサポートしています。
-
WorkSpaces Windows クライアントアプリケーション 3.1.1 以降では、クライアントが 64 ビットバージョンの Windows で実行されている場合にのみ、スマートカードがサポートされます。
-
Ubuntu WorkSpaces は現在スマートカード認証をサポートしていません。
-
現在、スマートカード認証では、AD Connector ディレクトリのみがサポートされています。
-
セッション内認証は、DCV がサポートされているすべてのリージョンで利用可能です。セッション前認証は、以下のリージョンで使用できます。
-
アジアパシフィック (シドニー) リージョン
-
アジアパシフィック (東京) リージョン
-
欧州 (アイルランド) リージョン
-
AWS GovCloud (米国東部) リージョン
-
AWS GovCloud (米国西部) リージョン
-
米国東部 (バージニア北部) リージョン
-
米国西部 (オレゴン) リージョン
-
-
現在、Linux または Windows WorkSpaces でのセッション内認証およびセッション前認証では、一度に 1 つのスマートカードのみが許可されています。
-
現在、セッション前認証において、スマートカード認証とサインイン認証の両方を同じディレクトリで有効にすることはサポートされていません。
-
現時点では、CAC カードと PIV カードのみがサポートされています。他のタイプのハードウェアまたはソフトウェアベースのスマートカードも機能する可能性がありますが、DCV での使用は完全にはテストされていません。
ディレクトリ設定
スマートカード認証を有効にするには、AD Connector ディレクトリおよびオンプレミスのディレクトリを次の方法で設定する必要があります。
AD Connector ディレクトリの設定
開始する前に、AWS Directory Service 管理ガイドの AD Connector の前提条件の説明に従って AD Connector ディレクトリが設定されていることを確認します。特に、ファイアウォールで必要なポートを開いていることを確認してください。
AD Connector ディレクトリの設定を完了するには、AWS Directory Service 管理ガイドの「スマートカードで使用する AD Connector で mTLS 認証を有効にする」の手順に従います。
注記
スマートカード認証が正しく機能するためには、Kerberos の制約付き委任 (KCD) が必要です。KCD では、AD Connector サービスアカウントのユーザー名部分が、同じユーザーの sAMAccountName と一致している必要があります。sAMAccountName は 20 文字を超えることはできません。
オンプレミスのディレクトリの設定
AD Connector ディレクトリを設定するだけでなく、オンプレミスのディレクトリのドメインコントローラーに発行される証明書に「KDC 認証」拡張キー使用法 (EKU) が設定されていることも確認する必要があります。これを行うには、Active Directory Domain Services (AD DS) のデフォルトの Kerberos 認証証明書テンプレートを使用します。ドメインコントローラー証明書テンプレートまたはドメインコントローラー認証証明書テンプレートには、スマートカード認証に必要な設定が含まれていないため、これらのテンプレートを使用しないでください。
Windows WorkSpaces のスマートカードを有効にする
Windows でスマートカード認証を有効にする方法の一般的なガイダンスについては、Microsoft のドキュメントの「サードパーティの証明機関でスマートカードログオンを有効にするためのガイドライン
Windows ロック画面を検出してセッションを切断するには
画面がロックされているときに、スマートカードのセッション前認証が有効になっている Windows WorkSpaces のロックをユーザーが解除できるようにするには、ユーザーのセッションで Windows ロック画面の検出を有効にします。Windows ロック画面が検出されると、WorkSpace セッションは切断され、ユーザーはスマートカードを使用して WorkSpaces クライアントから再接続できます。
グループポリシー設定を使用して、Windows ロック画面が検出されたときに、セッションの切断を有効にできます。詳細については、「DCV の画面ロック時におけるセッションの切断を有効または無効にする」を参照してください。
セッション内認証またはセッション前認証を有効にするには
デフォルトでは、Windows WorkSpaces は、セッション前認証またはセッション内認証にスマートカードの使用をサポートするために有効化されていません。必要に応じグループポリシー設定を使用して、Windows WorkSpaces のセッション前認証およびセッション内認証を有効にできます。詳細については、「DCV のスマートカードリダイレクトを有効または無効にする」を参照してください
セッション前認証を使用するには、グループポリシー設定の更新に加えて、AD Connector ディレクトリ設定からセッション前認証を有効にする必要があります。詳細については、AWS Directory Service 管理ガイドの「スマートカードで使用する AD Connector で mTLS 認証を有効にする」を参照してください。
ユーザーがブラウザでスマートカードを使用できるようにするには
ユーザーが Chrome をブラウザとして使用している場合、スマートカードを使用するために特別な設定は必要ありません。
ユーザーが Firefox をブラウザとして使用している場合は、グループポリシーを通じて Firefox でスマートカードを使用できるように設定できます。GitHub では、これらの Firefox グループポリシーテンプレート
例えば、PKCS #11 をサポートするために、Windows 用 OpenSC
は PKCS #11 の識別に使用する任意の値 (NAME_OF_DEVICE
OpenSC
など)、
は PKCS #11 モジュールへのパスです。このパスは、.DLL 拡張子の付いたライブラリ (PATH_TO_LIBRARY_FOR_DEVICE
C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll
など) をポイントする必要があります。
Software\Policies\Mozilla\Firefox\SecurityDevices\
NAME_OF_DEVICE
=PATH_TO_LIBRARY_FOR_DEVICE
ヒント
OpenSC を使用している場合は、pkcs11
プログラムを実行して OpenSC pkcs11-register.exe
モジュールを Firefox にロードすることもできます。このプログラムを実行するには、C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe
のファイルをダブルクリックするか、コマンドプロンプトウィンドウを開き、次のコマンドを実行します。
"C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe"
OpenSC pkcs11
モジュールが Firefox にロードされたことを確認するには、次の操作を行います。
-
Firefox が既に実行されている場合は、Firefox を終了します。
-
Firefox を開きます。右上のメニューボタン を選択し、[Options] (オプション) を選択します。
-
[about:preferences] ページの左側のナビゲーションペインで、[Privacy & Security] (プライバシーとセキュリティ) を選択します。
-
[Certificates] (証明書) で、[Security Devices] (セキュリティデバイス) を選択します。
-
[Device Manager] (デバイスマネージャー) ダイアログボックスで、左側のナビゲーションに OpenSC スマートカードフレームワーク (0.21) が表示され、選択すると次の値が表示されます。
モジュール:
OpenSC smartcard framework (0.21)
パス:
C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll
トラブルシューティング
スマートカードのトラブルシューティングについては、Microsoft のドキュメントの「証明書と構成に関する問題
問題を引き起こす可能性のある一般的な問題は次のとおりです。
-
証明書へのスロットのマッピングが正しくありません。
-
ユーザーと一致する複数の証明書がスマートカードにあること。証明書は、以下の基準を使用して照合されます。
-
証明書のルート CA。
-
証明書の
<KU>
フィールドおよび<EKU>
フィールド。 -
証明書のサブジェクトの UPN。
-
-
キーの使用に
<EKU>msScLogin
が含まれる複数の証明書を有していること。
一般的に、スマートカード認証のために、スマートカードの最初のスロットにマッピングされた証明書を 1 つだけ使用することがベストプラクティスです。
スマートカード上の証明書およびキーを管理するためのツール (証明書およびキーの削除または再マッピングなど) は、製造元によって異なる場合があります。詳細については、スマートカードの製造元から提供されているドキュメントをご参照ください。
Linux WorkSpaces のスマートカードを有効にする
注記
現在、Linux WorkSpaces DCV バンドルには、次の制限があります。
-
クリップボード、オーディオ入力、ビデオ入力、およびタイムゾーンのリダイレクトはサポートされていません。
-
マルチモニターはサポートされていません。
-
DCV の Linux WorkSpaces に接続するには、WorkSpaces Windows クライアントアプリケーションを使用する必要があります。
Linux WorkSpaces でスマートカードを使用できるようにするには、ルート CA 証明書ファイルを PEM 形式で WorkSpace イメージに含める必要があります。
ルート CA 証明書を取得するには
ルート CA 証明書は、いくつかの方法で取得できます。
-
サードパーティーの証明機関によって運用されるルート CA 証明書を使用できます。
-
ウェブ登録サイト (
http://
またはip_address
/certsrvhttp://
) を使用して、独自のルート CA 証明書をエクスポートできます。ここで、fqdn
/certsrv
およびip_address
はルート証明書 CA サーバーの IP アドレスおよび完全修飾ドメイン名 (FQDN) です。ウェブ登録サイトの使用の詳細については、Microsoft のドキュメントの「ルート証明機関の証明書をエクスポートする方法fqdn
」をご参照ください。 -
次の手順を使用して、Active Directory 証明書サービス (AD CS) を実行しているルート CA 証明書サーバーからルート CA 証明書をエクスポートできます。AD CS のインストールの詳細については、Microsoft のドキュメントの「証明機関をインストールする
」をご参照ください。 -
管理者アカウントを使用してルート CA サーバーにログインします。
-
Windows の [Start] (スタート) メニューから、コマンドプロンプトウィンドウ ([Start] (スタート) > [Windows System] (Windows システム) > [Command Prompt] (コマンドプロンプト)) を開きます。
-
次のコマンドを使用して、ルート CA 証明書を新しいファイルにエクスポートします。ここで、
は新しいファイルの名前です。rootca
.cercertutil -ca.cert
rootca
.cercertutil の実行の詳細については、Microsoft のドキュメントの「certutil
」をご参照ください。 -
次の OpenSSL コマンドを使用して、エクスポートされたルート CA 証明書を DER 形式から PEM 形式に変換します。ここで、
rootca
は証明書の名前です。OpenSSL の詳細については、www.openssl.orgをご参照ください。 openssl x509 -inform der -in
rootca
.cer -out /tmp/rootca
.pem
-
Linux WorkSpaces にルート CA 証明書を追加するには
お客様がスマートカードを有効にするのをサポートするために、この enable_smartcard
スクリプトを当社の Amazon Linux DCV バンドルに追加しました。このスクリプトは以下のアクションを実行します。
-
ルート CA 証明書をネットワークセキュリティサービス (NSS)
データベースにインポートします。 -
PAM (Pluggable Authentication Module) 認証用の
pam_pkcs11
モジュールをインストールします。 -
WorkSpace プロビジョニング中の
pkinit
の有効化を含む、デフォルト設定を実行します。
次の手順では、enable_smartcard
スクリプトを使用して Linux WorkSpaces にルート CA 証明書を追加し、Linux WorkSpaces でスマートカードを有効にする方法について説明します。
-
DCV プロトコルを有効にして新しい Linux WorkSpace を作成します。Amazon WorkSpaces コンソールで WorkSpace を起動する際に、[バンドルを選択] ページで、プロトコルとして [DCV] を選択し、いずれかの Amazon Linux 2 パブリックバンドルを選択します。
-
新しい WorkSpace で、次のコマンドをルートとして実行します。ここで、
は PEM 形式のルート CA 証明書ファイルへのパスです。pem-path
/usr/lib/skylight/enable_smartcard --ca-cert
pem-path
注記
Linux WorkSpaces では、スマートカード上の証明書が、ユーザーのデフォルトのユーザープリンシパル名 (UPN) について発行されることを前提としています (
など)。ここで、sAMAccountName
@domain
は完全修飾ドメイン名 (FQDN) です。domain
代替 UPN サフィックスを使用するには、
run /usr/lib/skylight/enable_smartcard --help
をご参照ください。代替 UPN サフィックスのマッピングは、各ユーザーに固有です。したがって、そのマッピングは、各ユーザーの WorkSpace で個別に実行する必要があります。 -
(オプション) デフォルトでは、Linux WorkSpaces ですべてのサービスについてスマートカード認証が使用できるように設定されています。特定のサービスについてのみスマートカード認証を使用できるようにするには、
/etc/pam.d/system-auth
を編集する必要があります。必要に応じて、auth
のpam_succeed_if.so
行のコメントを解除し、サービスのリストを編集します。auth
行のコメントを解除した後、あるサービスについてスマートカード認証を使用できるようにするには、その行をリストに追加する必要があります。あるサービスにについてパスワード認証のみを使用するには、リストからそのサービスを削除する必要があります。 -
WorkSpace に追加のカスタマイズを実行します。例えば、システム全体のポリシーを追加して、ユーザーが Firefox でスマートカードを使用できるようにします。(Chrome ユーザーは、ユーザー自身がスマートカードを有効にする必要があります。 詳細については、Amazon WorkSpaces ユーザーガイドの「スマートカードのサポート」を参照してください。
-
WorkSpace からカスタム WorkSpace イメージとバンドルを作成します。
-
新しいカスタムバンドルを使用して、ユーザーの WorkSpaces を起動します。
ユーザーが Firefox でスマートカードを使用できるようにするには
Linux WorkSpace イメージに SecurityDevices ポリシーを追加することで、ユーザーが Firefox でスマートカードを使用できるようにすることができます。システム全体のポリシーの Firefox への追加の詳細については、GitHub の Mozilla のポリシーテンプレート
-
WorkSpace イメージの作成に使用している WorkSpace で、
policies.json
という名前の新しいファイルを/usr/lib64/firefox/distribution/
で作成します。 -
JSON ファイルで、次の SecurityDevices ポリシーを追加します。ここで、
はNAME_OF_DEVICE
pkcs
モジュールの識別に使用する任意の値です。例えば、"OpenSC"
などの値を使用できます。{ "policies": { "SecurityDevices": { "
NAME_OF_DEVICE
": "/usr/lib64/opensc-pkcs11.so" } } }
トラブルシューティング
トラブルシューティングのために、pkcs11-tools
ユーティリティを追加することをお勧めします。このユーティリティを使用すると、次のアクションを実行できます。
-
各スマートカードを一覧表示します。
-
各スマートカードのスロットを一覧表示します。
-
各スマートカードの証明書を一覧表示します。
問題を引き起こす可能性のある一般的な問題は次のとおりです。
-
証明書へのスロットのマッピングが正しくありません。
-
ユーザーと一致する複数の証明書がスマートカードにあること。証明書は、以下の基準を使用して照合されます。
-
証明書のルート CA。
-
証明書の
<KU>
フィールドおよび<EKU>
フィールド。 -
証明書のサブジェクトの UPN。
-
-
キーの使用に
<EKU>msScLogin
が含まれる複数の証明書を有していること。
一般的に、スマートカード認証のために、スマートカードの最初のスロットにマッピングされた証明書を 1 つだけ使用することがベストプラクティスです。
スマートカード上の証明書およびキーを管理するためのツール (証明書およびキーの削除または再マッピングなど) は、製造元によって異なる場合があります。スマートカードの操作に使用できるその他のツールは次のとおりです。
-
opensc-explorer
-
opensc-tool
-
pkcs11_inspect
-
pkcs11_listcerts
-
pkcs15-tool
デバッグログを有効にするには
pam_pkcs11
および pam-krb5
の設定のトラブルシューティングを行うには、デバッグのログを有効にします。
-
/etc/pam.d/system-auth-ac
ファイルで、auth
アクションを編集し、nodebug
のpam_pksc11.so
パラメータをdebug
に変更します。 -
/etc/pam_pkcs11/pam_pkcs11.conf
ファイルで、debug = false;
をdebug = true;
に変更します。debug
オプションは、各マッパーモジュールに個別に適用されるので、pam_pkcs11
セクションの直下と適切なマッパーセクション (デフォルトでは、これはmapper generic
) の両方で変更する必要がある場合があります。 -
/etc/pam.d/system-auth-ac
ファイルで、auth
アクションを編集し、debug
またはdebug_sensitive
パラメータをpam_krb5.so
に追加します。
デバッグのログを有効にすると、システムはアクティブな端末に直接 pam_pkcs11
デバッグメッセージを出力します。pam_krb5
からのメッセージは /var/log/secure
でログインされます。
スマートカード証明書がマップされるユーザー名を確認するには、次の pklogin_finder
コマンドを使用します。
sudo pklogin_finder debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf
プロンプトが表示されたら、スマートカードの PIN を入力します。pklogin_finder
は、スマートカード証明書のユーザー名を stdout
に
形式で出力します。このユーザー名は WorkSpace ユーザー名と一致する必要があります。NETBIOS
\username
Active Directory Domain Services (AD DS) では、NetBIOS ドメイン名は Windows 2000 より前のドメイン名です。通常 (ただし、常にではありません)、NetBIOS ドメイン名はドメインネームシステム (DNS) ドメイン名のサブドメインです。例えば、DNS ドメイン名が example.com
の場合、NetBIOS ドメイン名は通常 EXAMPLE
です。DNS ドメイン名が corp.example.com
の場合、NetBIOS ドメイン名は通常 CORP
です。
例えば、mmajor
ドメイン内のユーザー corp.example.com
の場合、pklogin_finder
からの出力は CORP\mmajor
です。
注記
メッセージ "ERROR:pam_pkcs11.c:504: verify_certificate()
failed"
を受け取った場合、このメッセージは、pam_pkcs11
がユーザー名の条件に一致する証明書をスマートカード上に見つけたものの、マシンで認識されるルート CA 証明書に連鎖していないことを示します。この場合、pam_pkcs11
は上記のメッセージを出力し、次の証明書を試します。認証を許可するのは、ユーザー名と一致し、かつ、認識されたルート CA 証明書まで連鎖する証明書が見つかった場合だけです。
pam_krb5
設定をトラブルシューティングするには、次のコマンドを使用して、デバッグモードで手動で kinit
を起動できます。
KRB5_TRACE=/dev/stdout kinit -V
このコマンドは、Kerberos Ticket Granting Ticket (TGT) を正常に取得するはずです。失敗する場合は、正しい Kerberos プリンシパル名をコマンドに明示的に追加してみてください。例えば、ドメイン mmajor
内のユーザー corp.example.com
の場合は、次のコマンドを使用します。
KRB5_TRACE=/dev/stdout kinit -V mmajor
このコマンドが成功した場合、WorkSpace ユーザー名から Kerberos プリンシパル名へのマッピングに問題がある可能性が最も高いです。[appdefaults]/pam/mappings
ファイル内の /etc/krb5.conf
セクションを確認してください。
このコマンドが成功せず、パスワードベースの kinit
コマンドが成功した場合は、pkinit_
ファイル内の /etc/krb5.conf
に関連する設定を確認してください。例えば、スマートカードに複数の証明書が含まれている場合は、pkinit_cert_match
に変更を加える必要がある場合があります。