Creazione di un livello di accesso personalizzato

Puoi utilizzare i livelli di accesso personalizzati in Gestore contesto accesso per controllare l'accesso alle Google Cloud risorse utilizzando espressioni booleane scritte in un sottoinsieme di Common Expression Language (CEL). Puoi valutare gli attributi della richiesta, come il progetto di rete di origine, l'indirizzo IP, l'identità e i dati del dispositivo provenienti da servizi di sicurezza di terze parti, per applicare requisiti di accesso sensibili al contesto e granulari.

Per utilizzare gli attributi del dispositivo nelle espressioni dei livelli di accesso personalizzati, devi avere un abbonamento a pagamento. Per informazioni dettagliate sulla creazione di espressioni CEL, consulta le specifiche del livello di accesso personalizzato. Dopo aver creato un livello di accesso personalizzato, puoi gestirlo allo stesso modo di un livello di accesso di base access level.

Prima di iniziare

Creare un livello di accesso personalizzato

Puoi creare un livello di accesso personalizzato utilizzando la Google Cloud console, lo strumento a riga di comando gcloud, l'API REST o RPC.

Console

Per creare un livello di accesso personalizzato utilizzando la Google Cloud console:

  1. Apri la pagina Gestore contesto accesso nella Google Cloud console.

    Apri la pagina Gestore contesto accesso

  2. Se richiesto, seleziona la tua organizzazione.

  3. Nella parte superiore della pagina Gestore contesto accesso, fai clic su Nuovo.

  4. Nel riquadro Nuovo livello di accesso:

    1. Nella casella Titolo livello di accesso, inserisci un titolo per il livello di accesso. Il titolo deve contenere al massimo 50 caratteri, iniziare con una lettera e può contenere solo numeri, lettere, trattini bassi e spazi.

    2. Dopo Crea condizioni in, seleziona Modalità avanzata.

    3. Nella sezione Condizioni, inserisci le espressioni per il livello di accesso personalizzato. La condizione deve restituire un singolo valore booleano.

      Per esempi e ulteriori informazioni sul supporto di Common Expression Language (CEL) e sui livelli di accesso personalizzati, consulta le specifiche del livello di accesso personalizzato.

    4. Fai clic su Salva.

gcloud

Per creare un livello di accesso personalizzato utilizzando lo strumento a riga di comando gcloud, utilizza il gcloud access-context-manager levels create comando.

gcloud access-context-manager levels create LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME

Sostituisci quanto segue:

  • LEVEL_NAME: un nome univoco per il livello di accesso. Il nome deve iniziare con una lettera e includere solo lettere, numeri e trattini bassi. Il nome può contenere un massimo di 50 caratteri.

  • TITLE: il titolo breve e leggibile per il livello di accesso.

  • FILE: un file YAML che contiene l'espressione CEL formattata come una singola coppia chiave-valore: expression: "CEL_EXPRESSION".

    Per esempi e ulteriori informazioni sul supporto di Common Expression Language (CEL) e sui livelli di accesso personalizzati, consulta le specifiche del livello di accesso personalizzato.

  • DESCRIPTION: una descrizione leggibile del livello di accesso.

  • POLICY_NAME: il nome numerico della policy di accesso della tua organizzazione.

Facoltativamente, puoi includere uno qualsiasi dei gcloud-wide flags.

File YAML custom-level-spec

Quando utilizzi lo strumento a riga di comando gcloud per creare un livello di accesso personalizzato, devi fornire un file YAML per l'opzione custom-level-spec. Il file YAML definisce un'espressione CEL che restituisce un singolo valore booleano. Il file YAML deve contenere una singola coppia chiave-valore formattata come expression: "CEL_EXPRESSION". Il valore di expression deve essere una stringa.

Esempio di file YAML

expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ['US'] || device.is_admin_approved_device)"

Esempio di comando

gcloud access-context-manager levels create Custom_Trust \
    --custom-level-spec=customspec.yaml \
    --description="Custom access level for corp." \
    --title="Custom Trust Level" \
    --policy=1521580097614100

REST

Per creare un livello di accesso personalizzato utilizzando l'API REST, utilizza il accessPolicies.accessLevels.create metodo.

Corpo della richiesta

Nel corpo della richiesta per la chiamata, includi un'istanza dell'oggetto AccessLevel.

{
  "name": string,
  "title": string,
  "description": string,
  "custom": {
    "expr": {
      "expression": string,
      "title": string,
      "description": string
    }
  }
}

Per il campo custom, crea un oggetto che includa le espressioni CEL per il livello di accesso personalizzato. L'espressione completa deve restituire un valore booleano. I campi title e description sono facoltativi.

Esempio

{
  "name": "example_custom_level",
  "title": "Example custom level",
  "description": "An example custom access level.",
  "custom":  {
    "expr": {
      "expression": "device.is_corp_owned == true || (device.os_type != OsType.OS_UNSPECIFIED && device.is_admin_approved_device == true)",
      "title": "Check for known devices",
      "description": "Permits requests from corp-owned devices and admin-approved devices with a known OS."
    }
  }
}

RPC

Per creare un livello di accesso personalizzato utilizzando RPC, chiama CreateAccessLevel.

Per il campo access_level, includi un'istanza di AccessLevel.

Campi
name
Tipo string
Descrizione

Obbligatorio.

Il nome della risorsa per il livello di accesso. Il POLICY_ID è il nome numerico della policy di accesso della tua organizzazione. Il SHORT_NAME deve iniziare con una lettera e includere solo lettere, numeri e trattini bassi.

Formato:

            accessPolicies/policy_id/accessLevels/short_name
            
title
Tipo string
Descrizione

Un'etichetta leggibile per il livello di accesso. I livelli di accesso devono avere nomi univoci.

description
Tipo string
Descrizione

Una descrizione del livello di accesso.

custom
Tipo string
Descrizione

Le espressioni CEL per il livello di accesso personalizzato. L'espressione completa deve restituire un valore booleano.

Esempi di livelli di accesso personalizzati

Questa sezione fornisce esempi di livelli di accesso personalizzati.

Limitare l'accesso in base al progetto di origine

Puoi limitare l'accesso alle risorse in modo da consentire solo le richieste provenienti da progetti Google Cloud specifici e progetti tenant correlati. La limitazione dell'accesso basata sul progetto è utile per proteggere le interazioni tramite le Workload Identity, che sono identità non umane appartenenti a un Google Cloud progetto. Le identità dei workload includono service account, identità della federazione delle identità per i workload, identità dei workload gestite e identità degli agenti.

La seguente espressione concede l'accesso se la richiesta proviene da projects/123456789:

originatesFromProjects(origin, ["projects/123456789"])

Limitare l'accesso di Workload Identity al proprio progetto di rete

Puoi limitare una Workload Identity in modo che possa effettuare richieste solo dalle reti associate a un Google Cloud progetto di proprietà della Workload Identity. Il progetto può essere un progetto di primo livello o progetti tenant del progetto di primo livello. La limitazione dell'accesso basata sul progetto è utile per proteggere le interazioni di Workload Identity. A differenza di originatesFromProjects, non devi specificare i numeri di progetto nell'espressione, il che ti consente di riutilizzare lo stesso livello di accesso in più progetti.

La seguente espressione concede l'accesso se il progetto di rete di origine (o i progetti tenant associati) corrisponde al progetto di proprietà dell'identità Workload Identity chiamante:

request.auth.matchesNetworkProject(origin)