Quando crei un cluster Dataproc, puoi abilitare Modalità protetta di Hadoop tramite Kerberos per fornire la multitenancy tramite l'autenticazione, l'isolamento e la crittografia degli utenti all'interno di un di un cluster Dataproc.
Autenticazione utente e altri servizi della piattaforma Google Cloud. L'autenticazione per utente tramite Kerberos si applica solo all'interno del cluster. Le interazioni con altri servizi Google Cloud, come Cloud Storage, continuano a essere autenticati come account di servizio per il cluster.
Attivazione della modalità protetta di Hadoop tramite Kerberos
L'abilitazione della modalità protetta di Kerberos e Hadoop per un cluster includerà il parametro Distribuzione MIT di Kerberos e configura Apache Hadoop YARN, HDFS, Alveare, Spark e componenti correlati per utilizzarlo per l'autenticazione.
L'attivazione di Kerberos crea un valore su cluster Key Distribution Center (KDC), che contiene entità servizio e un'entità radice. L'entità principale è l'account con autorizzazioni di amministratore per il KDC su cluster. Può contenere anche a entità utente standard o tramite attendibilità cross-realm a un altro KDC contenente l'utente tra cui scegliere.
Crea un cluster Kerberos
Puoi utilizzare Google Cloud CLI, l'API Dataproc o il dalla console Google Cloud abilita Kerberos sui cluster che utilizzano Dataproc versione immagine 1.3 e successivi.
Comando g-cloud
Per configurare automaticamente un nuovo cluster Dataproc Kerberos (versione immagine) 1.3 e versioni successive), utilizza il comando gcloud dataproc clusters create.
gcloud dataproc clusters create cluster-name \ --image-version=2.0 \ --enable-kerberos
Proprietà del cluster: anziché utilizzare --enable-kerberos
come mostrato sopra, puoi configurare automaticamente Kerberos passando il
--properties "dataproc:kerberos.beta.automatic-config.enable=true"
al comando clusters create
(vedi
proprietà del servizio Dataproc).
API REST
I cluster Kerberos possono essere creati tramite
ClusterConfig.SecurityConfig.KerberosConfig
nell'ambito di un
clusters.create
richiesta. Devi impostare enableKerberos
su true
.
Console
Puoi configurare automaticamente Kerberos su un nuovo cluster selezionando "Attiva" dalla sezione Modalità protetta di Kerberos e Hadoop di il riquadro Gestisci sicurezza su Dataproc Crea un cluster della console Google Cloud.
Crea un cluster Kerberos con la tua password dell'entità principale
Segui i passaggi riportati di seguito per configurare un cluster Kerberos che utilizza la password dell'entità radice.
Configura la password dell'entità radice Kerberos
L'entità radice Kerberos è l'account
con autorizzazioni di amministratore per il KDC su cluster. Per fornire in modo sicuro
per l'entità radice Kerberos, gli utenti possono criptarla con
Key Management Service (KMS) e poi
archivialo in un bucket Google Cloud Storage in cui
account di servizio del cluster
a cui possono accedere. All'account di servizio del cluster deve essere concessa
cloudkms.cryptoKeyDecrypter
Ruolo IAM.
Concedi il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS al account di servizio cluster:
gcloud projects add-iam-policy-binding project-id \ --member serviceAccount:project-number-compute@developer.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyDecrypter
Crea un keyring:
gcloud kms keyrings create my-keyring --location global
Crea una chiave nel keyring:
gcloud kms keys create my-key \ --location global \ --keyring my-keyring \ --purpose encryption
Cripta la password dell'entità radice Kerberos:
echo "my-password" | \ gcloud kms encrypt \ --location=global \ --keyring=my-keyring \ --key=my-key \ --plaintext-file=- \ --ciphertext-file=kerberos-root-principal-password.encrypted
- Carica la password criptata su un
Bucket Cloud Storage nel tuo progetto.
- Esempio:
gcloud storage cp kerberos-root-principal-password.encrypted gs://my-bucket
- Esempio:
- Carica la password criptata su un
Bucket Cloud Storage nel tuo progetto.
Crea il cluster
Puoi utilizzare il comando gcloud
o l'API Dataproc per
abilita Kerberos sui cluster con la tua password dell'entità radice.
Comando g-cloud
Per creare un cluster Dataproc Kerberos (versione immagine) 1.3 e versioni successive), utilizza il comando gcloud dataproc clusters create.
gcloud dataproc clusters create cluster-name \ --region=region \ --image-version=2.0 \ --kerberos-root-principal-password-uri=gs://my-bucket/kerberos-root-principal-password.encrypted \ --kerberos-kms-key=projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key
Usa un file di configurazione YAML (o JSON). Anziché passare i flag kerberos-*
al comando gcloud
come mostrato sopra, puoi inserire le impostazioni di Kerberos in un file di configurazione YAML (o JSON), quindi fare riferimento alla configurazione
per creare il cluster Kerberos.
- Crea un file di configurazione (vedi
Certificati SSL,
Impostazioni Kerberos aggiuntive e
Fiducia tra regni
per ulteriori impostazioni di configurazione che possono essere incluse nel file):
root_principal_password_uri: gs://my-bucket/kerberos-root-principal-password.encrypted kms_key_uri: projects/project-id/locations/global/keyRings/mykeyring/cryptoKeys/my-key
- Utilizza questo comando
gcloud
per creare il cluster Kerberos:gcloud dataproc clusters create cluster-name \ --region=region \ --kerberos-config-file=local path to config-file \ --image-version=2.0
Considerazioni sulla sicurezza. Dataproc ignora il formato decriptato
dopo aver aggiunto l'entità root al KDC. Per la sicurezza
ai fini della decrittografia, dopo aver creato il cluster puoi decidere di eliminare il file delle password e la chiave utilizzata per decriptare il secret e rimuovere l'account di servizio dal ruolo kmsKeyDecrypter
. Non farlo se prevedi di fare lo scale up del cluster, che richiede il file e la chiave della password, nonché il ruolo dell'account di servizio.
API REST
I cluster Kerberos possono essere creati tramite
ClusterConfig.SecurityConfig.KerberosConfig
nell'ambito di un
clusters.create
richiesta. Imposta enableKerberos
su true e imposta il
rootPrincipalPasswordUri
e kmsKeyUri
.
Console
Durante la creazione di un cluster Con l'immagine versione 1.3 o successiva, seleziona "Abilita" dalla modalità protetta di Kerberos e Hadoop del riquadro Gestisci sicurezza su Dataproc Crea un cluster della console Google Cloud, quindi seleziona le opzioni di sicurezza (esaminate nelle sezioni seguenti).
OS Login
La gestione KDC su cluster può essere eseguita con il comando kadmin
utilizzando l'entità utente Kerberos radice o sudo kadmin.local
.
Abilita OS Login
per controllare chi può eseguire i comandi dei super user.
Certificati SSL
Nell'ambito dell'abilitazione della modalità protetta di Hadoop, Dataproc crea un certificato autofirmato per abilitare la crittografia SSL del cluster. In alternativa, puoi fornire un certificato per la crittografia SSL del cluster aggiungendo le seguenti impostazioni alla file di configurazione Quando crei un cluster Kerberos:
ssl:keystore_password_uri
: località in Cloud Storage dell'evento File criptato KMS contenente la password del file dell'archivio chiavi.ssl:key_password_uri
: posizione in Cloud Storage dell'account criptato con KMS contenente la password per la chiave nel file dell'archivio chiavi.ssl:keystore_uri
: posizione del file dell'archivio chiavi in Cloud Storage contenente il certificato con caratteri jolly e la chiave privata utilizzata dai nodi del cluster.ssl:truststore_password_uri
: località in Cloud Storage dell'evento File criptato KMS che contiene la password del file truststore.ssl:truststore_uri
: posizione in Cloud Storage del file di archivio attendibilità che contengono certificati attendibili.
File di configurazione di esempio:
root_principal_password_uri: gs://my-bucket/kerberos-root-principal-password.encrypted kms_key_uri: projects/project-id/locations/global/keyRings/mykeyring/cryptoKeys/my-key ssl: key_password_uri: gs://bucket/key_password.encrypted keystore_password_uri: gs://bucket/keystore_password.encrypted keystore_uri: gs://bucket/keystore.jks truststore_password_uri: gs://bucket/truststore_password.encrypted truststore_uri: gs://bucket/truststore.jks
Impostazioni Kerberos aggiuntive
Per specificare un'area di autenticazione Kerberos, crea un cluster Kerberos con quanto segue aggiunta nel file di configurazione di Kerberos:
realm
: il nome dell'area di autenticazione Kerberos su cluster.
Se questa proprietà non è impostata, i nomi host dominio (in maiuscolo) sarà l'area di autenticazione.
Per specificare la chiave master del database KDC, crea un cluster Kerberos con quanto segue aggiunta nel file di configurazione di Kerberos:
kdc_db_key_uri
: posizione in Cloud Storage del file criptato KMS contenente la chiave master del database KDC.
Se questa proprietà non viene impostata, Dataproc genererà la chiave master.
Per specificare la durata massima del ticket che concede il ticket (in ore), crea un cluster Kerberos con quanto segue aggiunta nel file di configurazione di Kerberos:
tgt_lifetime_hours
: durata massima del ticket che concede il ticket, espressa in ore.
Se questa proprietà non viene impostata, Dataproc imposterà la durata del ticket è di 10 ore.
Trust tra reami
Il KDC sul cluster inizialmente contiene solo l'amministratore principale un'entità e un'entità di servizio. Puoi aggiungere utenti manualmente o stabilire un trust tra realm con un KDC esterno Server Active Directory contenente le entità utente. Cloud VPN o Cloud Interconnect per la connessione a una KDC/Active Directory on-premise.
Per creare un cluster Kerberos che supporti l'attendibilità tra realm, aggiungi le impostazioni elencate di seguito a Kerberos file di configurazione quando crei un cluster Kubernetes. Cripta la password condivisa con KMS e archiviarlo in un bucket Cloud Storage in cui dell'account di servizio del cluster.
cross_realm_trust:admin_server
: nome host/indirizzo del server di amministrazione remoto.cross_realm_trust:kdc
: nome host/indirizzo del KDC remoto.cross_realm_trust:realm
: nome dell'area di autenticazione remota dell'utente attendibile.cross_realm_trust:shared_password_uri
: posizione in Cloud Storage della password condivisa criptata con KMS.
File di configurazione di esempio:
root_principal_password_uri: gs://my-bucket/kerberos-root-principal-password.encrypted kms_key_uri: projects/project-id/locations/global/keyRings/mykeyring/cryptoKeys/my-key cross_realm_trust: admin_server: admin.remote.realm kdc: kdc.remote.realm realm: REMOTE.REALM shared_password_uri: gs://bucket/shared_password.encrypted
Per abilitare l'attendibilità tra realm a un KDC remoto:
Aggiungi quanto segue nel file
/etc/krb5.conf
nel KDC remoto:[realms] DATAPROC.REALM = { kdc = MASTER-NAME-OR-ADDRESS admin_server = MASTER-NAME-OR-ADDRESS }
Crea l'utente attendibile:
kadmin -q "addprinc krbtgt/DATAPROC.REALM@REMOTE.REALM"
Quando richiesto, inserisci la password dell'utente. La password deve corrispondere i contenuti del file criptato delle password condivise
Per abilitare l'attendibilità tra realm con Active Directory, esegui questi comandi in PowerShell come amministratore:
Crea una definizione di KDC in Active Directory.
ksetup /addkdc DATAPROC.REALM DATAPROC-CLUSTER-MASTER-NAME-OR-ADDRESS
Crea attendibilità in Active Directory.
netdom trust DATAPROC.REALM /Domain AD.REALM /add /realm /passwordt:TRUST-PASSWORD
La password deve corrispondere ai contenuti del file criptato delle password condivise.
dataproc
entità
Quando invii un job tramite Dataproc
API jobs
in un cluster Dataproc Dataproc, viene eseguito come dataproc
kerberos principal dal regno di kerberos dell'ammasso.
L'architettura multitenancy è supportata all'interno di un cluster Dataproc con Kerberos se inviare direttamente un lavoro, al cluster, ad esempio tramite SSH. Tuttavia, se il job legge o scrive su da altri servizi Google Cloud, come Cloud Storage, il job agisce come dell'account di servizio del cluster.
Proprietà cluster predefinite e personalizzate
La modalità sicura di Hadoop è configurata con nei file di configurazione. Dataproc imposta i valori predefiniti per queste proprietà.
Puoi eseguire l'override delle proprietà predefinite quando crei il cluster con
gcloud dataproc clusters create
--properties
o chiamando l'API e l'impostazione clusters.create
Proprietà SoftwareConfig (vedi
esempi di proprietà del cluster).
Modalità ad alta disponibilità
In modalità ad alta disponibilità (HA),
un cluster Kerberos avrà 3 KDC, uno su ciascun master. Il KDC in esecuzione
il "primo" ($CLUSTER_NAME-m-0
) sarà il KDC master e fungerà anche da server di amministrazione.
Il database del KDC master verrà sincronizzato con i due KDC di replica a intervalli di 5 minuti
attraverso un cron job e i tre KDC gestiranno il traffico in lettura.
Kerberos non supporta in modo nativo la replica in tempo reale o il failover automatico se il KDC master non è attivo. Per eseguire un failover manuale:
- Su tutte le macchine KDC, in
/etc/krb5.conf
, sostituisciadmin_server
con il nuovo master FQDN (Nome di dominio completo). Rimuovi il vecchio master dall'elenco KDC. - Nel nuovo KDC master, configura un cron job per propagare il database.
- Sul nuovo KDC master, riavvia il processo admin_server (
krb5-admin-server
). - Su tutte le macchine KDC, riavvia il processo KDC (
krb5-kdc
).
Configurazione di rete
Assicurarsi che i nodi worker possano comunicare con il server di amministrazione KDC e Kerberos in esecuzione sui master, verifica che le regole firewall VPC consentano il traffico in entrata Traffico TCP e UDP sulla porta 88 e traffico TCP in entrata sulla porta 749 sul master. In modalità ad alta disponibilità, assicurati che le regole firewall VPC consentano il traffico in entrata Traffico TCP sulla porta 754 sui master per consentire la propagazione delle modifiche apportate al KDC master. Kerberos richiede la corretta configurazione del DNS inverso. Inoltre, per la canonicalizzazione dell'entità di servizio basata su host, assicurati il DNS inverso sia configurato correttamente per la rete del cluster.
Per ulteriori informazioni
Consulta le Documentazione MIT Kerberos.