Gestisci le associazioni di accesso

Questo documento spiega come gestire le associazioni di accesso esistenti, che definiscono in che modo le policy di accesso vengono applicate ai gruppi di utenti o ai service account. Puoi visualizzare, modificare ed eliminare queste associazioni in base alle esigenze. Le associazioni di accesso determinano in che modo i livelli di accesso e i controlli della sessione vengono applicati a un gruppo di utenti o a un service account.

Per informazioni su come creare associazioni di accesso per gli utenti e per ulteriori dettagli sui livelli di accesso e sui controlli della sessione, consulta Applicare le policy ai gruppi di utenti con le associazioni di accesso.

Per ulteriori informazioni su come creare associazioni di accesso per i service account, consulta Configurare l'accesso sensibile al contesto per i service account.

Elencare le associazioni di accesso

Per elencare tutte le associazioni di accesso create in precedenza per i gruppi di utenti:

gcloud

Per elencare tutte le associazioni di accesso per gli utenti utilizzando gcloud CLI, esegui il comando seguente. Per elencare le associazioni di accesso per i service account, devi utilizzare un filtro.

gcloud access-context-manager cloud-bindings list \
  --organization ORGANIZATION_ID

ORG_ID: l'ID organizzazione. Se la proprietà access-context-manager/organization non è stata impostata, sostituisci ORG_ID nel flag --organization facoltativo con l'ID dell'organizzazione che hai utilizzato durante la creazione del ruolo GcpAccessAdmin.

Per elencare le associazioni di accesso su risorse specifiche, puoi utilizzare un flag di filtro.

  --filter="FILTER"

Sostituisci FILTER con un filtro che descrive la risorsa a cui è associata la policy di accesso, ad esempio:

  • Gruppi di utenti: principal:group_key

  • Service account: principal:service_account OR principal:service_account_project_number

API REST

Per elencare tutte le associazioni di accesso USER_LOGIN, esegui il comando seguente:

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"

Per elencare le associazioni di accesso su risorse specifiche, puoi utilizzare un parametro di filtro.

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings?filter=FILTER"

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto
  • ORGANIZATION_ID: l'ID dell'organizzazione
  • FILTER: un filtro che descrive la risorsa a cui è associata la policy di accesso, ad esempio:

    • Gruppi di utenti: principal:group_key

    • Service account: principal:service_account OR principal:service_account_project_number

Visualizzare un'associazione di accesso

Dopo aver creato le associazioni di accesso per un gruppo di utenti, l'accesso alla Google Cloud console e alle Google Cloud API viene controllato in base alla soddisfazione del livello di accesso associato.

Puoi visualizzare i dettagli dell'associazione di accesso che hai creato, modificarla o eliminarla.

Console

  1. Nella Google Cloud console, vai alla pagina Gestore contesto accesso.

    Vai a Gestore contesto accesso

  2. Se ti viene chiesto, seleziona un progetto. Le associazioni di accesso sono elencate nella pagina Gestore contesto accesso.

gcloud

Per visualizzare i dettagli di un'associazione di accesso, esegui il comando seguente:

  gcloud access-context-manager cloud-bindings describe \
  --binding=BINDING_ID

BINDING_ID è l'ID dell'associazione di accesso o l'identificatore completo dell'associazione di accesso.

API

Visualizza i dettagli di un'associazione di accesso:

Metodo HTTP e URL:

GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/BINDING_ID"

PowerShell

Esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ],
  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

Aggiornare un'associazione di accesso

Puoi aggiornare un'associazione di accesso per:

  • Aggiungere, rimuovere o modificare le applicazioni a cui è applicata una policy.
  • Modificare i livelli di accesso per un'applicazione all'interno di un gruppo di utenti.
  • Aggiungere un nuovo livello di accesso dry run o promuovere uno esistente a un livello live.

Console

  1. Nella Google Cloud console, vai alla pagina Gestore contesto accesso.

    Vai a Gestore contesto accesso

  2. Se ti viene chiesto, seleziona un progetto.

  3. Nella pagina Gestore contesto accesso, seleziona un'associazione di accesso e fai clic su Modifica per aggiornarla.

Non puoi aggiornare le associazioni di accesso con i livelli di accesso dry run o i controlli della sessione nella console. Google Cloud

