Questo argomento descrive gli attributi supportati in un'espressione di condizione.
Attributi della condizione supportati
Le seguenti sezioni riepilogano gli attributi supportati e indicano quali servizi Google Cloud riconoscono ciascun attributo.
Attributi delle risorse
I seguenti attributi si riferiscono alla risorsa oggetto della richiesta.
Attributo | Riepilogo dell'utilizzo | Servizi Google Cloud supportati |
---|---|---|
Attributo servizio risorse | Gestire l'accesso in base al servizio Google Cloud in uso. |
|
Attributo tipo di risorsa | Gestire l'accesso in base al tipo di risorsa. | |
Attributo nome risorsa | Gestire l'accesso in base al nome della risorsa. |
|
Tag di risorse | Gestire l'accesso in base ai tag associati alla risorsa. | Tutti i servizi Google Cloud (vedi Supporto per condizioni ereditate) |
Per ulteriori dettagli sugli attributi delle risorse, consulta Attributi delle risorse in questa pagina.
Attributi della richiesta
Gli attributi riportati di seguito si riferiscono ai dettagli della richiesta.
Attributo | Riepilogo dell'utilizzo | Servizi Google Cloud supportati |
---|---|---|
Gestisci l'accesso in base a livelli di accesso specifici.
Un livello di accesso è un attributo calcolato in base ad attributi non elaborati della richiesta e del richiedente, come l'indirizzo IP di origine, gli attributi del dispositivo e l'ora del giorno. Ad esempio, un livello di accesso |
Identity-Aware Proxy |
|
Gestisci l'accesso in base ai dati forniti da un servizio o un'API Google Cloud specifici. |
|
|
Imposta l'accesso scadenzabile, pianificato o di durata limitata alle risorse Google Cloud. |
Tutti i servizi Google Cloud (vedi Supporto per condizioni ereditate) |
|
Gestisci l'accesso in base all'indirizzo IP di destinazione e/o alla porta di una
richiesta. Ad esempio, un'istanza di una macchina virtuale (VM) Compute Engine potrebbe esporre un IP esterno, come Utilizzato per l'inoltro TCP di Identity-Aware Proxy. |
Identity-Aware Proxy |
|
Specifica i tipi di regole di forwarding che un'entità può creare. Ad esempio, potresti consentire a un'entità di creare regole di forwarding per i bilanciatori del carico Google Cloud interni, che gestiscono il traffico proveniente da una rete Google Cloud, ma non per i bilanciatori del carico Google Cloud esterni, che gestiscono il traffico proveniente da internet. |
|
|
Gestisci l'accesso in base al percorso dell'URL e/o all'host di una richiesta. Ad
esempio, una condizione potrebbe specificare che
|
|
Per ulteriori dettagli sugli attributi della richiesta, consulta la sezione Attributi della richiesta in questa pagina.
Supporto per le condizioni ereditate
Alcuni tipi di risorse Google Cloud non consentono condizioni nei criteri di autorizzazione. Tuttavia, puoi aggiungere associazioni di ruoli condizionali a livello di organizzazione, cartella o progetto e le altre risorse erediteranno queste associazioni di ruoli tramite la gerarchia delle risorse. Per maggiori dettagli, consulta Tipi di risorse che accettano associazioni di ruoli condizionali.
Quando utilizzi attributi a livello di organizzazione, cartella o progetto, tieni presente che la maggior parte degli attributi è disponibile solo per tipi di risorse specifici. Se
per una parte di una condizione viene utilizzato un attributo non disponibile, tale parte della condizione non viene mai interpretata come una concessione dell'accesso. Ad esempio, la condizione destination.port == 21
non concederà mai l'accesso ad alcuna risorsa BigQuery, perché le risorse BigQuery non forniscono gli attributi della porta/dell'IP di destinazione.
Per evitare questo problema, utilizza gli attributi resource type e
resource service descritti in questa pagina per limitare
l'ambito della condizione. Ad esempio, la condizione seguente restituisce true
per tutti i tipi di risorse diverse dalle istanze del tunnel Identity-Aware Proxy; al contrario, per le istanze del tunnel Identity-Aware Proxy, la condizione controlla la porta di destinazione:
resource.type != 'iap.googleapis.com/TunnelInstance' ||
destination.port == 21
Non è necessario limitare l'ambito delle condizioni che controllano i tag associati a una risorsa. Quando una condizione controlla le chiavi e i valori dei tag, non può controllare altri attributi, tra cui il tipo di risorsa e il servizio della risorsa.
Attributi delle risorse
Gli attributi servizio delle risorse, tipo di risorsa e nome della risorsa vengono generalmente utilizzati per modificare l'ambito di una concessione dell'accesso fornita dall'associazione dei ruoli. Quando un ruolo contiene autorizzazioni che si applicano a diversi attributi specifici delle risorse, è possibile utilizzare condizioni basate sulle risorse per concedere un sottoinsieme delle autorizzazioni del ruolo per tipi specifici o servizi specifici.
Attributo resource.service
L'attributo resource.service
consente di impostare una condizione in base al
servizio Google Cloud in uso. Ad esempio, puoi impostare una condizione che limiti l'accesso di un utente alle risorse che utilizzano il servizio cloudresourcemanager.googleapis.com
. Per un elenco dei valori supportati, vedi Valori dei servizi delle risorse.
Variabile attributo | resource.service |
---|---|
Tipo di attributo |
Per un elenco dei valori supportati, consulta Valori del servizio delle risorse. |
Operatori supportati | , |
Dettagli |
Quando utilizzi l'attributo resource.type in condizioni, verifica se è presente l'uguaglianza esatta ( ) o la disuguaglianza esatta ( ) con l'attributo.
Altri confronti, come la verifica di un prefisso o di un suffisso, potrebbero generare risultati imprevisti.
|
Esempio |
Restituisce resource.service == "compute.googleapis.com" |
Servizi supportati |
|
Attributo resource.type
L'attributo resource.type
consente di impostare una condizione in base al tipo di risorsa. Ad esempio, puoi impostare una condizione che limiti l'accesso di un utente alle risorse di tipo storage.googleapis.com/Object
. Per un elenco dei valori supportati, consulta Valori dei tipi di risorsa.
Se la condizione utilizza l'attributo resource.name
, ti consigliamo vivamente di
utilizzare l'attributo resource.type
per controllare a quali tipi di risorse
si applica la condizione. Per maggiori dettagli, vedi Attributo resource.name
in questa pagina.
Variabile attributo | resource.type |
||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo di attributo |
Per un elenco dei valori supportati, consulta Valori dei tipi di risorsa. |
||||||||||||||||||||||||||||||||||||||||
Operatori supportati | , |
||||||||||||||||||||||||||||||||||||||||
Dettagli |
Quando utilizzi l'attributo resource.type in condizioni, verifica se è presente l'uguaglianza esatta ( ) o la disuguaglianza esatta ( ) con l'attributo. Altri confronti, come la verifica di un prefisso o di un suffisso, potrebbero generare risultati imprevisti.
|
||||||||||||||||||||||||||||||||||||||||
Esempi |
Restituisce resource.type != "compute.googleapis.com/Image"
Restituisce (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||
Tipi di risorse supportati |
1 Cloud Key Management Service utilizza questo tipo di risorsa come padre delle risorse del keyring. |
Attributo resource.name
L'attributo resource.name
consente di impostare una condizione basata su tutto o parte del nome di una risorsa. Per un elenco dei formati dei nomi delle risorse, consulta Formato del nome delle risorse.
L'attributo resource.name
è disponibile solo per tipi di risorse specifici, elencati nella tabella seguente. Ti consigliamo vivamente di limitare l'applicabilità della condizione al tipo di risorsa previsto. Se un ruolo contiene le autorizzazioni per un tipo di risorsa che non fornisce l'attributo resource.name
, devi assicurarti che queste autorizzazioni non siano limitate dalla parte della condizione che controlla resource.name
.
Nell'esempio seguente viene illustrato come garantire questo comportamento. In questo esempio, la condizione consente l'accesso a tutti i tipi di risorse eccetto i bucket e gli oggetti Cloud Storage. Al contrario, per i bucket e gli oggetti, la condizione consente l'accesso solo al bucket example-bucket
e agli oggetti che contiene:
(resource.type != 'storage.googleapis.com/Bucket' &&
resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')
Tieni presente che la prima parte della condizione verifica se la risorsa non è né un bucket né un oggetto. Se la risorsa ha un tipo diverso, l'intera condizione restituisce true
, indipendentemente dal nome della risorsa.
Inoltre, tieni presente che la condizione controlla l'attributo resource.type
, non
l'attributo resource.service
. Selezionare l'attributo resource.type
offre alcuni vantaggi:
- Limita il controllo
resource.name
al set di risorse appropriato. Ad esempio, se vuoi concedere l'accesso alle istanze di Compute Engine con un nome specifico, ha senso escludere tutti i tipi di risorse diversi dalle istanze di Compute Engine. - Impedisce che l'ambito della condizione cambi se un servizio aggiunge nuovi tipi di risorse in futuro.
Infine, tieni presente che la condizione utilizza la funzione startsWith()
per valutare il nome della risorsa, anziché verificare l'uguaglianza con l'operatore . Poiché la condizione si riferisce all'inizio del nome della risorsa, corrisponde a un bucket e agli oggetti in quel bucket. Se viene verificata l'uguaglianza, corrisponderà solo al bucket.
Non puoi utilizzare caratteri jolly come *
per trovare corrispondenze con più nomi di risorse. Prendi in considerazione queste alternative:
Utilizza la funzione
extract()
per estrarre un valore dal nome di una risorsa. Ad esempio, puoi estrarre un ID progetto dal nome della risorsa di un'istanza VM di Compute Engine, quindi scrivere un'espressione della condizione che faccia riferimento all'ID progetto.Per maggiori dettagli, consulta Estrazione dei valori dagli attributi in questa pagina.
Utilizza la funzione
startsWith()
oendsWith()
per scrivere una condizione che valuti l'inizio o la fine del nome della risorsa.
Variabile attributo | resource.name |
||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo di attributo |
Ogni tipo di risorsa utilizza un formato specifico per il nome della risorsa. Per un elenco dei formati, consulta Formato del nome delle risorse. |
||||||||||||||||||||||||||||||||||
Funzioni e operatori supportati |
startsWith(), endsWith(), extract(),
, |
||||||||||||||||||||||||||||||||||
Dettagli |
La funzione
La funzione
La funzione
Gli operatori |
||||||||||||||||||||||||||||||||||
Esempi |
Restituisce resource.name != "projects/_/buckets/secret-bucket-123"
Restituisce resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")
Restituisce resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")
Restituisce resource.name.endsWith(".jpg") Restituisce il nome o il numero del progetto, se presente: resource.name.extract("projects/{project}/") |
||||||||||||||||||||||||||||||||||
Tipi di risorse supportati |
|
Tag di risorse
Le funzioni per i tag delle risorse consentono di impostare una condizione in base ai tag associati o ereditati da una risorsa. Ad esempio, puoi impostare una condizione che conceda un ruolo solo per le risorse che hanno il tag env: prod
associato. Per scoprire di più sul controllo dell'accesso con i tag, consulta Tag e controllo dell'accesso.
Ogni tag è costituito da una chiave e da un valore. Esistono diversi tipi di identificatori per ogni chiave e valore:
-
Un ID permanente, che è univoco a livello globale e non può mai essere riutilizzato. Ad esempio, una chiave tag potrebbe avere l'ID permanente
tagKeys/123456789012
e un valore tag potrebbe avere l'ID permanentetagValues/567890123456
. -
Un nome breve. Il nome breve di ogni chiave deve essere univoco all'interno della tua organizzazione e il nome breve di ogni valore deve essere univoco per la chiave associata. Ad esempio, una chiave tag potrebbe avere il nome breve
env
e un valore tag potrebbe avere il nome breveprod
. -
Un nome con spazio dei nomi, che aggiunge l'ID numerico della tua organizzazione al nome breve di una chiave tag. Ad esempio, una chiave tag potrebbe avere il nome con spazio dei nomi
123456789012/env
. Scopri come ottenere l'ID organizzazione.
Per indicazioni sulla scelta del tipo di identificatore da utilizzare nelle condizioni, consulta Definizioni e identificatori dei tag.
Le condizioni sui tag sono supportate per tutti i servizi e i tipi di risorse Google Cloud. Per scoprire come applicare condizioni di tag alle risorse che non le supportano direttamente, consulta Supporto per le condizioni ereditate in questa pagina.
Per impostare le condizioni in base ai tag, puoi utilizzare le seguenti funzioni:
Funzione | Descrizione |
---|---|
resource.hasTagKey(
bool
|
Verifica se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave tag viene cercata in base al nome. Per cercare una chiave tag utilizzando il suo ID permanente, usa la funzione
|
resource.hasTagKeyId(
bool
|
Verifica se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave tag viene cercata in base al suo ID permanente.
Per verificare la presenza di una chiave tag utilizzando il relativo nome con spaziatura dei nomi, utilizza la funzione
|
resource.matchTag(
bool
|
Verifica se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. La chiave viene cercata in base al nome con spazio dei nomi e il valore in base al nome breve. Per cercare una chiave e un valore tag utilizzando i relativi ID permanenti, utilizza la funzione
|
resource.matchTagId(
bool
|
Verifica se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. La chiave e il valore vengono cercati in base ai relativi
ID permanenti. Per verificare una chiave tag utilizzando il nome con spazio dei nomi e un valore utilizzando il nome breve, utilizza la funzione
|
Attributi della richiesta
Gli attributi della richiesta consentono di creare condizioni che valutano i dettagli della richiesta, come il livello di accesso, la data e l'ora, l'indirizzo IP e la porta di destinazione (per il tunneling TCP IAP) o l'host/percorso dell'URL previsto (per IAP e Cloud Run).
Attributo livelli di accesso
L'attributo dei livelli di accesso consente agli utenti di impostare una condizione che richiede che una richiesta soddisfi uno o più livelli di accesso per essere autorizzata.
L'attributo dei livelli di accesso deriva dagli attributi della richiesta, come l'indirizzo IP di origine, gli attributi del dispositivo e l'ora del giorno. Ad esempio, un
livello di accesso denominato fullyTrusted
potrebbe richiedere che il dispositivo che effettua la richiesta
sia di proprietà dell'azienda e abbia un blocco schermo. Un livello di accesso onNetwork
potrebbe richiedere che il dispositivo che effettua la richiesta abbia origine da un determinato intervallo di indirizzi IP. Per ulteriori informazioni sui livelli di accesso, consulta la documentazione di Gestore contesto accesso.
L'attributo dei livelli di accesso è disponibile solo quando utilizzi Identity-Aware Proxy per accedere a un'istanza di tunnel o per accedere a un'applicazione web in esecuzione sui servizi di backend App Engine o Compute Engine. In particolare, l'attributo livelli di accesso è disponibile solo per le richieste che verificano una di queste autorizzazioni:
iap.tunnelInstances.accessViaIAP
iap.webServiceVersions.accessViaIAP
Puoi utilizzare l'attributo dei livelli di accesso quando concedi in modo condizionale i seguenti ruoli predefiniti:
Utente del tunnel con protezione IAP (
roles/iap.tunnelResourceAccessor
)Contiene una singola autorizzazione,
iap.tunnelInstances.accessViaIAP
.Utente applicazione web con protezione IAP (
roles/iap.httpsResourceAccessor
)Contiene una singola autorizzazione,
iap.webServiceVersions.accessViaIAP
.
Puoi utilizzare l'attributo livelli di accesso anche per concedere in modo condizionale un ruolo personalizzato contenente queste autorizzazioni. Il ruolo personalizzato non deve contenere altre autorizzazioni.
Attributo request.auth.access_levels
Variabile attributo | request.auth.access_levels |
---|---|
Tipo di attributo | list <string > |
Operatori supportati | in |
Dettagli |
Per verificare se una richiesta soddisfa un livello di accesso specifico, utilizza l'operatore ACCESS_LEVEL_FULL_NAME in request.auth.access_levels Il nome completo di un livello di accesso utilizza il seguente formato: accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL |
Esempio |
Restituisce "accessPolicies/199923665455/accessLevels/CorpNet" in request.auth.access_levels |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza di tunnel, un gruppo di destinazione del tunnel, un'applicazione web in esecuzione sul bilanciamento del carico di Google Cloud o un'applicazione web in esecuzione su App Engine. |
Attributi API
Gli attributi API consentono di gestire l'accesso in base ai dati forniti da un servizio o un'API Google Cloud specifici.
Ad esempio, quando usi Cloud Storage per elencare gli oggetti in un bucket, puoi utilizzare il parametro prefix
nella richiesta per includere solo gli oggetti i cui nomi iniziano con un prefisso specifico.
Se utilizzi Confini di accesso alle credenziali per eseguire il downgrade delle credenziali di breve durata, puoi creare un confine di accesso alle credenziali che limiti le autorizzazioni per elencare gli oggetti controllando l'attributo API storage.googleapis.com/objectListPrefix
. Questo attributo API contiene il valore del parametro prefix
della richiesta.
Per esempi di quando potresti dover utilizzare gli attributi API in una condizione, consulta le seguenti pagine:
- Limitare le autorizzazioni quando si elencano gli oggetti
- Impostare limiti per la concessione dei ruoli
Non tutti i servizi riconoscono gli attributi delle API. Le seguenti sezioni indicano quali servizi riconoscono ciascun attributo API.
Funzioni per gli attributi API
Per gestire gli attributi dell'API puoi utilizzare la funzione seguente:
Funzione | Descrizione | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
api.getAttribute(
V<T>
|
Recupera l'attributo API richiesto.
|
||||||||||||
hasOnly(
bool |
Verifica che un elenco contenga solo gli elementi consentiti o un sottoinsieme di questi elementi. Puoi chiamare la funzione in un elenco restituito da
|
Attributi API Cloud Storage
Cloud Storage fornisce il seguente attributo API.
Variabile attributo | storage.googleapis.com/objectListPrefix |
---|---|
Tipo di attributo | string |
Dettagli |
Per una richiesta di elenco degli oggetti in un bucket, contiene il valore del parametro Per altri tipi di richieste, l'attributo non è definito. |
Servizi che riconoscono questo attributo | Cloud Storage |
Attributi API IAM
IAM fornisce il seguente attributo API:
Variabile attributo | iam.googleapis.com/modifiedGrantsByRole |
---|---|
Tipo di attributo | list<string> |
Dettagli |
Per una richiesta di impostare il criterio di autorizzazione di una risorsa, questo attributo contiene i nomi dei ruoli delle associazioni di ruoli modificate dalla richiesta. Per altri tipi di richieste, l'attributo non è definito. |
Tipi di risorse che accettano questo attributo |
I seguenti tipi di risorse accettano condizioni con l'attributo
|
Servizi che riconoscono questo attributo |
I seguenti servizi riconoscono l'attributo
|
Attributo data/ora
L'attributo data/ora viene utilizzato per impostare l'accesso espandibile, pianificato o di durata limitata alle risorse Google Cloud.
Questo attributo è supportato per tutti i servizi e i tipi di risorse Google Cloud. Per scoprire come applicare le condizioni di data/ora alle risorse che non le supportano direttamente, consulta Supporto per le condizioni ereditate in questa pagina.
L'attributo request.time
contiene il timestamp della richiesta. Puoi
confrontare questo timestamp con un altro timestamp o un periodo di tempo.
Le seguenti sezioni elencano le funzioni che puoi utilizzare per impostare le condizioni in base a timestamp e durate.
Creare, confrontare e modificare timestamp e durate
Funzione o operatore | Descrizione |
---|---|
date(
Timestamp |
Converte una data da
|
duration(
Duration |
Converte un periodo di tempo da
|
timestamp(
Timestamp |
Converte
|
, , , |
Confronta due valori
|
|
Aggiungi o sottrai un valore
|
Estrae informazioni da un timestamp
Le funzioni in questa sezione consentono di estrarre informazioni da un timestamp, ad esempio il giorno della settimana in cui ricade il timestamp.
Nelle condizioni IAM, tutti i timestamp sono in UTC. Tuttavia, potresti voler estrarre informazioni in base a un fuso orario diverso. Ad esempio, potresti voler sapere se un timestamp UTC cade di lunedì nel fuso orario di Berlino, Germania.
Per specificare un fuso orario diverso, inserisci il fuso orario nella funzione. Utilizza un nome o un offset UTC dal database dei fusi orari IETF. Ad esempio, puoi utilizzare Europe/Berlin
o +01:00
per il fuso orario dell'Europa centrale (CET).
Funzioni e operatori supportati | Descrizione |
---|---|
Timestamp.getDate(
int
|
Recupera il giorno del mese da
|
Timestamp.getDayOfMonth(
int
|
Recupera il giorno del mese da
|
Timestamp.getDayOfWeek(
int
|
Recupera il giorno della settimana da
|
Timestamp.getDayOfYear(
int
|
Restituisce il giorno dell'anno da
|
Timestamp.getFullYear(
int
|
Recupera l'anno da
|
Timestamp.getHours(
int
|
Recupera l'ora del giorno da
Puoi combinare questa funzione con
|
Timestamp.getMilliseconds(
int
|
Recupera il numero di millisecondi da
|
Timestamp.getMinutes(
int
|
Recupera il numero di minuti dopo l'ora da
|
Timestamp.getMonth(
int
|
Ottieni il mese dell'anno da
|
Timestamp.getSeconds(
int
|
Recupera il numero di secondi da
|
, , , |
Confronta l'output di due funzioni in questa tabella. |
Attributi porta/IP di destinazione
L'attributo porta/IP di destinazione consente agli utenti di gestire l'accesso in base all'indirizzo IP di destinazione interno e/o alla porta per una richiesta.
Ad esempio, un'istanza VM di Compute Engine potrebbe mappare l'indirizzo IP esterno e la porta 132.168.42.21:3001
all'indirizzo IP interno e alla porta 10.0.0.1:2300
per l'utilizzo generale. Al contrario, l'indirizzo IP interno e la porta 10.0.0.1:22
potrebbero essere disponibili solo internamente per uso amministrativo. Puoi utilizzare gli attributi porta/IP di destinazione per concedere livelli di accesso diversi in base all'indirizzo IP interno e alla porta.
Per ulteriori informazioni sull'inoltro TCP, consulta la documentazione di Identity-Aware Proxy.
Attributo destination.ip
Variabile attributo | destination.ip |
---|---|
Tipo di attributo | string |
Operatori supportati | , |
Dettagli |
La variabile |
Esempi |
Restituisce destination.ip == "10.0.0.1"
Restituisce destination.ip != "10.0.0.1" |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza di tunnel |
Attributo destination.port
Variabile attributo | destination.port |
---|---|
Tipo di attributo | int |
Operatori supportati | , , , , , |
Dettagli |
La variabile |
Esempi |
Resi
|
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza di tunnel |
Attributi delle regole di forwarding
Gli attributi delle regola di forwarding consentono di specificare i tipi di regole di forwarding che un'entità può creare. Ad esempio, potresti consentire a un'entità di creare regole di forwarding per i bilanciatori del carico Google Cloud interni, che gestiscono il traffico proveniente da una rete Google Cloud, ma non per i bilanciatori del carico Google Cloud esterni, che gestiscono il traffico proveniente da internet.
Per Cloud Load Balancing, gli attributi delle regola di forwarding non influiscono sulla possibilità di creare altri componenti di un bilanciatore del carico Google Cloud, ad esempio servizi di backend, proxy di destinazione, controlli di integrità e mappe URL.
Funzioni supportate
Funzione | Descrizione |
---|---|
compute.isForwardingRule
bool
|
Verifica se la richiesta sta creando una regola di forwarding.
|
compute.matchLoad
bool
|
Controlla se la richiesta influisce su uno dei tipi di schema di bilanciamento del carico specificati. Per trovare l'identificatore per ogni schema di bilanciamento del carico, nonché ulteriori dettagli, consulta Utilizzare le condizioni IAM sui bilanciatori del carico Google Cloud.
|
Tipi di risorse supportati
Questo attributo è disponibile per le richieste di creazione dei seguenti tipi di risorse:
Servizio | Tipi di risorse |
---|---|
Cloud Load Balancing | Regole di forwarding |
Cloud VPN | Regole di forwarding (globali e a livello di regione) |
Compute Engine | Regole di forwarding (per l'inoltro del protocollo) |
Traffic Director1 | Regole di forwarding |
1 Utilizza gli attributi delle risorse per Compute Engine.
Attributo percorso/host dell'URL
L'attributo percorso/host dell'URL consente agli utenti di gestire l'accesso in base al percorso dell'URL e/o all'host di una richiesta. Ad esempio, una condizione potrebbe specificare che https://example.com
è l'applicazione principale accessibile da un dominio generale di utenti, mentre https://hr.example.com/admin
viene utilizzato per accedere a una pagina dell'applicazione in cui solo gli amministratori delle risorse umane possono accedere a questa parte.
Attributo request.path
Variabile attributo | request.path |
---|---|
Tipo di attributo | string |
Funzioni e operatori supportati | , startsWith(), endsWith() |
Dettagli |
Non è consigliabile utilizzare l'operatore con questo
attributo. Anziché verificare la disuguaglianza, come in
request.path != "/admin" , controlla il prefisso dell'attributo, ad esempio in !request.path.startsWith("/admin") . Controllando il prefisso, proteggi anche i percorsi degli URL all'interno della gerarchia /admin , ad esempio /admin/payroll/ .
|
Esempi |
Restituisce request.path == "/admin" request.path == "/admin/payroll"
Restituisce request.path.startsWith("/admin")
Restituisce request.path.endsWith("/payroll.js") |
Tipi di risorse supportati |
|
Attributo request.host
Variabile attributo | request.host |
---|---|
Tipo di attributo | string |
Funzioni e operatori supportati | , endsWith() |
Dettagli |
Non è consigliabile utilizzare la funzione .startsWith() o
l'operatore con questo attributo. Queste funzioni e questi operatori potrebbero generare risultati imprevisti.
|
Esempi |
Restituisce request.host == "www.example.com" request.host == "hr.example.com"
Restituisce request.host.endsWith("example.com") |
Tipi di risorse supportati |
|
Estrai i valori dagli attributi
Puoi utilizzare la funzione extract()
per estrarre un valore da un attributo. Ad esempio, puoi estrarre una parte arbitraria del nome di una risorsa e poi scrivere un'espressione di condizione che faccia riferimento al testo estratto.
Per utilizzare la funzione extract()
, devi fornire un modello di estrazione, che specifica la parte dell'attributo da estrarre. Ad esempio, se vuoi estrarre un ID progetto dal nome della risorsa di un'istanza VM di Compute Engine, puoi utilizzare il modello projects/{project}/
.
Un modello di estrazione contiene le seguenti parti:
Un identificatore, racchiuso tra parentesi graffe, che identifica la sottostringa da estrarre.
Scegli un identificatore breve e significativo che chiarisca il valore che vuoi estrarre. Puoi utilizzare lettere maiuscole e minuscole dal
A
alZ
, cifre numeriche e trattini bassi (_
).Nel modello
projects/{project}/
, l'identificatore èproject
.Facoltativo: un prefisso, che deve apparire prima della sottostringa da estrarre.
Nel modello
projects/{project}/
, il prefisso èprojects/
.Facoltativo: un suffisso, che deve apparire dopo la sottostringa da estrarre.
Nel modello
projects/{project}/
, il suffisso è/
.
La funzione extract()
estrae parti diverse dell'attributo a seconda che il modello di estrazione abbia un prefisso, un suffisso o entrambi:
Ha un prefisso | Con suffisso | Valore estratto |
---|---|---|
— | — | L'intero attributo |
— | I caratteri dopo la prima occorrenza del prefisso o una stringa vuota se non ci sono caratteri dopo il prefisso | |
— | I caratteri che precedono la prima occorrenza del suffisso o una stringa vuota se non ci sono caratteri prima del suffisso | |
I caratteri tra la prima occorrenza del prefisso e la prima occorrenza successiva del suffisso o una stringa vuota se non ci sono caratteri tra il prefisso e il suffisso |
Se specifichi un prefisso o un suffisso che non è presente nell'attributo o se il suffisso viene visualizzato solo prima del prefisso, la funzione extract()
restituisce una stringa vuota.
I seguenti esempi mostrano l'output da diversi modelli di estrazione diversi. Questi esempi fanno riferimento al nome di una risorsa per un oggetto Cloud Storage, projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/
:
Modello di estrazione | Output |
---|---|
/order_date={date}/ |
2019-11-03 |
buckets/{name}/ |
acme-orders-aaa |
/orders/{empty}order_date |
string vuoto |
{start}/objects/data_lake |
projects/_/buckets/acme-orders-aaa |
orders/{end} |
order_date=2019-11-03/aef87g87ae0876 |
{all} |
projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/ |
/orders/{none}/order_date= |
string vuoto |
/orders/order_date=2019-11-03/ |
string vuoto |
Se estrai una stringa che rappresenta una data, puoi utilizzare le funzioni e gli operatori di data/ora in questa pagina per convertire il valore estratto in Timestamp
. Ad esempio, consulta la pagina Configurazione dell'accesso basato sulle risorse.