Menggunakan akun layanan untuk membuat kebijakan

Akun layanan adalah Akun Google non-manusia khusus yang digunakan oleh aplikasi, proses otomatis, atau workload komputasi, seperti instance Compute Engine, untuk melakukan panggilan API resmi. Tidak seperti akun pengguna, akun layanan diidentifikasi hanya dengan alamat email uniknya.

Aplikasi menggunakan akun layanan untuk melakukan autentikasi dan mendapatkan akses ke resourceGoogle Cloud . Saat melakukan autentikasi menggunakan akun layanan, aplikasi akan mendapatkan akses ke resource yang telah diberi izin Identity and Access Management eksplisit untuk akun layanan tersebut. Hal ini memberikan metode yang aman, dapat diaudit, dan terpusat untuk otorisasi antar-mesin.

Untuk Secure Web Proxy, akun layanan memainkan peran penting dalam otorisasi dan penerapan kebijakan. Dengan menggunakan akun layanan untuk mengidentifikasi sumber traffic workload, Anda dapat membuat kebijakan Secure Web Proxy terperinci yang secara khusus mengizinkan atau menolak traffic web berdasarkan identitas aplikasi, bukan hanya alamat IP-nya.

Halaman ini menunjukkan cara melakukan hal berikut:

Sebelum memulai

  • Selesaikan langkah-langkah penyiapan awal.

  • Minta administrator organisasi untuk memberi Anda akses ke akun layanan.

  • Verifikasi bahwa Anda telah menginstal Google Cloud CLI versi 406.0.0 atau yang lebih baru:

    gcloud version | head -n1
    

    Jika Anda telah menginstal gcloud CLI versi sebelumnya, update versinya:

    gcloud components update --version=406.0.0
    

Membuat instance Secure Web Proxy dengan kebijakan kosong

Untuk membuat instance Secure Web Proxy, Anda harus membuat kebijakan keamanan kosong terlebih dahulu, lalu membuat proxy web yang menggunakan kebijakan tersebut.

Membuat kebijakan keamanan kosong

Konsol

  1. Di konsol Google Cloud , buka halaman SWP Policies.

    Buka Kebijakan SWP

  2. Klik Buat kebijakan.

  3. Di kolom Name, masukkan nama untuk kebijakan, seperti myswppolicy.

  4. Di kolom Deskripsi, masukkan deskripsi untuk kebijakan, seperti My new swp policy.

  5. Untuk Regions, pilih region tempat Anda ingin membuat kebijakan, seperti us-central1.

  6. Klik Create.

Cloud Shell

  1. Gunakan editor teks untuk membuat file policy.yaml.

  2. Tambahkan kode berikut ke file policy.yaml:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    Ganti kode berikut:

    • PROJECT_NAME: nama project Anda

    • REGION: region tempat kebijakan Anda dibuat, seperti us-central1

    • POLICY_NAME: nama kebijakan Anda

    • POLICY_DESCRIPTION: deskripsi untuk kebijakan Anda

  3. Impor kebijakan keamanan menggunakan perintah gcloud network-security gateway-security-policies import:

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

Membuat proxy web

Konsol

  1. Di konsol Google Cloud , buka halaman Web Proxies.

    Buka Web Proxy

  2. Klik Buat proxy web yang aman.

  3. Di kolom Name, masukkan nama untuk proxy web, seperti myswp.

  4. Di kolom Deskripsi, masukkan deskripsi untuk proxy web, seperti My new swp.

  5. Untuk Routing mode, pilih salah satu opsi berikut:

    • Eksplisit: men-deploy instance Secure Web Proxy dalam mode proxy eksplisit.
    • Next hop: men-deploy instance Secure Web Proxy Anda dalam mode next hop.
  6. Untuk Region, pilih region tempat Anda ingin membuat proxy web, seperti us-central1.

  7. Untuk Network, pilih jaringan tempat Anda ingin membuat proxy web.

  8. Untuk Subnetwork, pilih subnet VPC yang Anda buat selama penyiapan awal.

  9. Opsional: Di kolom Alamat IP proxy web, masukkan alamat IP Secure Web Proxy.

    Anda dapat memasukkan alamat IP dari rentang alamat IP Secure Web Proxy yang berada di subnetwork yang Anda buat pada langkah sebelumnya. Jika Anda tidak memasukkan alamat IP, instance Secure Web Proxy Anda akan otomatis memilih alamat IP dari subnetwork yang dipilih.

  10. Untuk Sertifikat, pilih sertifikat yang ingin Anda gunakan untuk membuat proxy web.

  11. Untuk Kebijakan, pilih kebijakan yang Anda buat untuk mengaitkan proxy web.

  12. Klik Create.

