このページでは、クロスリージョン内部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサに相互 TLS(mTLS)を構成する例を示します。
始める前に
- 内部アプリケーション ロードバランサの概要を確認します。
- 相互 TLS 認証を確認します。
- ユーザー指定の証明書を使用する相互 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
リージョン
gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --region=REGION
次のように置き換えます。
TARGET_HTTPS_PROXY_NAME
: ターゲット プロキシの名前。TARGET_PROXY_FILENAME
: yaml ファイルの名前。例:mtls_target_proxy.yaml
REGION
: ロードバランサを構成したリージョン。
現在のプロジェクトの指定されたロケーションにある
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
リージョン
gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --region=REGION
次のように置き換えます。
TARGET_HTTPS_PROXY_NAME
: ターゲット プロキシの名前。TARGET_PROXY_FILENAME
: yaml ファイルの名前。例:mtls_target_proxy.yaml
REGION
: ロードバランサを構成したリージョン。
mTLS カスタム ヘッダーを追加する
mTLS を有効にすると、カスタム ヘッダーを使用して mTLS 接続に関する情報を URL マップに渡すことができます。また、ロギングを有効にして、mTLS 接続エラーをログにキャプチャすることもできます。プロジェクト内のすべての URL マップを一覧表示するには、gcloud beta compute url-maps list
コマンドを使用します。
gcloud beta compute url-maps list
カスタム ヘッダーとロギングを有効にするために、URL マップの名前をメモします。次のステップでは、この名前を URL_MAP_NAME
と表しています。
グローバル
gcloud compute url-maps edit URL_MAP_NAME --global
以下に、カスタム リクエスト ヘッダー(requestHeadersToAdd
)で変数を使用する方法を示す YAML ファイルの例を示します。同じ変数を使用して、カスタム レスポンス ヘッダー(responseHeadersToAdd
)を送信できます。
headerAction: requestHeadersToAdd: - headerName: "X-Client-Cert-Present" headerValue: "{client_cert_present}" - headerName: "X-Client-Cert-Chain-Verified" headerValue: "{client_cert_chain_verified}" - headerName: "X-Client-Cert-Error" headerValue: "{client_cert_error}" - headerName: "X-Client-Cert-Hash" headerValue: "{client_cert_sha256_fingerprint}" - headerName: "X-Client-Cert-Serial-Number" headerValue: "{client_cert_serial_number}" - headerName: "X-Client-Cert-SPIFFE" headerValue: "{client_cert_spiffe_id}" - headerName: "X-Client-Cert-URI-SANs" headerValue: "{client_cert_uri_sans}" - headerName: "X-Client-Cert-DNSName-SANs" headerValue: "{client_cert_dnsname_sans}" - headerName: "X-Client-Cert-Valid-Not-Before" headerValue: "{client_cert_valid_not_before}" - headerName: "X-Client-Cert-Valid-Not-After" headerValue: "{client_cert_valid_not_after}" - headerName: "X-Client-Cert-Issuer-Dn" headerValue: "{client_cert_issuer_dn}" - headerName: "X-Client-Cert-Subject-Dn" headerValue: "{client_cert_subject_dn}" - headerName: "X-Client-Cert-Leaf" headerValue: "{client_cert_leaf}" - headerName: "X-Client-Cert-Chain" headerValue: "{client_cert_chain}"
リージョン
gcloud compute url-maps edit URL_MAP_NAME --region=REGION
以下に、カスタム リクエスト ヘッダー(requestHeadersToAdd
)で変数を使用する方法を示す YAML ファイルの例を示します。同じ変数を使用してカスタム レスポンス ヘッダー(responseHeadersToAdd
)を送信できます。
defaultService: regions/REGION/backendServices/BACKEND_SERVICE_1 name: regional-lb-map region: region/REGION headerAction: requestHeadersToAdd: - headerName: "X-Client-Cert-Present" headerValue: "{client_cert_present}" - headerName: "X-Client-Cert-Chain-Verified" headerValue: "{client_cert_chain_verified}" - headerName: "X-Client-Cert-Error" headerValue: "{client_cert_error}" - headerName: "X-Client-Cert-Hash" headerValue: "{client_cert_sha256_fingerprint}" - headerName: "X-Client-Cert-Serial-Number" headerValue: "{client_cert_serial_number}" - headerName: "X-Client-Cert-SPIFFE" headerValue: "{client_cert_spiffe_id}" - headerName: "X-Client-Cert-URI-SANs" headerValue: "{client_cert_uri_sans}" - headerName: "X-Client-Cert-DNSName-SANs" headerValue: "{client_cert_dnsname_sans}" - headerName: "X-Client-Cert-Valid-Not-Before" headerValue: "{client_cert_valid_not_before}" - headerName: "X-Client-Cert-Valid-Not-After" headerValue: "{client_cert_valid_not_after}" - headerName: "X-Client-Cert-Issuer-Dn" headerValue: "{client_cert_issuer_dn}" - headerName: "X-Client-Cert-Subject-Dn" headerValue: "{client_cert_subject_dn}" - headerName: "X-Client-Cert-Leaf" headerValue: "{client_cert_leaf}" - headerName: "X-Client-Cert-Chain" headerValue: "{client_cert_chain}"