Il servizio di criteri dell'organizzazione ha diversi vincoli predefiniti e gestiti che possono colpire gli account di servizio della tua organizzazione. Questa pagina ti aiuta a capire quali errori generano i criteri dell'organizzazione e i passaggi che puoi svolgere per risolverli.
Risolvere i problemi relativi alla creazione di chiavi del account di servizio disabilitate
Se il vincolo iam.disableServiceAccountKeyCreation
è applicato alla tua
organizzazione, non puoi creare chiavi per gli account di servizio della tua
organizzazione. Per ulteriori informazioni su questo vincolo, consulta
Disattivare la creazione di chiavi dell'account di servizio.
Errore di creazione della chiave
Se provi a creare una chiave dell'account di servizio, ma l'azione viene bloccata dal vincolo iam.disableServiceAccountKeyCreation
, viene visualizzato il seguente messaggio di errore:
Console
Nella console Google Cloud viene visualizzata una finestra di dialogo con l'intestazione La creazione di chiavi dell'account di servizio è 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 dell'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 dell'account di servizio.
Non è consigliabile utilizzare le chiavi dell'account di servizio per l'autenticazione. Questo accade perché le chiavi degli account di servizio possono diventare un rischio per la sicurezza se non vengono gestite correttamente, aumentando la vulnerabilità a minacce come la fuga di credenziali, l'escalation dei privilegi, la divulgazione di informazioni e la non ripudio.
Nella maggior parte dei casi, ti consigliamo di utilizzare un'alternativa più sicura per l'autenticazione anziché una chiave dell'account di servizio.
Se per il tuo caso d'uso è necessaria una chiave dell'account di servizio, disabilita il vincolo
iam.disableServiceAccountKeyCreation
per il tuo progetto.
Per disattivare il vincolo dei criteri dell'organizzazione, disattiva l'applicazione per il vincolo o esenta il progetto dall'applicazione:
Per disattivare l'applicazione del vincolo per l'intera organizzazione:
Assicurati di disporre del ruolo Amministratore delle norme dell'organizzazione (
roles/orgpolicy.policyAdmin
) a livello di organizzazione. Questo ruolo può essere concesso solo alle organizzazioni e non compare nell'elenco dei ruoli per i progetti.Per scoprire come concedere i ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Nella console Google Cloud, vai alla pagina Norme 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 dei criteri, fai clic su Disattiva creazione account di servizio account.Fai clic su Gestisci criterio.
Nella sezione Origine criterio, assicurati che sia selezionata l'opzione Ignora criterio della risorsa padre.
In Applicazione, disattiva l'applicazione per questo vincolo dei criteri dell'organizzazione.
Fai clic su Imposta criterio.
Per esentare il tuo progetto dall'applicazione delle norme:
-
Assicurati di disporre del ruolo Amministratore tag (
roles/resourcemanager.tagAdmin
) e del ruolo Amministratore criteri organizzazione (roles/orgpolicy.policyAdmin
) a livello di organizzazione. Per scoprire come concedere i ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni. -
A livello di organizzazione, crea una chiave e un valore del tag che utilizzerai per definire se una risorsa deve essere esente dai criteri 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 Creare e definire un nuovo tag.
-
Collega il tag
disableServiceAccountKeyCreation
all'organizzazione e impostane il valore suenforced
. Tutte le risorse dell'organizzazione ereditano questo valore del tag, a meno che non venga sovrascritto con un valore del tag diverso.Per scoprire come associare i tag alle risorse, consulta Associare i tag alle risorse.
-
Per ogni account di servizio da esentare dai criteri dell'organizzazione, allega il
tag
disableServiceAccountKeyCreation
e imposta il relativo valore sunot_enforced
. Impostare un valore tag per un account di servizio 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 avere le seguenti regole:
-
Configura il vincolo
iam.disableServiceAccountKeyCreation
in modo che non venga applicato alle risorse con il tagdisableServiceAccountKeyCreation: not_enforced
. La condizione in questa regola dovrebbe avere il seguente aspetto:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
-
Configura il vincolo
iam.disableServiceAccountKeyCreation
da applicare su tutte le altre risorse.
-
-
Assicurati di disporre del ruolo Amministratore tag (
Risolvere i problemi relativi alla creazione di account di servizio disattivati
Se il vincolo iam.disableServiceAccountCreation
è applicato alla tua
organizzazione, non puoi creare account di servizio in nessun progetto della
tua organizzazione. Per ulteriori informazioni su questo vincolo, consulta
Disattivare la creazione di account di servizio.
Errore di creazione dell'account di servizio
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 l'intestazione Creazione account di servizio non riuscita. La finestra di dialogo indica che l'azione tentata 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 dell'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 gli account di servizio per verificare che sia necessario un account di servizio per il tuo caso d'uso.
Se per il tuo caso d'uso è necessario un account di servizio, disattiva il vincolo
iam.disableServiceAccountCreation
per il progetto.
Per disattivare il vincolo dei criteri dell'organizzazione, disattiva l'applicazione per il vincolo o esenta il progetto dall'applicazione:
Per disattivare l'applicazione del vincolo per l'intera organizzazione:
Assicurati di disporre del ruolo Amministratore delle norme dell'organizzazione (
roles/orgpolicy.policyAdmin
) a livello di organizzazione. Questo ruolo può essere concesso solo alle organizzazioni e non compare nell'elenco dei ruoli per i progetti.Per scoprire come concedere i ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Nella console Google Cloud, vai alla pagina Norme dell'organizzazione.
Nel selettore di progetti, seleziona l'organizzazione per cui vuoi disattivare il vincolo
iam.disableServiceAccountCreation
.Nel campo Filtro, inserisci
iam.disableServiceAccountCreation
. Poi, nell'elenco dei criteri, fai clic su Disattiva creazione account di servizio.Fai clic su Gestisci criterio.
Nella sezione Origine criterio, assicurati che sia selezionata l'opzione Ignora criterio della risorsa padre.
In Applicazione, disattiva l'applicazione per questo vincolo dei criteri dell'organizzazione.
Fai clic su Imposta criterio.
Per esentare il tuo progetto dall'applicazione delle norme:
-
Assicurati di disporre del ruolo Amministratore tag (
roles/resourcemanager.tagAdmin
) e del ruolo Amministratore criteri organizzazione (roles/orgpolicy.policyAdmin
) a livello di organizzazione. Per scoprire come concedere i ruoli a livello di organizzazione, consulta Gestire l'accesso a progetti, cartelle e organizzazioni. -
A livello di organizzazione, crea una chiave e un valore del tag che utilizzerai per definire se una risorsa deve essere esente dai criteri 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 Creare e definire un nuovo tag.
-
Collega il tag
disableServiceAccountCreation
all'organizzazione e impostane il valore suenforced
. Tutte le risorse dell'organizzazione ereditano questo valore del tag, a meno che non venga sovrascritto con un valore del tag diverso.Per scoprire come associare i tag alle risorse, consulta Associare i tag alle risorse.
-
Per ogni progetto o cartella che vuoi esentare dai criteri dell'organizzazione, allega 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 account di servizio in modo che non applichi il vincolo per le risorse esenti. Queste norme devono avere le seguenti regole:
-
Configura il vincolo
iam.disableServiceAccountCreation
in modo che non venga applicato alle risorse con il tagdisableServiceAccountCreation: not_enforced
. La condizione in questa regola dovrebbe avere il seguente aspetto:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountCreation', 'not_enforced')"
-
Configura il vincolo
iam.disableServiceAccountCreation
da applicare su tutte le altre risorse.
-
-
Assicurati di disporre del ruolo Amministratore tag (
Risolvere i problemi relativi all'assegnazione dei ruoli agli account di servizio predefiniti
Gli account di servizio predefiniti vengono creati automaticamente quando utilizzi determinati servizi Google Cloud. Hanno i seguenti identificatori:
- Account di servizio predefinito del servizio App Engine:
PROJECT_ID@appspot.gserviceaccount.com
- Account di servizio predefinito Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
A tutti gli account di servizio predefiniti viene concesso automaticamente il ruolo Editor
(roles/editor
) al momento della creazione, a meno che questo comportamento non sia disattivato da un
criterio dell'organizzazione. Esistono due vincoli dei criteri dell'organizzazione che impediscono la concessione del ruolo Editor agli account di servizio predefiniti:
iam.automaticIamGrantsForDefaultServiceAccounts
: un vincolo predefinito che impedisce di concedere automaticamente i ruoli agli account di servizio 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
) siano mai concessi agli account di servizio predefiniti.
Errore di assegnazione dei ruoli di base agli account di servizio
Se il vincolo iam.automaticIamGrantsForDefaultServiceAccounts
o il vincolo
constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
viene applicato al progetto, i carichi di lavoro del progetto che
utilizzano gli account di servizio predefiniti potrebbero riscontrare errori di autorizzazione insufficienti.
Per scoprire quali ruoli assegnare a un account di servizio predefinito, consulta la risoluzione consigliata per l'assegnazione dei ruoli agli account di servizio predefiniti.
Il vincolo iam.automaticIamGrantsForDefaultServiceAccounts
non causa errori da solo. Tuttavia, a causa di questo vincolo, è possibile che un workload che utilizza il account di servizio predefinito non disponga delle autorizzazioni di cui ha bisogno.
Inoltre, se il vincolo constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
viene applicato al tuo progetto, visualizzerai un messaggio di errore simile al seguente se provi a concedere il ruolo Proprietario o Editor a un account servizio predefinito:
Console
Nella console Google Cloud viene visualizzata una finestra di dialogo con l'intestazione Aggiornamento del criterio IAM non riuscito. La finestra di dialogo indica che le modifiche che stai tentando di apportare al criterio 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 l'assegnazione dei ruoli agli account di servizio predefiniti
Se un criterio dell'organizzazione ti impedisce di concedere il ruolo Editor o Proprietario a un account di servizio predefinito, devi trovare un ruolo meno permissivo da concedere all'account di servizio. Il ruolo necessario per l'account di servizio dipende dal servizio che utilizzi e dalle attività che vuoi svolgere.
Esamina la seguente tabella per determinare quale ruolo concedere a quale account di servizio predefinito, a seconda del servizio in uso:
Servizio | Service account predefinito | Ruolo da concedere |
---|---|---|
App Engine |
Account di servizio predefinito di App Engine (PROJECT_ID@appspot.gserviceaccount.com )
|
Ruolo dell'account Cloud Build (roles/cloudbuild.builds.builder )
|
Compute Engine |
Account di servizio predefinito Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
I ruoli di cui ha bisogno l'account di servizio predefinito dipendono dall'attività che vuoi svolgere. Per capire quali ruoli sono richiesti, consulta la documentazione dell'attività che vuoi svolgere o Scegliere i ruoli predefiniti. Quando decidi quale ruolo concedere, segui le best practice descritte nella pagina Account di servizio della documentazione di Compute Engine. |
Cloud Build |
Account di servizio predefinito Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Ruolo dell'account di servizio Cloud Build (roles/cloudbuild.builds.builder )
|
Cloud Deploy |
Account di servizio predefinito Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Per sapere quali ruoli concedere a questo account di servizio, individua la guida rapida di Cloud Deploy corrispondente al tuo caso d'uso, quindi concedi i ruoli descritti nella guida rapida. Per un elenco delle guide rapide di Cloud Deploy, consulta la sezione Guide rapide della documentazione di Cloud Deploy. |
Funzioni Cloud Run e Cloud Functions |
Account di servizio predefinito Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Per eseguire il deployment delle funzioni: ruolo Account Cloud Build ( Per ulteriori informazioni, consulta Account di servizio personalizzato per Cloud Build. |
Cloud Run |
Account di servizio predefinito Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
I ruoli di cui ha bisogno l'account di servizio predefinito dipendono dall'attività che vuoi svolgere. Per capire quali ruoli sono richiesti, consulta la documentazione dell'attività che vuoi svolgere o Scegliere i ruoli predefiniti. 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 Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Ruolo dell'account di servizio del nodo predefinito di Kubernetes Engine ( Per ulteriori informazioni, consulta Utilizzare i service account IAM con privilegio minimo minimi. |
Workflows |
Account di servizio predefinito Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
I ruoli di cui ha bisogno l'account di servizio predefinito dipendono dall'attività che vuoi svolgere. Per capire quali ruoli sono richiesti, consulta la documentazione relativa all'attività che vuoi svolgere o Scegliere i ruoli predefiniti. Segui le best practice descritte nella pagina Concedere l'autorizzazione di un flusso di lavoro per accedere alle risorse Google Cloud della documentazione di Workflows. |