Menyiapkan kebijakan otorisasi untuk Load Balancer Aplikasi

Halaman ini menunjukkan cara menyiapkan kebijakan otorisasi untuk Load Balancer Aplikasi.

Sebelum memulai

Menyiapkan load balancer

Jika Anda belum membuat load balancer, lihat halaman berikut untuk menyiapkan Load Balancer Aplikasi pilihan Anda:

Membuat dan melampirkan akun layanan atau tag ke VM Google Cloud

Untuk Load Balancer Aplikasi internal, Anda dapat menerapkan kebijakan otorisasi berdasarkan akun layanan atau tag yang dilampirkan ke berbagai Google Cloud resource.

Contoh dalam dokumen ini memberikan petunjuk untuk membuat kebijakan otorisasi berdasarkan akun layanan atau tag yang terpasang ke instance virtual machine (VM) Google Cloud . Setiap permintaan yang berasal dari VM klien yang ditautkan ke akun layanan atau tag tertentu dapat diizinkan, ditolak, atau didelegasikan ke layanan eksternal. Contoh kebijakan otorisasi semacam itu yang menggunakan akun layanan dan tag untuk menerapkan kontrol akses disediakan di bagian Kebijakan otorisasi berdasarkan akun layanan atau tag dalam dokumen ini.

Penerapan kebijakan otorisasi berdasarkan akun layanan atau tag tidak didukung untuk Load Balancer Aplikasi eksternal.

Melampirkan akun layanan ke VM klien

Untuk mengetahui petunjuk tentang cara melampirkan akun layanan ke instance VM, lihat dokumen berikut:

Melampirkan tag ke template grup instance

Sebelum mengikat tag dengan template grup instance, Anda harus membuat kunci dan nilai tag. Saat membuat tag, tetapkan tag dengan tujuan GCE_FIREWALL. Google Cloud Fitur jaringan, termasuk Secure Web Proxy dan kebijakan otorisasi, memerlukan tujuan GCE_FIREWALL untuk menerapkan tag.

Membuat kunci dan nilai tag

Untuk membuat tag, Anda memerlukan peran Tag Administrator (roles/resourcemanager.tagAdmin).

Konsol

  1. Di Google Cloud console, buka halaman Tags.

    Buka Tag

  2. Klik Create .

  3. Di kolom Deskripsi kunci tag, masukkan deskripsi.

  4. Centang kotak Untuk digunakan dengan firewall jaringan.

  5. Di daftar Project, pilih Google Cloud project tempat Anda ingin membuat tag.

  6. Di kolom Network, pilih LB_NETWORK.

  7. Klik Tambahkan nilai.

  8. Di kolom Nilai tag, masukkan TAG_VALUE. Nilai harus berupa nilai numerik.

  9. Di kolom Deskripsi nilai tag, masukkan deskripsi.

  10. Setelah selesai menambahkan nilai tag, klik Buat kunci tag.

gcloud

  1. Buat kunci tag.

    gcloud resource-manager tags keys create TAG_KEY \
        --parent=organizations/ORG_ID \
        --purpose=GCE_FIREWALL \
        --purpose-data=network=LB_NETWORK
    

    Ganti kode berikut:

    • TAG_KEY: nama kunci tag Anda.
    • ORG_ID: ID organisasi Anda.
    • LB_NETWORK: nama jaringan VPC Anda.
  2. Tambahkan nilai tag ke kunci tag numerik.

    gcloud resource-manager tags values create TAG_VALUE \
        --parent=ORG_ID/TAG_KEY
    

    Ganti TAG_VALUE dengan nilai tag numerik.

Ikat tag ke template grup instance

Administrator tag dapat mengikat tag ke setiap instance VM atau template grup instance dan melampirkan nilai tag ke backend VM atau template.

