Endpoint Verification 証明書を使用した証明書ベースのアクセスを有効にする

このページでは、Endpoint Verification でプロビジョニングされた証明書を使用して、Google Cloud VM の証明書ベースのアクセス(CBA)を有効にする方法について説明します。

Endpoint Verification を使用すると、デバイスの自己署名証明書を自動的にプロビジョニングできます。Endpoint Verification でプロビジョニングされた証明書を使用すると、PKI インフラストラクチャなしで CBA を使用できます。これらの証明書は、macOS ではキーチェーンに、Windows では証明書ストアに、Linux ではファイル システムに保存されます。

PKI インフラストラクチャがある場合は、エンタープライズ証明書を使用した証明書ベースのアクセスを有効にするで CBA を有効にします。

Endpoint Verification でプロビジョニングされた証明書は、次のオペレーティング システムで有効にできます。

  • Chrome ブラウザを使用している macOS と Windows
  • Google Cloud CLI を使用している macOS、Windows、Linux

ご使用のオペレーティング システムがリストにない場合は、完全にサポートされていないオペレーティング システムの使用をご覧ください。

始める前に

続行する前に、次の要件を満たしていることを確認してください。

Endpoint Verification を設定する

手順に沿って、組織のすべてのユーザー デバイスに Chrome Endpoint Verification 拡張機能をインストールします。この拡張機能は、デバイスに自己署名証明書をプロビジョニングし、証明書のメタデータを Google Cloud と同期します。

Endpoint Verification ヘルパーアプリをインストールします。このアプリは、CBA で Endpoint Verification を使用する場合に必要です。

ユーザーの Chrome ブラウザを構成する

ユーザーの Chrome ブラウザを構成して、Endpoint Verification でプロビジョニングされた証明書を使用するには、AutoSelectCertificateForURLs Chrome ポリシーを構成して、Endpoint Verification でデバイス証明書を検索して、Chrome から収集できるようにする必要があります。

  1. ユーザーの Chrome ブラウザが Chrome ブラウザ クラウド管理によって管理されていることを確認します。
  2. Google 管理コンソールで、AutoSelectCertificateForUrls ポリシーを追加します。

    1. [デバイス] > [Chrome] > [Settings] > [ユーザーとブラウザの設定] > [クライアント証明書] に移動します。
    2. 適切な組織部門を選択します。
    3. ポリシーを追加します。 次の例では、AutoSelectCertificateForUrls ポリシーを追加します。

      {"pattern":"https://[*.]clients6.google.com","filter":{"ISSUER":{"CN":"Google Endpoint Verification"}}}
      {"pattern":"https://console-secure.cloud.google.com","filter":{"ISSUER":{"CN":"Google Endpoint Verification"}}}
      {"pattern":"https://storage.mtls.cloud.google.com","filter":{"ISSUER":{"CN":"Google Endpoint Verification"}}}
      

構成が完了すると、ユーザーは console-secure.cloud.google.com で Chrome ブラウザを使用して、保護された Google Cloud リソースにアクセスできます。

(省略可)ポリシーの構成を確認する

  1. Chrome ブラウザで「chrome://policy」と入力します。
  2. [Chrome ポリシー] に AutoSelectCertificateForUrls が表示されていることを確認します。
  3. [適用先] の値が [マシン] であることを確認します。ChromeOS では、[適用先] の値は [現在のユーザー] です。
  4. ポリシーのステータスに競合がないことを確認します。ステータスが競合している場合、Chrome ポリシー管理の概要をご覧ください。

コマンドライン ツールを構成する

Endpoint Verification でプロビジョニングされた証明書を使用するように、次のツールを構成できます。

  • Google Cloud CLI
  • Terraform CLI(ヘルパー コンポーネントのインストールと構成には gcloud CLI が必要です)。

デバイス証明書は macOS と Windows のキーストアに保存されるため、gcloud CLI は Enterprise Certificate Proxy(ECP)オープンソース コンポーネントにバンドルされて、鍵管理 API を操作します。

