Anda dapat mengonfigurasi frontend mutual TLS (mTLS) di Secure Web Proxy untuk meningkatkan keamanan beban kerja Anda, seperti agen AI. Secure Web Proxy menggunakan mTLS frontend untuk memverifikasi identitas klien melalui sertifikat.
Integrasi ini memungkinkan Anda menggunakan identitas klien yang divalidasi dalam kebijakan otorisasi Secure Web Proxy untuk menerapkan kontrol akses terperinci untuk traffic keluar.
Cara kerjanya
Langkah-langkah berikut menjelaskan cara Secure Web Proxy menggunakan mTLS frontend untuk mengamankan traffic keluar:
Koneksi proxy eksplisit: Anda dapat mengonfigurasi klien untuk menggunakan Secure Web Proxy sebagai proxy eksplisitnya. Klien memulai permintaan HTTPS CONNECT ke frontend Secure Web Proxy, bukan terhubung langsung ke internet.
mutual TLS handshake: selama penyiapan koneksi, Secure Web Proxy dan klien melakukan handshake mTLS di frontend proxy. Proxy menggunakan resource
TrustConfigyang dikonfigurasi untuk memvalidasi sertifikat klien, sedangkan klien memvalidasi sertifikat server proxy.Ekstraksi identitas: setelah handshake berhasil, Secure Web Proxy mengekstrak atribut identitas unik, seperti
URI_SAN, langsung dari sertifikat klien yang divalidasi.Otorisasi berbasis identitas: Secure Web Proxy mengevaluasi permintaan keluar terhadap kebijakan otorisasi yang Anda konfigurasi. Untuk menentukan apakah permintaan diotorisasi, proxy menggunakan identitas klien, yang diverifikasi secara kriptografis selama handshake mTLS.
Mengamankan traffic keluar: setelah diotorisasi dan jika ada aturan yang cocok untuk tujuan eksternal, Secure Web Proxy akan memenuhi permintaan ke tujuan tersebut.
Manfaat utama
Mengonfigurasi mTLS frontend di Secure Web Proxy memberikan manfaat keamanan dan operasional berikut:
Keamanan yang ditingkatkan: mencapai akses zero-trust dengan mewajibkan autentikasi mTLS frontend untuk semua traffic keluar. Hal ini memastikan bahwa hanya beban kerja dengan identitas terverifikasi yang dapat membuat koneksi dengan proxy untuk mengakses layanan eksternal.
Konfigurasi beban kerja yang disederhanakan: gunakan mode perutean proxy eksplisit untuk Secure Web Proxy guna memanfaatkan kemampuan proxy untuk mencegat dan mengautentikasi permintaan.
Kontrol terperinci: menerapkan kebijakan terperinci dan berbasis identitas untuk menentukan layanan eksternal yang dapat diakses oleh setiap beban kerja tertentu.
Contoh kasus penggunaan: Memvalidasi identitas beban kerja Anda
Di industri yang sangat mematuhi peraturan dan teregulasi seperti sektor perbankan, memverifikasi lokasi jaringan permintaan tidak cukup untuk mencegah akses data yang tidak sah. Dengan mengonfigurasi mTLS frontend di Secure Web Proxy, organisasi dapat beralih ke model identitas yang diverifikasi secara kriptografis. Hal ini memastikan bahwa setiap beban kerja, baik instance virtual machine (VM) maupun agen AI, harus membuktikan identitasnya yang spesifik dengan menggunakan sertifikat tepercaya.
Pendekatan ini memungkinkan administrator menerapkan batasan berbasis identitas yang melindungi jalur keluar sensitif. Misalnya, bank dapat memastikan bahwa hanya beban kerja pemrosesan pembayaran terautentikasi tertentu yang dapat menjangkau gateway keuangan eksternal.
Mengonfigurasi autentikasi mTLS frontend untuk Secure Web Proxy
Bagian ini menjelaskan langkah-langkah untuk mengonfigurasi autentikasi mTLS frontend untuk instance Secure Web Proxy Anda.
Sebelum memulai
Tinjau halaman Mengelola konfigurasi tepercaya.
Minta administrator Identity and Access Management Anda untuk memberi Anda peran berikut:
- Peran Pemilik Certificate Manager
(
roles/certificatemanager.owner) - Peran Admin Jaringan Compute
(
roles/compute.networkAdmin) - Peran
Admin Keamanan Compute
(
roles/compute.securityAdmin) - Peran Admin Networksecurity
(
roles/networksecurity.admin)
- Peran Pemilik Certificate Manager
(
Anda harus memiliki instance Secure Web Proxy yang telah Anda deploy dalam mode perutean proxy eksplisit.
Membuat sertifikat root dan perantara
Bagian ini menunjukkan cara menggunakan OpenSSL untuk membuat sertifikat root certificate authority (CA) (anchor kepercayaan) dan sertifikat CA perantara opsional. Secure Web Proxy menggunakan sertifikat ini untuk memverifikasi sertifikat klien yang diberikan beban kerja selama proses handshake mTLS frontend. Proses manual ini ditujukan untuk lingkungan pengujian dan pengembangan guna menyediakan anchor kepercayaan yang diperlukan Secure Web Proxy untuk memverifikasi sertifikat klien.
Sertifikat root berada di bagian atas rantai sertifikat, sedangkan sertifikat perantara bertindak sebagai jembatan dalam rantai kepercayaan kembali ke root. Sertifikat perantara ditandatangani secara kriptografis oleh sertifikat root. Saat Secure Web Proxy menerima sertifikat klien, proxy akan memvalidasi identitas dengan membuat rantai kepercayaan dari sertifikat klien kembali ke anchor kepercayaan yang dikonfigurasi.
Gunakan perintah berikut untuk membuat sertifikat root dan perantara. Meskipun sertifikat perantara bersifat opsional, konfigurasi ini menggunakannya untuk menandatangani sertifikat klien guna menampilkan hierarki sertifikat multi-tingkat.
Buat file konfigurasi OpenSSL.
cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOFBuat kunci pribadi (
root.key) dan sertifikat root X.509 (root.cert) yang ditandatangani sendiri.openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.certBuat permintaan penandatanganan sertifikat (
int.req) untuk sertifikat perantara.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.reqTandatangani permintaan penandatanganan sertifikat (CSR) untuk membuat sertifikat perantara X.509 (
int.cert).openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Membuat sertifikat klien untuk pengujian
Buat kunci pribadi dan sertifikat leaf untuk beban kerja klien pengujian Anda. Selama proses handshake mTLS dengan instance Secure Web Proxy Anda, klien akan memberikan sertifikat leaf ini untuk membuktikan identitasnya.
Contoh berikut menggunakan OpenSSL untuk membuat kunci klien dan CSR, lalu menandatangani CSR dengan kunci CA perantara yang Anda buat di bagian Membuat sertifikat root dan perantara.
Jalankan perintah OpenSSL berikut untuk membuat kunci pribadi RSA bernama
client.key:openssl genpkey -algorithm RSA -out client.keyBuat file konfigurasi bernama
client.cnfyang menentukan nama DNS untuk Nama Alternatif Subjek (SAN). Hal ini membantu memastikan bahwa sertifikat kompatibel dengan persyaratan keamanan modern.cat > client.cnf << EOF [req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] CN = my-client.example.com [v3_req] keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth subjectAltName = @alt_names [alt_names] DNS.1 = my-client.example.com EOFAnda dapat mengubah nilai
CNdanDNS.1sesuai kebutuhan untuk pengujian.Jalankan perintah permintaan OpenSSL menggunakan kunci pribadi dan file konfigurasi yang Anda buat untuk membuat file
client.req.openssl req -new -key client.key -out client.req -config client.cnfGunakan perintah
x509OpenSSL untuk menandatangani permintaan menggunakan sertifikat perantara (int.cert) dan kunci (int.key). Tetapkan periode validitas, seperti 365 hari, dan pastikan ekstensi dari file konfigurasi Anda diterapkan ke fileclient.certyang dibuat.openssl x509 -req -in client.req -CA int.cert -CAkey int.key \ -set_serial 02 -days 365 -out client.cert \ -extfile client.cnf -extensions v3_reqProses ini akan membuat file
client.cert. Catat nilai yang digunakan di SAN DNS (misalnya,my-client.example.com) sebagai identitas klien Anda. Anda dapat menggunakan nilai ini untuk mengidentifikasi beban kerja saat membuat kebijakan otorisasi Secure Web Proxy.
Memformat sertifikat
Format the
sertifikat root dan perantara
menjadi variabel lingkungan untuk digunakan dalam file trust_config.yaml.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Membuat resource konfigurasi tepercaya
Konfigurasi kepercayaan mewakili infrastruktur kunci publik (PKI) Anda di Certificate Manager. Konfigurasi tepercaya menunjukkan ke instance Secure Web Proxy Anda sertifikat Certificate Authority (CA) mana yang harus dipercaya saat memverifikasi sertifikat klien yang diberikan selama handshake mTLS frontend.
Resource konfigurasi tepercaya contoh ini berisi penyimpanan tepercaya dengan satu penyimpanan tepercaya dengan anchor kepercayaan (CA root) dan CA perantara. Resource ini menggunakan konten sertifikat dari variabel lingkungan yang Anda buat di bagian Memformat sertifikat sebelumnya.
Buat file
trust_config.yaml.cat << EOF > trust_config.yaml trustStores: TRUST_CONFIG_NAME: trustAnchors: - pemCertificate: | -----BEGIN CERTIFICATE----- <certificate content> -----END CERTIFICATE----- intermediateCAs: - pemCertificate: | -----BEGIN CERTIFICATE----- <certificate content> -----END CERTIFICATE----- EOFGanti
TRUST_CONFIG_NAMEdengan nama resource konfigurasi tepercaya Anda.Impor file
trust config.yamlmenggunakan perintahgcloud certificate-manager trust-configs import.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME\ --source=trust_config.yaml \ --location=LOCATION
Ganti kode berikut:
TRUST_CONFIG_NAME: nama resource konfigurasi tepercaya AndaLOCATION: region tempat resource konfigurasi tepercaya Anda disimpan
Membuat resource ServerTlsPolicy
Resource ServerTlsPolicy—juga dikenal sebagai resource autentikasi klien—menentukan cara Secure Web Proxy memvalidasi sertifikat klien. Resource ini memungkinkan Anda menentukan mode TLS sisi server dan resource konfigurasi tepercaya untuk verifikasi sertifikat.
Atribut clientValidationMode menentukan cara koneksi ditangani
saat klien memberikan sertifikat yang tidak valid atau tidak memberikan sertifikat sama sekali.
Untuk mengetahui informasi selengkapnya, lihat mode validasi klien mTLS frontend.
Nilai atribut clientValidationMode adalah sebagai berikut:
REJECT_INVALID: Secure Web Proxy hanya mengizinkan koneksi dari klien yang memberikan sertifikat valid yang ditandatangani oleh CA dalam konfigurasi tepercaya Anda. Koneksi dengan sertifikat yang tidak valid atau tidak ada akan ditolak.ALLOW_INVALID_OR_MISSING_CLIENT_CERT: Secure Web Proxy mengizinkan permintaan koneksi meskipun sertifikat klien tidak valid, tidak dapat divalidasi terhadap konfigurasi tepercaya Anda, atau tidak ada sama sekali.
Untuk membuat resource ServerTlsPolicy, ikuti langkah-langkah berikut:
Buat file
server_tls_policy.yaml. Pilih salah satu opsi berikut untukclientValidationMode:- Opsi 1: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/PROJECT_ID/locations/LOCATION/trustConfigs/TRUST_CONFIG_NAME- Opsi 2: REJECT_INVALID
name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: REJECT_INVALID clientValidationTrustConfig: projects/PROJECT_ID/locations/LOCATION/trustConfigs/TRUST_CONFIG_NAMEGanti kode berikut:
SERVER_TLS_POLICY_NAME: nama resourceServerTlsPolicyAndaPROJECT_ID: ID project Anda Google CloudTRUST_CONFIG_NAME: nama resource konfigurasi tepercaya AndaLOCATION: region tempat instance Secure Web Proxy Anda dikonfigurasi
Impor resource
ServerTlsPolicymenggunakan perintahgcloud network-security server-tls-policies import.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME\ --source=server_tls_policy.yaml \ --location=LOCATION
Ganti kode berikut:
SERVER_TLS_POLICY_NAME: nama resourceServerTlsPolicyAndaLOCATION: region tempat instance Secure Web Proxy Anda dikonfigurasi
Opsional: Untuk mencantumkan semua resource
ServerTlsPolicies, gunakan perintahgcloud network-security server-tls-policies list.gcloud network-security server-tls-policies list \ --location=LOCATION
Ganti
LOCATIONdengan region tempat instance Secure Web Proxy Anda dikonfigurasi.
Mengaitkan resource ServerTlsPolicy dengan instance Secure Web Proxy Anda
Tambahkan resource
ServerTlsPolicyke filegateway.yamlinstance Secure Web Proxy Anda.echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/ LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> gateway.yamlGanti kode berikut:
PROJECT_ID: ID project Anda Google CloudLOCATION: region tempat instance Secure Web Proxy Anda dikonfigurasi
Impor konfigurasi instance Secure Web Proxy Anda dari file
gateway.yamlmenggunakan perintahgcloud network-services gateways import.gcloud network-services gateways import GATEWAY_NAME\ --source=gateway.yaml \ --location=LOCATIONGanti kode berikut:
GATEWAY_NAME: nama instance Secure Web Proxy AndaLOCATION: region tempat instance Secure Web Proxy Anda dikonfigurasi
Mengonfigurasi kebijakan otorisasi
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan kebijakan otorisasi untuk Secure Web Proxy.
Logging
Untuk mengetahui informasi selengkapnya, lihat penanganan error dan logging mTLS frontend.
Batasan
Secure Web Proxy hanya mendukung konfigurasi mTLS frontend dalam mode perutean proxy eksplisit.
Untuk membuat aturan keamanan berbasis mTLS frontend, gunakan kebijakan otorisasi untuk Secure Web Proxy. Aturan kebijakan keamanan gateway tidak didukung.
Untuk mengetahui informasi selengkapnya, lihat batasan mTLS frontend.