Untuk mengikat tag, Anda memerlukan peran Pengguna Tag (roles/resourcemanager.tagUser).

  1. Tentukan awalan nama lengkap untuk project dan zona Anda:

    FULL_NAME_PREFIX=//compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • ZONE: zona tempat grup instance terkelola berada.
  2. Dapatkan ID template grup instance:

    TEMPLATE_ID=$(gcloud compute instance-templates describe TEMPLATE_NAME --region=LOCATION --format='value(id)')
    

    Ganti kode berikut:

    • TEMPLATE_NAME: nama template grup instance Anda.
    • LOCATION: Google Cloud region Anda.
  3. Gabungkan nilai FULL_NAME_PREFIX dan TEMPLATE_ID:

    PARENT="$FULL_NAME_PREFIX$TEMPLATE_ID"
    echo $PARENT
    
  4. Buat binding.

    gcloud resource-manager tags bindings create \
        --location LOCATION \
        --tag-value ORG_ID/TAG_KEY/TAG_VALUE \
        --parent PARENT
    

    Ganti kode berikut:

    • ORG_ID: ID organisasi Anda.
    • LOCATION: Google Cloud region Anda.
    • TAG_KEY: nama kunci tag aman Anda.
    • TAG_VALUE: nilai tag numerik.

Membuat kebijakan otorisasi

Untuk membuat kebijakan otorisasi, Anda membuat file YAML yang menentukan target dan aturan, lalu mengimpor file menggunakan perintah gcloud beta network-security authz-policies.

Bagian ini memberikan petunjuk untuk membuat berbagai jenis kebijakan otorisasi yang dilampirkan ke aturan penerusan load balancer.

Kebijakan otorisasi untuk menolak permintaan

Bagian ini memberikan contoh kebijakan otorisasi yang menolak permintaan berdasarkan akun utama sertifikat klien.

Global dan lintas region

Jika Anda menggunakan Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi internal lintas region, ikuti langkah-langkah berikut untuk membuat dan mengimpor kebijakan otorisasi:

  1. Buat file YAML kebijakan otorisasi untuk menolak permintaan tertentu.

    Contoh berikut membuat file authz-policy-deny.yaml untuk aturan penerusan LB_FORWARDING_RULE di lokasi global. Kebijakan ini menolak akses ke jalur URL /api/payments bagi klien yang memiliki www.example.com di SAN nama DNS sertifikat klien mereka.

    $ cat >authz-policy-deny.yaml <<EOF
    name: my-authz-policy-deny
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
        sources:
        - principals:
          - principalSelector: CLIENT_CERT_DNS_NAME_SAN
            exact: "www.example.com"
      to:
        operations:
        - paths:
          - prefix: "/api/payments"
    action: DENY
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema ke EXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi:

    gcloud beta network-security authz-policies import my-authz-policy-deny \
        --source=authz-policy-deny.yaml \
        --location=global
    

Regional

Jika Anda menggunakan Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, ikuti langkah-langkah berikut untuk membuat dan mengimpor kebijakan otorisasi:

  1. Buat file YAML kebijakan otorisasi untuk menolak permintaan tertentu.

    Contoh berikut membuat file authz-policy-deny.yaml untuk aturan penerusan LB_FORWARDING_RULE di regionGoogle Cloud . Kebijakan ini menolak akses ke jalur URL /api/payments bagi klien yang memiliki www.example.com di SAN nama DNS sertifikat klien mereka.

    $ cat >authz-policy-deny.yaml <<EOF
    name: my-authz-policy-deny
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
        sources:
        - principals:
          - principalSelector: CLIENT_CERT_DNS_NAME_SAN
            exact: "www.example.com"
      to:
        operations:
        - paths:
          - prefix: "/api/payments"
    action: DENY
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema ke EXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LOCATION: Google Cloud region Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi di region LOCATION:

    gcloud beta network-security authz-policies import my-authz-policy-deny \
        --source=authz-policy-deny.yaml \
        --location=LOCATION
    

Kebijakan otorisasi untuk mengizinkan permintaan

Bagian ini memberikan contoh kebijakan otorisasi yang mengizinkan permintaan yang berasal dari rentang alamat IP tertentu.

Global dan lintas region

