グローバル外部アプリケーション ロードバランサに相互 TLS を設定する

このページでは、グローバル外部アプリケーション ロードバランサの相互 TLS(mTLS)の構成例を示します。

始める前に

ロードバランサに mTLS を設定する

相互 TLS 認証を機能させるには、ロードバランサを設定した後、ServerTLSPolicy リソースを使用してターゲット HTTPS プロキシを更新する必要があります。

  1. ServerTLSPolicy リソースが作成されていることを確認します。手順については、ネットワーク セキュリティ リソースを作成するをご覧ください。

  2. プロジェクト内のすべてのターゲット HTTPS プロキシを一覧表示するには、gcloud compute target-https-proxies list コマンドを使用します。

    gcloud compute target-https-proxies list
    

    ServerTLSPolicy リソースを接続するターゲット HTTPS プロキシの名前をメモします。以降のステップでは、この名前を TARGET_HTTPS_PROXY_NAME として表しています。

  3. ターゲット HTTPS プロキシの構成をファイルにエクスポートするには、gcloud beta compute target-https-proxies export コマンドを使用します。

    グローバル

      gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
          --destination=TARGET_PROXY_FILENAME \
          --global
      

    次のように置き換えます。

    • TARGET_HTTPS_PROXY_NAME: ターゲット プロキシの名前。
    • TARGET_PROXY_FILENAME: yaml ファイルの名前。例: mtls_target_proxy.yaml
  4. 現在のプロジェクトの指定されたロケーションにある ServerTlsPolicies リソースを一覧表示します。

    コンソール

    1. Google Cloud コンソールで、[クライアント認証] ページに移動します。

      [クライアント認証] に移動

    2. すべての ServerTlsPolicies リソースが表示されます。

    gcloud

    すべてのクライアント認証(ServerTlsPolicies)リソースを一覧表示するには、gcloud network-security server-tls-policies list コマンドを使用します。

    gcloud network-security server-tls-policies list \
      --location=REGION
    

    次のように置き換えます。

    REGION: global を使用します。

    mTLS を構成する ServerTlsPolicies リソースの名前をメモします。この名前は、次のステップで SERVER_TLS_POLICY_NAME として参照しています。

  5. ServerTlsPolicy リソース ファイル TARGET_PROXY_FILENAME を追加するには、次のコマンドを使用します。PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/REGION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
    
  6. ターゲット HTTPS プロキシの構成をファイルからインポートするには、gcloud beta compute target-https-proxies import コマンドを使用します。

    グローバル

       gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
           --source=TARGET_PROXY_FILENAME \
           --global
       

    次のように置き換えます。

    • TARGET_HTTPS_PROXY_NAME: ターゲット プロキシの名前。
    • TARGET_PROXY_FILENAME: yaml ファイルの名前。例: mtls_target_proxy.yaml

mTLS カスタム ヘッダーを追加する

mTLS を有効にすると、カスタム ヘッダーを使用して mTLS 接続に関する情報をバックエンド サービスに渡すことができます。また、ロギングを有効にして、mTLS 接続エラーをログにキャプチャすることもできます。

  1. プロジェクト内のすべてのバックエンド サービスを一覧表示するには、gcloud compute backend-services list コマンドを使用します。

    gcloud compute backend-services list
    

    カスタム ヘッダーとロギングを有効にするため、バックエンド サービスの名前をメモします。この名前は、次のステップで BACKEND_SERVICE として参照されます。

  2. バックエンド サービスを更新するには、gcloud compute backend-services update コマンドを使用します。

    gcloud compute backend-services update BACKEND_SERVICE \
      --global \
      --enable-logging \
      --logging-sample-rate=1 \
      --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \
      --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \
      --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \
      --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \
      --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \
      --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \
      --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \
      --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \
      --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \
      --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
    

次のステップ