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:

Crie e anexe contas de serviço ou tags a Google Cloud VMs

Para balanceadores de carga de aplicativo internos, é possível aplicar políticas de autorização com base em contas de serviço ou tags anexadas a um recurso de VM Google Cloud . Qualquer solicitação originada de uma VM de cliente vinculada a uma conta de serviço ou tag específica pode ser permitida, negada ou delegada a um serviço externo. Um exemplo dessa política de autorização que usa contas de serviço e tags para aplicar o controle de acesso é fornecido na seção Política de autorização com base em contas de serviço ou tags deste documento.

Não é possível aplicar políticas de autorização com base em contas de serviço ou tags em balanceadores de carga de aplicativo externos.

Anexar contas de serviço a VMs de cliente

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

Anexar tags ao modelo de grupo de instâncias

Antes de vincular uma tag ao modelo de grupo de instâncias, é necessário criar uma chave e um valor de tag. Ao criar uma tag, designe-a com uma finalidade GCE_FIREWALL. Os recursos de rede do Google Cloud , incluindo o Secure Web Proxy e as políticas de autorização, exigem a finalidade GCE_FIREWALL para aplicar a tag.

Criar uma chave e um valor de tag

Para criar tags, 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 Projeto, selecione o projeto 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 da tag.

    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 da tag.
    • ORG_ID: o ID da organização.
    • LB_NETWORK: o nome da sua rede VPC.
  2. Adicione o valor da tag à 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 ao modelo de grupo de instâncias

Os administradores de tags podem vincular tags 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, você precisa da função 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: 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: nome do modelo de grupo de instâncias.
    • LOCATION: sua região .
  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 .
    • TAG_KEY: nome da chave de tag segura.
    • TAG_VALUE: 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.

Esta seção fornece instruções para criar diferentes tipos de políticas de autorização anexadas à regra de encaminhamento de um balanceador de carga.

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 Google Cloud .
    • LB_FORWARDING_RULE: 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 negar 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.

    $ 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
    

    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 Google Cloud .
    • LOCATION: sua região
    • LB_FORWARDING_RULE: 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 Google Cloud .
    • LB_FORWARDING_RULE: 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 específica do Google Cloud . 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/regions/LOCATION/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. 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 Google Cloud .
    • LOCATION: sua região .
    • LB_FORWARDING_RULE: 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 com base em contas de serviço ou tags

É possível aplicar políticas de autorização com base em contas de serviço ou tags apenas em balanceadores de carga de aplicativo internos. Qualquer tráfego originado de uma VM de cliente vinculada a uma conta de serviço ou tag específica pode ser permitido, negado ou delegado a um serviço externo.

Se você quiser criar e anexar contas de serviço ou tags a VMs do Google Cloud , consulte a seção Criar e anexar contas de serviço ou tags a VMs do Google Cloud neste documento.

Conta de serviç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 de um balanceador de carga de aplicativo interno regional. A política está configurada para negar solicitações de qualquer VM de cliente com a conta de serviço my-sa-123@PROJECT_ID.iam.gserviceaccount.com para acessar o caminho /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
    

    Substitua:

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

    O comando de exemplo a seguir importa o arquivo de política criado anteriormente e cria a política de autorização na região especificada Google Cloud .

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

    Substitua:

    • LOCATION: sua região .

Tag

  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 de um balanceador de carga de aplicativo interno regional. A política só permite que solicitações originadas de uma VM com a tag de recurso TAG_VALUE 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/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE"
    httpRules:
    - from:
      sources:
        resources:
        - tagValueIdSet:
          - ids: "TAG_VALUE"
      to:
        operations:
        - paths:
          - exact: "/api/payments"
    action: ALLOW
    EOF
    

    Substitua:

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

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

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

    Substitua:

    • LOCATION: sua região

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 Google Cloud .
    • LB_FORWARDING_RULE: nome da regra de encaminhamento do balanceador de carga.
    • AUTHZ_EXTENSION: 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 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 Google Cloud .
    • LOCATION: sua região .
    • LB_FORWARDING_RULE: nome da regra de encaminhamento do balanceador de carga.
    • AUTHZ_EXTENSION: 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 as seções a seguir.

A solicitação não corresponde às políticas ALLOW ou DENY

Quando uma solicitação não corresponde às políticas ALLOW ou DENY, a política DENY permite a solicitação e a registra como allowed_as_no_deny_policies_matched_request. Por outro lado, a política ALLOW rejeita a solicitação e a registra 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"
          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\" 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"
      }
    

A solicitação corresponde à política DENY

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

A solicitação não corresponde à política DENY, mas corresponde à política ALLOW

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