gcloud

  1. Crea un file di associazione YAML.

    gcloud access-context-manager cloud-bindings update \
      --binding=ACCESS_BINDING \
      --binding-file=BINDING_FILE_PATH \
      --level=DEFAULT_ACCESS_LEVEL \
      --dry-run-level=DEFAULT_DRY_RUN_ACCESS_LEVEL
    [  --session-length=DEFAULT_SESSION_LENGTH                ]
    [  --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD  ]
    

    Sostituisci quanto segue:

    • ACCESS_BINDING è nella postura organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
    • BINDING_FILE_PATH: il percorso del file YAML che contiene lo schema dell'associazione di accesso. Il file di associazione supporta solo scopedAccessSettings.
    • DEFAULT_ACCESS_LEVEL: il nome del livello di accesso facoltativo, nel formato accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. Sostituisci POLICY_ID con l'ID della policy di accesso e ACCESS_LEVEL_NAME con il nome del livello di accesso.
    • DEFAULT_DRY_RUN_ACCESS_LEVEL_2: un nome di livello di accesso facoltativo nel formato `accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME`. Includi questo flag per applicare il livello di accesso di dry run specificato a tutte le applicazioni per impostazione predefinita se non sono specificate nel file YAML.
    • DEFAULT_SESSION_LENGTH: la durata della sessione facoltativa nel formato orario, ad esempio 15h per 15 ore o 2h per due ore.
    • DEFAULT_SESSION_REAUTH_METHOD: il metodo facoltativo per richiedere agli utenti di verificare nuovamente la propria identità, che deve essere uno dei seguenti:
      • LOGIN: applica l'accesso standard, che può includere MFA o altri fattori definiti da Workspace.
      • PASSWORD: richiede solo una password, anche se sono definiti altri fattori. Se le password vengono gestite utilizzando un IdP esterno, gli utenti vengono reindirizzati all'IdP. Se la sessione IdP è attiva, gli utenti vengono autenticati nuovamente in modo implicito. Se l'IdP non è attivo, gli utenti devono accedere tramite l'IdP.
      • SECURITY_KEY: richiede una chiave di sicurezza hardware.

    Come funzionano insieme gli argomenti --level e --binding-file

    • Se utilizzi solo --binding-file, le policy vengono applicate solo alle applicazioni nel file.
    • Se utilizzi solo --level, il livello di accesso si applica a tutte le applicazioni.
    • Se utilizzi entrambi, le regole vengono combinate. Il valore --level si applica a tutte le applicazioni, mentre le policy nel file YAML specificato da --binding-file si applicano solo alle applicazioni come definite nel file.

    Utilizzare i controlli della sessione

    • Per impostare i controlli della sessione predefiniti per tutte le applicazioni, utilizza --session-length e --session-reauth-method.
    • Se definisci anche i controlli della sessione nel file YAML, questi controlli della sessione sostituiscono le impostazioni predefinite per queste applicazioni specifiche.
    • Devi utilizzare --session-length e --session-reauth-method insieme.

    Per rimuovere un livello di accesso predefinito o un livello di accesso dry run predefinito, fornisci una stringa vuota, ad esempio --level= o --dry-run-level=. Se questi argomenti non vengono forniti, il comando update non apporterà modifiche.

    Per rimuovere un controllo della sessione, imposta --session-length=0.

API

  1. Crea un corpo JSON.

    {
      "accessLevels": [
        "DEFAULT_ACCESS_LEVEL"
      ],
      "scopedAccessSettings": [
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "clientId": "CLIENT_ID"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_A"
            ],
            "sessionSettings": {
              "sessionLength": "SESSION_LENGTH",
              "sessionReauthMethod": "SESSION_REAUTH_METHOD",
              "sessionLengthEnabled": true
            }
          }
        },
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "name": "CLIENT_NAME"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_C"
            ]
          }
        }
      ]
    }
    

    Sostituisci quanto segue:

    • DEFAULT_ACCESS_LEVEL: il nome del livello di accesso facoltativo, nel formato accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. Sostituisci POLICY_ID con l'ID della policy di accesso e ACCESS_LEVEL_NAME con il nome del livello di accesso.
    • CLIENT_ID: l'ID client OAuth. Puoi utilizzare clientId o name quando un'applicazione contiene sessionSettings.
    • ACCESS_LEVEL_A: un nome di livello di accesso nel formato accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
    • SESSION_LENGTH: la durata della sessione utilizzando il formato della durata ISO 8601 , ad esempio 30m per 30 minuti o 2h per due ore.
    • SESSION_REAUTH_METHOD: il metodo facoltativo per richiedere agli utenti di verificare nuovamente la propria identità, che deve essere uno dei seguenti:

      • LOGIN: applica l'accesso standard, che può includere MFA o altri fattori definiti da Workspace.
      • PASSWORD: richiede solo una password, anche se sono definiti altri fattori. Se le password vengono gestite utilizzando un IdP esterno, gli utenti vengono reindirizzati all'IdP. Se la sessione IdP è attiva, gli utenti vengono autenticati nuovamente in modo implicito. Se l'IdP non è attivo, gli utenti devono accedere tramite l'IdP.
      • SECURITY_KEY: richiede una chiave di sicurezza hardware.
    • CLIENT_NAME: il nome del client. Puoi utilizzare name o clientId quando un'applicazione contiene sessionSettings.

    • ACCESS_LEVEL_C: un nome di livello di accesso nel formato accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.

  2. Invia la richiesta PATCH.

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASK
    

    Sostituisci quanto segue:

    • ACCESS_BINDING è nella postura organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
    • FIELD_MASK: un elenco obbligatorio di campi separati da virgole che vuoi aggiornare. Indica all'API quali parti dell'associazione di accesso modificare.

    fieldMask deve contenere le chiavi JSON di primo livello nel corpo della richiesta che vuoi aggiornare, che possono contenere accessLevels, dryRunAccessLevels e scopedAccessSettings.

    Se l'operazione va a buon fine, dovresti ricevere una rappresentazione dell'oggetto JSON. In caso di problemi, riceverai un messaggio di errore.

Eliminare le associazioni di accesso

Console

  1. Nella Google Cloud console, vai alla pagina Gestore contesto accesso.

    Vai a Gestore contesto accesso

  2. Se ti viene chiesto, seleziona un progetto.

  3. Nella pagina Gestore contesto accesso, seleziona un'associazione di accesso e fai clic su Elimina.

gcloud

   gcloud access-context-manager cloud-bindings delete \
       --binding ACCESS_BINDING

Sostituisci quanto segue:

  • ACCESS_BINDING è nella postura organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
  • ACCESS_BINDING_NAME è la stringa univoca restituita per l'identificatore name quando è stata creata l'associazione di accesso.

API

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • ACCESS_BINDING_NAME è la stringa univoca restituita per l'identificatore name quando è stata creata l'associazione di accesso.

Metodo HTTP e URL:

DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"

PowerShell

Esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.