Configurar políticas de autorização para balanceadores de carga de aplicativo

Nos balanceadores de carga de aplicativo, as políticas de autorização são chamadas após a avaliação de extensões de rota, políticas de segurança de rede (avaliadas pelo Google Cloud Armor), políticas de compartilhamento de recursos entre origens (CORS) e Identity-Aware Proxy (IAP), mas antes da execução de ações de gerenciamento de tráfego.

Esta página mostra como configurar políticas de autorização para balanceadores de carga de aplicativo.

Antes de começar

Configurar o balanceador de carga

Se você não criou um balanceador de carga, consulte as páginas a seguir para configurar o balanceador de carga de aplicativo preferido:

Criar e configurar tags ou contas de serviço seguras

Com os balanceadores de carga de aplicativo internos, é possível aplicar políticas de autorização com base nas tags seguras e nas contas de serviço anexadas às VMs do cliente. Se você planeja aplicar políticas de autorização baseadas em tags, use o Resource Manager para criar tags.

Se você estiver usando balanceadores de carga de aplicativo externos, não será necessário criar e configurar tags seguras.

Para mais informações, consulte Usar tags para firewalls e Contas de serviço.

Anexar contas de serviço a VMs de cliente

Para informações detalhadas sobre como anexar uma conta de serviço a uma instância de VM, consulte os seguintes documentos:

Criar chaves e valores de tags seguras

Antes de associar tags seguras ao modelo de grupo de instâncias, crie as chaves e os valores de tag seguros e designe-os para a finalidade GCE_FIREWALL. Isso é necessário para recursos de rede do Google Cloud, incluindo o Secure Web Proxy e as políticas de autorização.

Para criar tags seguras, você precisa do papel de administrador de tags (roles/resourcemanager.tagAdmin).

Console

  1. No console do Google Cloud, acesse a página Tags.

    Acesse Tags

  2. Clique em Criar.

  3. No campo Descrição da chave de tag, insira uma descrição.

  4. Marque a caixa de seleção Para uso com firewall de rede.

  5. Na lista Project, selecione o projeto do Google Cloud em que você quer criar a tag.

  6. No campo Rede, selecione LB_NETWORK.

  7. Clique em Adicionar valor.

  8. No campo Valor da tag, insira TAG_VALUE. O valor precisa ser numérico.

  9. No campo Descrição do valor da tag, insira uma descrição.

  10. Quando terminar de adicionar valores de tag, clique em Criar tag.

gcloud

  1. Crie a chave de tag segura.

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

    Substitua:

    • TAG_KEY: o nome da chave de tag segura.
    • ORG_ID: o ID da organização.
    • LB_NETWORK: o nome da sua rede VPC.
  2. Adicione o valor da tag segura à chave de tag numérica.

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

    Substitua TAG_VALUE por um valor de tag numérica.

Vincular a tag segura ao modelo de grupo de instâncias

Os administradores de tags podem vincular tags seguras a instâncias de VM individuais ou ao modelo de grupo de instâncias e anexar o valor da tag aos back-ends das VMs ou do modelo.

Para vincular tags seguras, você precisa do papel de usuário de tag (roles/resourcemanager.tagUser).

  1. Defina o prefixo do nome completo do seu projeto e zona:

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

    Substitua:

    • PROJECT_ID: ID do projeto.
    • ZONE: a zona em que o grupo gerenciado de instâncias está localizado.
  2. Acesse o ID do modelo do grupo de instâncias:

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

    Substitua:

    • TEMPLATE_NAME: o nome do modelo de grupo de instâncias.
    • LOCATION: sua região do Google Cloud.
  3. Concatene os valores de FULL_NAME_PREFIX e TEMPLATE_ID:

    PARENT="$FULL_NAME_PREFIX$TEMPLATE_ID"
    echo $PARENT
    
  4. Crie as vinculações.

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

    Substitua:

    • ORG_ID: o ID da organização.
    • LOCATION: sua região do Google Cloud.
    • TAG_KEY: o nome da chave de tag segura.
    • TAG_VALUE: o valor numérico da tag.

Criar a política de autorização

Para criar uma política de autorização, crie um arquivo YAML que defina o destino e as regras e importe o arquivo usando o comando gcloud beta network-security authz-policies.

Política de autorização para negar solicitações

Global e entre regiões

Se você estiver usando um balanceador de carga de aplicativo externo global ou um balanceador de carga de aplicativo interno entre regiões, siga estas etapas para criar e importar a política de autorização:

  1. Crie o arquivo de política de autorização para negar determinadas solicitações.

    O exemplo a seguir cria um arquivo authz-policy-deny.yaml para a regra de encaminhamento LB_FORWARDING_RULE no local global. A política impede que os clientes *.hello.com acessem o caminho do 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
    

    Substitua:

    • LB_SCHEME: seu esquema de balanceamento de carga. Para o balanceador de carga de aplicativo externo global, defina o esquema como EXTERNAL_MANAGED. Para o balanceador de carga de aplicativo interno entre regiões, defina o esquema como INTERNAL_MANAGED.
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • LB_FORWARDING_RULE: o nome da regra de encaminhamento do balanceador de carga.
  2. Crie a política de autorização e importe o arquivo YAML.

    O exemplo de comando a seguir importa o arquivo de política criado anteriormente e cria as políticas de autorização:

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

