Resource Manager fornisce vincoli che possono essere usati nei criteri dell'organizzazione per limitare l'utilizzo dei Account di servizio IAM (Identity and Access Management).
Molti di questi vincoli determinano se gli account di servizio e altre risorse possono essere create o configurate in modi specifici. Questi vincoli non sono retroactive; non influiscono sul servizio creato e configurato in precedenza .
Prima di iniziare
Devi disporre dell'autorizzazione per la modifica
criteri dell'organizzazione da impostare
i vincoli. Ad esempio,
orgpolicy.policyAdmin
dispone dell'autorizzazione per impostare vincoli dei criteri dell'organizzazione. Leggi
Utilizzo dei vincoli
pagina per saperne di più sulla gestione dei criteri a livello di organizzazione.
Vincoli booleani
I seguenti vincoli sono tipi vincolo booleano, che sono impostati su true o false.
Disabilita le concessioni automatiche dei ruoli agli account di servizio predefiniti
Alcuni servizi Google Cloud creano automaticamente
account di servizio predefiniti. Quando un valore predefinito
all'account di servizio creato, gli viene assegnato automaticamente il ruolo Editor
(roles/editor
) nel progetto.
Per migliorare la sicurezza, ti consigliamo vivamente di disabilitare il ruolo automatico
concessione. Utilizza il valore booleano iam.automaticIamGrantsForDefaultServiceAccounts
per disabilitare la concessione automatica del ruolo.
Disattiva creazione account di servizio
Puoi utilizzare il vincolo booleano iam.disableServiceAccountCreation
per
per disattivare la creazione di nuovi account di servizio. Questo permette di centralizzare
degli account di servizio, senza limitare le altre autorizzazioni
che gli sviluppatori hanno sui progetti.
Se esegui l'applicazione forzata di questo vincolo in un progetto, di servizi non possono creare automaticamente account di servizio predefiniti. Di conseguenza, se il progetto esegue carichi di lavoro che devono simulano l'identità di un account di servizio, potrebbe non contenere un account di servizio utilizzabile dal carico di lavoro. A risolvere questo problema, puoi abilita la simulazione dell'identità degli account di servizio tra progetti. Quando abiliti questa funzionalità, puoi creare account di servizio in un ambiente un progetto di servizio, quindi collegare gli account di servizio alle risorse di altri progetti.
Per ulteriori informazioni sull'organizzazione degli account di servizio, vedi Dove creare gli account di servizio.
Disattiva creazione chiavi account di servizio
Puoi utilizzare il vincolo booleano iam.disableServiceAccountKeyCreation
per
disattivare la creazione di nuove chiavi degli account di servizio esterne. Questo consente di
controllare l'utilizzo di credenziali a lungo termine non gestite per gli account di servizio. Quando
questo vincolo è impostato, non è possibile creare credenziali gestite dall'utente per il servizio
dei progetti interessati dal vincolo.
Disabilita caricamento chiavi account di servizio
Puoi utilizzare il vincolo booleano iam.disableServiceAccountKeyUpload
per
Disabilita il caricamento di chiavi pubbliche esterne negli account di servizio. Quando questo
è impostato, gli utenti non possono caricare chiavi pubbliche negli account di servizio
a progetti interessati dal vincolo.
Disabilita il collegamento degli account di servizio alle risorse in altri progetti
Ogni account di servizio si trova in un progetto. Puoi utilizzare lo
iam.disableCrossProjectServiceAccountUsage
vincolo booleano per prevenire
di servizio in un progetto vengano collegati alle risorse
in modo programmatico
a gestire i progetti.
Se vuoi consentire l'utilizzo degli account di servizio in più progetti, consulta Abilitazione della simulazione dell'identità degli account di servizio tra progetti.
Limita la rimozione dei blocchi di progetto quando vengono utilizzati account di servizio in più progetti
Quando consenti il collegamento degli account di servizio di un progetto alle risorse in altri
per i progetti, IAM aggiunge un
blocco del progetto che ti impedisce di
l'eliminazione del progetto. Per impostazione predefinita, chiunque abbia
L'autorizzazione resourcemanager.projects.updateLiens
per il progetto può eliminare
blocco.
Se applichi l'operatore booleano iam.restrictCrossProjectServiceAccountLienRemoval
vincolo, le entità possono eliminare il blocco solo se hanno
Autorizzazione resourcemanager.projects.updateLiens
per l'organizzazione.
Ti consigliamo di applicare questo vincolo se uno dei tuoi progetti lo consente impersonificazione degli account di servizio tra progetti.
Disabilita creazione cluster Workload Identity
Puoi utilizzare il vincolo booleano iam.disableWorkloadIdentityClusterCreation
per richiedere che tutti i nuovi cluster Google Kubernetes Engine abbiano
Funzionalità Workload Identity
disattivate al momento della creazione. Se vuoi controllare rigorosamente il servizio
l'accesso all'account nella tua organizzazione, è consigliabile disabilitare Workload Identity
oltre alla creazione degli account di servizio
e alla creazione delle chiavi degli account di servizio.
I cluster GKE esistenti con Workload Identity abilitato non sarà interessato e continuerà a funzionare normalmente.
Applicazione di un vincolo booleano
Console
Per impostare un criterio dell'organizzazione che applichi un vincolo per limitare il servizio: utilizzo dell'account:
Nella console Google Cloud, vai alla pagina Criteri dell'organizzazione.
Dal selettore dei progetti, scegli l'organizzazione per la quale vuoi limitare l'utilizzo degli account di servizio.
Fai clic su uno dei vincoli booleani di utilizzo degli account di servizio elencati in questo .
Fai clic su Gestisci criterio.
In Si applica a, seleziona Sostituisci criterio della risorsa padre.
Fai clic su Aggiungi una regola.
In Applicazione, seleziona On.
Per applicare il criterio, fai clic su Imposta criterio.
gcloud
I criteri possono essere impostati tramite Google Cloud CLI.
Per limitare l'utilizzo degli account di servizio, esegui questo comando:
gcloud resource-manager org-policies enable-enforce \ --organization 'ORGANIZATION_ID' \ BOOLEAN_CONSTRAINT
Dove BOOLEAN_CONSTRAINT è il vincolo booleano che vuoi in modo forzato.
Per disabilitare l'applicazione, puoi eseguire lo stesso comando utilizzando
disable-enforce.
Per saperne di più sull'uso dei vincoli nei criteri dell'organizzazione, vedi Utilizzo dei vincoli.
Criterio di esempio con vincolo booleano
Il seguente snippet di codice mostra un criterio dell'organizzazione che applica
iam.disableServiceAccountCreation
vincolo booleano, che impedisce il servizio
la creazione di nuovi account:
name: organizations/012345678901/policies/iam.disableServiceAccountCreation
spec:
rules:
- enforce: true
Vincoli elenco
I seguenti vincoli sono tipi vincolo di elenco, che sono impostati su un elenco di valori.
Estendi la durata dei token di accesso OAuth 2.0
Puoi creare un token di accesso OAuth 2.0 che fornisce credenziali di breve durata per un account di servizio.
Per impostazione predefinita, la durata massima di un token di accesso è di 1 ora (3600 secondi).
Tuttavia, puoi estendere la durata massima a 12 ore. Per farlo, identifica
account di servizio che necessitano di una durata estesa per i token di accesso, quindi aggiungi
questi account di servizio a un criterio dell'organizzazione che include il vincolo dell'elenco constraints/iam.allowServiceAccountCredentialLifetimeExtension
.
Limita la durata delle chiavi degli account di servizio
Una chiave dell'account di servizio consente di di autenticare una richiesta come account di servizio. Per impostazione predefinita, le chiavi degli account di servizio non scadono mai. Puoi modificare questa impostazione predefinita impostando una scadenza per tutti le chiavi appena create nel progetto, nella cartella o nell'organizzazione.
Per impostare una scadenza, utilizza constraints/iam.serviceAccountKeyExpiryHours
dell'elenco per specificare il numero di ore per le quali una chiave appena creata
valido. Trascorso questo periodo di tempo, la chiave dell'account di servizio scade e puoi
non lo usi più.
Questo vincolo dell'elenco accetta i seguenti valori ALLOW
; non accetta
DENY
valori. Come best practice, utilizza la data di scadenza più breve che soddisfa i tuoi
esigenze:
1h
: 1 ora8h
: 8 ore24h
: 24 ore (1 giorno)168h
: 168 ore (7 giorni)336h
: 336 ore (14 giorni)720h
: 720 ore (30 giorni)1440h
: 1440 ore (60 giorni)2160h
: 2160 ore (90 giorni)
Impossibile unire il vincolo constraints/iam.serviceAccountKeyExpiryHours
con un criterio padre. Per applicare questo vincolo, devi sostituire o
ereditare il criterio padre.
Specifica i provider di identità esterni consentiti
Se utilizzi
federazione delle identità per i carichi di lavoro, che
consente alle identità esterne di accedere alle risorse Google Cloud, puoi specificare
i provider di identità esterni consentiti. Per impostazione predefinita, tutti i fornitori
consentito. Per impostare un limite, utilizza
Vincolo dell'elenco constraints/iam.workloadIdentityPoolProviders
per specificare gli URI
per i provider consentiti, usando i seguenti formati:
Amazon Web Services (AWS):
https://sts.amazonaws.com
Per limitare gli account AWS consentiti, utilizza Vincolo di elenco
constraints/iam.workloadIdentityPoolAwsAccounts
come descritto in questa pagina.Microsoft Azure:
https://sts.windows.net/azure-tenant-id
Altri provider di identità che supportano OpenID Connect (OIDC): utilizza l'emittente URI del tuo provider di identità.
Specifica gli account AWS consentiti
Se utilizzi
federazione delle identità per i carichi di lavoro, che
consente alle identità esterne di accedere alle risorse Google Cloud, puoi specificare
quali account AWS sono autorizzati ad accedere alle tue risorse. Per impostazione predefinita, i carichi di lavoro
da qualsiasi account AWS possono accedere alle tue risorse Google Cloud. A
limitare gli account AWS consentiti, utilizza
constraints/iam.workloadIdentityPoolAwsAccounts
vincolo dell'elenco per specificare un
di ID account consentiti.
Disabilita automaticamente le chiavi degli account di servizio esposte
A volte Google Cloud rileva che una determinata chiave dell'account di servizio è stata
esposto, ad esempio, potrebbe rilevare una chiave in un repository pubblico. A
specifica cosa fa Google Cloud con queste chiavi, utilizza
Vincolo di elenco iam.serviceAccountKeyExposureResponse
.
Questo vincolo dell'elenco accetta i seguenti valori ALLOW
; non accetta
DENY
valori.
DISABLE_KEY
: se Google Cloud rileva una chiave esposta, disattiverà automaticamente la chiave. Crea inoltre un evento Cloud Audit Logs invia una notifica sulla chiave esposta ai proprietari del progetto e al team contatti.WAIT_FOR_ABUSE
: Google Cloud non disattiverà proattivamente le chiavi esposte. Tuttavia, Google Cloud potrebbe comunque disabilitare le chiavi esposte se vengono utilizzate in modi che incidono negativamente sulla piattaforma. A prescindere dal fatto che le persone esposte è disabilitata, Google Cloud crea un evento Cloud Audit Logs e invia una notifica sulla chiave esposta ai proprietari del progetto e al team contatti.
Gli eventi di Cloud Audit Logs vengono creati quando Google Cloud rileva un chiave divulgata o disattiva una chiave.
Quando Google Cloud rileva che una chiave è stata divulgata, si verifica un evento di abuso creati nei log degli eventi illeciti.
Quando Google Cloud disabilita una chiave, gli audit log contengono la dell'entità
gcp-compromised-key-response@system.gserviceaccount.com
.
Ti consigliamo vivamente di impostare questo vincolo su DISABLE_KEY
. Impostazione
questo vincolo a WAIT_FOR_ABUSE
aumenta il rischio che le chiavi divulgate
utilizzato in modo improprio.
Se decidi di impostare il vincolo su WAIT_FOR_ABUSE
, ti consigliamo di
ti abboni agli eventi di Cloud Audit Logs, rivedi le tue informazioni di contatto per la sicurezza
in Contatti necessari,
e assicurati che i tuoi contatti per la sicurezza rispondano alle notifiche in modo tempestivo.
Il vincolo iam.serviceAccountKeyExposureResponse
non può essere unito a un
criterio padre. Per applicare questo vincolo, devi sostituire il criterio padre.
Impostazione di un vincolo di elenco
Console
Per impostare un criterio dell'organizzazione che contenga un vincolo di elenco:
Nella console Google Cloud, vai alla pagina Criteri dell'organizzazione.
Dal selettore dei progetti, seleziona la risorsa per cui vuoi per impostare il criterio dell'organizzazione.
Nella pagina Criteri dell'organizzazione, seleziona un vincolo dall'elenco. Viene visualizzata la pagina Dettagli criterio per il vincolo in questione.
Per aggiornare il criterio dell'organizzazione per questa risorsa, fai clic su Gestisci criterio.
In Applicazione delle norme, seleziona un'opzione di applicazione:
- Per unire e valutare insieme i criteri dell'organizzazione, seleziona Unisci con l'elemento principale. Per ulteriori informazioni sull'ereditarietà e la gerarchia delle risorse, consulta Informazioni sulla valutazione della gerarchia.
- Per eseguire l'override dei criteri ereditati da una risorsa padre, seleziona Sostituisci.
Fai clic su Aggiungi una regola.
In Valori criterio, seleziona Personalizzato.
In Tipo di criterio, seleziona Consenti.
In Valori personalizzati, inserisci il primo valore per il vincolo dell'elenco.
- Se vuoi aggiungere altri valori, fai clic su Aggiungi valore per creare altre righe e aggiungi un valore a ogni riga.
Dopo aver aggiunto i valori, fai clic su Fine.
Per applicare il criterio, fai clic su Imposta criterio.
gcloud
I criteri possono essere impostati mediante Google Cloud CLI:
gcloud resource-manager org-policies allow \ CONSTRAINT_NAME \ VALUE_1 [VALUE_N ...] \ --organization=ORGANIZATION_ID \
Sostituisci i seguenti valori:
CONSTRAINT_NAME
: il nome del vincolo dell'elenco. Ad esempio:constraints/iam.allowServiceAccountCredentialLifetimeExtension
.VALUE_1
eVALUE_N...
: Valori per il vincolo dell'elenco.
Per saperne di più sull'uso dei vincoli nei criteri dell'organizzazione, vedi Utilizzo dei vincoli.
Criterio di esempio con vincolo dell'elenco
Il seguente snippet di codice mostra un criterio dell'organizzazione che applica
iam.allowServiceAccountCredentialLifetimeExtension
vincolo dell'elenco, che
estende la durata massima dei token di accesso OAuth 2.0 per il servizio elencato
account:
name: organizations/012345678901/policies/iam.allowServiceAccountCredentialLifetimeExtension
spec:
rules:
- values:
allowedValues:
- SERVICE_ACCOUNT_ADDRESS
Messaggi di errore
Disattiva creazione account di servizio
Se iam.disableServiceAccountCreation
viene applicato in modo forzato, la creazione di un account di servizio
non riuscirà e restituirà l'errore:
FAILED_PRECONDITION: Service account creation is not allowed on this project.
Disattiva creazione chiavi account di servizio
Se iam.disableServiceAccountKeyCreation
viene applicato in modo forzato, la creazione di un account di servizio
non riuscirà e restituirà l'errore:
FAILED_PRECONDITION: Key creation is not allowed on this service account.
Disabilita creazione cluster Workload Identity
Se iam.disableWorkloadIdentityClusterCreation
viene applicato in modo forzato, la creazione di un
Il cluster GKE con Workload Identity abilitato avrà esito negativo con il
errore:
FAILED_PRECONDITION: Workload Identity is disabled by the organization policy constraints/iam.disableWorkloadIdentityClusterCreation. Contact your administrator to enable this feature.
Risoluzione dei problemi noti
Account di servizio predefiniti
L'applicazione del vincolo iam.disableServiceAccountCreation
impedirà
la creazione di account di servizio
in quel progetto. Questa limitazione influisce anche
I servizi Google Cloud che, se abilitati, creano automaticamente
di servizio nel progetto, ad esempio:
- Compute Engine
- GKE
- App Engine
- Dataflow
Se il vincolo iam.disableServiceAccountCreation
viene applicato, il tentativo di
l'abilitazione di questi servizi non riuscirà perché i relativi account di servizio predefiniti
è stato creato.
Per risolvere il problema:
- Rimuovi temporaneamente il vincolo
iam.disableServiceAccountCreation
. - Attiva i servizi desiderati.
- Crea qualsiasi altro account di servizio desiderato.
- Infine, applica di nuovo il vincolo.