Windows システムを使用している場合は、Visual Studio C++ ランタイム ライブラリをインストールする必要があります。

  1. gcloud CLI をインストールします。 バンドルされた Python オプションを有効にしてインストールします。
  2. CBA を有効にします
  3. macOS と Linux の場合は、install.sh スクリプトをダウンロードして実行します。

    ./google-cloud-sdk/install.sh
    
  4. Linux ユーザーの場合は、CBA と Endpoint Verification でプロビジョニングされた証明書を有効にするの手順に進み、macOS と Windows のユーザーの場合は、次の手順を行います。

    1. gcloud CLI を使用して ECP ヘルパー コンポーネントをインストールします。

      
      gcloud components install enterprise-certificate-proxy
      
    2. gcloud CLI を使用して ECP 証明書の構成を初期化します。

      macOS

      
      gcloud auth enterprise-certificate-config create macos \
      --issuer="Google Endpoint Verification"
      

      Windows

      
      gcloud auth enterprise-certificate-config create windows \
      --issuer="Google Endpoint Verification" \
      --provider=current_user \
      --store=MY
      

      (省略可)次のコマンドを実行して、ECP 証明書を手動で構成します。

      macOS

      ECP 構成は、~/.config/gcloud/certificate_config.json にある JSON ファイルに保存されます。

      {
        "cert_configs": {
            "macos_keychain": {
              "issuer": "Google Endpoint Verification"
            }
        },
        "libs": {
          "ecp": "<YOUR_GCLOUD_INSTALL_PATH>/google-cloud-sdk/bin/ecp",
          "ecp_client": "<YOUR_GCLOUD_INSTALL_PATH>/google-cloud-sdk/platform/enterprise_cert/libecp.dylib",
          "tls_offload": "<YOUR_GCLOUD_INSTALL_PATH>/google-cloud-sdk/platform/enterprise_cert/libtls_offload.dylib"
        }
      }
      

      Windows

      ECP 構成は、%APPDATA%\gcloud\certificate_config.json にある JSON ファイルに保存されます。

      {
        "cert_configs": {
          "windows_store": {
            "store": "MY",
            "provider": "current_user",
            "issuer":"Google Endpoint Verification"
          }
        },
        "libs": {
          "ecp": "C:/Users/<USERNAME>/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin/ecp.exe",
          "ecp_client": "C:/Users/<USERNAME>/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/enterprise_cert/libecp.dll",
          "tls_offload": "C:/Users/<USERNAME>/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/enterprise_cert/libtls_offload.dll"
        }
      }
      
  5. CBA と Endpoint Verification でプロビジョニングされた証明書を有効にします。

    • gcloud CLI の場合は、次のコマンドを実行します。

      gcloud config set context_aware/use_client_certificate true
      
    • Terraform を含む他のすべてのコマンドライン ツールでは、環境変数を設定します。

      export GOOGLE_API_USE_CLIENT_CERTIFICATE=1
      

完全にはサポートされていないオペレーティング システムの使用

お使いのオペレーティング システムがサポートされているオペレーティング システムのリストになく、Endpoint Verification でプロビジョニングされた証明書を使用する場合、その環境を証明書ベースの適用対象から除外し、代わりに他の種類の適用を使用して環境を保護できますたとえば、会社の所有するデバイスのポリシーを使用します。

証明書ベースの適用は、mTLS handshake を通じてデバイスから送信されるすべてのリクエストを適用するため、他の種類の適用よりも強力な保護を提供します。

以下は、環境を証明書ベースの適用から除外し、別のタイプの適用を使用して保護する方法の例です。

この例では、組織が macOS、Windows、ChromeOS デバイスを使用しています。組織は、Google Cloud コンソールからのアクセスを保護したいと考えています。

  1. すべてのデバイスに対して証明書ベースのアクセスを適用するアクセスレベルを作成します。ただし、会社所有のデバイス ポリシーが必要な ChromeOS デバイスを除きます。YAML ファイルを次のカスタム式に置き換えます。

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
     || (device.os_type == OsType.DESKTOP_CHROME_OS && device.is_corp_owned_device)
    
  2. 前述の手順を完了します。

    1. コンテキストアウェア ポリシーを作成する
    2. Endpoint Verification を設定する
    3. Endpoint Verification でプロビジョニングされた証明書を使用するようにユーザーの Chrome ブラウザを構成する