Menggunakan mTLS frontend dengan Secure Web Proxy

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 TrustConfig yang 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

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.

  1. 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
    EOF
    
  2. Buat 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.cert
    
  3. Buat 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.req
    
  4. Tandatangani 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.

  1. Jalankan perintah OpenSSL berikut untuk membuat kunci pribadi RSA bernama client.key:

    openssl genpkey -algorithm RSA -out client.key
    
  2. Buat file konfigurasi bernama client.cnf yang 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
    
    EOF
    

    Anda dapat mengubah nilai CN dan DNS.1 sesuai kebutuhan untuk pengujian.

  3. 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.cnf
    
  4. Gunakan perintah x509 OpenSSL 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 file client.cert yang 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_req
    

    Proses 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.

  1. 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-----
    
    EOF
    

    Ganti TRUST_CONFIG_NAME dengan nama resource konfigurasi tepercaya Anda.

  2. Impor file trust config.yaml menggunakan perintah gcloud 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 Anda

    • LOCATION: 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:

  1. Buat file server_tls_policy.yaml. Pilih salah satu opsi berikut untuk clientValidationMode:

    • 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_NAME
    

    Ganti kode berikut:

    • SERVER_TLS_POLICY_NAME: nama resource ServerTlsPolicy Anda

    • PROJECT_ID: ID project Anda Google Cloud

    • TRUST_CONFIG_NAME: nama resource konfigurasi tepercaya Anda

    • LOCATION: region tempat instance Secure Web Proxy Anda dikonfigurasi

  2. Impor resource ServerTlsPolicy menggunakan perintah gcloud 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 resource ServerTlsPolicy Anda

    • LOCATION: region tempat instance Secure Web Proxy Anda dikonfigurasi

  3. Opsional: Untuk mencantumkan semua resource ServerTlsPolicies, gunakan perintah gcloud network-security server-tls-policies list.

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

    Ganti LOCATION dengan region tempat instance Secure Web Proxy Anda dikonfigurasi.

Mengaitkan resource ServerTlsPolicy dengan instance Secure Web Proxy Anda

  1. Tambahkan resource ServerTlsPolicy ke file gateway.yaml instance Secure Web Proxy Anda.

    echo "serverTlsPolicy:
    //networksecurity.googleapis.com/projects/PROJECT_ID/locations/
    LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME"
    >> gateway.yaml
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda Google Cloud

    • LOCATION: region tempat instance Secure Web Proxy Anda dikonfigurasi

  2. Impor konfigurasi instance Secure Web Proxy Anda dari file gateway.yaml menggunakan perintah gcloud network-services gateways import.

    gcloud network-services gateways import GATEWAY_NAME\
        --source=gateway.yaml \
        --location=LOCATION
    

    Ganti kode berikut:

    • GATEWAY_NAME: nama instance Secure Web Proxy Anda

    • LOCATION: 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

Untuk mengetahui informasi selengkapnya, lihat batasan mTLS frontend.

Langkah berikutnya