このページでは、グローバル外部アプリケーション ロードバランサの相互 TLS(mTLS)の構成例を示します。
始める前に
- 外部アプリケーション ロードバランサの概要を確認します。
- 相互 TLS の概要を確認します。
- ユーザー指定の証明書による相互 TLS またはプライベート CA による相互 TLS を設定します。
- グローバル外部アプリケーション ロードバランサは、さまざまなバックエンド サービスとバケットをサポートしています。次のサポート対象のバックエンドのいずれかで、グローバル外部アプリケーション ロードバランサが設定されていることを確認してください。
ロードバランサに mTLS を設定する
相互 TLS 認証を機能させるには、ロードバランサを設定した後、ServerTLSPolicy
リソースを使用してターゲット HTTPS プロキシを更新する必要があります。
ServerTLSPolicy
リソースが作成されていることを確認します。手順については、ネットワーク セキュリティ リソースを作成するをご覧ください。プロジェクト内のすべてのターゲット HTTPS プロキシを一覧表示するには、
gcloud compute target-https-proxies list
コマンドを使用します。gcloud compute target-https-proxies list
ServerTLSPolicy
リソースを接続するターゲット HTTPS プロキシの名前をメモします。以降のステップでは、この名前をTARGET_HTTPS_PROXY_NAME
として表しています。ターゲット 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
現在のプロジェクトの指定されたロケーションにある
ServerTlsPolicies
リソースを一覧表示します。コンソール
Google Cloud コンソールで、[クライアント認証] ページに移動します。
すべての
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
として参照しています。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
ターゲット 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 接続エラーをログにキャプチャすることもできます。プロジェクト内のすべてのバックエンド サービスを一覧表示するには、
gcloud compute backend-services list
コマンドを使用します。gcloud compute backend-services list
カスタム ヘッダーとロギングを有効にするため、バックエンド サービスの名前をメモします。この名前は、次のステップで
BACKEND_SERVICE
として参照されます。バックエンド サービスを更新するには、
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}'
次のステップ
- 従来のアプリケーション ロードバランサに相互 TLS を設定する
- プライベート CA による相互 TLS を設定する
- ユーザー指定の証明書による相互 TLS を設定する
- mTLS クライアント証明書検証のログを表示する
- ロード バランシングの設定をクリーンアップする