Jika Anda menggunakan Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi internal lintas region, ikuti langkah-langkah berikut untuk membuat dan mengimpor kebijakan otorisasi:

  1. Buat file YAML kebijakan otorisasi untuk mengizinkan permintaan tertentu.

    Contoh berikut membuat file authz-policy-allow.yaml untuk aturan penerusan LB_FORWARDING_RULE di lokasi global. Kebijakan ini memungkinkan klien dengan alamat IP dalam rentang 10.0.0.1/24 mengakses jalur URL /api/payments.

    $ cat >authz-policy-allow.yaml <<EOF
    name: my-authz-policy-allow
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
        sources:
        - ipBlocks:
          - prefix: "10.0.0.1"
            length: "24"
      to:
        operations:
        - paths:
          - exact: "/api/payments"
    action: ALLOW
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema ke EXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi:

    gcloud beta network-security authz-policies import my-authz-policy-allow \
        --source=authz-policy-allow.yaml \
        --location=global
    

Regional

Jika Anda menggunakan Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, ikuti langkah-langkah berikut untuk membuat dan mengimpor kebijakan otorisasi:

  1. Buat file YAML kebijakan otorisasi untuk mengizinkan permintaan tertentu.

    Contoh berikut membuat file authz-policy-allow.yaml untuk aturan pengalihan LB_FORWARDING_RULE di region Google Cloud tertentu. Kebijakan ini memungkinkan klien dengan alamat IP dalam rentang 10.0.0.1/24 mengakses jalur URL /api/payments.

    $ cat >authz-policy-allow.yaml <<EOF
    name: my-authz-policy-allow
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
        sources:
        - ipBlocks:
          - prefix: "10.0.0.1"
            length: "24"
      to:
        operations:
        - paths:
          - exact: "/api/payments"
    action: ALLOW
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Jika Anda menggunakan Load Balancer Aplikasi eksternal regional, tetapkan skema ke EXTERNAL_MANAGED. Jika Anda menggunakan Load Balancer Aplikasi internal regional, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LOCATION: Google Cloud region Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi di region LOCATION:

    gcloud beta network-security authz-policies import my-authz-policy-allow \
        --source=authz-policy-allow.yaml \
        --location=LOCATION
    

Kebijakan otorisasi berdasarkan akun layanan atau tag

Anda dapat menerapkan kebijakan otorisasi berdasarkan akun layanan atau tag hanya di Load Balancer Aplikasi internal. Semua traffic yang berasal dari VM klien yang ditautkan ke akun layanan atau tag tertentu dapat diizinkan, ditolak, atau didelegasikan ke layanan eksternal.

Jika Anda ingin membuat dan melampirkan akun layanan atau tag ke Google Cloud VM, lihat bagian Membuat dan melampirkan akun layanan atau tag ke Google Cloud VM dalam dokumen ini.

Akun layanan

  1. Buat file YAML kebijakan otorisasi untuk menolak permintaan tertentu.

    Contoh berikut membuat file authz-policy-deny.yaml untuk aturan penerusan LB_FORWARDING_RULE dari Load Balancer Aplikasi internal regional. Kebijakan dikonfigurasi untuk menolak permintaan dari VM klien mana pun dengan akun layanan my-sa-123@PROJECT_ID.iam.gserviceaccount.com untuk mencapai jalur /api/payments.

    $ cat >authz-policy-deny.yaml <<EOF
    name: my-authz-policy-deny
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
        sources:
        - resources:
           - iamServiceAccount:
               exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com"
      to:
        operations:
        - paths:
          - prefix: "/api/payments"
    action: DENY
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Untuk Load Balancer Aplikasi internal regional, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LOCATION: Google Cloud region Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi di region Google Cloud yang ditentukan.

    gcloud beta network-security authz-policies import my-authz-policy-deny \
        --source=authz-policy-deny.yaml \
        --location=LOCATION
    

    Ganti kode berikut:

    • LOCATION: Google Cloud region Anda.

