Il processo di deployment della landing zone è costituito da
fasi. Durante ogni fase, devi aggiungere determinate variabili al file terraform.tfvars. Al termine di una fase, Terraform scrive un file STAGE_NAME-tfvar.auto.tfvars.json nel bucket Cloud Storage creato nella fase iniziale. Le fasi successive utilizzano
Google Cloud CLI per copiare i file e un file del provider che simula unaccount di serviziont specifico della fase nella nuova cartella della fase.
A seconda del numero di tenant, il deployment di un nuovo ambiente richiede circa un'ora.
Prerequisiti
Completa le seguenti attività prima di eseguire il deployment di Stellar Engine.
Configura Google Cloud
Completa i seguenti passaggi per configurare Google Cloud:
Seleziona un' Google Cloud organizzazione. Se crei una nuova organizzazione, accedi almeno una volta alla Console di amministrazione Google.
Configura più amministratori per implementare la separazione dei compiti. In un ambiente di test, un utente potrebbe avere ruoli amministrativi per tutte le risorse. Tuttavia, in un ambiente di produzione sono necessari più amministratori. Per maggiori informazioni, consulta Configurare la risorsa dell'organizzazione.
Attiva la verifica in due passaggi per tutti gli account con privilegi.
Disattiva Cloud Shell. Cloud Shell non è supportato per gli ambienti IL4 o IL5 e deve essere disattivato da unamministratore di Google Workspacee.
Se non hai un progetto, creane uno di bootstrap.
Completa le seguenti attività nel progetto di bootstrap:
Abilita la fatturazione. Per istruzioni, vedi Verifica lo stato di fatturazione dei tuoi progetti.
Attiva l'API Cloud Monitoring.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.
Verifica che il tuo account utente sia un super amministratore.
Se la tua organizzazione non ha uno schema di classificazione dei dati, creane uno.
Assegna i ruoli
Assegna i seguenti ruoli Identity and Access Management all'account utente che esegue il deployment di Stellar Engine.
-
Assicurati di disporre dei seguenti ruoli nell'organizzazione: Amministratore Access Transparency, Amministratore Assured Workloads, Amministratore account di fatturazione, Amministratore logging, Amministratore organizzazione, Amministratore criteri dell'organizzazione, Amministratore ruolo organizzazione, Proprietario, Autore progetto, Amministratore service account, Autore token service account, Amministratore tag
Controlla i ruoli
-
Nella console Google Cloud vai alla pagina IAM.
Vai a IAM - Seleziona l'organizzazione.
-
Nella colonna Entità, trova tutte le righe che identificano te o un gruppo di cui fai parte. Per scoprire a quali gruppi appartieni, contatta il tuo amministratore.
- Per tutte le righe che ti specificano o ti includono, controlla la colonna Ruolo per verificare se l'elenco dei ruoli include i ruoli richiesti.
Concedi i ruoli
-
Nella console Google Cloud vai alla pagina IAM.
Vai a IAM - Seleziona l'organizzazione.
- Fai clic su Concedi l'accesso.
-
Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.
- Fai clic su Seleziona un ruolo, quindi cerca il ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
- Fai clic su Salva.
-
Se stai iniziando con una nuova organizzazione, puoi eseguire il seguente script che si trova nella cartella fast/stages-aw/0-bootstrap per applicare i ruoli:
./setIAM.sh EMAIL_ADDRESS ORGANIZATION_ID
Sostituisci quanto segue:
EMAIL_ADDRESS: l'indirizzo email del tuo account utente.ORGANIZATION_ID: l'ID organizzazione.
Questo script aggiunge tutti i ruoli, tranne Amministratore account di fatturazione e Super amministratore.
Aggiungere gruppi e configurare servizi
Aggiungi i seguenti gruppi, come descritto nel punto 2. Utenti e gruppi:
gcp-billing-admins@DOMAINgcp-developers@DOMAINgcp-devops@DOMAINgcp-hybrid-connectivity-admins@DOMAINgcp-logging-monitoring-admins@DOMAINgcp-logging-monitoring-viewers@DOMAINgcp-organization-admins@DOMAINgcp-vpc-network-admins@DOMAINgcp-security-admins@DOMAIN
Sostituisci
DOMAINcon il tuo FQDN.Se richiesto, salta il passaggio del provider di identità.
Google potrebbe modificare i nomi dei gruppi predefiniti. Puoi creare manualmente un gruppo se non è presente nella guida alla configurazione.
Abilita le API Assured Workloads, BigQuery, fatturazione Cloud, Cloud Logging, Cloud KMS, IAM, Pub/Sub, Resource Manager, Service Account Credentials, Service Usage e servizio policy dell'organizzazione.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.Se la tua quota è inferiore a 13 progetti, vai a Google Cloud Platform/API Project: Request Billing Quota Increase per richiedere 13 progetti. Per saperne di più, consulta Visualizzare e gestire le quote.
Puoi anche utilizzare lo script
fast/stages-aw/0-bootstrap/enableServices.sh
per attivare i servizi.
Configura l'ambiente locale
Completa i seguenti passaggi per configurare l'ambiente locale:
- Clona il repository GitHub di Stellar Engine.
- Installa Google Cloud SDK.
- Aggiorna la tua versione locale di Terraform a una versione 1.8.1 o successive.
- Installa il programma binario jq.
Autentica e imposta il progetto di bootstrap come progetto attivo:
gcloud auth login gcloud config set project BOOTSTRAP_PROJECT_ID gcloud auth application-default login
Modificare i moduli
Nella maggior parte dei casi, puoi utilizzare il repository senza modifiche. Se devi
modificare un modulo, copialo interamente e utilizza la convenzione di denominazione
<module-se> per evitare conflitti di unione quando vengono inseriti aggiornamenti periodici
dal repository Cloud foundation fabric.
Esegui la fase 0: bootstrap
La fase 0 allinea le parti esistenti della rete allo stato di Terraform. La fase 0 crea i progetti e gli account di servizio di bootstrap IaC iniziali. Fase 0 progettata per la transizione dal progetto iniziale dell'utente a un nuovo progetto principale e per la migrazione dello stato di Terraform.
Passa alla directory
fast/stages-aw/0-bootstrap.Copia il file
terraform.tfvars.sample:cp terraform.tfvars.sample terraform.tfvarsCopia il file
providers.tf.tmpnel file0-bootstrap-providers.tf:cp providers.tf.tmp 0-bootstrap-providers.tfAggiorna le informazioni in
fast/stages-aw/0-bootstrap/terraform.tfvars:billing_account = { id = "BILLING_ACCOUNT_ID" } regions = { primary = "REGION" } organization = { domain = "DOMAIN" id = "ORGANIZATION_ID" customer_id = "CUSTOMER_ID" } outputs_location = "~/fast-config" prefix = "PREFIX" log_sinks = { audit-logs = { filter = "logName:\"/logs/cloudaudit.googleapis.com%2Factivity\" OR logName:\"/logs/cloudaudit.googleapis.com%2Fsystem_event\" OR protoPayload.metadata.@type=\"type.googleapis.com/google.cloud.audit.TransparencyLog\"" type = "logging" } vpc-sc = { filter = "protoPayload.metadata.@type=\"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata\"" type = "logging" } workspace-audit-logs = { filter = "logName:\"/logs/cloudaudit.googleapis.com%2Fdata_access\" and protoPayload.serviceName:\"login.googleapis.com\"" type = "logging" } empty-audit-logs = { filter = "" type = "logging" } } org_policies_config = { constraints = { "ALLOWED_POLICY_MEMBER_DOMAINS" = [] } } fast_features = { envs = true } assured_workloads = { regime = "COMPLIANCE_REGIME" location = "LOCATION" } bootstrap_project = "BOOTSTRAP_PROJECT_ID" alert_email = "ALERT_EMAIL"Sostituisci quanto segue:
BILLING_ACCOUNT_ID: l'account di fatturazione da utilizzare per il deployment degli ambienti. Per trovare i dati dell'account di fatturazione, consulta la Google Cloud console.REGION: la regione principale in cui eseguire il deployment delle risorse. Il valore predefinito èus-east4per IL5 e FedRAMP.Per aggiungere una regione secondaria in cui eseguire il deployment delle risorse, aggiungi
secondary=secondary.DOMAIN: il nome di dominio completo (FQDN). Per visualizzare il nome di dominio completo, eseguigcloud organizations list.ORGANIZATION: l'ID organizzazione per l'organizzazioneGoogle Cloud . Per visualizzare l'ID organizzazione, eseguigcloud organizations list.CUSTOMER_ID: l'ID cliente della directory Google Workspace. Per visualizzare l'ID, eseguigcloud organizations list.PREFIX: il prefisso da aggiungere ai nomi di progetti e risorse di cui viene eseguito il deployment. Il nome del progetto deve essere univoco a livello globale e il prefisso deve contenere un massimo di sei caratteri. Si verifica un errore 409 se il nome del progetto non è univoco.ALLOWED_POLICY_MEMBER_DOMAINS: se necessario, aggiorna con ID cliente aggiuntivi. Per saperne di più, vedi Limitare le identità con la condivisione con limitazioni del dominio.COMPLIANCE_REGIME: il regime di conformità per questo ambiente, uno traIL4,IL5,FEDRAMP_HIGHeCOMPLIANCE_REGIME_UNSPECIFIED. Se non vuoi utilizzare Assured Workloads, imposta questo valore suCOMPLIANCE_REGIME_UNSPECIFIED.LOCATION: La regione degli Stati Uniti in cui eseguire il deployment delle risorse. Le due regioni comeNAM9o i continenti non sono supportati.BOOTSTRAP_PROJECT_ID: l'ID del progetto di bootstrap che hai creato in Configurazione Google Cloud.ALERT_EMAIL: l'indirizzo email a cui inviare le notifiche di avviso di logging.
Esegui
terraform init.Esegui
terraform apply:terraform apply -var bootstrap_user=$(gcloud config list --format 'value(core.account)')Digita
yesquando richiesto.Passa al nuovo progetto:
gcloud config set project PREFIX-prod-iac-core-0Copia il nuovo file dei provider Terraform locali:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/0-bootstrap-providers.tf ./Esegui la migrazione dello stato da locale a remoto:
terraform init --migrate-stateDigita
yesquando richiesto.Esegui
./import.sh.Esegui
terraform applyun'altra volta. Digitayesquando richiesto.
Esegui la fase 1: gestione delle risorse
La fase 1 crea le diverse cartelle, i progetti e i service account a livello di organizzazione utilizzati per le fasi successive. Per creare l'ambiente, devi aggiornare il file terraform.tfvars in fast/stages-aw/1-resman in modo da includere una variabile tenants. Ogni tenant (ad esempio, un'agenzia federale specifica o un gruppo di sviluppo interno) ha il proprio confine dedicato e isolato per eseguire i propri carichi di lavoro. Ogni tenant eredita i controlli di sicurezza centralizzati, il perimetro di rete, le misure di protezione dei criteri e i sink dei log di controllo creati nella fase 0 e nella fase 2.
Se utilizzi un account di fatturazione esterno, consulta Configurare la fatturazione quando si utilizzano account di fatturazione esterni.
Passa alla directory
fast/stages-aw/1-resman.Copia il file
terraform.tfvars.sample:cp terraform.tfvars.sample terraform.tfvarsAggiorna
terraform.tfvarscome segue:tenants = { ten-1 = { admin_principal = "group:gcp-devops@DOMAIN" descriptive_name = "TENANT_ONE_NAME" locations = { gcs = "REGION" kms = "REGION" } }, ten-2 = { admin_principal = "group:gcp-devops@DOMAIN" descriptive_name = "TENANT_TWO_NAME" locations = { gcs = "REGION" kms = "REGION" } } } fast_features = { envs = true } envs_folders = { Prod = { admin = "gcp-organization-admins@DOMAIN" }, Int = { admin = "gcp-organization-admins@DOMAIN" }, Test = { admin = "gcp-organization-admins@DOMAIN" } }Sostituisci quanto segue:
DOMAIN: il nome di dominio completo (FQDN) principale. Per visualizzare il nome di dominio completo, eseguigcloud organizations list.TENANT_ONE_NAME: il nome del primo progetto tenant di cui è stato eseguito il deployment. Utilizza un massimo di sei caratteri.REGION: la regione principale in cui eseguire il deployment delle risorse. Il valore predefinito èus-east4per IL5 e FedRAMP.TENANT_TWO_NAME: il nome del secondo progetto tenant di cui è stato eseguito il deployment. Utilizza un massimo di sei caratteri.
Aggiungi tutte le definizioni di tenant che ti servono.
Copia i file
tfvarsda Cloud Storage:gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/1-resman-providers.tf ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./Esegui
terraform init.Esegui
terraform apply. Digitayesquando richiesto.
Esegui la fase 2: creazione della rete
La fase 2 include due opzioni di rete: una per FedRAMP High e una per IL4 o IL5.
Configurare il networking per FedRAMP High
Se utilizzi un account di fatturazione esterno, consulta Configurare la fatturazione quando si utilizzano account di fatturazione esterni.
Passa alla directory
fast/stages-aw/2-networking-a-fedramp-high.Copia i file tfvars globali e del provider dai bucket Cloud Storage:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/2-networking-providers.tf ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./Copia il file
terraform.tfvars.sample:cp terraform.tfvars.sample terraform.tfvarsNel file
terraform.tfvars, aggiorna le subnet personalizzate, le subnet proxy, le regole firewall, i CIDR denominati e le regole delle policy di risposta DNS.Esegui
terraform init.Esegui
terraform apply. Digitayesquando richiesto.
Configura il networking per IL4 o IL5
Questo passaggio esegue il deployment di una coppia di firewall di nuova generazione (NGFW) VM-Series di Palo Alto nell'account di rete. Gli NGFW utilizzano l'immagine di deployment Bring Your Own License (BYOL) e richiedono di utilizzare la console Palo Alto per caricare un codice VM e registrarli. Per ulteriori istruzioni, consulta il file README nella cartella
2-networking-b-il5-ngfw
della fase.
Se utilizzi un account di fatturazione esterno, consulta Configurare la fatturazione quando si utilizzano account di fatturazione esterni.
Passa alla directory
fast/stages-aw/2-networking-b-il5-ngfw.Copia i file tfvars globali e del provider dai bucket Cloud Storage:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/2-networking-providers.tf ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./Copia il file
terraform.tfvars.sample:cp terraform.tfvars.sample terraform.tfvarsNel file
terraform.tfvars, aggiorna le subnet personalizzate (inclusa mgmt), le subnet proxy, le regole firewall, i CIDR denominati e le regole delle policy di risposta DNS.Esegui
terraform init.Esegui
terraform apply. Digitayesquando richiesto.Se ricevi un errore relativo a un account di servizio o a Cloud Key Management Service inesistente, nella console fai clic su Impostazioni nell'account di archiviazione
PREFIX-net-vdss-host. Il account di servizio viene generato.
Esegui la fase 3: configura l'account di controllo e sicurezza
La fase 3 configura i progetti di sicurezza e controllo. Il progetto di sicurezza
(prod-sec-core-0) contiene Cloud KMS e può contenere
Secret Manager. In IL5, CMEK è abilitata per impostazione predefinita per Compute Engine, Google Kubernetes Engine (GKE), Cloud Storage e Cloud SQL. Vengono applicati i seguenti vincoli dei criteri dell'organizzazione:
gcp.restrictNonCmekServices:denied_values: "compute.googleapis.com"denied_values: "container.googleapis.com"denied_values: "storage.googleapis.com"denied_values: "sqladmin.googleapis.com"
gcp.restrictCmekCryptoKeyProjects:gcp.restrictCmekCryptoKeyProjectsinclude un elenco di progetti che possono utilizzare CMEK.
Nel progetto prod-sec-core-0 sono configurati i seguenti elementi:
- Agli amministratori con limitazioni di Cloud KMS viene concesso il ruolo di amministratore con limitazioni in modo che possano concedere autorizzazioni di decriptografia ad altri servizi.
- Vengono eseguito il provisioning dei keyring Cloud KMS in località diverse. Le posizioni del portachiavi devono corrispondere a quelle dei servizi. Ad esempio, un keyring multiregionale non può essere utilizzato nel bucket di archiviazione di una singola regione.
Il progetto di audit contiene un bucket di logging per gli audit log.
Gli amministratori della sicurezza sono responsabili del progetto di sicurezza e i revisori sono responsabili del progetto di audit.
Se utilizzi un account di fatturazione esterno, consulta Configurare la fatturazione quando si utilizzano account di fatturazione esterni.
Passa alla directory
fast/stages-aw/3-security.Copia i file di configurazione dai bucket Cloud Storage:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/3-security-providers.tf ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./Esegui
terraform init.Esegui
terraform apply. Digitayesquando richiesto.Se riscontri un problema con i service account, esegui di nuovo
terraform apply.Esegui
./sa_lockdown.shper disabilitare i service account che hai utilizzato durante il deployment.
Configura la fatturazione quando utilizzi account di fatturazione esterni
Se utilizzi un account di fatturazione esterno, devi aggiungere il ruolo Amministratore account di fatturazione ai seguenti service account:
PREFIX-prod-resman-0@PREFIX-prod-iac-core-0.iam.gserviceaccount.com: Questo account viene creato nella fase 0.PREFIX-prod-resman-net-0@PREFIX-prod-iac-core-0.iam.gserviceaccount.com: questo account di servizio viene creato nella fase 1.PREFIX-security-0@PREFIX-prod-iac-core-0.iam.gserviceaccount.com: questo account di servizio viene creato nella fase 2.
Per aggiungere il ruolo a questi service account, completa la procedura descritta in Accedere al riquadro Autorizzazioni per un account di fatturazione Cloud e Aggiornare ruoli e entità nel riquadro Autorizzazioni.
Modificare i progetti tenant
Segui questi passaggi quando aggiungi o rimuovi progetti tenant per un deployment di Stellar Engine esistente.
Autentica e imposta il progetto attivo:
gcloud auth login gcloud config set project PREFIX-prod-iac-core-0 gcloud auth application-default loginAbilita i service account per gli ambienti:
Passa alla directory
fast/stages-aw/3-security.Esegui
./sa_lockdown.sh --enable.
Applica la fase 1:
Passa alla directory
fast/stages-aw/1-resman.Aggiorna le informazioni in
terraform.tfvarsin base ai nuovi requisiti.Esegui
terraform init.Esegui
terraform apply. Digitayesquando richiesto.
Applica la fase 2:
Passa a una delle seguenti cartelle di rete:
Copia il file tfvars
1-resmandal bucket Cloud Storage:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./Esegui
terraform init.Esegui
terraform apply. Digitayesquando richiesto.
Disabilita i service account per gli ambienti:
Passa alla directory
fast/stages-aw/3-security.Esegui
./sa_lockdown.sh.
Risoluzione dei problemi
Questa sezione descrive alcuni errori comuni e le relative soluzioni.
Errore BigQuery non utilizzabile nella fase 1
Se ricevi un errore che indica che bigquery.googleapis.com non è utilizzabile in
Assured Workloads, completa i seguenti passaggi:
Nella console, vai alla pagina Assured Workloads.
Seleziona la cartella
StellarEngine-COMPLIANCE_REGIMEe la cartella Networking, se applicabile.Fai clic su Rivedi aggiornamenti disponibili.
Vai a Servizi consentiti.
Fai clic su Consenti servizi per aggiungere le API BigQuery.
Se richiesto, fai clic su Sì per confermare la tua scelta.
Attendi circa due minuti e poi esegui di nuovo
terraform apply:terraform apply -var bootstrap_user=$(gcloud config list --format 'value(core.account)')Digita
yesquando richiesto.
Il progetto di bootstrap perde l'accesso al tuo account di fatturazione
Se il progetto di bootstrap perde l'accesso al tuo account di fatturazione, riattiva la fatturazione per il progetto di bootstrap.
Errori della chiave Cloud KMS
Se si verificano errori delle chiavi durante il processo di compilazione, potrebbe essere necessario abilitarle manualmente. Per le istruzioni, vedi Attivare una versione della chiave.
Se ricevi questi errori, attendi circa un minuto ed esegui di nuovo terraform apply.
I link simbolici non funzionano sui computer Windows
Su un computer Windows, i link simbolici potrebbero non funzionare. Potresti dover copiare
manualmente file specifici, in particolare psc.tf e log-metric-alerts.tf
durante la fase 2.
Problemi di fatturazione o relativi alle quote
Se riscontri problemi di fatturazione o di quota, verifica che il progetto di quota sia impostato. Puoi impostarlo eseguendo il seguente comando:
gcloud auth application-default set-quota-project PREFIX-prod-iac-core-0
Se vuoi, puoi utilizzare un altro progetto.
Passaggi successivi
Per la configurazione di sicurezza aggiuntiva, consulta Standard di sicurezza di Gemini.
Integra una soluzione SIEM come Google Security Operations per monitorare le risorse. Segmenta il tuo SIEM in un progetto Google Cloud separato e in un VPC separato da quello in cui raccoglie i dati.