REST Resource: projects.locations.authzPolicies

Risorsa: AuthzPolicy

AuthzPolicy è una risorsa che consente di inoltrare il traffico a un backend di callout progettato per eseguire la scansione del traffico per motivi di sicurezza.

Rappresentazione JSON
{
  "name": string,
  "createTime": string,
  "updateTime": string,
  "description": string,
  "labels": {
    string: string,
    ...
  },
  "target": {
    object (Target)
  },
  "httpRules": [
    {
      object (AuthzRule)
    }
  ],
  "action": enum (AuthzAction),
  "customProvider": {
    object (CustomProvider)
  }
}
Campi
name

string

Obbligatorio. Identificatore. Nome della risorsa AuthzPolicy nel seguente formato: projects/{project}/locations/{location}/authzPolicies/{authzPolicy}.

createTime

string (Timestamp format)

Solo output. Timestamp di creazione della risorsa.

Un timestamp in formato "Zulu" UTC RFC3339, con risoluzione a livello di nanosecondo e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Solo output. Timestamp dell'aggiornamento della risorsa.

Un timestamp in formato "Zulu" UTC RFC3339, con risoluzione a livello di nanosecondo e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

description

string

Facoltativo. Una descrizione leggibile della risorsa.

labels

map (key: string, value: string)

Facoltativo. Set di etichette associate alla risorsa AuthzPolicy.

Il formato deve essere conforme ai seguenti requisiti.

Un oggetto contenente un elenco di coppie "key": value. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

target

object (Target)

Obbligatorio. Specifica l'insieme di risorse a cui applicare questo criterio.

httpRules[]

object (AuthzRule)

Facoltativo. Un elenco di regole HTTP di autorizzazione da confrontare con la richiesta in arrivo. Una corrispondenza ai criteri si verifica quando almeno una regola HTTP corrisponde alla richiesta o quando non sono specificate regole HTTP nel criterio. Per l'azione Consenti o Nega è necessaria almeno una regola HTTP. Limite di 5 regole.

action

enum (AuthzAction)

Obbligatorio. Può essere uno dei seguenti valori: ALLOW, DENY, CUSTOM.

Quando l'azione è CUSTOM, è necessario specificare customProvider.

Quando l'azione è ALLOW, verranno consentite solo le richieste corrispondenti alle norme.

Quando l'azione è DENY, verranno rifiutate solo le richieste corrispondenti alle norme.

Quando arriva una richiesta, le norme vengono valutate nel seguente ordine:

  1. Se esiste un criterio CUSTOM che corrisponde alla richiesta, questo viene valutato utilizzando i fornitori di autorizzazione personalizzati e la richiesta viene rifiutata se il fornitore la rifiuta.CUSTOM

  2. Se esistono criteri DENY corrispondenti alla richiesta, questa viene rifiutata.

  3. Se non sono presenti criteri ALLOW per la risorsa o se uno dei criteri ALLOW corrisponde alla richiesta, la richiesta è consentita.

  4. In caso contrario, la richiesta viene rifiutata per impostazione predefinita se nessuno dei criteri AuthzPolicy configurati con l'azione ALLOW corrisponde alla richiesta.

customProvider

object (CustomProvider)

Facoltativo. Obbligatorio se l'azione è CUSTOM. Consente di delegare le decisioni di autorizzazione a Cloud IAP o a Service Extensions. È necessario specificare cloudIap o authzExtension.

Target

Specifica l'insieme di destinazioni a cui applicare questo criterio.

Rappresentazione JSON
{
  "loadBalancingScheme": enum (LoadBalancingScheme),
  "resources": [
    string
  ]
}
Campi
loadBalancingScheme

enum (LoadBalancingScheme)

Obbligatorio. Tutti i gateway e le regole di inoltro a cui fanno riferimento questa policy e le estensioni devono condividere lo stesso schema di bilanciamento del carico. Valori supportati: INTERNAL_MANAGED e EXTERNAL_MANAGED. Per ulteriori informazioni, consulta la Panoramica dei servizi di backend.

resources[]

string

Obbligatorio. Un elenco di riferimenti alle Regole di inoltro a cui verrà applicato questo criterio.

LoadBalancingScheme