Tag

  1. Buat file YAML kebijakan otorisasi untuk mengizinkan permintaan tertentu.

    Contoh berikut membuat file authz-policy-allow.yaml untuk aturan penerusan LB_FORWARDING_RULE dari Load Balancer Aplikasi internal regional. Kebijakan ini hanya mengizinkan permintaan yang berasal dari VM dengan tag resource TAG_VALUE untuk mengakses jalur URL /api/payments.

    $ cat >authz-policy-allow.yaml <<EOF
    name: my-authz-policy-allow
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
      sources:
        resources:
        - tagValueIdSet:
          - ids: "TAG_VALUE"
      to:
        operations:
        - paths:
          - exact: "/api/payments"
    action: ALLOW
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Untuk Load Balancer Aplikasi internal regional, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LOCATION: Google Cloud region Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi di region Google Cloud yang ditentukan:

    gcloud beta network-security authz-policies import my-authz-policy-allow \
        --source=authz-policy-allow.yaml \
        --location=LOCATION
    

    Ganti kode berikut:

    • LOCATION: Google Cloud region Anda.

Kebijakan otorisasi untuk mendelegasikan ke ekstensi layanan

Sebelum memulai, siapkan mesin otorisasi eksternal. Untuk mengetahui informasi selengkapnya tentang ekstensi layanan, lihat Ringkasan info Cloud Load Balancing.

Global dan lintas region

Jika Anda menggunakan Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi internal lintas region, ikuti langkah-langkah berikut untuk membuat dan mengimpor kebijakan otorisasi:

  1. Buat file kebijakan otorisasi untuk mendelegasikan permintaan tertentu ke layanan eksternal.

    Contoh berikut membuat file authz-policy-custom.yaml untuk aturan penerusan LB_FORWARDING_RULE di lokasi global. Kebijakan memanggil ekstensi AUTHZ_EXTENSION untuk semua traffic ke jalur URL /api/payments saat permintaan berisi header Authorization yang tidak kosong.

    $ cat >authz-policy-custom.yaml <<EOF
    name: my-authz-policy-custom
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - to:
        operations:
        - paths:
          - exact: "/api/payments"
      when: 'request.headers["Authorization"] != ""'
    action: CUSTOM
    customProvider:
      authzExtension:
        resources:
        - "https://networkservices.googleapis.com/v1/projects/PROJECT_ID/locations/global/authzExtensions/AUTHZ_EXTENSION"
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema ke EXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
    • AUTHZ_EXTENSION: nama ekstensi otorisasi.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi:

    gcloud beta network-security authz-policies import my-authz-policy-custom \
        --source=authz-policy-custom.yaml \
        --location=global
    

Regional

Jika Anda menggunakan Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, ikuti langkah-langkah berikut untuk membuat dan mengimpor kebijakan otorisasi:

  1. Buat file YAML kebijakan otorisasi untuk mendelegasikan permintaan tertentu ke layanan eksternal.

    Contoh berikut membuat file authz-policy-custom.yaml untuk aturan pengalihan LB_FORWARDING_RULE di region Google Cloud Load Balancer Aplikasi internal regional. Kebijakan ini memanggil ekstensi AUTHZ_EXTENSION untuk semua traffic ke jalur URL /api/payments saat permintaan berisi header Authorization yang tidak kosong.

    $ cat >authz-policy-custom.yaml <<EOF
    name: my-authz-policy-custom
    target:
      loadBalancingScheme: LB_SCHEME
      resources:
      - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - to:
        operations:
        - paths:
          - exact: "/api/payments"
      when: 'request.headers["Authorization"] != ""'
    action: CUSTOM
    customProvider:
      authzExtension:
        resources:
        - "https://networkservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION"
    EOF
    

    Ganti kode berikut:

    • LB_SCHEME: skema load balancing Anda. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema ke EXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema ke INTERNAL_MANAGED.
    • PROJECT_ID: ID Google Cloud project Anda.
    • LOCATION: Google Cloud region Anda.
    • LB_FORWARDING_RULE: nama aturan penerusan load balancer.
    • AUTHZ_EXTENSION: nama ekstensi otorisasi.
  2. Buat kebijakan otorisasi dan impor file YAML.

    Contoh perintah berikut mengimpor file kebijakan yang dibuat sebelumnya dan membuat kebijakan otorisasi di region LOCATION:

    gcloud beta network-security authz-policies import my-authz-policy-custom \
        --source=authz-policy-custom.yaml \
        --location=LOCATION
    

Menguji kebijakan otorisasi

Untuk menguji kebijakan otorisasi, kirim beberapa traffic ke load balancer. Untuk informasi selengkapnya, lihat halaman berikut:

Memahami log kebijakan otorisasi di Cloud Logging

Untuk memahami cara kebijakan otorisasi dicatat ke log saat permintaan diizinkan atau ditolak, tinjau bagian berikut.

Permintaan tidak sesuai dengan kebijakan ALLOW maupun DENY

Jika permintaan tidak cocok dengan kebijakan ALLOW maupun DENY, kebijakan DENY akan mengizinkan permintaan dan mencatatnya sebagai allowed_as_no_deny_policies_matched_request. Sebaliknya, kebijakan ALLOW menolak permintaan dan mencatatnya sebagai denied_as_no_allow_policies_matched_request. Karena salah satu kebijakan menolak permintaan, permintaan tersebut ditolak.

  • Jika Anda menggunakan Load Balancer Aplikasi eksternal global, statusDetails disetel ke denied_by_authz_policy dalam log. Lihat contoh berikut:

      {
        httpRequest: {8}
        insertId: "example-id"
        jsonPayload: {
          @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
          authzPolicyInfo: {
            policies: [
              0: {
                details: "allowed_as_no_deny_policies_matched_request"
                result: "ALLOWED"
              }
              1: {
                details: "denied_as_no_allow_policies_matched_request"
                result: "DENIED"
              }
            ]
            result: "DENIED"
          }
          backendTargetProjectNumber: "projects/12345567"
          remoteIp: "00.100.11.104"
          statusDetails: "denied_by_authz_policy"
        }
        logName: "projects/example-project/logs/requests"
        receiveTimestamp: "2024-08-28T15:33:56.046651035Z"
        resource: {2}
        severity: "WARNING"
        spanId: "3e1a09a8e5e3e14d"
        timestamp: "2024-08-28T15:33:55.355042Z"
        trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509"
      }
    
  • Jika Anda menggunakan Load Balancer Aplikasi internal regional, Load Balancer Aplikasi eksternal regional, atau Load Balancer Aplikasi internal lintas region, proxyStatus disetel ke error=\"http_request_error\"; details=\"denied_by_authz_policy\" dalam log. Lihat contoh berikut:

      {
        httpRequest: {8}
        insertId: "example-id"
        jsonPayload: {
          @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
          authzPolicyInfo: {
            policies: [
              0: {
                details: "allowed_as_no_deny_policies_matched_request"
                result: "ALLOWED"
              }
              1: {
                details: "denied_as_no_allow_policies_matched_request"
                result: "DENIED"
              }
            ]
            result: "DENIED"
          }
          backendTargetProjectNumber: "projects/12345567"
          remoteIp: "00.100.11.104"
          proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\""
        }
        logName: "projects/example-project/logs/requests"
        receiveTimestamp: "2024-08-28T15:33:56.046651035Z"
        resource: {2}
        severity: "WARNING"
        spanId: "3e1a09a8e5e3e14d"
        timestamp: "2024-08-28T15:33:55.355042Z"
        trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509"
      }
    

Permintaan sesuai dengan kebijakan DENY

