REST Resource: projects.locations.authzPolicies

Recurso: AuthzPolicy

AuthzPolicy es un recurso que permite reenviar el tráfico a un backend de llamada diseñado para analizar el tráfico con fines de seguridad.

Representación 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

Obligatorio. Identificador. Es el nombre del recurso AuthzPolicy con el siguiente formato: projects/{project}/locations/{location}/authzPolicies/{authzPolicy}.

createTime

string (Timestamp format)

Solo salida. Marca de tiempo cuando se creó el recurso.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Solo salida. La marca de tiempo cuando se creó el recurso.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

description

string

Opcional. Es una descripción legible por humanos del recurso.

labels

map (key: string, value: string)

Opcional. Es un conjunto de etiquetas asociadas con el recurso AuthzPolicy.

El formato debe cumplir con los siguientes requisitos.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

target

object (Target)

Obligatorio. Especifica el conjunto de recursos a los que se debe aplicar esta política.

httpRules[]

object (AuthzRule)

Opcional. Es una lista de reglas HTTP de autorización que se deben hacer coincidir con la solicitud entrante. Una coincidencia de política se produce cuando al menos una regla HTTP coincide con la solicitud o cuando no se especifican reglas HTTP en la política. Se requiere al menos una regla HTTP para la acción Permitir o Denegar. Se limita a 5 reglas.

action

enum (AuthzAction)

Obligatorio. puede ser una de las siguientes opciones: ALLOW, DENY, CUSTOM.

Cuando la acción sea CUSTOM, se debe especificar customProvider.

Cuando la acción sea ALLOW, solo se permitirán las solicitudes que coincidan con la política.

Cuando la acción sea DENY, solo se rechazarán las solicitudes que coincidan con la política.

Cuando llega una solicitud, las políticas se evalúan en el siguiente orden:

  1. Si hay una política CUSTOM que coincide con la solicitud, la política CUSTOM esta se evalúa con los proveedores de autorización personalizados y se rechaza si el proveedor la rechaza.

  2. Si hay alguna política DENY que coincida con la solicitud, esta se rechazará.

  3. Si no hay políticas ALLOW para el recurso o si alguna de las políticas ALLOW coincide con la solicitud, se permite la solicitud.

  4. De lo contrario, la solicitud se rechaza de forma predeterminada si ninguna de las AuthzPolicies configuradas con la acción ALLOW coincide con la solicitud.

customProvider

object (CustomProvider)

Opcional. Obligatorio si la acción es CUSTOM. Permite delegar las decisiones de autorización a Cloud IAP o a las Extensiones del servicio. Se debe especificar cloudIap o authzExtension.

Objetivo

Especifica el conjunto de destinos a los que se debe aplicar esta política.

Representación JSON
{
  "loadBalancingScheme": enum (LoadBalancingScheme),
  "resources": [
    string
  ]
}
Campos
loadBalancingScheme

enum (LoadBalancingScheme)

Obligatorio. Todas las puertas de enlace y reglas de reenvío a las que hacen referencia esta política y las extensiones deben compartir el mismo esquema de balanceo de cargas. Valores admitidos: INTERNAL_MANAGED y EXTERNAL_MANAGED. Para obtener más información, consulta Descripción general de los servicios de backend.

resources[]

string

Obligatorio. Una lista de referencias a las reglas de reenvío en las que se aplicará esta política.

LoadBalancingScheme

Esquemas de balanceo de cargas compatibles con el recurso AuthzPolicy. Los valores válidos son INTERNAL_MANAGED y EXTERNAL_MANAGED. Para obtener más información, consulta Descripción general de los servicios de backend.

Enums
LOAD_BALANCING_SCHEME_UNSPECIFIED Valor predeterminado No se debe usar.
INTERNAL_MANAGED Significa que se usa para el balanceador de cargas de aplicaciones interno regional o entre regiones.
EXTERNAL_MANAGED Significa que se usa para el balanceo de cargas de aplicaciones externo global o regional.
INTERNAL_SELF_MANAGED Indica que se usa para Cloud Service Mesh. Solo está diseñado para que lo use el controlador de GKE de CSM.

AuthzRule

Condiciones que deben coincidir con la solicitud entrante.

Representación JSON
{
  "from": {
    object (From)
  },
  "to": {
    object (To)
  },
  "when": string
}
Campos
from

object (From)

Opcional. Describe las propiedades de una o más fuentes de una solicitud.

to

object (To)

Opcional. Describe las propiedades de uno o más destinos de una solicitud.

when

string

Opcional. Es una expresión CEL que describe las condiciones que se deben cumplir para que se realice la acción. El resultado de la expresión CEL se evalúa según la semántica AND con el valor de from y to. Consulta la referencia del lenguaje CEL para obtener una lista de los atributos disponibles.

From

Describe las propiedades de una o más fuentes de una solicitud.

Representación JSON
{
  "sources": [
    {
      object (RequestSource)
    }
  ],
  "notSources": [
    {
      object (RequestSource)
    }
  ]
}
Campos
sources[]

object (RequestSource)

