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:
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
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.
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.