Risolvere i problemi relativi ai criteri dell'organizzazione

Le nostre documentazioni sono spesso scritte per aiutarti a configurare e utilizzare un prodotto o una funzionalità, ma alcune potrebbero non funzionare correttamente se la tua organizzazione applica vincoli di sicurezza. Ad esempio, la tua azienda potrebbe implementare alcuni dei vincoli di sicurezza del Cloud Foundation Toolkit, dei blueprint di sicurezza diCloud de Confiance Google CloudGoogle CloudTrusted CloudT-Systems Sovereign Cloud o crearne di propri.

Questo articolo ti aiuta a risolvere i problemi di deployment delle applicazioni che potresti riscontrare in un'organizzazione che utilizza vincoli di sicurezza.

Risolvere i problemi relativi ai vincoli di sicurezza

Il tuo team IT o di sicurezza può abilitare i vincoli di sicurezza tramite i criteri dell'organizzazione. Questi vincoli limitano il modo in cui possono essere utilizzate le risorse della tua organizzazione.

Quando effettui una richiesta API che restituisce un errore, la risposta dell'API dovrebbe indicare se l'errore è dovuto a violazioni delle norme. La risposta deve spiegare il vincolo violato. I seguenti passaggi per la risoluzione dei problemi ti aiutano a determinare e capire se si verifica una violazione:

  1. Esamina il messaggio di errore della risposta API. Puoi identificare quale vincolo di sicurezza viola il tuo deployment?

    L'esempio seguente indica che il problema è il vincolo sql.restrictPublicIp:

    Organization Policy check failure
    The external IP of this instance violates the constraints/sql.restrictPublicIp enforced
    
  2. Se comprendi la violazione delle norme, aggiorna la configurazione del deployment delle risorse in modo che rientri nei vincoli.

    Nell'esempio precedente di limitazione degli indirizzi IP pubblici esterni, configura l'istanza Cloud SQL in modo che utilizzi un indirizzo IP privato interno.

  3. Se non sai perché viene applicato il vincolo o cosa fare, collabora con il tuo team di sicurezza per capire dove viene applicata la norma nella gerarchia della tua organizzazione e le soluzioni alternative suggerite.

    Controlla se nella tua organizzazione sono condivisi modelli di deployment, ad esempio modelli Terraform. Questi modelli devono descrivere in dettaglio la configurazione dell'infrastrutturaCloud de Confiance e limitare il deployment dell'applicazione.

Problemi comuni relativi ai vincoli di sicurezza

Quando esegui il deployment delle applicazioni in Cloud de Confiance, potresti riscontrare un errore come il seguente esempio:

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

In questo esempio, non puoi configurare un'istanza Cloud SQL per utilizzare un indirizzo IP pubblico esterno. Un vincolo di sicurezza viene applicato da un criterio applicato al tuo ambiente.

I seguenti vincoli di sicurezza comuni possono essere abilitati e descritti in una risposta di errore dell'API durante lo sviluppo delle applicazioni.

Compute Engine

Nome del vincolo Perché è implementato Soluzione alternativa suggerita
constraints/compute.disableNestedVirtualization Impedisci l'installazione di un hypervisor compatibile con KVM all'interno della VM. Questo comportamento potrebbe introdurre rischi per la sicurezza senza patch e gestione adeguati. Configura la VM per disattivare la virtualizzazione nidificata con accelerazione hardware.

Per impostazione predefinita, è attivato per tutte le VM Compute Engine in esecuzione su piattaforme CPU Intel Haswell o successive.
constraints/compute.requireShieldedVm Richiede che le nuove istanze VM utilizzino immagini disco schermate con le opzioni di avvio protetto, vTPM e monitoraggio dell'integrità abilitate. Queste opzioni impediscono la manomissione della VM e l'accesso o la modifica dei dati. Non abilitare le VM schermate quando crei una VM.

Per creare un cluster GKE, devi abilitare i nodi GKE Shielded.

Al momento Dataflow non supporta i worker Shielded VM.
constraints/compute.disableSerialPortAccess Rimuovi i vettori di sicurezza per interagire con una VM o visualizzare l'output di diagnostica che potrebbe essere utilizzato per formare un attacco. Non attivare l'accesso alla porta seriale quando crei una VM.
constraints/compute.disableGuestAttributesAccess Ridurre al minimo la quantità di informazioni sull'host e sulla piattaforma sottostanti che potrebbero essere usate in modo illecito da un'app dannosa. Non utilizzare l'API Compute Engine per leggere gli attributi guest delle tue VM Compute Engine.
constraints/compute.vmExternalIpAccess Impedisci l'esecuzione di applicazioni con un indirizzo IP esterno e accessibile da internet. Disattiva l'accesso all'IP esterno per le tue VM. Puoi utilizzare solo un indirizzo IP privato interno.