Schemi di bilanciamento del carico supportati dalla risorsa AuthzPolicy. I valori validi sono INTERNAL_MANAGED e EXTERNAL_MANAGED. Per ulteriori informazioni, consulta la Panoramica dei servizi di backend.

Enum
LOAD_BALANCING_SCHEME_UNSPECIFIED Valore predefinito. Non utilizzare.
INTERNAL_MANAGED Indica che viene utilizzato per il bilanciamento del carico delle applicazioni interno regionale o interno tra regioni.
EXTERNAL_MANAGED Indica che viene utilizzato per il bilanciamento del carico delle applicazioni esterno globale o esterno regionale.
INTERNAL_SELF_MANAGED Indica che viene utilizzato per Cloud Service Mesh. Destinato esclusivamente all'utilizzo da parte del controller GKE CSM.

AuthzRule

Condizioni da confrontare con la richiesta in entrata.

Rappresentazione JSON
{
  "from": {
    object (From)
  },
  "to": {
    object (To)
  },
  "when": string
}
Campi
from

object (From)

Facoltativo. Descrive le proprietà di una o più origini di una richiesta.

to

object (To)

Facoltativo. Descrive le proprietà di uno o più target di una richiesta.

when

string

Facoltativo. Espressione CEL che descrive le condizioni da soddisfare per l'azione. Il risultato dell'espressione CEL viene combinato con AND da e a. Consulta il riferimento alla lingua CEL per un elenco degli attributi disponibili.

Da

Descrive le proprietà di una o più origini di una richiesta.

Rappresentazione JSON
{
  "sources": [
    {
      object (RequestSource)
    }
  ],
  "notSources": [
    {
      object (RequestSource)
    }
  ]
}
Campi
sources[]

object (RequestSource)

Facoltativo. Descrive le proprietà delle origini di una richiesta. È necessario specificare almeno uno tra sources o notSources. Limite di 5 origini. Una corrispondenza si verifica quando QUALSIASI origine (in sources o notSources) corrisponde alla richiesta. All'interno di un'unica origine, la corrispondenza segue la semantica AND tra i campi e la semantica OR all'interno di un singolo campo, ovvero si verifica una corrispondenza quando QUALSIASI principale corrisponde E QUALSIASI ipBlock corrisponde.

notSources[]

object (RequestSource)

Facoltativo. Descrive le proprietà negate delle origini delle richieste. Corrisponde alle richieste provenienti da origini che non corrispondono ai criteri specificati in questo campo. È necessario specificare almeno uno tra sources o notSources.

RequestSource

Descrive le proprietà di una singola origine.