Regional

Se você estiver usando um balanceador de carga de aplicativo externo regional ou um balanceador de carga de aplicativo interno regional, siga estas etapas para criar e importar a política de autorização:

  1. Crie o arquivo de política de autorização para permitir determinadas solicitações.

    O exemplo a seguir cria um arquivo authz-policy-deny.yaml para a regra de encaminhamento LB_FORWARDING_RULE em uma região do Google Cloud. A política nega o acesso ao caminho do URL /api/payments para clientes com identidades correspondentes a *.hello.com. A política também nega o acesso a qualquer VM de cliente com a conta de serviço my-sa-123@PROJECT_ID.iam.gserviceaccount.com ao 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"
    - from:
        sources:
        - resources:
           - iamServiceAccount:
               exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com"
      to:
        operations:
        - paths:
          - prefix: "/api/payments"
    action: DENY
    EOF
    

    Substitua:

    • LB_SCHEME: seu esquema de balanceamento de carga. Para o balanceador de carga de aplicativo externo regional, defina o esquema como EXTERNAL_MANAGED. Para o balanceador de carga de aplicativo interno regional, defina o esquema como INTERNAL_MANAGED.
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • LOCATION: sua região do Google Cloud.
    • LB_FORWARDING_RULE: o nome da regra de encaminhamento do balanceador de carga.
  2. Crie a política de autorização e importe o arquivo YAML.

    O exemplo de comando a seguir importa o arquivo de política criado anteriormente e cria as políticas de autorização na região LOCATION:

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

Política de autorização para permitir solicitações

Global e entre regiões

Se você estiver usando um balanceador de carga de aplicativo externo global ou um balanceador de carga de aplicativo interno entre regiões, siga estas etapas para criar e importar a política de autorização:

  1. Crie o arquivo de política de autorização para permitir determinadas solicitações.

    O exemplo a seguir cria um arquivo authz-policy-allow.yaml para a regra de encaminhamento LB_FORWARDING_RULE no local global. A política permite que apenas clientes de *.example.com acessem o caminho do 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
    

    Substitua:

    • LB_SCHEME: seu esquema de balanceamento de carga. Para o balanceador de carga de aplicativo externo global, defina o esquema como EXTERNAL_MANAGED. Para o balanceador de carga de aplicativo interno entre regiões, defina o esquema como INTERNAL_MANAGED.
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • LB_FORWARDING_RULE: o nome da regra de encaminhamento do balanceador de carga.
  2. Crie a política de autorização e importe o arquivo YAML.

    O exemplo de comando a seguir importa o arquivo de política criado anteriormente e cria as políticas de autorização:

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

Regional

Se você estiver usando um balanceador de carga de aplicativo externo regional ou um balanceador de carga de aplicativo interno regional, siga estas etapas para criar e importar a política de autorização:

  1. Crie o arquivo de política de autorização para permitir determinadas solicitações.

    O exemplo a seguir cria um arquivo authz-policy-allow.yaml para a regra de encaminhamento LB_FORWARDING_RULE em uma região do Google Cloud de um balanceador de carga de aplicativo interno regional. A política permite que apenas clientes de *.example.com acessem o caminho do URL /api/payments quando a solicitação é originada de uma VM com a tag de recurso TAG_VALUE.

    $ 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"
        resources:
        - tagValueIdSet:
          - ids: "TAG_VALUE"
      to:
        operations:
        - paths:
          - exact: "/api/payments"
    action: ALLOW
    EOF
    

    Substitua:

    • LB_SCHEME: seu esquema de balanceamento de carga. Se você estiver usando o balanceador de carga de aplicativo externo regional, defina o esquema como EXTERNAL_MANAGED. Se você estiver usando o balanceador de carga de aplicativo interno regional, defina o esquema como INTERNAL_MANAGED.
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • LOCATION: sua região do Google Cloud.
    • LB_FORWARDING_RULE: o nome da regra de encaminhamento do balanceador de carga.
  2. Crie a política de autorização e importe o arquivo YAML.

    O exemplo de comando a seguir importa o arquivo de política criado anteriormente e cria as políticas de autorização na região LOCATION:

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

Política de autorização para delegar a uma extensão de serviço

Antes de começar, configure um mecanismo de autorização externo. Para mais informações sobre extensões de serviço, consulte Visão geral dos destaques do Cloud Load Balancing.

Global e entre regiões