GKE può utilizzare cluster privati senza indirizzi IP pubblici.

Al momento Dataprep e Dataflow non supportano gli indirizzi IP privati.

Rete virtuale e indirizzi IP

Nome vincolo Perché è implementato Soluzione alternativa suggerita
constraints/compute.skipDefaultNetworkCreation Assicurati che possano essere create solo Virtual Private Cloud (VPC) gestite dall'azienda e che vengano applicate regole di traffico o filtro di rete. Connetti le tue applicazioni ai VPC esistenti nella tua organizzazione. I VPC creati automaticamente per impostazione predefinita non vengono implementati per i nuovi progetti.
constraints/compute.restrictXpnProjectLienRemoval Impedisci l'eliminazione accidentale di un VPC condiviso quando le risorse in altri progetti si basano sui servizi di rete che fornisce. Non tentare di eliminare un VPC condiviso. Assicurati di scegliere come target la risorsa corretta per l'eliminazione.
constraints/sql.restrictPublicIp Impedisci alle istanze Cloud SQL di essere eseguite con un indirizzo IP esterno e di essere accessibili da internet. Non configurare l'istanza Cloud SQL in modo che utilizzi un indirizzo IP pubblico esterno.

In alternativa, configura l'istanza Cloud SQL in modo che utilizzi un indirizzo IP privato interno.

Identità e autenticazione

Nome vincolo Perché è implementato Soluzione alternativa suggerita
constraints/iam.disableServiceAccountKeyCreation Le chiavi dei service account possono rappresentare un rischio per la sicurezza se esposte, quindi impediscine l'esportazione. Esegui l'autenticazione utilizzando un' alternativa più sicura alle account di servizio account.
constraints/storage.uniformBucketLevelAccess Ridurre al minimo il rischio che vengano applicate autorizzazioni errate o incoerenti ai bucket di archiviazione consentendo l'utilizzo solo di Identity and Access Management (IAM). Attiva l'accesso uniforme a livello di bucket per proteggere il bucket Cloud Storage.
constraints/iam.allowedPolicyMemberDomains Limita Cloud de Confiance l'accesso alle risorse solo ai domini approvati. Utilizza un account all'interno di uno dei domini approvati. Per questo vincolo esistono altri problemi noti.

Esempi di errori di risposta dell'API

Nell'esempio precedente di limitazione degli indirizzi IP pubblici esterni con Cloud SQL, una violazione delle policy fa sì che l'API restituisca un errore. Gli esempi più dettagliati riportati di seguito mostrano la risposta dell'API che indica quale vincolo causa l'esito negativo della richiesta. Esamina le tue risposte API per capire perché le implementazioni delle applicazioni non vanno a buon fine.

Errore di Cloud SQL con Google Cloud CLI:

$ gcloud alpha sql instances create mysql-node --project my-sql-project

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

Errore di Cloud SQL con Terraform:

$ terraform apply plan.out

[...]
module.mysql-db.google_sql_database_instance.default: Creating...

Error: Error, failed to create instance backend01-db-1c81e0e3: googleapi:
Error 400: Invalid request: Organization Policy check failure: the external IP
of this instance violates the constraints/sql.restrictPublicIp enforced at the
123456789 project., invalid

Elenca le policy dell'organizzazione applicate al tuo progetto

Il tuo progetto potrebbe ereditare i criteri a livello di cartella o organizzazione. A seconda dei ruoli di accesso, potresti non avere visibilità sulle norme applicate ai livelli superiori della gerarchia per vedere dove viene applicato il vincolo violato.

Per visualizzare i criteri o le eccezioni applicati al tuo progetto, utilizza il comando gcloud org-policies list:

gcloud org-policies list --project=PROJECT_ID

Sostituisci PROJECT_ID con il progetto per il quale vuoi visualizzare le policy applicate.

Per saperne di più su una policy applicata, utilizza il comando gcloud org-policies describe. Fornisci il nome della norma da descrivere e l'ID progetto con il parametro --project:

gcloud org-policies describe POLICY_NAME \
  --project=PROJECT_ID

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy dell'organizzazione

  • PROJECT_ID: il progetto per cui vuoi visualizzare la policy applicata

Passaggi successivi

Se non riesci a determinare dove viene applicata una policy e come aggirare un vincolo di sicurezza, contatta il tuo team di operazioni IT o di sicurezza. Ogni organizzazione applica criteri e blueprint personalizzati per il proprio ambiente.

Per saperne di più su tutti i controlli che potrebbero essere applicati nella tua organizzazione, consulta l'elenco dei vincoli delle policy dell'organizzazione.