Opcional. Describe las propiedades de las fuentes de una solicitud. Se debe especificar al menos uno de sources o notSources. Se limita a 5 fuentes. Se produce una coincidencia cuando ANY (cualquier) fuente (en sources o notSources) coincide con la solicitud. Dentro de una sola fuente, la coincidencia sigue la semántica AND en todos los campos y la semántica OR en un solo campo, es decir, se produce una coincidencia cuando ANY principal coincide AND ANY ipBlocks coinciden.

notSources[]

object (RequestSource)

Opcional. Describe las propiedades negadas de las fuentes de solicitudes. Coincide con las solicitudes de fuentes que no coinciden con los criterios especificados en este campo. Se debe especificar al menos uno de sources o notSources.

RequestSource

Describe las propiedades de una sola fuente.

Representación JSON
{
  "principals": [
    {
      object (StringMatch)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
Campos
principals[]

object (StringMatch)

Opcional. Es una lista de identidades derivadas del certificado del cliente. Este campo no coincidirá con una solicitud, a menos que la TLS mutua esté habilitada para la regla de reenvío o la puerta de enlace. Cada identidad es una cadena cuyo valor coincide con el SAN del URI, el SAN del DNS o el campo de asunto del certificado del cliente. La concordancia puede ser exacta, de prefijo, de sufijo o de subcadena. Se debe especificar uno de los siguientes valores: exact, prefix, suffix o contains. Limitado a 5 principales.

resources[]

object (RequestResource)

Opcional. Es una lista de recursos que se deben comparar con el recurso de la VM de origen de una solicitud. Tiene un límite de 5 recursos.

StringMatch

Determina cómo se debe hacer coincidir un valor de cadena.

Representación 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

Si es verdadero, indica que la coincidencia exact/prefix/suffix/contains no debe distinguir mayúsculas de minúsculas. Por ejemplo, el comparador data coincidirá con la cadena de entrada Data y data si se establece como verdadero.

Campo de unión match_pattern.

match_pattern puede ser una de las siguientes opciones:

exact

string

La cadena de entrada debe coincidir exactamente con la cadena especificada aquí.

Ejemplos:

  • abc solo coincide con el valor abc.
prefix

string

La cadena de entrada debe tener el prefijo especificado aquí. Nota: No se permite un prefijo vacío. En su lugar, usa una regex.

Ejemplos:

  • abc coincide con el valor abc.xyz
suffix

string

La cadena de entrada debe tener el sufijo especificado aquí. Nota: No se permite un prefijo vacío. En su lugar, usa una regex.

Ejemplos:

  • abc coincide con el valor xyz.abc
contains

string

La cadena de entrada debe tener la subcadena especificada aquí. Nota: No se permite la coincidencia contains vacía. En su lugar, usa una regex.

Ejemplos:

  • abc coincide con el valor xyz.abc.def

RequestResource

Describe las propiedades de un recurso de VM cliente que accede a los balanceadores de cargas de aplicaciones internos.

Representación JSON
{
  "tagValueIdSet": {
    object (TagValueIdSet)
  },
  "iamServiceAccount": {
    object (StringMatch)
  }
}
Campos
tagValueIdSet

object (TagValueIdSet)

Opcional. Es una lista de IDs permanentes de valor de etiqueta de recurso que deben coincidir con el valor de las etiquetas de Resource Manager asociadas con la VM de origen de una solicitud.

iamServiceAccount

object (StringMatch)

Opcional. Una cuenta de servicio de IAM que coincida con la cuenta de servicio de origen de la VM que envía la solicitud.

TagValueIdSet

Describe un conjunto de IDs permanentes de valor de etiqueta de recursos que deben coincidir con el valor de etiquetas del administrador de recursos asociado con la VM de origen de una solicitud.

Representación JSON
{
  "ids": [
    string
  ]
}
Campos
ids[]

string (int64 format)

Obligatorio. Es una lista de IDs permanentes de valor de etiqueta de recurso que deben coincidir con el valor de las etiquetas de Resource Manager asociadas con la VM de origen de una solicitud. La coincidencia sigue la semántica AND, lo que significa que todos los IDs deben coincidir. Se limita a 5 coincidencias.

To

Describe las propiedades de uno o más destinos de una solicitud.

Representación JSON
{
  "operations": [
    {
      object (RequestOperation)
    }
  ],
  "notOperations": [
    {
      object (RequestOperation)
    }
  ]
}
Campos
operations[]

object (RequestOperation)

Opcional. Describe las propiedades de uno o más destinos de una solicitud. Se debe especificar al menos un valor entre operations o notOperations. Se limita a 5 operaciones. Se produce una coincidencia si coincide ANY operación (en operations o notOperations). Dentro de una operación, la coincidencia sigue la semántica AND en todos los campos y la semántica OR dentro de un campo, es decir, se produce una coincidencia cuando ANY ruta coincide AND ANY encabezado coincide AND ANY método coincide.

notOperations[]

object (RequestOperation)

Opcional. Describe las propiedades negadas de los destinos de una solicitud. Coincide con las solicitudes de operaciones que no coinciden con los criterios especificados en este campo. Se debe especificar al menos un valor entre operations o notOperations.

RequestOperation

Describe las propiedades de uno o más destinos de una solicitud.

Representación JSON
{
  "headerSet": {
    object (HeaderSet)
  },
  "hosts": [
    {
      object (StringMatch)
    }
  ],
  "paths": [
    {
      object (StringMatch)
    }
  ],
  "methods": [
    string
  ]
}
Campos
headerSet

object (HeaderSet)

Opcional. Es una lista de encabezados que deben coincidir en el encabezado HTTP.

hosts[]

object (StringMatch)

Opcional. Es una lista de hosts HTTP con los que se debe hacer coincidir. La concordancia puede ser de tipo exact, prefix, suffix o contains (concordancia de subcadena). Las coincidencias siempre distinguen mayúsculas de minúsculas, a menos que se establezca ignoreCase. Se limita a 5 coincidencias.

paths[]

object (StringMatch)

Opcional. Es una lista de rutas de acceso con las que se debe hacer coincidir. La concordancia puede ser de tipo exact, prefix, suffix o contains (concordancia de subcadena). Las coincidencias siempre distinguen mayúsculas de minúsculas, a menos que se establezca ignoreCase. Se limita a 5 coincidencias. Ten en cuenta que esta coincidencia de ruta de acceso incluye los parámetros de consulta. Para los servicios de gRPC, este debe ser un nombre completamente calificado del tipo /package.service/method.

methods[]

string

Opcional. Es una lista de métodos HTTP con los que se establece la coincidencia. Cada entrada debe ser un nombre de método HTTP válido (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS). Solo permite la concordancia exact y siempre distingue mayúsculas de minúsculas.

HeaderSet

Describe un conjunto de encabezados HTTP con los que se deben hacer coincidir.

Representación JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ]
}
Campos
headers[]

object (HeaderMatch)

Obligatorio. Es una lista de encabezados que deben coincidir en el encabezado HTTP. La concordancia puede ser de tipo exact, prefix, suffix o contains (concordancia de subcadena). La coincidencia sigue la semántica AND, lo que significa que todos los encabezados deben coincidir. Las coincidencias siempre distinguen mayúsculas de minúsculas, a menos que se establezca ignoreCase. Se limita a 5 coincidencias.

HeaderMatch

Determina cómo se debe hacer coincidir un encabezado HTTP.

Representación JSON
{
  "name": string,
  "value": {
    object (StringMatch)
  }
}
Campos
name

string

Opcional. Especifica el nombre del encabezado en la solicitud.

value

object (StringMatch)

Opcional. Especifica cómo se realizará la coincidencia de encabezados.

AuthzAction

Es la acción que se aplicará a esta política. Los valores posibles son ALLOW, DENY y CUSTOM.

Enums
AUTHZ_ACTION_UNSPECIFIED Acción no especificada.
ALLOW Permite que la solicitud pase al backend.
DENY Rechaza la solicitud y muestra un HTTP 404 al cliente.
CUSTOM Delega la decisión de autorización a un motor de autorización externo.

CustomProvider

Permite delegar las decisiones de autorización a Cloud IAP o a las Extensiones del servicio.

Representación JSON
{
  "cloudIap": {
    object (CloudIap)
  },
  "authzExtension": {
    object (AuthzExtension)
  }
}
Campos
cloudIap

object (CloudIap)

Opcional. Delega las decisiones de autorización a Cloud IAP. Solo se aplica a los balanceadores de cargas administrados. Habilitar Cloud IAP a nivel de AuthzPolicy no es compatible con la configuración de Cloud IAP en BackendService. Si habilitas la IAP en ambos lugares, la solicitud fallará. Asegúrate de que el IAP esté habilitado en AuthzPolicy o BackendService, pero no en ambos lugares.

authzExtension

object (AuthzExtension)

Opcional. Delega la decisión de autorización a la extensión de servicio creada por el usuario. Solo se puede especificar uno de cloudIap o authzExtension.

CloudIap

Este tipo no tiene campos.

Opcional. Delega las decisiones de autorización a Cloud IAP. Solo se aplica a los balanceadores de cargas administrados. Habilitar Cloud IAP a nivel de AuthzPolicy no es compatible con la configuración de Cloud IAP en BackendService. Si habilitas la IAP en ambos lugares, la solicitud fallará. Asegúrate de que el IAP esté habilitado en AuthzPolicy o BackendService, pero no en ambos lugares.

AuthzExtension

Opcional. Delega la decisión de autorización a la extensión creada por el usuario. Solo se puede especificar uno de cloudIap o authzExtension.

Representación JSON
{
  "resources": [
    string
  ]
}
Campos
resources[]

string

Obligatorio. Una lista de referencias a extensiones de autorización que se invocarán para las solicitudes que coincidan con esta política. Se limita a 1 proveedor personalizado.

Métodos

create

Crea una nueva AuthzPolicy en un proyecto y una ubicación determinados.

delete

Borra una sola AuthzPolicy.

get

Obtiene los detalles de una sola AuthzPolicy.

list

Enumera AuthzPolicies en una ubicación y un proyecto determinados.

patch

Actualiza los parámetros de un solo AuthzPolicy.