En esta página, se muestra cómo configurar políticas de autorización para los balanceadores de cargas de aplicaciones.
Antes de comenzar
- Familiarízate con la descripción general de la política de autorización.
-
- API de seguridad de red
- API de Network Services
Configura el balanceador de cargas
Si aún no creaste un balanceador de cargas, consulta las siguientes páginas para configurar el balanceador de cargas de aplicaciones que prefieras:
- Para crear un balanceador de cargas de aplicaciones externo global, consulta Configura un balanceador de cargas de aplicaciones externo global con backends de grupos de instancias de VM.
Para crear un balanceador de cargas de aplicaciones externo regional, consulta Configura un balanceador de cargas de aplicaciones externo regional con backends de grupos de instancias de VM.
Para crear un balanceador de cargas de aplicaciones interno regional, consulta Configura un balanceador de cargas de aplicaciones interno regional con backends de grupos de instancias de VM.
- Para crear un balanceador de cargas de aplicaciones interno entre regiones, consulta Configura un balanceador de cargas de aplicaciones interno entre regiones con backends de grupos de instancias de VM.
Crea una política de autorización
Para crear una política de autorización, crea un archivo YAML
que defina el destino y las reglas y, luego, importa el archivo con el
comando gcloud network-security authz-policies.
En esta sección, se proporcionan instrucciones para crear políticas de autorización adjuntas a la regla de reenvío de los balanceadores de cargas de aplicaciones.
Para obtener más información sobre cómo crear una política de autorización para un Agent Gateway que delega la autorización con Service Extensions, consulta Delega la autorización con Service Extensions.
Para obtener más información sobre cómo crear una política de autorización para un Secure Web Proxy, consulta Configura políticas de autorización para Secure Web Proxy.
Política de autorización para rechazar solicitudes
En esta sección, se proporcionan ejemplos de políticas de autorización que rechazan solicitudes en función de ciertos atributos de solicitud.
Rechazar solicitudes basadas en rangos de direcciones IP
En esta sección, se proporciona un ejemplo de política de autorización que rechaza las solicitudes en función de las solicitudes que se originan en rangos de direcciones IP específicos.
Global y entre regiones
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-deny.yamlpara la regla de reenvíoLB_FORWARDING_RULEen la ubicaciónglobal. La política deniega a los clientes con direcciones IP en el rango10.0.0.0/24para acceder a la ruta de 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: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos globales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LB_FORWARDING_RULE: Es el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regional
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-deny.yamlpara la regla de reenvíoLB_FORWARDING_RULEen una regiónGoogle Cloud . La política deniega el acceso a la ruta de URL/api/paymentsa los clientes con direcciones IP en el rango10.0.0.0/24.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: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos regionales, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: Es tu región de Google Cloud .LB_FORWARDING_RULE: Es el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
Rechaza solicitudes según las principales del certificado de cliente
En esta sección, se proporciona un ejemplo de política de autorización que rechaza las solicitudes en función de las principales de certificados de cliente.
Global y entre regiones
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-deny.yamlpara la regla de reenvíoLB_FORWARDING_RULEen la ubicaciónglobal. La política deniega el acceso a la ruta de URL/api/paymentsa los clientes que tienenwww.example.comen los SAN de nombre de DNS de su certificado de 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 principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos globales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regional
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-deny.yamlpara la regla de reenvíoLB_FORWARDING_RULEen una regiónGoogle Cloud . La política deniega el acceso a la ruta de URL/api/paymentsa los clientes que tienenwww.example.comen los SAN de nombre de DNS de su certificado de 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" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - principals: - principalSelector: CLIENT_CERT_DNS_NAME_SAN principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos regionales, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: Es tu región de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
Política de autorización para permitir solicitudes
En esta sección, se proporciona un ejemplo de política de autorización que permite solicitudes que se originan en rangos de direcciones IP específicos.
Global y entre regiones
Si usas un balanceador de cargas de aplicaciones externo global o un balanceador de cargas de aplicaciones interno entre regiones, sigue estos pasos para crear una política de autorización:
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-allow.yamlpara la regla de reenvíoLB_FORWARDING_RULEen la ubicaciónglobal. La política permite que los clientes con direcciones IP en el rango10.0.0.0/24accedan a la ruta de 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.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos globales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=global
Regional
Si usas un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno regional, sigue estos pasos para crear e importar una política de autorización:
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-allow.yamlpara la regla de reenvíoLB_FORWARDING_RULEen una región Google Cloud específica. La política permite que los clientes con direcciones IP en el rango10.0.0.0/24accedan a la ruta de 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" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos regionales, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: Es tu región de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATION
Política de autorización basada en cuentas de servicio o etiquetas
Puedes aplicar una política de autorización basada en cuentas de servicio o etiquetas seguras adjuntas a varios recursos de Google Cloud .
En este ejemplo, se da por sentado que ya hiciste lo siguiente:
creaste una cuenta de servicio y la conectaste a un recurso de Google Cloud .
creaste una etiqueta segura y la adjuntaste a un recurso de Google Cloud como un par clave-valor. Cuando crees una etiqueta, establece su marca
--purposeenGCE_FIREWALL. Las políticas de autorización requieren el propósitoGCE_FIREWALLpara aplicar la etiqueta.
Cuenta de servicio
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-deny.yamlpara la regla de reenvíoLB_FORWARDING_RULEde un balanceador de cargas de aplicaciones interno regional. La política está configurada para rechazar las solicitudes de un recurso de Google Cloud , como una VM de Compute Engine, con la cuenta de serviciomy-sa-123@PROJECT_ID.iam.gserviceaccount.compara alcanzar la ruta de acceso/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" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - resources: - iamServiceAccount: exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones internos regionales y entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: Es tu región de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATIONReemplaza
LOCATIONpor tu región de Google Cloud .
Etiqueta
Define la política de autorización en un archivo YAML.
En el siguiente ejemplo, se crea un archivo
authz-policy-allow.yamlpara la regla de reenvíoLB_FORWARDING_RULEde un balanceador de cargas de aplicaciones interno regional. La política solo permite solicitudes que se originan en un recurso de Google Cloud , como una VM de Compute Engine, con un valor de etiqueta seguraTAG_VALUE_PERMANENT_IDpara acceder a la ruta de URL de/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" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: resources: - tagValueIdSet: - ids: "TAG_VALUE_PERMANENT_ID" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones internos regionales y entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: Es tu región de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.TAG_VALUE_PERMANENT_ID: Es el ID permanente de un valor de etiqueta.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATIONReemplaza lo siguiente:
LOCATION: Es tu región de Google Cloud .
Política de autorización para delegar decisiones de autorización
En los ejemplos de esta sección, se crea una política de autorización que delega las decisiones de autorización a los siguientes servicios a través de las extensiones de servicio:
- Servicio administrado por el usuario
- Servicio administrado por Google
Delega la decisión de autorización a un servicio administrado por el usuario
Puedes configurar una política de autorización para delegar la decisión de autorización en un servicio administrado por el usuario a través de extensiones de servicio, específicamente una extensión de autorización.
Para los balanceadores de cargas globales y entre regiones, la extensión de autorización se puede ejecutar en un servicio de backend de Google Cloud administrado por el usuario.
En el caso de los balanceadores de cargas regionales, la extensión de autorización se puede ejecutar tanto en un servicio de backend de Google Cloud administrado por el usuario como en un servicio basado en FQDN.
En este ejemplo de configuración, se supone
que creaste un servicio de backend Google Cloud administrado por el usuario,
también conocido como servicio de backend de texto destacado, llamado authz-service.
Para obtener más información sobre cómo crear uno, consulta
Configura un servicio de backend de texto destacado administrado por el usuario.
Para un servicio basado en FQDN, en esta configuración de ejemplo, se supone que el servicio personalizado se
implementa en tu propia VPC, admite el protocolo ext_authz y
se puede acceder a él con el nombre de dominio completamente calificado
mycustomauthz.internal.net.
Global y entre regiones
Si usas un balanceador de cargas de aplicaciones externo global o un balanceador de cargas de aplicaciones interno entre regiones, sigue estos pasos para delegar la decisión de autorización al servicio administrado por el usuario.
Define la extensión de autorización en un archivo YAML. La extensión de autorización se ejecuta en un servicio de backend (
authz-service) y admite el protocoloext_authz.cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFImporta el archivo YAML de la extensión de autorización con el comando
gcloud service-extensions authz-extensions importpara crear la extensión de autorización.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=globalReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos globales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
Define la política de autorización en un archivo YAML. La política de autorización delega la autorización a la extensión de autorización en el campo
customProvider.La política llama a la extensión de autorización
my-authz-extpara todo el tráfico a la ruta de URLexample.com/api/paymentscuando la solicitud contiene un encabezadoAuthorizationno vacío.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: - hosts: - exact: "example.com" - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/global/authzExtensions/my-authz-ext" EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos globales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Para crear la política de autorización, importa el archivo YAML de la política de autorización con el comando
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=global
Regional
Si usas un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno regional, sigue estos pasos para delegar la decisión de autorización a un servicio administrado por el usuario.
Define la extensión de autorización en un archivo YAML. La extensión de autorización puede ejecutarse en un servicio de backend o en un servicio basado en FQDN.
cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: BACKEND_SERVICE_URI_OR_FQDN forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos regionales, establece el esquema enINTERNAL_MANAGED.BACKEND_SERVICE_URI_OR_FQDN: El servicio puede ser cualquiera de los siguientes:- un URI de recurso de servicio de backend regional con el formato
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/backendServices/authz-service. - un nombre de dominio completamente calificado
(por ejemplo,
mycustomauthz.extension.net) que Cloud DNS pueda resolver.
- un URI de recurso de servicio de backend regional con el formato
Importa el archivo YAML de la extensión de autorización con el comando
gcloud service-extensions authz-extensions importpara crear la extensión de autorización.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONReemplaza LOCATION por la región de Google Cloud en la que se configura el servicio de backend de texto destacado.
Define la política de autorización en un archivo YAML. La política de autorización delega la autorización a la extensión de autorización en el campo
customProvider.La política llama a la extensión de autorización
my-authz-extpara todo el tráfico a la ruta de URLexample.com/api/paymentscuando la solicitud contiene un encabezadoAuthorizationno vacío.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" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos regionales, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: La Google Cloud regiónLB_FORWARDING_RULE: Es el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONReemplaza LOCATION por la región de Google Cloud en la que se configuró el balanceador de cargas.
Para obtener más información sobre las extensiones de autorización, consulta Configura una extensión de autorización.
Delega la decisión de autorización a Model Armor
Puedes configurar una política de autorización para delegar la decisión de autorización a Model Armor.
Antes de comenzar, crea una plantilla de Model Armor. En esta configuración de ejemplo, la política de autorización apunta a una extensión de autorización, que, a su vez, apunta a Model Armor.
Si usas un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno regional, sigue estos pasos para delegar la decisión de autorización a Model Armor.
Regional
Define la extensión de autorización en un archivo YAML. La extensión de autorización apunta a las plantillas de solicitud y respuesta de Model Armor.
cat >authz-extension.yaml <<EOF name: my-authz-extension loadBalancingScheme: INTERNAL_MANAGED service: modelarmor.LOCATION.rep.googleapis.com metadata: model_armor_settings: '[ { "response_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/RESPONSE_TEMPLATE_ID", "request_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/REQUEST_TEMPLATE_ID" } ]' failOpen: true EOFReemplaza lo siguiente:
- LOCATION: Es la ubicación de la plantilla.
- PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.
- RESPONSE_TEMPLATE_ID: ID de la plantilla de respuesta
- REQUEST_TEMPLATE_ID: Es el ID de la plantilla de solicitud.
Importa el archivo YAML de la extensión de autorización con el comando
gcloud service-extensions authz-extensions importpara crear la extensión de autorización.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATION
Reemplaza LOCATION por la región de Google Cloud en la que se encuentra el balanceador de cargas.
Define la política de autorización en un archivo YAML. La política de autorización delega la autorización a la extensión de autorización en el campo
customProvider.El valor de
policyProfileesCONTENT_AUTHZ.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: INTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: CONTENT_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFReemplaza lo siguiente:
PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: La Google Cloud regiónLB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATION
Reemplaza LOCATION por la región de Google Cloud en la que se configuró el balanceador de cargas.
Delega la decisión de autorización a Identity-Aware Proxy
En el caso de los balanceadores de cargas de aplicaciones externos globales y los balanceadores de cargas de aplicaciones internos entre regiones, no puedes delegar
la decisión de autorización a IAP a través de una extensión
de autorización. Para estos balanceadores de cargas, puedes delegar la decisión de autorización a
IAP a través del campo customProvider en el recurso de la política de
autorización.
En el caso de los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales, puedes configurar una política de autorización para delegar la decisión de autorización a IAP a través de una extensión de autorización.
Global y entre regiones
En el siguiente ejemplo, todas las decisiones de autorización se delegan a
IAP para todas las solicitudes que se originan en el bloque de direcciones IP
10.0.0.0/24. Si las solicitudes se originan en cualquier dirección IP fuera de
10.0.0.0/24, no coinciden con esta política y no las
evalúa IAP según esta regla específica.
Define la política de autorización en un archivo YAML. La política de autorización delega la autorización a IAP a través del campo
customProvider.cat >authz-policy-iap.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: - from: sources: - ipBlock: - prefix: "10.0.0.0" length: 24 action: CUSTOM customProvider: cloudIap: {} EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos globales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos entre regiones, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Para crear la política de autorización, importa el archivo YAML de la política de autorización con el comando
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-iap.yaml \ --location=global
Regional
Si usas un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno regional, sigue estos pasos para delegar la decisión de autorización a IAP con una extensión de autorización.
Define la extensión de autorización en un archivo YAML. La extensión de autorización apunta a IAP.
cat >authz-extension.yaml <<EOF name: my-authz-ext loadBalancingScheme: LB_SCHEME service: iap.googleapis.com failOpen: false EOFReemplaza lo siguiente:
- LB_SCHEME: Es el esquema de balanceo de cargas.
Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema en
EXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos regionales, establece el esquema enINTERNAL_MANAGED.
- LB_SCHEME: Es el esquema de balanceo de cargas.
Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema en
Importa el archivo YAML de la extensión de autorización con el comando
gcloud service-extensions authz-extensions importpara crear la extensión de autorización.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONReemplaza LOCATION por la región de Google Cloud en la que se configura la extensión de autorización.
Define la política de autorización en un archivo YAML. La política de autorización delega la autorización a la extensión de autorización en el campo
customProvider.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" policyProfile: REQUEST_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFReemplaza lo siguiente:
LB_SCHEME: Es el esquema de balanceo de cargas. Para los balanceadores de cargas de aplicaciones externos regionales, establece el esquema enEXTERNAL_MANAGED. Para los balanceadores de cargas de aplicaciones internos regionales, establece el esquema enINTERNAL_MANAGED.PROJECT_ID: Es el ID de tu proyecto de Google Cloud .LOCATION: La Google Cloud regiónLB_FORWARDING_RULE: el nombre de la regla de reenvío del balanceador de cargas.
Crea la política de autorización importando el archivo YAML de la política de autorización con el comando
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONReemplaza LOCATION por la región de Google Cloud en la que se configuró el balanceador de cargas.
Comprende los registros de la política de autorización en Cloud Logging
Para comprender cómo se registran las políticas de autorización cuando se permite o se rechaza una solicitud, consulta las siguientes secciones.
La solicitud no coincide con las políticas ALLOW ni DENY
Cuando una solicitud no coincide con las políticas ALLOW ni DENY, la política DENY
permite la solicitud y la registra como
allowed_as_no_deny_policies_matched_request. Por el contrario, la política ALLOW
rechaza la solicitud y la registra como
denied_as_no_allow_policies_matched_request. Debido a que una de las políticas
rechaza la solicitud, esta se rechaza.
Si usas un balanceador de cargas de aplicaciones externo global,
statusDetailsse establece endenied_by_authz_policyen el registro. Consulta el siguiente ejemplo:{ 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" }Si usas un balanceador de cargas de aplicaciones interno regional, un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno entre regiones,
proxyStatusse establece enerror=\"http_request_error\"; details=\"denied_by_authz_policy\"en el registro. Consulta el siguiente ejemplo:{ 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" }
La solicitud coincide con la política DENY
Cuando una solicitud coincide con la política DENY, se rechaza y se registra la política que
la rechazó.
Si usas un balanceador de cargas de aplicaciones externo global,
statusDetailsse establece endenied_by_authz_policyen el registro, y el nombre de la política que rechazó la solicitud se registra enpolicies. Consulta el siguiente ejemplo:{ 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" }Si usas un balanceador de cargas de aplicaciones interno regional, un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno entre regiones,
proxyStatusse establece enerror=\"http_request_error\"; details=\"denied_by_authz_policy\"y el nombre de la política se registra enpolicies. Consulta el siguiente ejemplo:{ 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" }
La solicitud no coincide con la política DENY, pero sí con la política ALLOW
Cuando una solicitud no coincide con la política DENY, pero coincide con la política ALLOW,
se permite la solicitud. En el registro, esta acción se registra como
allowed_as_no_deny_policies_matched_request para la política DENY. También se registra la política
que permitió la solicitud.
Si usas un balanceador de cargas de aplicaciones externo global, no hay
statusDetailsen el registro. La política que permitió la solicitud también se registra enpolicies. Consulta el siguiente ejemplo:{ 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" }Si usas un balanceador de cargas de aplicaciones interno regional, un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno entre regiones, no hay un campo
proxyStatusen el registro. La política que permitió la solicitud también se registra enpolicies. Consulta el siguiente ejemplo:{ 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" }