Ti consigliamo di definire vincoli dei criteri che applichino configurazioni accettabili delle risorse e prevengano configurazioni rischiose. Il progetto utilizza una combinazione di vincoli dei criteri dell'organizzazione e convalida Infrastructure as Code (IaC) nella tua pipeline. Questi controlli impediscono la creazione di risorse non conformi alle tue linee guida sui criteri. L'applicazione di questi controlli nelle fasi iniziali di progettazione e creazione dei carichi di lavoro consente di evitare le operazioni di correzione in un secondo momento.
Vincoli dei criteri dell'organizzazione
Il servizio Criteri dell'organizzazione applica vincoli per garantire che alcune configurazioni di risorse non possano essere create nella tua organizzazione Google Cloud, neanche da qualcuno che dispone di un ruolo IAM con privilegi sufficienti.
Il progetto applica i criteri sul nodo organizzazione in modo che questi controlli vengano ereditati da tutte le cartelle e da tutti i progetti all'interno dell'organizzazione. Questo pacchetto di criteri è progettato per prevenire determinate configurazioni ad alto rischio, come l'esposizione di una VM sulla rete internet pubblica o la concessione dell'accesso pubblico ai bucket di archiviazione, a meno che tu non consenta deliberatamente un'eccezione al criterio.
La seguente tabella introduce i vincoli dei criteri dell'organizzazione implementati nel progetto:
Vincolo dei criteri dell'organizzazione | Descrizione |
---|---|
| La virtualizzazione nidificata sulle VM di Compute Engine può eludere il monitoraggio e altri strumenti di sicurezza per le tue VM se sono configurate in modo errato. Questo vincolo impedisce la creazione di una virtualizzazione nidificata. |
| I ruoli IAM come |
| Le subnet IPv6 esterne possono essere esposte ad accessi a internet non autorizzati se sono configurate in modo errato. Questo vincolo impedisce la creazione di subnet IPv6 esterne. |
| Il comportamento predefinito dell'impostazione delle chiavi SSH nei metadati può consentire l'accesso remoto non autorizzato alle VM se le chiavi sono esposte. Questo vincolo impone l'utilizzo di OS Login anziché di chiavi SSH basate su metadati. |
|
L'inoltro del protocollo delle VM per gli indirizzi IP esterni può causare traffico in uscita da Internet non autorizzato se l'inoltro è configurato in modo errato. Questo vincolo consente l'inoltro del protocollo VM solo per gli indirizzi interni. |
|
L'eliminazione di un progetto host VPC condiviso può essere un'interruzione per tutti i progetti di servizio che utilizzano risorse di networking. Questo vincolo impedisce l'eliminazione accidentale o dannosa dei progetti host del VPC condiviso, impedendo la rimozione del blocco del progetto su questi progetti. |
|
Non è consigliabile utilizzare un'impostazione legacy per il DNS interno globale (a livello di progetto) perché riduce la disponibilità del servizio. Questo vincolo impedisce l'utilizzo dell'impostazione legacy. |
| In ogni nuovo progetto che abilita l'API Compute Engine vengono create una rete VPC predefinita e regole firewall VPC predefinite eccessivamente permissive. Questo vincolo ignora la creazione della rete predefinita e delle regole firewall VPC predefinite. |
| Per impostazione predefinita, viene creata una VM con un indirizzo IPv4 esterno che può causare un accesso a internet non autorizzato. Questo vincolo configura una lista consentita vuota di indirizzi IP esterni che la VM può utilizzare e nega tutti gli altri. |
|
Per impostazione predefinita, i contatti necessari possono essere configurati in modo da inviare notifiche sul tuo dominio a qualsiasi altro dominio. Questo vincolo impone che solo gli indirizzi email nei domini approvati possono essere impostati come destinatari per i contatti necessari. |
| Per impostazione predefinita, i criteri di autorizzazione possono essere concessi a qualsiasi Account Google, inclusi gli account non gestiti e gli account appartenenti a organizzazioni esterne. Questo vincolo garantisce che i criteri di autorizzazione nella tua organizzazione possano essere concessi solo agli account gestiti del tuo dominio. Facoltativamente, puoi consentire domini aggiuntivi. |
|
Per impostazione predefinita, agli account di servizio predefiniti vengono concessi automaticamente i ruoli eccessivamente permissivi. Questo vincolo impedisce la concessione automatica dei ruoli IAM agli account di servizio predefiniti. |
|
Le chiavi degli account di servizio sono credenziali permanenti ad alto rischio e nella maggior parte dei casi è possibile utilizzare un'alternativa più sicura alle chiavi degli account di servizio. Questo vincolo impedisce la creazione di chiavi degli account di servizio. |
|
Il caricamento del materiale della chiave dell'account di servizio può aumentare il rischio se il materiale della chiave è esposto. Questo vincolo impedisce il caricamento delle chiavi degli account di servizio. |
|
Le istanze Cloud SQL possono essere esposte ad accesso a internet non autenticato se sono configurate in modo da utilizzare reti autorizzate senza un proxy di autenticazione Cloud SQL. Questo criterio impedisce la configurazione delle reti autorizzate per l'accesso al database e forza l'utilizzo del proxy di autenticazione Cloud SQL. |
| Le istanze Cloud SQL possono essere esposte all'accesso a internet non autenticato se vengono create con indirizzi IP pubblici. Questo vincolo impedisce gli indirizzi IP pubblici nelle istanze Cloud SQL. |
| Per impostazione predefinita, è possibile accedere agli oggetti in Cloud Storage tramite gli elenchi di controllo degli accessi (ACL) legacy anziché tramite IAM, il che può causare controlli dell'accesso incoerenti ed esposizione accidentale in caso di configurazione errata. Il vincolo |
|
I bucket Cloud Storage possono essere esposti ad accesso a internet non autenticato se configurati in modo errato. Questo vincolo impedisce gli ACL e le autorizzazioni IAM che concedono l'accesso a |
Questi criteri sono un punto di partenza consigliato per la maggior parte dei clienti e per la maggior parte degli scenari, ma potrebbe essere necessario modificare i vincoli dei criteri dell'organizzazione per soddisfare determinati tipi di carichi di lavoro. Ad esempio, un carico di lavoro che utilizza un bucket Cloud Storage come backend per consentire a Cloud CDN di ospitare le risorse pubbliche viene bloccato da storage.publicAccessPrevention
oppure un'app Cloud Run rivolta al pubblico che non richiede l'autenticazione viene bloccata da iam.allowedPolicyMemberDomains
. In questi casi, modifica il criterio dell'organizzazione a livello di cartella o di progetto per consentire un'eccezione limitata.
Puoi anche aggiungere vincoli ai criteri dell'organizzazione in modo condizionale definendo un tag che conceda un'eccezione o applicazione dei criteri e quindi applicando il tag a progetti e cartelle.
Per ulteriori informazioni sui vincoli, consulta i vincoli disponibili e i vincoli personalizzati.
Convalida pre-deployment di Infrastructure as Code
Il progetto utilizza un approccio GitOps per gestire l'infrastruttura, il che significa che tutte le modifiche all'infrastruttura vengono implementate tramite Infrastructure as Code (IaC) con controllo della versione e possono essere convalidate prima del deployment.
I criteri applicati nel progetto base definiscono configurazioni di risorse accettabili di cui la tua pipeline può eseguire il deployment. Se il codice inviato al tuo repository GitHub non supera i controlli dei criteri, non viene eseguito il deployment delle risorse.
Per informazioni su come vengono utilizzate le pipeline e su come vengono applicati i controlli tramite l'automazione CI/CD, consulta la metodologia di deployment.
Passaggi successivi
- Scopri di più sulla metodologia di deployment (prossimo documento di questa serie)