Rappresentazione JSON
{
  "principals": [
    {
      object (StringMatch)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
Campi
principals[]

object (StringMatch)

Facoltativo. Un elenco di identità derivate dal certificato del client. Questo campo non corrisponderà a una richiesta a meno che l'autenticazione TLS reciproca non sia abilitata per la regola di inoltro o il gateway. Ogni identità è una stringa il cui valore viene confrontato con l'URI SAN, il DNS SAN o il campo dell'oggetto nel certificato del cliente. La corrispondenza può essere esatta, con prefisso, suffisso o una corrispondenza di sottostringa. Deve essere specificato uno dei valori esatto, prefisso, suffisso o contiene. Limite di 5 entità.

resources[]

object (RequestResource)

Facoltativo. Un elenco di risorse da associare alla risorsa della VM di origine di una richiesta. Limite di 5 risorse.

StringMatch

Determina la modalità di corrispondenza di un valore stringa.

Rappresentazione 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.
}
Campi
ignoreCase

boolean

Se true, indica che la corrispondenza esatta/prefisso/suffisso/contiene non deve essere sensibile alle maiuscole. Ad esempio, se è impostato su true, il corrispettivo data corrisponderà sia alla stringa di input Data sia a data.

Campo unione match_pattern.

match_pattern può essere solo uno dei seguenti:

exact

string

La stringa di input deve corrispondere esattamente alla stringa specificata qui.

Esempi:

  • abc corrisponde solo al valore abc.
prefix

string

La stringa inserita deve avere il prefisso specificato qui. Nota: il prefisso vuoto non è consentito. Utilizza invece la regex.

Esempi:

  • abc corrisponde al valore abc.xyz
suffix

string

La stringa inserita deve avere il suffisso specificato qui. Nota: il prefisso vuoto non è consentito. Utilizza invece la regex.

Esempi:

  • abc corrisponde al valore xyz.abc
contains

string

La stringa di input deve avere la sottostringa specificata qui. Nota: la corrispondenza contiene vuoto non è consentita. Utilizza invece un'espressione regolare.

Esempi:

  • abc corrisponde al valore xyz.abc.def

RequestResource

Descrive le proprietà di una risorsa VM client che accede ai bilanciatori del carico delle applicazioni interni.

Rappresentazione JSON
{
  "tagValueIdSet": {
    object (TagValueIdSet)
  },
  "iamServiceAccount": {
    object (StringMatch)
  }
}
Campi
tagValueIdSet

object (TagValueIdSet)

Facoltativo. Un elenco di ID permanenti dei valori dei tag delle risorse da confrontare con il valore dei tag del gestore delle risorse associato alla VM di origine di una richiesta.

iamServiceAccount

object (StringMatch)

Facoltativo. Un account di servizio IAM da associare all'account di servizio di origine della VM che invia la richiesta.

TagValueIdSet

Descrive un insieme di ID permanenti dei valori dei tag delle risorse da confrontare con il valore dei tag del gestore delle risorse associato alla VM di origine di una richiesta.

Rappresentazione JSON
{
  "ids": [
    string
  ]
}
Campi
ids[]

string (int64 format)

Obbligatorio. Un elenco di ID permanenti dei valori dei tag delle risorse da confrontare con il valore dei tag del gestore delle risorse associato alla VM di origine di una richiesta. La corrispondenza segue la semantica AND, il che significa che tutti gli ID devono corrispondere. Limite di 5 corrispondenze.

A

Descrive le proprietà di uno o più target di una richiesta.

Rappresentazione JSON
{
  "operations": [
    {
      object (RequestOperation)
    }
  ],
  "notOperations": [
    {
      object (RequestOperation)
    }
  ]
}
Campi
operations[]

object (RequestOperation)

Facoltativo. Descrive le proprietà di uno o più target di una richiesta. È necessario specificare almeno uno tra operations o notOperations. Limite di 5 operazioni. Si verifica una corrispondenza quando QUALSIASI operazione (in operations o notOperations) corrisponde. All'interno di un'operazione, la corrispondenza segue la semantica AND tra i campi e la semantica OR all'interno di un campo, ovvero una corrispondenza si verifica quando QUALSIASI percorso corrisponde E QUALSIASI intestazione corrisponde E QUALSIASI metodo corrisponde.

notOperations[]

object (RequestOperation)

Facoltativo. Descrive le proprietà negate dei target di una richiesta. Corrisponde alle richieste di operazioni che non corrispondono ai criteri specificati in questo campo. È necessario specificare almeno uno tra operations o notOperations.

RequestOperation

Descrive le proprietà di uno o più target di una richiesta.

Rappresentazione JSON
{
  "headerSet": {
    object (HeaderSet)
  },
  "hosts": [
    {
      object (StringMatch)
    }
  ],
  "paths": [
    {
      object (StringMatch)
    }
  ],
  "methods": [
    string
  ]
}
Campi
headerSet

object (HeaderSet)

Facoltativo. Un elenco di intestazioni da confrontare nell'intestazione HTTP.

hosts[]

object (StringMatch)

Facoltativo. Un elenco di host HTTP da confrontare. La corrispondenza può essere esatta, con prefisso, con suffisso o contiene (corrispondenza con sottostringa). Le corrispondenze sono sempre sensibili alle maiuscole, a meno che non sia impostato ignoreCase. Limite di 5 corrispondenze.

paths[]

object (StringMatch)

Facoltativo. Un elenco di percorsi da abbinare. La corrispondenza può essere esatta, con prefisso, con suffisso o contiene (corrispondenza con sottostringa). Le corrispondenze sono sempre sensibili alle maiuscole, a meno che non sia impostato ignoreCase. Limite di 5 corrispondenze. Tieni presente che questa corrispondenza del percorso include i parametri di ricerca. Per i servizi gRPC, deve essere un nome completo del tipo /package.service/method.

methods[]

string

Facoltativo. Un elenco di metodi HTTP da abbinare. Ogni voce deve essere un nome di metodo HTTP valido (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS). Consente solo la corrispondenza esatta ed è sempre sensibile alle maiuscole.

HeaderSet

Descrive un insieme di intestazioni HTTP con cui eseguire la corrispondenza.

Rappresentazione JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ]
}
Campi
headers[]

