Menyiapkan kebijakan otorisasi untuk Load Balancer Aplikasi

Di Load Balancer Aplikasi, kebijakan otorisasi dipanggil setelah mengevaluasi ekstensi rute, kebijakan keamanan jaringan (dievaluasi oleh Google Cloud Armor), kebijakan berbagi resource lintas origin (CORS), dan Identity-Aware Proxy (IAP), tetapi sebelum menjalankan tindakan pengelolaan traffic.

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 resource 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 tersebut yang menggunakan akun layanan dan tag untuk menerapkan kontrol akses disediakan di bagian Kebijakan otorisasi berdasarkan akun layanan atau tag dalam dokumen ini.

Menerapkan 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 tersebut dengan tujuan GCE_FIREWALL.Fitur jaringan Google Cloud , 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 konsol Google Cloud , buka halaman Tag.

    Buka Tag

  2. Klik Create .

  3. Di kolom Tag key description, masukkan deskripsi.

  4. Centang kotak Untuk digunakan dengan firewall jaringan.

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

  6. Di kolom Network, pilih LB_NETWORK.

  7. Klik Tambahkan nilai.

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

  9. Di kolom Tag value description, 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.

Mengikat tag ke template grup instance

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

Untuk mengikat tag, Anda memerlukan peran Tag User (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: region Google Cloud 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: region Google Cloud 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

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 menolak permintaan tertentu.

    Contoh berikut membuat file authz-policy-deny.yaml untuk aturan pengalihan LB_FORWARDING_RULE di lokasi global. Kebijakan ini menolak klien dari *.hello.com untuk mengakses jalur URL /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/global/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
        sources:
        - principals:
          - suffix: ".hello.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 project Google Cloud 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 kebijakan otorisasi untuk menolak permintaan tertentu.

    Contoh berikut membuat file authz-policy-deny.yaml untuk aturan pengalihan LB_FORWARDING_RULE di region Google Cloud . Kebijakan ini menolak klien dengan identitas yang cocok dengan *.hello.com untuk mengakses jalur URL /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:
        - principals:
          - suffix: ".hello.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 project Google Cloud Anda.
    • LOCATION: region Google Cloud 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

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 mengizinkan permintaan tertentu.

    Contoh berikut membuat file authz-policy-allow.yaml untuk aturan pengalihan LB_FORWARDING_RULE di lokasi global. Kebijakan ini hanya mengizinkan klien dari *.example.com 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/global/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
      sources:
      - principals:
        - suffix: ".example.com"
      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 project Google Cloud 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 kebijakan otorisasi untuk mengizinkan permintaan tertentu.

    Contoh berikut membuat file authz-policy-allow.yaml untuk aturan penerusan LB_FORWARDING_RULE di region Google Cloud tertentu. Kebijakan ini hanya mengizinkan klien dari *.example.com 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:
      - principals:
        - suffix: ".example.com"
      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 project Google Cloud Anda.
    • LOCATION: region Google Cloud 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 VM Google Cloud , lihat bagian Membuat dan melampirkan akun layanan atau tag ke VM Google Cloud dalam dokumen ini.

Akun layanan

  1. Buat file 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 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 project Google Cloud Anda.
    • LOCATION: region Google Cloud 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: region Google Cloud Anda.

Tag

  1. Buat file kebijakan otorisasi untuk mengizinkan permintaan tertentu.

    Contoh berikut membuat file authz-policy-allow.yaml untuk aturan penerusan LB_FORWARDING_RULE 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 project Google Cloud Anda.
    • LOCATION: region Google Cloud 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 regionGoogle 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: region Google Cloud 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 project Google Cloud 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 kebijakan otorisasi untuk mendelegasikan permintaan tertentu ke layanan eksternal.

    Contoh berikut membuat file authz-policy-custom.yaml untuk aturan penerusan LB_FORWARDING_RULE di region Google Cloud dari 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 project Google Cloud Anda.
    • LOCATION: region Google Cloud 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 mengetahui informasi selengkapnya, lihat halaman berikut:

Memahami log kebijakan otorisasi di Cloud Logging

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

Permintaan tidak cocok dengan kebijakan ALLOW atau DENY

Jika permintaan tidak cocok dengan kebijakan ALLOW atau 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 akan ditolak.

  • Jika Anda menggunakan Load Balancer Aplikasi eksternal global, statusDetails ditetapkan 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 akan ditetapkan 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 cocok dengan kebijakan DENY

Jika permintaan cocok dengan kebijakan DENY, permintaan tersebut akan ditolak dan kebijakan yang menolak permintaan akan dicatat ke dalam log.

  • Jika Anda menggunakan Load Balancer Aplikasi eksternal global, statusDetails ditetapkan ke denied_by_authz_policy dalam log dan nama kebijakan yang menolak permintaan dicatat dalam log 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 ditetapkan ke error=\"http_request_error\"; details=\"denied_by_authz_policy\" dan nama kebijakan dicatat ke dalam log di 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 cocok dengan kebijakan DENY, tetapi cocok 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 ke dalam log.

  • Jika Anda menggunakan Load Balancer Aplikasi eksternal global, tidak ada statusDetails dalam log. Kebijakan yang mengizinkan permintaan juga dicatat ke dalam log di 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 log di 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 selanjutnya