REST Resource: projects.locations.authzPolicies

Recurso: AuthzPolicy

AuthzPolicy é um recurso que permite encaminhar o tráfego para um back-end de chamada com o objetivo de verificar o tráfego para fins de segurança.

Representação JSON
{
  "name": string,
  "createTime": string,
  "updateTime": string,
  "description": string,
  "labels": {
    string: string,
    ...
  },
  "target": {
    object (Target)
  },
  "httpRules": [
    {
      object (AuthzRule)
    }
  ],
  "action": enum (AuthzAction),
  "customProvider": {
    object (CustomProvider)
  }
}
Campos
name

string

Obrigatório. Identificador. Nome do recurso AuthzPolicy no seguinte formato: projects/{project}/locations/{location}/authzPolicies/{authzPolicy}.

createTime

string (Timestamp format)

Apenas saída. O carimbo de data/hora em que o recurso foi criado.

Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Apenas saída. O carimbo de data/hora em que o recurso foi atualizado.

Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

description

string

Opcional. Uma descrição legível do recurso.

labels

map (key: string, value: string)

Opcional. Conjunto de rótulos associados ao recurso AuthzPolicy.

O formato precisa obedecer aos seguintes requisitos.

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

target

object (Target)

Obrigatório. Especifica o conjunto de recursos a que essa política precisa ser aplicada.

httpRules[]

object (AuthzRule)

Opcional. Uma lista de regras HTTP de autorização para correspondência com a solicitação recebida. Uma correspondência de política ocorre quando pelo menos uma regra HTTP corresponde à solicitação ou quando nenhuma regra HTTP é especificada na política. É necessário pelo menos uma regra HTTP para a ação Permitir ou Negar. Limitado a cinco regras.

action

enum (AuthzAction)

Obrigatório. Pode ser ALLOW, DENY ou CUSTOM.

Quando a ação é CUSTOM, é necessário especificar customProvider.

Quando a ação é ALLOW, apenas as solicitações que correspondem à política são permitidas.

Quando a ação é DENY, apenas as solicitações que correspondem à política são negadas.

Quando uma solicitação chega, as políticas são avaliadas na seguinte ordem:

  1. Se houver uma política CUSTOM que corresponda à solicitação, ela será avaliada usando os provedores de autorização personalizados, e a solicitação será negada se o provedor a rejeitar.CUSTOM

  2. Se houver alguma política DENY que corresponda à solicitação, ela será negada.

  3. Se não houver políticas ALLOW para o recurso ou se alguma delas corresponder à solicitação, a solicitação será permitida.ALLOW

  4. Caso contrário, a solicitação será negada por padrão se nenhuma das AuthzPolicies configuradas com a ação ALLOW corresponder à solicitação.

customProvider

object (CustomProvider)

Opcional. Obrigatório se a ação for CUSTOM. Permite delegar decisões de autorização ao Cloud IAP ou às Extensões de serviço. É preciso especificar cloudIap ou authzExtension.

Destino

Especifica o conjunto de destinos a que essa política será aplicada.

Representação JSON
{
  "loadBalancingScheme": enum (LoadBalancingScheme),
  "resources": [
    string
  ]
}
Campos
loadBalancingScheme

enum (LoadBalancingScheme)

Obrigatório. Todas as regras de encaminhamento e as gateways referenciadas por essa política e extensões precisam compartilhar o mesmo esquema de balanceamento de carga. Valores aceitos: INTERNAL_MANAGED e EXTERNAL_MANAGED. Para mais informações, consulte Visão geral dos serviços de back-end.

resources[]

string

Obrigatório. Uma lista de referências às regras de encaminhamento em que essa política será aplicada.

LoadBalancingScheme

Esquemas de balanceamento de carga compatíveis com o recurso AuthzPolicy. Os valores válidos são INTERNAL_MANAGED e EXTERNAL_MANAGED. Para mais informações, consulte Visão geral dos serviços de back-end.

