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

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 anexar contas de serviço ou tags a VMs Google Cloud

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 diferentes recursos do Google Cloud.

O exemplo neste documento fornece instruções para criar uma política de autorização com base em contas de serviço ou tags anexadas a instâncias de máquina virtual (VM) Google Cloud . Qualquer solicitação originada de uma VM 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 de 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 baseada 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, crie uma chave e um valor de tag. Ao criar uma tag, designe a ela uma finalidade GCE_FIREWALL.Os recursos de rede 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 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 de 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 de 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 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: 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 Google Cloud 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 Google Cloud região.
    • TAG_KEY: nome da chave de tag segura.
    • TAG_VALUE: valor numérico da tag.

Criar uma 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.

Nesta seção, fornecemos 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

Esta seção apresenta um exemplo de política de autorização que nega solicitações com base nos principais do certificado do cliente.

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 uma política de autorização:

  1. Crie um arquivo YAML 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 nega o acesso ao caminho do URL /api/payments para clientes que têm www.example.com nos SANs de nome DNS do certificado do cliente.

    $ 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
    

    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: nome da regra de encaminhamento do balanceador de carga.
  2. Crie uma 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 uma política 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 uma política de autorização:

  1. Crie um arquivo YAML 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ãoGoogle Cloud . A política nega o acesso ao caminho do URL /api/payments para clientes que têm www.example.com nos SANs de nome DNS do certificado do cliente.

    $ 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
    

    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 Google Cloud região.
    • LB_FORWARDING_RULE: nome da regra de encaminhamento do balanceador de carga.
  2. Crie uma 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 uma política 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

Esta seção apresenta um exemplo de política de autorização que permite solicitações originadas de intervalos de endereços IP específicos.

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 uma política de autorização:

  1. Crie um arquivo YAML 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 clientes com endereços IP no intervalo 10.0.0.1/24 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:
        - ipBlocks:
          - prefix: "10.0.0.1"
            length: "24"
      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: nome da regra de encaminhamento do balanceador de carga.
  2. Crie uma 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 uma política 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 uma política de autorização:

  1. Crie um arquivo YAML 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 Google Cloud específica. A política permite que clientes com endereços IP no intervalo 10.0.0.1/24 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:
        - ipBlocks:
          - prefix: "10.0.0.1"
            length: "24"
      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 Google Cloud região.
    • LB_FORWARDING_RULE: nome da regra de encaminhamento do balanceador de carga.
  2. Crie uma 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 uma política 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 baseada 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. Todo o tráfego originado de uma VM 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 um arquivo YAML 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 do Google Cloud .
    • LOCATION: sua Google Cloud região.
    • LB_FORWARDING_RULE: nome da regra de encaminhamento do balanceador de carga.
  2. Crie uma 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 uma política de autorização na região Google Cloud especificada.

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

    Substitua:

    • LOCATION: sua Google Cloud região.

Tag

  1. Crie um arquivo YAML 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 permite que apenas 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 do Google Cloud .
    • LOCATION: sua Google Cloud região.
    • LB_FORWARDING_RULE: nome da regra de encaminhamento do balanceador de carga.
  2. Crie uma 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 uma política de autorização na região Google Cloud especificada:

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

    Substitua:

    • LOCATION: sua Google Cloud 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 uma política de autorização:

  1. Crie um 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: nome da regra de encaminhamento do balanceador de carga.
    • AUTHZ_EXTENSION: o nome da extensão de autorização.
  2. Crie uma 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 uma política 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 uma política de autorização:

  1. Crie um arquivo YAML 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 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 Google Cloud região.
    • LB_FORWARDING_RULE: nome da regra de encaminhamento do balanceador de carga.
    • AUTHZ_EXTENSION: o nome da extensão de autorização.
  2. Crie uma 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 uma política 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 uma política de autorização

Para testar uma política 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 nem DENY

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_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