Sviluppare applicazioni in un ambiente Google Cloud vincolato

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 i vincoli di sicurezza Cloud Foundation Toolkit, il Progetti per la sicurezza di Google Cloud, o crearne uno proprio.

Questo articolo ti aiuta a risolvere i problemi di deployment delle applicazioni che si possono verificare in un'organizzazione che usa vincoli di sicurezza.

Risolvere i problemi relativi alle limitazioni di sicurezza

Le operazioni IT o il team di sicurezza possono abilitare i vincoli di sicurezza criterio dell'organizzazione. Questi vincoli limitano il modo in cui e risorse utilizzabili.

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

  1. Esamina il messaggio di errore della risposta dell'API. Riesci a capire quali sistemi di sicurezza vincolo violato dal deployment?

    L'esempio seguente indica che il problema è la sql.restrictPublicIplimitazione:

    Organization Policy check failure
    The external IP of this instance violates the constraints/sql.restrictPublicIp enforced
    
  2. Se conosci la violazione delle norme, aggiorna la configurazione del deployment delle risorse in modo che funzioni entro i 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 hai dubbi sul motivo per cui viene applicato il vincolo o su cosa fare, utilizza il team addetto alla sicurezza per capire dove vengono applicati i criteri della gerarchia dell'organizzazione e delle soluzioni suggerite.

    Controlla se nella tua organizzazione sono condivisi modelli di deployment, ad esempio modelli Terraform. Questi modelli dovrebbero descrivere in dettaglio come L'infrastruttura Google Cloud è stata configurata e limita del deployment dell'applicazione.

Problemi comuni relativi alle limitazioni di sicurezza

Quando esegui il deployment delle applicazioni in Google Cloud, potresti riscontrare un errore come quello riportato di seguito:

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 una dall'indirizzo IP pubblico esterno. Viene applicato un vincolo di sicurezza da un criterio applicato al tuo ambiente.

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

Compute Engine

Nome vincolo Perché è stata implementata Soluzione alternativa suggerita
constraints/compute.disableNestedVirtualization Impedisci l'installazione di un hypervisor compatibile con KVM all'interno della VM. Questo comportamento potrebbe comportare rischi per la sicurezza senza patch e gestione adeguate. 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 in cui siano abilitate le opzioni di avvio protetto, monitoraggio dell'integrità e vTPM. Queste opzioni impediscono la manomissione della VM e l'accesso o la modifica dei dati. Non attivare le VM isolate quando crei una VM.

Per creare un cluster GKE, devi attiva nodi GKE schermati.

Attualmente Dataflow non supporta i worker Shielded VM.
constraints/compute.disableSerialPortAccess Rimuovi i vettori di sicurezza per interagire con una VM o visualizzare l'output diagnostico che potrebbero essere usati per formare un attacco. Non abilitare l'accesso alle porte seriali quando crei una VM.
constraints/compute.disableGuestAttributesAccess Riduci al minimo la quantità di informazioni sull'host e sulla piattaforma sottostanti che potrebbe essere utilizzato in modo illecito da un'app dannosa. Non utilizzare l'API Compute Engine per leggere gli attributi guest delle VM Compute Engine.
constraints/compute.vmExternalIpAccess Impedire l'esecuzione di applicazioni con un indirizzo IP esterno e accessibili da internet. Disattiva l'accesso all'IP esterno per le VM. Puoi utilizzare solo un indirizzo IP privato interno.

GKE può utilizzare cluster privati senza indirizzi IP pubblici.

Dataprep e Dataflow non supportano attualmente l'IP privato indirizzi IP esterni.

Indirizzi IP e rete virtuale

Nome vincolo Perché è stata implementata Soluzione alternativa suggerita
constraints/compute.skipDefaultNetworkCreation Assicurati che sia possibile creare solo Virtual Private Cloud (VPC) gestiti dall'azienda e che vengano applicate regole di filtro o di traffico di rete. Collega le tue applicazioni alle VPC esistenti della tua organizzazione. Le VPC create automaticamente per impostazione predefinita non vengono implementate 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 una rete VPC condivisa. Assicurati di scegliere come target il corretto e la risorsa per l'eliminazione.
constraints/sql.restrictPublicIp Impedisci l'esecuzione delle istanze Cloud SQL con un IP esterno accessibile da internet. Non configurare l'istanza Cloud SQL in modo che utilizzi un server pubblico esterno Indirizzo IP.

Puoi invece configurare per utilizzare un indirizzo IP privato interno.

Identità e autenticazione

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

Esempi di errori di risposta dell'API

Nell'esempio precedente di limitazione degli indirizzi IP pubblici esterni con Cloud SQL, una violazione dei criteri fa sì che l'API restituisca un errore. La gli esempi più dettagliati mostrano la risposta dell'API che indica quale fa sì che la richiesta non vada a buon fine. Osserva le tue risposte dell'API perché i deployment delle applicazioni non riescono.

Errore 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 i criteri dell'organizzazione applicati al progetto

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

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

gcloud org-policies list --project=PROJECT_ID

Sostituisci PROJECT_ID con il progetto che vuoi visualizzare in modo forzato.

Per ulteriori informazioni su un criterio applicato, utilizza il comando gcloud org-policies describe. Fornisci il nome del criterio da descrivere e il tuo ID progetto con Il parametro --project:

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

Sostituisci quanto segue:

  • POLICY_NAME: il nome dei criteri dell'organizzazione

  • PROJECT_ID: il progetto per cui vuoi visualizzare le norme applicate

Passaggi successivi

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

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