Enums
LOAD_BALANCING_SCHEME_UNSPECIFIED Valor padrão. Não use.
INTERNAL_MANAGED Indica que o balanceamento de carga de aplicativo é usado para balanceamento de carga de aplicativo interno regional ou entre regiões.
EXTERNAL_MANAGED Significa que ele é usado para o balanceamento de carga de aplicativo externo global ou regional.
INTERNAL_SELF_MANAGED Indica que o recurso é usado para o Cloud Service Mesh. Destinado apenas ao uso pelo controlador do GKE do CSM.

AuthzRule

Condições a serem comparadas com a solicitação recebida.

Representação JSON
{
  "from": {
    object (From)
  },
  "to": {
    object (To)
  },
  "when": string
}
Campos
from

object (From)

Opcional. Descreve as propriedades de uma ou mais origens de uma solicitação.

to

object (To)

Opcional. Descreve as propriedades de uma ou mais segmentações de uma solicitação.

when

string

Opcional. Expressão CEL que descreve as condições a serem atendidas para a ação. O resultado da expressão CEL é AND com "de" e "para". Consulte a referência de linguagem CEL para conferir uma lista de atributos disponíveis.

De

Descreve as propriedades de uma ou mais origens de uma solicitação.

Representação JSON
{
  "sources": [
    {
      object (RequestSource)
    }
  ],
  "notSources": [
    {
      object (RequestSource)
    }
  ]
}
Campos
sources[]

object (RequestSource)

Opcional. Descreve as propriedades das origens de uma solicitação. Pelo menos uma das opções "sources" ou "notSources" precisa ser especificada. Limitado a 5 fontes. Uma correspondência ocorre quando QUALQUER origem (em "sources" ou "notSources") corresponde à solicitação. Em uma única origem, a correspondência segue a semântica AND entre campos e OR entre campos. Ou seja, uma correspondência ocorre quando QUALQUER principal corresponde E QUALQUER ipBlock corresponde.

notSources[]

object (RequestSource)

Opcional. Descreve as propriedades negadas das origens de solicitação. Corresponde a solicitações de fontes que não correspondem aos critérios especificados neste campo. Pelo menos uma das opções "sources" ou "notSources" precisa ser especificada.

RequestSource

Descreve as propriedades de uma única fonte.