Cloud Shell

  1. Gunakan editor teks untuk membuat file gateway.yaml.

  2. Tambahkan kode berikut ke file gateway.yaml:

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    Opsional: Untuk mengizinkan aplikasi klien dari region lain terhubung ke proxy Anda, aktifkan akses global saat membuat instance Secure Web Proxy. Google Cloud

    Dalam file gateway.yaml, tambahkan kolom allow_global_access dan tetapkan ke true.

    Penting: Anda hanya dapat mengaktifkan allow_global_access saat membuat instance Secure Web Proxy. Anda tidak dapat mengonfigurasi setelan ini nanti.

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    allow_global_access: true
    

    Ganti kode berikut:

    • GATEWAY_NAME: nama instance Secure Web Proxy ini

    • GATEWAY_PORT_NUMBERS: daftar nomor port untuk gateway ini, seperti [80,443]

    • CERTIFICATE_URLS: daftar URL sertifikat SSL

    • SUBNETWORK: Subnet VPC yang Anda buat selama penyiapan awal

    • ROUTING_MODE: tentukan mode perutean proxy web yang diperlukan:

      • EXPLICIT_ROUTING_MODE: men-deploy instance Secure Web Proxy Anda dalam mode proxy eksplisit
      • NEXT_HOP_ROUTING_MODE: men-deploy instance Secure Web Proxy Anda dalam mode next hop
    • GATEWAY_IP_ADDRESS: daftar opsional alamat IP untuk instance Secure Web Proxy Anda dalam sub-jaringan proxy yang sebelumnya Anda buat di langkah penyiapan awal

      Jika Anda memilih untuk tidak mencantumkan alamat IP, lewati kolom tersebut agar proxy web memilih alamat IP untuk Anda.

  3. Buat instance Secure Web Proxy menggunakan perintah gcloud network-services gateways import:

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

Menguji konektivitas

Untuk menguji konektivitas, gunakan perintah curl dari instance virtual machine (VM) mana pun dalam jaringan Virtual Private Cloud (VPC) Anda:

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
  

Jika semuanya berfungsi dengan benar, instance Secure Web Proxy Anda akan menampilkan kode status 403 Forbidden. Error ini mengonfirmasi hal berikut:

  • Instance Secure Web Proxy telah berhasil di-deploy dan secara aktif menerima traffic.

  • Kebijakan Secure Web Proxy dengan benar menerapkan postur keamanan default untuk menolak semua traffic hingga Anda menentukan aturan allow tertentu di bagian berikutnya.

Buat akun layanan dan berikan peran IAM

  1. Buat akun layanan: gunakan perintah gcloud iam service-accounts createuntuk membuat akun layanan bernama my-swp-sa di project Google Cloud Anda.

    gcloud iam service-accounts create my-swp-sa \
        --display-name="Secure Web Proxy service account" \
        --description="Service account for Secure Web Proxy instances"
  2. Memberikan peran IAM ke akun layanan: gunakan perintah gcloud projects add-iam-policy-binding untuk memberikan peran IAM yang diperlukan ke akun layanan sehingga akun tersebut dapat mengelola atau menggunakan resource di project Google Cloud Anda.

    Misalnya, untuk mengizinkan akun layanan menggunakan resource jaringan, berikan peran Compute Network User (roles/compute.networkUser) kepadanya.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:my-swp-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.networkUser"

    Ganti PROJECT_ID dengan ID project Google Cloud Anda.

Membuat aturan Secure Web Proxy