Se você estiver usando um balanceador de carga de aplicativo externo global ou um balanceador de carga de aplicativo interno entre regiões, siga estas etapas para criar e importar a política de autorização:

  1. Crie o arquivo de política de autorização para delegar determinadas solicitações a um serviço externo.

    O exemplo a seguir cria um arquivo authz-policy-custom.yaml para a regra de encaminhamento LB_FORWARDING_RULE no local global. A política chama a extensão AUTHZ_EXTENSION para todo o tráfego no caminho do URL /api/payments quando a solicitação contém um cabeçalho Authorization não vazio.

    $ 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
    

    Substitua:

    • LB_SCHEME: seu esquema de balanceamento de carga. Para o balanceador de carga de aplicativo externo global, defina o esquema como EXTERNAL_MANAGED. Para o balanceador de carga de aplicativo interno entre regiões, defina o esquema como INTERNAL_MANAGED.
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • LB_FORWARDING_RULE: o nome da regra de encaminhamento do balanceador de carga.
    • AUTHZ_EXTENSION: o nome da extensão de autorização.
  2. Crie a política de autorização e importe o arquivo YAML.

    O exemplo de comando a seguir importa o arquivo de política criado anteriormente e cria as políticas de autorização:

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

Regional

Se você estiver usando um balanceador de carga de aplicativo externo regional ou um balanceador de carga de aplicativo interno regional, siga estas etapas para criar e importar a política de autorização:

  1. Crie o arquivo de política de autorização para delegar determinadas solicitações a um serviço externo.

    O exemplo a seguir cria um arquivo authz-policy-custom.yaml para a regra de encaminhamento LB_FORWARDING_RULE em uma região do Google Cloud de um balanceador de carga de aplicativo interno regional. A política chama a extensão AUTHZ_EXTENSION para todo o tráfego no caminho de URL /api/payments quando a solicitação contém um cabeçalho Authorization não vazio.

    $ 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
    

    Substitua:

    • LB_SCHEME: seu esquema de balanceamento de carga. Para o balanceador de carga de aplicativo externo regional, defina o esquema como EXTERNAL_MANAGED. Para o balanceador de carga de aplicativo interno regional, defina o esquema como INTERNAL_MANAGED.
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • LOCATION: sua região do Google Cloud.
    • LB_FORWARDING_RULE: o nome da regra de encaminhamento do balanceador de carga.
    • AUTHZ_EXTENSION: o nome da extensão de autorização.
  2. Crie a política de autorização e importe o arquivo YAML.

    O exemplo de comando a seguir importa o arquivo de política criado anteriormente e cria as políticas de autorização na região LOCATION:

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

Testar as políticas de autorização

Para testar as políticas de autorização, envie tráfego para o balanceador de carga. Para mais informações, consulte as seguintes páginas:

Entender os registros de políticas de autorização no Cloud Logging

Para entender como as políticas de autorização são registradas quando uma solicitação é permitida ou negada, consulte:

  • Quando uma solicitação não corresponde às políticas ALLOW ou DENY, a política DENY permite e registra a solicitação como allowed_as_no_allow_policies_matched_request. No entanto, a política ALLOW nega e registra isso como denied_as_no_allow_policies_matched_request. Como uma das políticas nega a solicitação, ela é negada.

    Se você estiver usando um balanceador de carga de aplicativo externo global, statusDetails será definido como denied_by_authz_policy no registro. Veja o exemplo a seguir:

      {
        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"
      }
    

    Se você estiver usando um balanceador de carga de aplicativo interno regional, um balanceador de carga de aplicativo externo regional ou um balanceador de carga de aplicativo interno entre regiões, proxyStatus será definido como error=\"http_request_error\"; details=\"denied_by_authz_policy\" no registro. Veja o exemplo a seguir:

      {
        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"
      }
    
    • Quando uma solicitação corresponde à política DENY, ela é negada, e a política que negou a solicitação é registrada.

      Se você estiver usando um balanceador de carga de aplicativo externo global, statusDetails será definido como denied_by_authz_policy no registro, e o nome da política que negou a solicitação será registrado em policies. Veja o exemplo a seguir:

      {
        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"
      }
      

      Se você estiver usando um balanceador de carga de aplicativo interno regional, um balanceador de carga de aplicativo externo regional ou um balanceador de carga de aplicativo interno entre regiões, proxyStatus será definido como error=\"http_request_error\"; details=\"denied_by_authz_policy\" e o nome da política será registrado em policies. Veja o exemplo a seguir:

      {
        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"
      }
      
    • Quando uma solicitação não corresponde à política DENY, mas corresponde à política ALLOW, a solicitação é permitida. No registro, essa ação é registrada como allowed_as_no_deny_policies_matched_request para a política DENY. A política que permitiu a solicitação também é registrada.

      Se você estiver usando um balanceador de carga de aplicativo externo global, não haverá statusDetails no registro. A política que permitiu a solicitação também é registrada em policies. Veja o exemplo a seguir:

      {
        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"
      }
      
    • Se você estiver usando um balanceador de carga de aplicativo interno regional, um balanceador de carga de aplicativo externo regional ou um balanceador de carga de aplicativo interno entre regiões, não haverá um campo proxyStatus no registro. A política que permitiu a solicitação também é registrada em policies. Confira o exemplo a seguir:

      {
        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"
      }
      

A seguir