Il servizio Organization Policy ha diversi vincoli predefiniti e gestiti che possono influire sui service account della tua organizzazione. Questa pagina ti aiuta a capire quali errori generano queste policy dell'organizzazione e i passaggi che puoi intraprendere per risolverli.
Ruoli obbligatori
Per ottenere le autorizzazioni
necessarie per risolvere i problemi relativi alle policy dell'organizzazione,
chiedi all'amministratore di concederti il
ruolo IAM Amministratore policy dell'organizzazione (roles/orgpolicy.policyAdmin
)
nell'organizzazione.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Risolvi i problemi relativi alla creazione di chiavi del account di servizio disabilitata
Se il vincolo iam.disableServiceAccountKeyCreation
viene applicato alla tua
organizzazione, non puoi creare chiavi per nessun service account della tua
organizzazione. Per saperne di più su questo vincolo, vedi
Disattivare la creazione di account di servizio account.
Errore di creazione della chiave
Se provi a creare una chiave dell'account di servizio, ma l'azione è bloccata dal vincolo iam.disableServiceAccountKeyCreation
, viene visualizzato il seguente messaggio di errore:
Console
Nella console Google Cloud viene visualizzata una finestra di dialogo con il titolo Creazione di chiavi del service account disabilitata. La finestra di dialogo indica che il vincolo
iam.disableServiceAccountKeyCreation
è applicato alla tua
organizzazione.
gcloud
ERROR: (gcloud.iam.service-accounts.keys.create) FAILED_PRECONDITION: Key
creation is not allowed on this service account.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
violations:
- description: Key creation is not allowed on this service account.
subject: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.iam.gserviceaccount.com
type: constraints/iam.disableServiceAccountKeyCreation
REST
{
"error": {
"code": 400,
"message": "Key creation is not allowed on this service account.",
"status": "FAILED_PRECONDITION",
"details": [
{
"@type": "type.googleapis.com/google.rpc.PreconditionFailure",
"violations": [
{
"type": "constraints/iam.disableServiceAccountKeyCreation",
"subject": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.iam.gserviceaccount.com",
"description": "Key creation is not allowed on this service account."
}
]
}
]
}
}
Risoluzione consigliata per l'errore di creazione della chiave del account di servizio
Se un criterio dell'organizzazione ti impedisce di creare una chiave account di servizio, ti consigliamo di procedere nel seguente modo:
Valuta se è necessaria una chiave del account di servizio.
Non è consigliabile utilizzare le chiavi dell'account di servizio per l'autenticazione. Questo perché le chiavi dei account di servizio possono diventare un rischio per la sicurezza se non vengono gestite correttamente, aumentando la tua vulnerabilità a minacce come la divulgazione delle credenziali, l'escalation dei privilegi, la divulgazione di informazioni e la non repudiation.
Nella maggior parte dei casi, per l'autenticazione devi utilizzare un'alternativa più sicura anziché una chiave dell'account di servizio.
Se per il tuo caso d'uso è necessaria una chiave del account di servizio, disabilita il vincolo
iam.disableServiceAccountKeyCreation
per il tuo progetto.
Per disattivare il vincolo dei criteri dell'organizzazione, disattiva l'applicazione del vincolo o esenta il progetto dall'applicazione:
Per disattivare l'applicazione del vincolo per l'intera organizzazione, segui questi passaggi:
Assicurati di disporre del ruolo Amministratore policy dell'organizzazione (
roles/orgpolicy.policyAdmin
) a livello di organizzazione. Questo ruolo è disponibile solo per la concessione alle organizzazioni e non viene visualizzato nell'elenco dei ruoli per i progetti.Per scoprire come concedere ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.
Nel selettore di progetti, seleziona l'organizzazione per cui vuoi disattivare il vincolo
iam.disableServiceAccountKeyCreation
.Nel campo Filtro, inserisci
iam.disableServiceAccountKeyCreation
. Poi, nell'elenco delle policy, fai clic su Disattiva creazione account di servizio account.Fai clic su Gestisci policy.
Nella sezione Origine policy, assicurati che sia selezionata l'opzione Override policy della risorsa padre.
In Applicazione, disattiva l'applicazione di questo vincolo di policy dell'organizzazione.
Fai clic su Imposta policy.
Per esentare il tuo progetto dall'applicazione, segui questi passaggi:
-
Assicurati di disporre del ruolo Amministratore tag (
roles/resourcemanager.tagAdmin
) e del ruolo Amministratore criteri dell'organizzazione (roles/orgpolicy.policyAdmin
) a livello di organizzazione. Per scoprire come concedere ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni. -
A livello di organizzazione, crea una chiave tag e un valore tag che utilizzerai per definire se una risorsa deve essere esentata dalla policy dell'organizzazione. Ti consigliamo di creare un tag con la chiave
disableServiceAccountKeyCreation
e i valorienforced
enot_enforced
.Per scoprire come creare chiavi e valori dei tag, consulta Creazione e definizione di un nuovo tag.
-
Collega il tag
disableServiceAccountKeyCreation
all'organizzazione e imposta il valore suenforced
. Tutte le risorse dell'organizzazione ereditano questo valore del tag, a meno che non venga sovrascritto con un valore diverso.Per scoprire come collegare i tag alle risorse, consulta Collegamento dei tag alle risorse.
-
Per ogni account di servizio che vuoi esentare dal criterio dell'organizzazione, allega il tag
disableServiceAccountKeyCreation
e imposta il relativo valore sunot_enforced
. L'impostazione di un valore tag per unaccount di serviziot in questo modo sostituisce il valore tag ereditato dall'organizzazione. -
Crea o aggiorna il criterio dell'organizzazione che impedisce la creazione di chiavi del account di servizio in modo che non applichi il vincolo per le risorse esenti. Queste norme devono prevedere le seguenti regole:
-
Configura il vincolo
iam.disableServiceAccountKeyCreation
in modo che non venga applicato a nessuna risorsa con il tagdisableServiceAccountKeyCreation: not_enforced
. La condizione in questa regola dovrebbe essere simile alla seguente:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
-
Configura il vincolo
iam.disableServiceAccountKeyCreation
in modo che venga applicato a tutte le altre risorse.
-
-
Assicurati di disporre del ruolo Amministratore tag (
Risolvi i problemi relativi alla creazione di account di servizio disabilitata
Se il vincolo iam.disableServiceAccountCreation
è applicato alla tua
organizzazione, non puoi creare service account in nessun progetto della tua
organizzazione. Per ulteriori informazioni su questo vincolo, vedi
Disattivare account di servizio account.
Errore durante la creazione del service account
Se provi a creare un account di servizio, ma l'azione viene bloccata dal vincolo iam.disableServiceAccountCreation
, viene visualizzato il seguente messaggio di errore:
Console
Nella console Google Cloud viene visualizzata una finestra di dialogo con il titolo Creazione service account non riuscita. La finestra di dialogo indica: L'azione che hai tentato di eseguire non è riuscita. Riprova.
gcloud
ERROR: (gcloud.iam.service-accounts.create) FAILED_PRECONDITION: Service account
creation is not allowed on this project.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
violations:
- description: Service account creation is not allowed on this project.
subject: projects/PROJECT_ID/serviceAccounts/?configvalue=
type: constraints/iam.disableServiceAccountCreation
REST
{
"error": {
"code": 400,
"message": "Service account creation is not allowed on this project.",
"status": "FAILED_PRECONDITION",
"details": [
{
"@type": "type.googleapis.com/google.rpc.PreconditionFailure",
"violations": [
{
"type": "constraints/iam.disableServiceAccountCreation",
"subject": "projects/PROJECT_ID/serviceAccounts/?configvalue=",
"description": "Service account creation is not allowed on this project."
}
]
}
]
}
}
Risoluzione consigliata per l'errore di creazione del account di servizio
Se un criterio dell'organizzazione ti impedisce di creare un account di servizio, ti consigliamo di procedere nel seguente modo:
Valuta se è necessario un account di servizio.
Consulta Scegliere quando utilizzare i service account per verificare che sia necessario un account di servizio per il tuo caso d'uso.
Se è necessario un account di servizio per il tuo caso d'uso, disattiva il vincolo
iam.disableServiceAccountCreation
per il tuo progetto.
Per disattivare il vincolo dei criteri dell'organizzazione, disattiva l'applicazione del vincolo o esenta il progetto dall'applicazione:
Per disattivare l'applicazione del vincolo per l'intera organizzazione, segui questi passaggi:
Assicurati di disporre del ruolo Amministratore policy dell'organizzazione (
roles/orgpolicy.policyAdmin
) a livello di organizzazione. Questo ruolo è disponibile solo per la concessione alle organizzazioni e non viene visualizzato nell'elenco dei ruoli per i progetti.Per scoprire come concedere ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.
Nel selettore di progetti, seleziona l'organizzazione per cui vuoi disattivare il vincolo
iam.disableServiceAccountCreation
.Nel campo Filtro, inserisci
iam.disableServiceAccountCreation
. Quindi, nell'elenco dei criteri, fai clic su Disattiva account di servizio account.Fai clic su Gestisci policy.
Nella sezione Origine policy, assicurati che sia selezionata l'opzione Override policy della risorsa padre.
In Applicazione, disattiva l'applicazione di questo vincolo di policy dell'organizzazione.
Fai clic su Imposta policy.
Per esentare il tuo progetto dall'applicazione, segui questi passaggi:
-
Assicurati di disporre del ruolo Amministratore tag (
roles/resourcemanager.tagAdmin
) e del ruolo Amministratore criteri dell'organizzazione (roles/orgpolicy.policyAdmin
) a livello di organizzazione. Per scoprire come concedere ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni. -
A livello di organizzazione, crea una chiave tag e un valore tag che utilizzerai per definire se una risorsa deve essere esentata dalla policy dell'organizzazione. Ti consigliamo di creare un tag con la chiave
disableServiceAccountCreation
e i valorienforced
enot_enforced
.Per scoprire come creare chiavi e valori dei tag, consulta Creazione e definizione di un nuovo tag.
-
Collega il tag
disableServiceAccountCreation
all'organizzazione e imposta il valore suenforced
. Tutte le risorse dell'organizzazione ereditano questo valore del tag, a meno che non venga sovrascritto con un valore diverso.Per scoprire come collegare i tag alle risorse, consulta Collegamento dei tag alle risorse.
-
Per ogni progetto o cartella che vuoi esentare dalla policy dell'organizzazione, associa il tag
disableServiceAccountCreation
e imposta il relativo valore sunot_enforced
. L'impostazione di un valore tag per un progetto o una cartella in questo modo sostituisce il valore tag ereditato dall'organizzazione. -
Crea o aggiorna il criterio dell'organizzazione che impedisce la creazione di service account in modo che non applichi il vincolo per le risorse esenti. Queste norme devono prevedere le seguenti regole:
-
Configura il vincolo
iam.disableServiceAccountCreation
in modo che non venga applicato a nessuna risorsa con il tagdisableServiceAccountCreation: not_enforced
. La condizione in questa regola dovrebbe essere simile alla seguente:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountCreation', 'not_enforced')"
-
Configura il vincolo
iam.disableServiceAccountCreation
in modo che venga applicato a tutte le altre risorse.
-
-
Assicurati di disporre del ruolo Amministratore tag (
Risolvi i problemi relativi alla concessione dei ruoli ai service account predefiniti
Gli account di servizio predefiniti vengono creati automaticamente quando utilizzi determinati serviziGoogle Cloud . Hanno i seguenti identificatori:
- Account di servizio predefinito del servizio App Engine:
PROJECT_ID@appspot.gserviceaccount.com
- Account di servizio predefinito di Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
A tutti i service account predefiniti viene concesso automaticamente il ruolo Editor
(roles/editor
) al momento della creazione, a meno che questo comportamento non sia disattivato da una
policy dell'organizzazione. Esistono due vincoli dei criteri dell'organizzazione che impediscono
l'assegnazione del ruolo Editor ai service account predefiniti:
iam.automaticIamGrantsForDefaultServiceAccounts
: un vincolo predefinito che impedisce la concessione automatica dei ruoli ai service account predefiniti. Questo vincolo non ti impedisce di concedere in un secondo momento il ruolo Editor agli account di servizio predefiniti.constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
: Un vincolo gestito che impedisce che i ruoli Editor e Proprietario (roles/owner
) vengano mai concessi ai service account predefiniti.
Errore durante la concessione dei ruoli di base ai service account
Se il vincolo iam.automaticIamGrantsForDefaultServiceAccounts
o il vincolo constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
viene applicato al tuo progetto, i carichi di lavoro nel tuo progetto che utilizzano gli account di servizio predefiniti potrebbero riscontrare errori di autorizzazione insufficiente.
Per scoprire quali ruoli concedere a un account di servizio predefinito, consulta
Soluzione consigliata per la concessione dei ruoli ai service account predefiniti.
Il vincolo iam.automaticIamGrantsForDefaultServiceAccounts
non causa
errori da solo. Tuttavia, a causa di questo vincolo, è possibile che un
carico di lavoro che utilizza ilaccount di serviziot predefinito non disponga delle autorizzazioni
necessarie.
Inoltre, se il vincolo
constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
è applicato al tuo progetto, verrà visualizzato un messaggio di errore simile
al seguente se provi a concedere il ruolo Proprietario o Editor a un account di servizio
predefinito:
Console
Nella console Google Cloud viene visualizzata una finestra di dialogo con il titolo Aggiornamento criteri IAM
non riuscito. La finestra di dialogo indica che le modifiche che stai tentando di apportare alla policy IAM sono state limitate dall'amministratore delle policy dell'organizzazione, quindi elenca i vincoli che bloccano l'aggiornamento. I vincoli
elencati includono il vincolo customConstraints/custom.cantGrantProjectIamAdmin
.
gcloud
ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: Operation denied by
org policy on resource 'RESOURCE_ID':
["constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts":
"When this constraint is enforced, it prevents anyone from granting the Editor
role (roles/editor) or the Owner role (roles/owner) to the Compute Engine and
App Engine default service accounts, at any time. To learn more about default
service accounts, see
https://cloud.google.com/iam/help/service-accounts/default. Enforcing this
constraint prevents the default service accounts from automatically being
granted the Editor role (roles/editor). This might cause permission issues for
services that use these service accounts. To learn which roles to grant to each
service account, see
https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default."].
REST
{
"error": {
"code": 400,
"message": "Operation denied by org policy on resource
'RESOURCE_ID':
[\"constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts\":
\"When this constraint is enforced, it prevents anyone from granting the
Editor role (roles/editor) or the Owner role (roles/owner) to the Compute
Engine and App Engine default service accounts, at any time. To learn more
about default service accounts, see
https://cloud.google.com/iam/help/service-accounts/default.\n Enforcing this
constraint prevents the default service accounts from automatically being
granted the Editor role (roles/editor). This might cause permission issues
for services that use these service accounts. To learn which roles to grant
to each service account, see
https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default.\"].",
"status": "FAILED_PRECONDITION",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "CUSTOM_ORG_POLICY_VIOLATION",
"domain": "googleapis.com",
"metadata": {
"customConstraints": "constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts",
"resource": "projects/PROJECT_ID"
}
}
]
}
}
Risoluzione consigliata per la concessione dei ruoli agli account di servizio predefiniti
Se un criterio dell'organizzazione ti impedisce di concedere il ruolo Editor o Proprietario a unaccount di serviziot predefinito, devi trovare un ruolo meno permissivo da concedere aaccount di serviziont. Il ruolo necessario per il account di servizio dipende dal servizio che utilizzi e dalle attività che vuoi svolgere.
Consulta la seguente tabella per determinare quale ruolo concedere a quale account di servizio predefinito, a seconda del servizio che stai utilizzando:
Servizio | Service account predefinito | Ruolo da concedere |
---|---|---|
App Engine |
Account di servizio predefinito di App Engine (PROJECT_ID@appspot.gserviceaccount.com )
|
Ruolo Account Cloud Build (roles/cloudbuild.builds.builder )
|
Compute Engine |
Account di servizio predefinito di Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
I ruoli necessari per il account di servizio predefinito dipendono dall'attività che vuoi svolgere. Per capire quali ruoli sono necessari, consulta la documentazione relativa all'attività che vuoi svolgere o l'articolo Trovare i ruoli predefiniti giusti. Quando decidi quale ruolo concedere, segui le best practice descritte nella pagina Service account della documentazione di Compute Engine. |
Cloud Build |
Account di servizio predefinito di Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Ruolo Service Account Cloud Build (roles/cloudbuild.builds.builder )
|
Cloud Deploy |
Account di servizio predefinito di Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Per vedere quali ruoli concedere a questo account di servizio, trova la guida rapida di Cloud Deploy che corrisponde al tuo caso d'uso, quindi concedi i ruoli descritti in quella guida rapida. Per un elenco delle guide rapide di Cloud Deploy, consulta la sezione Guide rapide nella documentazione di Cloud Deploy. |
Cloud Run Functions e Cloud Functions |
Account di servizio predefinito di Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Per eseguire il deployment delle funzioni: ruolo Account Cloud Build ( Per ulteriori informazioni, vedi Service account personalizzato per Cloud Build. |
Cloud Run |
Account di servizio predefinito di Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
I ruoli necessari per il account di servizio predefinito dipendono dall'attività che vuoi svolgere. Per capire quali ruoli sono necessari, consulta la documentazione relativa all'attività che vuoi svolgere o l'articolo Trovare i ruoli predefiniti giusti. Per informazioni dettagliate sui ruoli Cloud Run, consulta Controllo dell'accesso con IAM nella documentazione di Cloud Run. |
Google Kubernetes Engine |
Account di servizio predefinito di Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Ruolo Kubernetes Engine Default Node Service Account ( Per maggiori informazioni, consulta Utilizzare i service account IAMprivilegio minimoi minimi. |
Workflow |
Account di servizio predefinito di Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
I ruoli necessari per il account di servizio predefinito dipendono dall'attività che vuoi svolgere. Per capire quali ruoli sono necessari, consulta la documentazione relativa all'attività che vuoi svolgere o l'articolo Trovare i ruoli predefiniti giusti. Segui le best practice descritte nella pagina Concedi l'autorizzazione dei workflow per l'accesso alle Google Cloud risorse nella documentazione di Workflows. |