Konsol

  1. Di konsol Google Cloud , buka halaman SWP Policies.

    Buka Kebijakan SWP

  2. Klik nama kebijakan yang telah Anda buat sebelumnya, seperti myswppolicy.

  3. Klik Tambahkan aturan.

  4. Untuk setiap aturan, lakukan hal berikut:

    1. Di kolom Priority, masukkan urutan evaluasi numerik untuk aturan. Aturan dievaluasi dari prioritas tertinggi hingga terendah, dengan 0 adalah prioritas tertinggi.

    2. Di kolom Name, masukkan nama untuk aturan.

    3. Di kolom Deskripsi, masukkan deskripsi untuk aturan.

    4. Untuk Tindakan, pilih salah satu opsi berikut:

      • Izinkan: untuk mengizinkan permintaan koneksi yang cocok dengan aturan.
      • Tolak: untuk menolak permintaan koneksi yang cocok dengan aturan.
    5. Untuk kolom Status, pilih salah satu opsi berikut untuk penerapan aturan:

      • Diaktifkan: untuk menerapkan aturan pada instance Secure Web Proxy Anda.
      • Dinonaktifkan: agar tidak menerapkan aturan pada instance Secure Web Proxy Anda.
    6. Di bagian Session Match, tentukan alamat email akun layanan yang Anda buat sebelumnya. Contoh:

        sessionMatcher: "source.matchServiceAccount(SERVICE_ACCOUNT) && host() == 'example.com'"
        

      Untuk mengetahui informasi selengkapnya tentang sintaksis untuk SessionMatcher, lihat Referensi bahasa pencocok CEL.

    7. Di bagian Pencocokan Aplikasi, tentukan kriteria untuk mencocokkan permintaan.

    8. Klik Tambahkan Aturan.

  5. Untuk menambahkan aturan lain, klik Tambahkan aturan.

Cloud Shell

  1. Gunakan editor teks untuk membuat file rule.yaml.

  2. Untuk mengizinkan akses ke URL dari akun layanan yang sesuai, tambahkan kode berikut ke file rule.yaml yang Anda buat:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

    Ganti kode berikut:

    • RULE_NAME: nama aturan ini
    • RULE_DESCRIPTION: deskripsi untuk aturan
    • RULE_PRIORITY: prioritas aturan ini; angka yang lebih rendah sesuai dengan prioritas yang lebih tinggi
    • CEL_EXPRESSION: ekspresi Common Expression Language (CEL). Untuk mengetahui informasi selengkapnya, lihat Referensi bahasa pencocok CEL.

    Misalnya, untuk mengizinkan akses ke example.com dari resource dengan akun layanan yang diperlukan, tambahkan kode berikut ke file YAML yang Anda buat untuk sessionMatcher:

    ```yaml
    sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
    ```
    

    Ganti SERVICE_ACCOUNT dengan akun layanan yang ingin Anda izinkan. Ini harus berupa alamat email akun layanan.

  3. Impor aturan yang Anda buat menggunakan perintah gcloud network-security gateway-security-policies rules import:

    gcloud network-security gateway-security-policies rules import RULE_NAME \
        --source=RULE_FILE.yaml \
        --location=REGION \
        --gateway-security-policy=POLICY_NAME
    

Menguji konektivitas

Anda dapat menguji konektivitas lagi untuk memvalidasi bahwa seluruh konfigurasi Secure Web Proxy Anda—termasuk akun layanan, aturan kebijakan keamanan, dan gateway—berfungsi sebagaimana mestinya.

Untuk menguji konektivitas, gunakan perintah curl dari resource—seperti instance VM—dengan SERVICE_ACCOUNT yang terpasang:

curl -x https://IPv4_ADDRESS:443 http://example.com 
--proxy-insecure

Ganti IPv4_ADDRESS dengan alamat IPv4 instance Secure Web Proxy Anda.

Jika semuanya berfungsi dengan benar, Anda akan menerima kode status 200 OK. Kode status ini mengonfirmasi hasil utama berikut:

  • Otorisasi berhasil: membuktikan bahwa traffic yang berasal dari resource diidentifikasi dengan benar oleh akun layanan yang ditetapkan, dan bahwa identitas ini berhasil cocok dengan aturan allow yang Anda tambahkan ke kebijakan keamanan.

  • Fungsi end-to-end: memvalidasi bahwa traffic mengalir dengan benar melalui jalur yang dikonfigurasi—dari resource > ke instance Secure Web Proxy > melewati kebijakan keamanan > dan mencapai tujuan eksternal.

Langkah berikutnya