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 progettoORGANIZATION_ID: l'ID dell'organizzazioneFILTER: un filtro che descrive la risorsa a cui è associata la policy di accesso, ad esempio:Gruppi di utenti:
principal:group_keyService 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
Nella Google Cloud console, vai alla pagina Gestore contesto accesso.
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
Nella Google Cloud console, vai alla pagina Gestore contesto accesso.
Se ti viene chiesto, seleziona un progetto.
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
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 posturaorganizations/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. SostituisciPOLICY_IDcon l'ID della policy di accesso eACCESS_LEVEL_NAMEcon 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
15hper 15 ore o2hper 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
--levele--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
--levelsi applica a tutte le applicazioni, mentre le policy nel file YAML specificato da--binding-filesi 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-lengthe--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-lengthe--session-reauth-methodinsieme.
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 comandoupdatenon apporterà modifiche.Per rimuovere un controllo della sessione, imposta
--session-length=0.-
API
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. SostituisciPOLICY_IDcon l'ID della policy di accesso eACCESS_LEVEL_NAMEcon il nome del livello di accesso. - CLIENT_ID: l'ID client OAuth. Puoi utilizzare
clientIdonamequando un'applicazione contienesessionSettings. - 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
30mper 30 minuti o2hper 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
nameoclientIdquando un'applicazione contienesessionSettings.ACCESS_LEVEL_C: un nome di livello di accesso nel formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
-
DEFAULT_ACCESS_LEVEL: il nome del livello di accesso facoltativo, nel formato
Invia la richiesta PATCH.
PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASKSostituisci quanto segue:
-
ACCESS_BINDINGè nella posturaorganizations/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.
fieldMaskdeve contenere le chiavi JSON di primo livello nel corpo della richiesta che vuoi aggiornare, che possono contenereaccessLevels,dryRunAccessLevelsescopedAccessSettings.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
Nella Google Cloud console, vai alla pagina Gestore contesto accesso.
Se ti viene chiesto, seleziona un progetto.
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 posturaorganizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME. -
ACCESS_BINDING_NAMEè la stringa univoca restituita per l'identificatorenamequando è 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'identificatorenamequando è 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.