object (HeaderMatch)

Obbligatorio. Un elenco di intestazioni da confrontare nell'intestazione HTTP. La corrispondenza può essere esatta, con prefisso, con suffisso o contiene (corrispondenza con sottostringa). La corrispondenza segue la semantica AND, il che significa che tutte le intestazioni devono corrispondere. Le corrispondenze sono sempre sensibili alle maiuscole, a meno che non sia impostato ignoreCase. Limite di 5 corrispondenze.

HeaderMatch

Determina in che modo deve essere abbinata un'intestazione HTTP.

Rappresentazione JSON
{
  "name": string,
  "value": {
    object (StringMatch)
  }
}
Campi
name

string

Facoltativo. Specifica il nome dell'intestazione nella richiesta.

value

object (StringMatch)

Facoltativo. Specifica in che modo verrà eseguita la corrispondenza dell'intestazione.

AuthzAction

L'azione da applicare a questo criterio. I valori validi sono ALLOW, DENY, CUSTOM.

Enum
AUTHZ_ACTION_UNSPECIFIED Azione non specificata.
ALLOW Consenti il passaggio della richiesta al backend.
DENY Rifiutare la richiesta e restituire un codice HTTP 404 al client.
CUSTOM Delegare la decisione di autorizzazione a un motore di autorizzazione esterno.

CustomProvider

Consente di delegare le decisioni di autorizzazione a Cloud IAP o a Service Extensions.

Rappresentazione JSON
{
  "cloudIap": {
    object (CloudIap)
  },
  "authzExtension": {
    object (AuthzExtension)
  }
}
Campi
cloudIap

object (CloudIap)

Facoltativo. Delega le decisioni di autorizzazione a Cloud IAP. Applicabile solo per i bilanciatori del carico gestiti. L'attivazione di Cloud IAP a livello di AuthzPolicy non è compatibile con le impostazioni di Cloud IAP in BackendService. L'attivazione degli acquisti in-app in entrambi i casi comporterà il fallimento della richiesta. Assicurati che l'IAP sia abilitato in AuthzPolicy o in BackendService, ma non in entrambi.

authzExtension

object (AuthzExtension)

Facoltativo. Delega la decisione di autorizzazione all'estensione di servizio creata dall'utente. È possibile specificare solo uno tra cloudIap o authzExtension.

CloudIap

Questo tipo non contiene campi.

Facoltativo. Delega le decisioni di autorizzazione a Cloud IAP. Applicabile solo per i bilanciatori del carico gestiti. L'attivazione di Cloud IAP a livello di AuthzPolicy non è compatibile con le impostazioni di Cloud IAP in BackendService. L'attivazione degli acquisti in-app in entrambi i casi comporterà il fallimento della richiesta. Assicurati che l'IAP sia abilitato in AuthzPolicy o in BackendService, ma non in entrambi.

AuthzExtension

Facoltativo. Delega la decisione di autorizzazione all'estensione creata dall'utente. È possibile specificare solo uno tra cloudIap o authzExtension.

Rappresentazione JSON
{
  "resources": [
    string
  ]
}
Campi
resources[]

string

Obbligatorio. Un elenco di riferimenti alle estensioni di autorizzazione che verranno richiamate per le richieste corrispondenti a questo criterio. Limite di 1 fornitore personalizzato.

Metodi

create

Crea un nuovo AuthzPolicy in un determinato progetto e posizione.

delete

Consente di eliminare un singolo criterio AuthzPolicy.

get

Recupera i dettagli di un singolo AuthzPolicy.

list

Elenca AuthzPolicies in un determinato progetto e posizione.

patch

Aggiorna i parametri di un singolo AuthzPolicy.