Apportare modifiche collettive ai livelli di accesso

Con Gestore contesto accesso, puoi eseguire aggiornamenti in blocco delle risorse che appartengono alla policy di accesso della tua organizzazione, ad esempio livelli di accesso e perimetri di servizio.

Le modifiche alle risorse vengono applicate solo se tutte le parti dell'operazione in blocco riescono. Ad esempio, se l'operazione collettiva tenta di rimuovere un livello di accesso utilizzato da un perimetro di servizio, viene generato un errore. Poiché si è verificato un errore, l'intera operazione non va a buon fine e nessuna risorsa viene aggiornata.

Questo articolo descrive solo la sostituzione in blocco dei livelli di accesso. Per saperne di più sulla sostituzione collettiva dei perimetri di servizio, consulta la documentazione dei Controlli di servizio VPC.

Prima di iniziare

Poiché le operazioni in blocco interessano tutti i livelli di accesso della tua organizzazione, ti consigliamo di ottenere un elenco completo dei tuoi livelli di accesso. L'elenco può essere formattato come YAML, il che può anche semplificare le modifiche collettive ai tuoi livelli di accesso.

Per ottenere un elenco formattato dei livelli di accesso, consulta Elenca i livelli di accesso (formattati).

Sostituisci in blocco i livelli di accesso

La sezione seguente descrive in dettaglio come sostituire in blocco i livelli di accesso.

gcloud

Per sostituire in blocco tutti i livelli di accesso, utilizza il comando replace-all.

gcloud access-context-manager levels replace-all \
  --source-file=FILE \
  --etag=ETAG \
  [--policy=POLICY_NAME]

Dove:

  • FILE è il nome di un file .yaml che definisce le nuove condizioni per i livelli di accesso esistenti.

    Ad esempio:

    - name: accessPolicies/11271009391/accessLevels/corpnet_access
      title: Corpnet Access
      description: Permit access to corpnet.
      basic:
        combiningFunction: AND
        conditions:
          - ipSubnetworks:
            - 252.0.2.0/24
            - 2001:db8::/32
    - name: accessPolicies/11271009391/accessLevels/prodnet_access
      title: Prodnet Access
      description: Permit access to prodnet.
      basic:
        combiningFunction: OR
        conditions:
          - members:
            - user:exampleuser@example.com
            - serviceAccount:exampleaccount@example.iam.gserviceaccount.com
          - ipSubnetworks:
            - 176.0.2.0/24
    

    Per altri esempi della struttura YAML delle condizioni, consulta il file YAML di esempio.

  • ETAG (facoltativo) è una stringa che rappresenta la versione di destinazione della policy di accesso della tua organizzazione. Se non includi un ETag, la destinazione dell'operazione in blocco è l'ultima versione della policy di accesso della tua organizzazione.

    Per ottenere l'ultimo ETag della tua policy di accesso, esegui il comando list sulle tue policy di accesso.

  • POLICY_NAME è il nome della policy di accesso della tua organizzazione. Questo valore è obbligatorio solo se non hai impostato una policy di accesso predefinita.

API

Per sostituire in blocco tutti i livelli di accesso, chiama accessLevels.replaceAll.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels.replaceAll?alt=json

Dove:

  • POLICY_NAME è il nome della policy di accesso della tua organizzazione.

Corpo della richiesta

Il corpo della richiesta deve includere un elenco di oggetti AccessLevel che specificano le modifiche che vuoi apportare.

Facoltativamente, per scegliere come destinazione una versione specifica della policy di accesso della tua organizzazione, puoi includere un ETag. Se non includi un ETag, la destinazione dell'operazione in blocco è l'ultima versione della policy di accesso della tua organizzazione.

Ad esempio:

{
  "accessLevels": [
    object (AccessLevel),
    object (AccessLevel),
    ...
  ]
  "etag": string
}

Corpo della risposta

In caso di esito positivo, il corpo della risposta alla chiamata contiene una risorsa Operation che fornisce dettagli sull'operazione POST.

Esempio di risposta:

{
  "name": "operations/accessPolicies/11271009391/replaceLevels/1583523446234255",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceAccessLevelsResponse",
    "accessLevels": [
      {
        "name": "accessPolicies/11271009391/accessLevels/corpnet_access",
        "title": "Corpnet access",
        "description": "Permit access to corpnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "252.0.2.0/24"
              ]
            }
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/accessLevels/prodnet_access",
        "title": "Prodnet access",
        "description": "Permit access to prodnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "176.0.2.0/24"
              ]
            }
          ]
        }
      }
    ]
  }
}