認証にスマートカードを使用する - Amazon WorkSpaces

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

認証にスマートカードを使用する

Windows および Linux WorkSpaces on WorkSpaces Streaming Protocol (WSP) バンドルでは、認証に共通アクセスカード (CAC) および個人識別検証 (PIV) スマートカードを使用できます。

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 必要があります。

    • 証明書の userPrincipalName (SAN) フィールドにある AD ユーザーの subjectAltName (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 ディレクトリのみがサポートされています。

  • セッション内認証は、WSP がサポートされているすべてのリージョンで利用可能です。セッション前認証は、以下のリージョンで使用できます。

    • アジアパシフィック (シドニー) リージョン

    • アジアパシフィック (東京) リージョン

    • 欧州 (アイルランド) リージョン

    • AWS GovCloud (米国東部) リージョン

    • AWS GovCloud (米国西部) リージョン

    • 米国東部 (バージニア北部) リージョン

    • 米国西部 (オレゴン) リージョン

  • Linux または Windows でのセッション内認証およびセッション前認証の場合 WorkSpaces、現在許可されるスマートカードは 1 つだけです。

  • 現在、セッション前認証において、スマートカード認証とサインイン認証の両方を同じディレクトリで有効にすることはサポートされていません。

  • 現時点では、CAC カードと PIV カードのみがサポートされています。他のタイプのハードウェアまたはソフトウェアベースのスマートカードも機能する可能性がありますが、WSP での使用は完全にはテストされていません。

ディレクトリ設定

スマートカード認証を有効にするには、AD Connector ディレクトリおよびオンプレミスのディレクトリを次の方法で設定する必要があります。

AD Connector ディレクトリの設定

開始する前に、AWS Directory Service 管理ガイド AD Connector の前提条件の説明に従って AD Connector ディレクトリが設定されていることを確認します。特に、ファイアウォールで必要なポートを開いていることを確認してください。

AD Connector ディレクトリの設定を完了するには、AWS Directory Service 管理ガイドの「スマートカードで使用する AD Connector で mTLS 認証を有効にする」の手順に従います。

注記

スマートカード認証が正しく機能するためには、Kerberos の制約付き委任 (KCD) が必要です。KCD では、AD Connector サービスアカウントのユーザー名部分がAccountName 、同じユーザーの sAM と一致する必要があります。sAM AccountName は 20 文字を超えることはできません。

オンプレミスのディレクトリの設定

AD Connector ディレクトリを設定するだけでなく、オンプレミスのディレクトリのドメインコントローラーに発行される証明書に「KDC 認証」拡張キー使用法 (EKU) が設定されていることも確認する必要があります。これを行うには、Active Directory Domain Services (AD DS) のデフォルトの Kerberos 認証証明書テンプレートを使用します。ドメインコントローラー証明書テンプレートまたはドメインコントローラー認証証明書テンプレートには、スマートカード認証に必要な設定が含まれていないため、これらのテンプレートを使用しないでください。

Windows 用のスマートカードを有効にする WorkSpaces

Windows でスマートカード認証を有効にする方法の一般的なガイダンスについては、Microsoft のドキュメントの「サードパーティの証明機関でスマートカードログオンを有効にするためのガイドライン」をご参照ください。

Windows ロック画面を検出してセッションを切断するには

画面がロックされているときにスマートカードセッション前認証が有効になってい WorkSpaces る Windows をユーザーがロック解除できるようにするには、ユーザーのセッションで Windows ロック画面検出を有効にします。Windows ロック画面が検出されると、 WorkSpace セッションは切断され、ユーザーはスマートカードを使用して WorkSpaces クライアントから再接続できます。

グループポリシー設定を使用して、Windows ロック画面が検出されたときに、セッションの切断を有効にできます。詳細については、「WSP の画面ロックの場合のセッションの切断を有効化/無効化する」を参照してください。

セッション内認証またはセッション前認証を有効にするには

デフォルトでは、Windows WorkSpaces はセッション前認証またはセッション内認証にスマートカードの使用をサポートしていません。必要に応じて、グループポリシー設定 WorkSpaces を使用して Windows のセッション内認証とセッション前認証を有効にできます。詳細については、「WSP のスマートカードリダイレクトを有効化/無効化する」を参照してください。

セッション前認証を使用するには、グループポリシー設定の更新に加えて、AD Connector ディレクトリ設定からセッション前認証を有効にする必要があります。詳細については、AWS Directory Service 管理ガイドの「スマートカードで使用する AD Connector で mTLS 認証を有効にする」を参照してください。

ユーザーがブラウザでスマートカードを使用できるようにするには

ユーザーが Chrome をブラウザとして使用している場合、スマートカードを使用するために特別な設定は必要ありません。

ユーザーが Firefox をブラウザとして使用している場合は、グループポリシーを通じて Firefox でスマートカードを使用できるように設定できます。これらの Firefox グループポリシーテンプレートは、 で使用できます GitHub。

例えば、PKCS #11 をサポートするために、Windows 用 OpenSC の 64 ビットバージョンをインストールし、次のグループポリシー設定を使用できます。ここで、NAME_OF_DEVICE は PKCS #11 の識別に使用する任意の値 (OpenSC など)、PATH_TO_LIBRARY_FOR_DEVICE は PKCS #11 モジュールへのパスです。このパスは、.DLL 拡張子の付いたライブラリ (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 にロードされたことを確認するには、次の操作を行います。

  1. Firefox が既に実行されている場合は、Firefox を終了します。

  2. Firefox を開きます。右上のメニューボタン 
                                Firefox menu button
                            を選択し、[Options] (オプション) を選択します。

  3. [about:preferences] ページの左側のナビゲーションペインで、[Privacy & Security] (プライバシーとセキュリティ) を選択します。

  4. [Certificates] (証明書) で、[Security Devices] (セキュリティデバイス) を選択します。

  5. [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

注記

現在、WSP WorkSpaces の Linux には以下の制限があります。

  • クリップボード、オーディオ入力、ビデオ入力、およびタイムゾーンのリダイレクトはサポートされていません。

  • マルチモニターはサポートされていません。

  • WSP で Linux に接続するには、 WorkSpaces Windows WorkSpaces クライアントアプリケーションを使用する必要があります。

Linux でスマートカードを使用できるようにするには WorkSpaces、 WorkSpace イメージに PEM 形式のルート CA 証明書ファイルを含める必要があります。

ルート CA 証明書を取得するには

ルート CA 証明書は、いくつかの方法で取得できます。

  • サードパーティーの証明機関によって運用されるルート CA 証明書を使用できます。

  • ウェブ登録サイト (http://ip_address/certsrv または http://fqdn/certsrv) を使用して、独自のルート CA 証明書をエクスポートできます。ここで、ip_address および fqdn はルート証明書 CA サーバーの IP アドレスおよび完全修飾ドメイン名 (FQDN) です。ウェブ登録サイトの使用の詳細については、Microsoft のドキュメントの「ルート証明機関の証明書をエクスポートする方法」をご参照ください。

  • 次の手順を使用して、Active Directory 証明書サービス (AD CS) を実行しているルート CA 証明書サーバーからルート CA 証明書をエクスポートできます。AD CS のインストールの詳細については、Microsoft のドキュメントの「証明機関をインストールする」をご参照ください。

    1. 管理者アカウントを使用してルート CA サーバーにログインします。

    2. Windows の [Start] (スタート) メニューから、コマンドプロンプトウィンドウ ([Start] (スタート) > [Windows System] (Windows システム) > [Command Prompt] (コマンドプロンプト)) を開きます。

    3. 次のコマンドを使用して、ルート CA 証明書を新しいファイルにエクスポートします。ここで、rootca.cer は新しいファイルの名前です。

      certutil -ca.cert rootca.cer

      certutil の実行の詳細については、Microsoft のドキュメントの「certutil」をご参照ください。

    4. 次の OpenSSL コマンドを使用して、エクスポートされたルート CA 証明書を DER 形式から PEM 形式に変換します。ここで、rootca は証明書の名前です。OpenSSL の詳細については、www.openssl.org をご参照ください。

      openssl x509 -inform der -in rootca.cer -out /tmp/rootca.pem
Linux にルート CA 証明書を追加するには WorkSpaces

お客様がスマートカードを有効にするのをサポートするために、この enable_smartcard スクリプトを当社の Amazon Linux WSP バンドルに追加しました。このスクリプトは以下のアクションを実行します。

  • ルート CA 証明書をネットワークセキュリティサービス (NSS) データベースにインポートします。

  • PAM (Pluggable Authentication Module) 認証用の pam_pkcs11 モジュールをインストールします。

  • プロビジョニングpkinit中の WorkSpace の有効化を含むデフォルト設定を実行します。

次の手順では、 enable_smartcardスクリプトを使用して Linux にルート CA 証明書を追加 WorkSpaces し、Linux のスマートカードを有効にする方法について説明します WorkSpaces。

  1. WSP プロトコルを有効に WorkSpace して新しい Linux を作成します。Amazon WorkSpaces コンソール WorkSpace のバンドルの選択ページで を起動するときは、プロトコルに WSP を選択し、Amazon Linux 2 パブリックバンドルのいずれかを選択してください。

  2. 新しい で WorkSpace、次のコマンドを root として実行します。ここで、 pem-pathは PEM 形式のルート CA 証明書ファイルへのパスです。

    /usr/lib/skylight/enable_smartcard --ca-cert pem-path
    注記

    Linux では、スマートカードの証明書が などのユーザーのデフォルトのユーザープリンシパル名 (UPN) に対して発行されていることを WorkSpaces 前提としています。ここでsAMAccountName@domaindomainは完全修飾ドメイン名 (FQDN) です。

    代替 UPN サフィックスを使用するには、run /usr/lib/skylight/enable_smartcard --help をご参照ください。代替 UPN サフィックスのマッピングは、各ユーザーに固有です。したがって、そのマッピングは各ユーザーの で個別に実行する必要があります WorkSpace。

  3. (オプション) デフォルトでは、Linux でスマートカード認証を使用するようにすべてのサービスが有効になっています WorkSpaces。特定のサービスについてのみスマートカード認証を使用できるようにするには、/etc/pam.d/system-auth を編集する必要があります。必要に応じて、authpam_succeed_if.so 行のコメントを解除し、サービスのリストを編集します。

    auth 行のコメントを解除した後、あるサービスについてスマートカード認証を使用できるようにするには、その行をリストに追加する必要があります。あるサービスにについてパスワード認証のみを使用するには、リストからそのサービスを削除する必要があります。

  4. に追加のカスタマイズを実行します WorkSpace。例えば、システム全体のポリシーを追加して、ユーザーが Firefox でスマートカードを使用できるようにします。(Chrome ユーザーは、クライアントでスマートカードを有効にする必要があります。 詳細については、「Amazon ユーザーガイド」の「スマートカードのサポート」を参照してください。) WorkSpaces

  5. からカスタム WorkSpace イメージとバンドルを作成します WorkSpace。

  6. 新しいカスタムバンドルを使用して、ユーザーの WorkSpaces を起動します。

ユーザーが Firefox でスマートカードを使用できるようにするには

Linux WorkSpace イメージに SecurityDevices ポリシーを追加することで、ユーザーが Firefox でスマートカードを使用できるようにすることができます。システム全体のポリシーを Firefox に追加する方法の詳細については、「」の「Mozilla ポリシーテンプレート」を参照してください GitHub。

  1. WorkSpace イメージの作成に WorkSpace 使用している で、 policies.jsonという名前の新しいファイルを作成します/usr/lib64/firefox/distribution/

  2. JSON ファイルに次の SecurityDevices ポリシーを追加します。ここで、 NAME_OF_DEVICEpkcsモジュールを識別するために使用する任意の値です。例えば、"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 の設定のトラブルシューティングを行うには、デバッグのログを有効にします。

  1. /etc/pam.d/system-auth-ac ファイルで、auth アクションを編集し、nodebugpam_pksc11.so パラメータを debug に変更します。

  2. /etc/pam_pkcs11/pam_pkcs11.conf ファイルで、debug = false;debug = true; に変更します。debug オプションは、各マッパーモジュールに個別に適用されるので、pam_pkcs11 セクションの直下と適切なマッパーセクション (デフォルトでは、これは mapper generic) の両方で変更する必要がある場合があります。

  3. /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 は、スマートカード証明書のユーザー名を stdoutNETBIOS\username 形式で出力します。このユーザー名は WorkSpace ユーザー名と一致する必要があります。

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 に変更を加える必要がある場合があります。