Jika permintaan cocok dengan kebijakan DENY, permintaan akan ditolak dan kebijakan yang menolak permintaan akan dicatat.

  • Jika Anda menggunakan Load Balancer Aplikasi eksternal global, statusDetails disetel ke denied_by_authz_policy dalam log dan nama kebijakan yang menolak permintaan dicatat dalam policies. Lihat contoh berikut:

      {
        httpRequest: {8}
        insertId: "example-id"
        jsonPayload: {
          @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
          authzPolicyInfo: {
            policies: [
              0: {
                details: "name: "projects/12345567/locations/global/authzPolicies/deny-authz-policy-test""
                result: "DENIED"
              }
            ]
            result: "DENIED"
          }
          backendTargetProjectNumber: "projects/12345567"
          cacheDecision: [2]
          remoteIp: "00.100.11.104"
          statusDetails: "denied_by_authz_policy"
        }
        logName: "projects/example-project/logs/requests"
        receiveTimestamp: "2024-08-28T15:33:56.046651035Z"
        resource: {2}
        severity: "WARNING"
        spanId: "3e1a09a8e5e3e14d"
        timestamp: "2024-08-28T15:33:55.355042Z"
        trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509"
      }
    
  • Jika Anda menggunakan Load Balancer Aplikasi internal regional, Load Balancer Aplikasi eksternal regional, atau Load Balancer Aplikasi internal lintas region, proxyStatus disetel ke error=\"http_request_error\"; details=\"denied_by_authz_policy\" dan nama kebijakan dicatat dalam policies. Lihat contoh berikut:

      {
        httpRequest: {8}
        insertId: "example-id"
        jsonPayload: {
          @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
          authzPolicyInfo: {
            policies: [
              0: {
                details: "name: "projects/12345567/locations/$REGION/authzPolicies/deny-authz-policy-test""
                result: "DENIED"
              }
            ]
            result: "DENIED"
          }
          backendTargetProjectNumber: "projects/12345567"
          remoteIp: "00.100.11.104"
          proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\""
        }
        logName: "projects/example-project/logs/requests"
        receiveTimestamp: "2024-08-28T15:33:56.046651035Z"
        resource: {2}
        severity: "WARNING"
        spanId: "3e1a09a8e5e3e14d"
        timestamp: "2024-08-28T15:33:55.355042Z"
        trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509"
      }
    

Permintaan tidak sesuai dengan kebijakan DENY, tetapi sesuai dengan kebijakan ALLOW

Jika permintaan tidak cocok dengan kebijakan DENY, tetapi cocok dengan kebijakan ALLOW, permintaan akan diizinkan. Dalam log, tindakan ini dicatat sebagai allowed_as_no_deny_policies_matched_request untuk kebijakan DENY. Kebijakan yang mengizinkan permintaan juga dicatat.

  • Jika Anda menggunakan Load Balancer Aplikasi eksternal global, tidak ada statusDetails dalam log. Kebijakan yang mengizinkan permintaan juga dicatat dalam policies. Lihat contoh berikut:

      {
        httpRequest: {8}
        insertId: "example-id"
        jsonPayload: {
          @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
          authzPolicyInfo: {
            policies: [
              0: {
                details: "allowed_as_no_deny_policies_matched_request"
                result: "ALLOWED"
              }
              1: {
                details: "name: "projects/12345567/locations/global/authzPolicies/allow-authz-policy-test""
                result: "ALLOWED"
              }
            ]
            result: "ALLOWED"
          }
          backendTargetProjectNumber: "projects/12345567"
          cacheDecision: [2]
          remoteIp: "00.100.11.104"
        }
        logName: "projects/example-project/logs/requests"
        receiveTimestamp: "2024-08-28T15:33:56.046651035Z"
        resource: {2}
        severity: "WARNING"
        spanId: "3e1a09a8e5e3e14d"
        timestamp: "2024-08-28T15:33:55.355042Z"
        trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509"
      }
    
  • Jika Anda menggunakan Load Balancer Aplikasi internal regional, Load Balancer Aplikasi eksternal regional, atau Load Balancer Aplikasi internal lintas region, tidak ada kolom proxyStatus dalam log. Kebijakan yang mengizinkan permintaan juga dicatat dalam policies. Lihat contoh berikut:

      {
        httpRequest: {8}
        insertId: "example-id"
        jsonPayload: {
          @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
          authzPolicyInfo: {
            policies: [
              0: {
                details: "allowed_as_no_deny_policies_matched_request"
                result: "ALLOWED"
              }
              1: {
                details: "name: "projects/12345567/locations/$REGION/authzPolicies/allow-authz-policy-test""
                result: "ALLOWED"
              }
            ]
            result: "ALLOWED"
          }
          backendTargetProjectNumber: "projects/12345567"
          cacheDecision: [2]
          remoteIp: "00.100.11.104"
        }
        logName: "projects/example-project/logs/requests"
        receiveTimestamp: "2024-08-28T15:33:56.046651035Z"
        resource: {2}
        severity: "WARNING"
        spanId: "3e1a09a8e5e3e14d"
        timestamp: "2024-08-28T15:33:55.355042Z"
        trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509"
      }
    

Langkah berikutnya