Modifiche in blocco ai perimetri di servizio

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.

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

Recupera un elenco dei perimetri di servizio

Poiché le operazioni in blocco interessano tutti i perimetri di servizio della tua organizzazione, puoi ottenere un elenco completo dei tuoi perimetri. Inoltre, puoi formattare questo elenco come YAML e utilizzarlo per apportare modifiche in blocco ai tuoi perimetri.

Per ottenere un elenco formattato dei perimetri di servizio, consulta Elenca i perimetri di servizio (formattati).

Quando esegui l'override delle configurazioni di tutti i perimetri di servizio con il comando replace-all, non impostare i campi etag all'interno dei perimetri. È probabile che gli ETag cambino tra il recupero e l'aggiornamento dei perimetri, causando la restituzione di un errore di mancata corrispondenza degli ETag da parte del comando replace-all. Tuttavia, puoi impostare un etag per l'intera richiesta replace-all con il parametro --etag di primo livello se vuoi forzare l'applicazione del controllo ETag.

Anziché rimuovere manualmente ciascuna delle proprietà etag all'interno dei perimetri, puoi recuperare i perimetri senza le proprietà etag specificando --format con tutti i campi tranne etag.

gcloud access-context-manager perimeters list \
  --policy=POLICY_NAME \
  --format="json(name,title,description,perimeterType,status,spec,useExplicitDryRunSpec)"

Sostituisci in blocco i perimetri di servizio

La sezione seguente descrive in dettaglio come sostituire in blocco i perimetri di servizio.

gcloud

Per sostituire in blocco tutti i perimetri di servizio, utilizza il comando replace-all.

gcloud access-context-manager perimeters replace-all POLICY_NAME \
  --source-file=FILE \
  --etag=ETAG \

Dove:

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

  • FILE è il nome di un file .yaml che definisce le nuove impostazioni per i perimetri di servizio esistenti.

    Ad esempio:

    - name: accessPolicies/11271009391/servicePerimeters/storage_perimeter
      title: Storage Perimeter
      description: Perimeter to protect Storage resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - storage.googleapis.com
    - name: accessPolicies/11271009391/servicePerimeters/bigquery_perimeter
      title: BigQuery Perimeter
      description: Perimeter to protect BigQuery resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - bigquery.googleapis.com
    

    Per saperne di più sulla formattazione del file YAML, consulta la struttura JSON dell'oggetto ServicePerimeterConfig di Gestore contesto accesso.

  • 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.

API

Per sostituire in blocco tutti i perimetri di servizio, chiama servicePerimeters.replaceAll.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters.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 ServicePerimeterConfig 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:

{
  "servicePerimeters": [
    object (ServicePerimeterConfig),
    object (ServicePerimeterConfig),
    ...
  ]
  "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/replacePerimeters/1583523447707087",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceServicePerimetersResponse",
    "servicePerimeters": [
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "Storage Perimeter",
        "description": "Perimeter to protect Storage resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/corpnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "BigQuery Perimeter",
        "description": "Perimeter to protect BigQuery resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/prodnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      }
    ]
  }
}