Representação JSON
{
  "principals": [
    {
      object (StringMatch)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
Campos
principals[]

object (StringMatch)

Opcional. Uma lista de identidades derivadas do certificado do cliente. Esse campo não vai corresponder a uma solicitação, a menos que o TLS mútuo esteja ativado para a regra de encaminhamento ou o gateway. Cada identidade é uma string cujo valor é comparado ao SAN do URI, ao SAN do DNS ou ao campo de assunto no certificado do cliente. A correspondência pode ser exata, de prefixo, de sufixo ou de substring. É necessário especificar um dos termos "exato", "prefixo", "sufixo" ou "contém". Limitado a 5 principais.

resources[]

object (RequestResource)

Opcional. Uma lista de recursos a serem comparados com o recurso da VM de origem de uma solicitação. Limitado a 5 recursos.

StringMatch

Determina como um valor de string precisa ser correspondido.

Representação JSON
{
  "ignoreCase": boolean,

  // Union field match_pattern can be only one of the following:
  "exact": string,
  "prefix": string,
  "suffix": string,
  "contains": string
  // End of list of possible types for union field match_pattern.
}
Campos
ignoreCase

boolean

Se definido como "true", indica que a correspondência exata/de prefixo/sufixo/contém não é sensível a maiúsculas. Por exemplo, o comparador data vai corresponder à string de entrada Data e data se definido como verdadeiro.

Campo de união match_pattern.

match_pattern pode ser apenas de um dos tipos a seguir:

exact

string

A string de entrada precisa corresponder exatamente à string especificada aqui.

Exemplos:

  • abc corresponde apenas ao valor abc.
prefix

string

A string de entrada precisa ter o prefixo especificado aqui. Observação: não é permitido usar um prefixo vazio. Use uma regex.

Exemplos:

  • abc corresponde ao valor abc.xyz
suffix

string

A string de entrada precisa ter o sufixo especificado aqui. Observação: não é permitido usar um prefixo vazio. Use uma regex.

Exemplos:

  • abc corresponde ao valor xyz.abc
contains

string

A string de entrada precisa ter a substring especificada aqui. Observação: a correspondência de vazios não é permitida. Use regex.

Exemplos:

  • abc corresponde ao valor xyz.abc.def

RequestResource

Descreve as propriedades de um recurso de VM cliente que acessa os balanceadores de carga de aplicativo internos.

Representação JSON
{
  "tagValueIdSet": {
    object (TagValueIdSet)
  },
  "iamServiceAccount": {
    object (StringMatch)
  }
}
Campos
tagValueIdSet

object (TagValueIdSet)

Opcional. Uma lista de IDs permanentes de valor de tag de recurso a serem comparados com o valor de tags do Resource Manager associado à VM de origem de uma solicitação.

iamServiceAccount

object (StringMatch)

Opcional. Uma conta de serviço do IAM para corresponder à conta de serviço de origem da VM que envia a solicitação.

TagValueIdSet

Descreve um conjunto de IDs permanentes de valor de tag de recurso para corresponder ao valor de tags do gerenciador de recursos associado à VM de origem de uma solicitação.

Representação JSON
{
  "ids": [
    string
  ]
}
Campos
ids[]

string (int64 format)

Obrigatório. Uma lista de IDs permanentes de valor de tag de recurso a serem comparados com o valor de tags do Resource Manager associado à VM de origem de uma solicitação. A correspondência segue a semântica AND, o que significa que todos os IDs precisam ser correspondentes. Limitado a cinco correspondências.

Até

Descreve as propriedades de uma ou mais segmentações de uma solicitação.

Representação JSON
{
  "operations": [
    {
      object (RequestOperation)
    }
  ],
  "notOperations": [
    {
      object (RequestOperation)
    }
  ]
}
Campos
operations[]

object (RequestOperation)

Opcional. Descreve as propriedades de uma ou mais segmentações de uma solicitação. Pelo menos uma das operações ou notOperations precisa ser especificada. Limitado a cinco operações. Uma correspondência ocorre quando QUALQUER operação (em operações ou notOperations) corresponde. Em uma operação, a correspondência segue a semântica AND entre campos e a semântica OR dentro de um campo, ou seja, uma correspondência ocorre quando QUALQUER caminho corresponde E QUALQUER cabeçalho corresponde E QUALQUER método corresponde.

notOperations[]

object (RequestOperation)

Opcional. Descreve as propriedades negadas dos destinos de uma solicitação. Corresponde a solicitações de operações que não correspondem aos critérios especificados neste campo. Pelo menos uma das operações ou notOperations precisa ser especificada.

RequestOperation

Descreve as propriedades de uma ou mais segmentações de uma solicitação.

Representação JSON
{
  "headerSet": {
    object (HeaderSet)
  },
  "hosts": [
    {
      object (StringMatch)
    }
  ],
  "paths": [
    {
      object (StringMatch)
    }
  ],
  "methods": [
    string
  ]
}
Campos
headerSet

object (HeaderSet)

Opcional. Uma lista de cabeçalhos para correspondência no cabeçalho HTTP.

hosts[]

object (StringMatch)

Opcional. Uma lista de hosts HTTP a serem comparados. A correspondência pode ser exata, de prefixo, de sufixo ou de substring. As correspondências sempre diferenciam maiúsculas de minúsculas, a menos que a opção ignoreCase esteja definida. Limitado a cinco correspondências.

paths[]

object (StringMatch)

Opcional. Uma lista de caminhos a serem correspondidos. A correspondência pode ser exata, de prefixo, de sufixo ou de substring. As correspondências sempre diferenciam maiúsculas de minúsculas, a menos que a opção ignoreCase esteja definida. Limitado a cinco correspondências. Essa correspondência de caminho inclui os parâmetros de consulta. Para serviços gRPC, esse precisa ser um nome totalmente qualificado no formato /package.service/method.

methods[]

string

Opcional. Uma lista de métodos HTTP a serem correspondidos. Cada entrada precisa ser um nome de método HTTP válido (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS). Ele só permite correspondências exatas e é sempre sensível a maiúsculas e minúsculas.

HeaderSet

Descreve um conjunto de cabeçalhos HTTP para fazer a correspondência.

Representação JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ]
}
Campos
headers[]

object (HeaderMatch)

Obrigatório. Uma lista de cabeçalhos para correspondência no cabeçalho HTTP. A correspondência pode ser exata, de prefixo, de sufixo ou de substring. A correspondência segue a semântica AND, o que significa que todos os cabeçalhos precisam corresponder. As correspondências sempre diferenciam maiúsculas de minúsculas, a menos que a opção ignoreCase esteja definida. Limitado a cinco correspondências.

HeaderMatch

Determina como um cabeçalho HTTP deve ser correspondido.

Representação JSON
{
  "name": string,
  "value": {
    object (StringMatch)
  }
}
Campos
name

string

Opcional. Especifica o nome do cabeçalho na solicitação.

value

object (StringMatch)

Opcional. Especifica como a correspondência de cabeçalho será realizada.

AuthzAction

A ação a ser aplicada a essa política. Os valores válidos são: ALLOW, DENY e CUSTOM.

Enums
AUTHZ_ACTION_UNSPECIFIED Ação não especificada.
ALLOW Permitir que a solicitação seja transmitida ao back-end.
DENY Negar a solicitação e retornar um HTTP 404 ao cliente.
CUSTOM Delegar a decisão de autorização a um mecanismo externo.

CustomProvider

Permite delegar decisões de autorização ao Cloud IAP ou às Extensões de serviço.

Representação JSON
{
  "cloudIap": {
    object (CloudIap)
  },
  "authzExtension": {
    object (AuthzExtension)
  }
}
Campos
cloudIap

object (CloudIap)

Opcional. Delega decisões de autorização ao Cloud IAP. Aplicável apenas a balanceadores de carga gerenciados. Ativar o Cloud IAP no nível da AuthzPolicy não é compatível com as configurações do Cloud IAP no BackendService. Ativar o IAP nos dois lugares vai resultar em falha na solicitação. Verifique se o IAP está ativado na AuthzPolicy ou no BackendService, mas não nos dois.

authzExtension

object (AuthzExtension)

Opcional. Delegar a decisão de autorização à extensão de serviço criada pelo usuário. Apenas um de cloudIap ou authzExtension pode ser especificado.

CloudIap

Esse tipo não tem campos.

Opcional. Delega decisões de autorização ao Cloud IAP. Aplicável apenas a balanceadores de carga gerenciados. Ativar o Cloud IAP no nível da AuthzPolicy não é compatível com as configurações do Cloud IAP no BackendService. Ativar o IAP nos dois lugares vai resultar em falha na solicitação. Verifique se o IAP está ativado na AuthzPolicy ou no BackendService, mas não nos dois.

AuthzExtension

Opcional. Delegar a decisão de autorização à extensão criada pelo usuário. Apenas um de cloudIap ou authzExtension pode ser especificado.

Representação JSON
{
  "resources": [
    string
  ]
}
Campos
resources[]

string

Obrigatório. Uma lista de referências a extensões de autorização que serão invocadas para solicitações que correspondem a esta política. Limitado a 1 provedor personalizado.

Métodos

create

Cria uma nova política de autorização em um determinado projeto e local.

delete

Exclui uma única política de autorização.

get

Recebe detalhes de uma única política de autorização.

list

Lista as políticas de autorização de um determinado projeto e local.

patch

Atualiza os parâmetros de um único AuthzPolicy.