Il plug-in Dataproc Ranger Cloud Storage, disponibile con le versioni delle immagini Dataproc 1.5 e 2.0, attiva un servizio di autorizzazione su ogni VM del cluster Dataproc. Il servizio di autorizzazione valuta Richieste dal connettore Cloud Storage rispetto ai criteri dei ranger e, se la richiesta è consentita, restituisce un token di accesso per il cluster Account di servizio VM.
Il plug-in Ranger Cloud Storage si basa Kerberos per l'autenticazione, e si integra con il supporto del connettore Cloud Storage per i token di delega. I token di delega sono archiviati in MySQL sul nodo master del cluster. La password root per il database viene specificata tramite le proprietà del cluster quando crei il cluster Dataproc.
Prima di iniziare
Concedi Creatore token account di servizio e il ruolo Amministratore ruoli IAM nella Account di servizio VM Dataproc nel tuo progetto.
Installa il plug-in Ranger Cloud Storage
Esegui questi comandi in una finestra del terminale locale o Cloud Shell per installare il ranger Plug-in di Cloud Storage durante la creazione di un cluster Dataproc.
Imposta le variabili di ambiente
export CLUSTER_NAME=new-cluster-name \ export REGION=region \ export KERBEROS_KMS_KEY_URI=Kerberos-KMS-key-URI \ export KERBEROS_PASSWORD_URI=Kerberos-password-URI \ export RANGER_ADMIN_PASSWORD_KMS_KEY_URI=Ranger-admin-password-KMS-key-URI \ export RANGER_ADMIN_PASSWORD_GCS_URI=Ranger-admin-password-GCS-URI \ export RANGER_GCS_PLUGIN_MYSQL_KMS_KEY_URI=MySQL-root-password-KMS-key-URI \ export RANGER_GCS_PLUGIN_MYSQL_PASSWORD_URI=MySQL-root-password-GCS-URI
Note:
- CLUSTER_NAME: il nome del nuovo cluster.
- REGIONE: la regione in cui
verrà creato un cluster, ad esempio
us-west1
. - KERBEROS_KMS_KEY_URI e KERBEROS_PASSWORD_URI: consulta Configurare la password dell'entità principale Kerberos.
- RANGER_ADMIN_PASSWORD_KMS_KEY_URI e RANGER_ADMIN_PASSWORD_GCS_URI: consulta Configura la password di amministratore del ranger.
- RANGER_GCS_PLUGIN_MYSQL_KMS_KEY_URI e RANGER_GCS_PLUGIN_MYSQL_PASSWORD_URI: imposta una password MySQL seguendo la stessa procedura che hai usato Configura una password di amministratore per un ranger.
Crea un cluster Dataproc
Esegui questo comando per creare un cluster Dataproc e installare Ranger Plug-in di Cloud Storage sul cluster.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --region=${REGION} \ --scopes cloud-platform \ --enable-component-gateway \ --optional-components=SOLR,RANGER \ --kerberos-kms-key=${KERBEROS_KMS_KEY_URI} \ --kerberos-root-principal-password-uri=${KERBEROS_PASSWORD_URI} \ --properties="dataproc:ranger.gcs.plugin.enable=true, \ dataproc:ranger.kms.key.uri=${RANGER_ADMIN_PASSWORD_KMS_KEY_URI}, \ dataproc:ranger.admin.password.uri=${RANGER_ADMIN_PASSWORD_GCS_URI}, \ dataproc:ranger.gcs.plugin.mysql.kms.key.uri=${RANGER_GCS_PLUGIN_MYSQL_KMS_KEY_URI}, \ dataproc:ranger.gcs.plugin.mysql.password.uri=${RANGER_GCS_PLUGIN_MYSQL_PASSWORD_URI}"
Note:
- Versione dell'immagine 1.5: se stai creando un cluster con versione dell'immagine 1.5 (vedi Selezionare le versioni), aggiungi il flag
--metadata=GCS_CONNECTOR_VERSION="2.2.6" or higher
per installare la versione del connettore richiesta.
Verifica l'installazione del plug-in Ranger Cloud Storage
Al termine della creazione del cluster, un tipo di servizio GCS
, denominato gcs-dataproc
,
appare nell'interfaccia web dell'amministratore del ranger.
Criteri predefiniti del plug-in Ranger Cloud Storage
Il servizio gcs-dataproc
predefinito prevede i seguenti criteri:
Criteri per leggere e scrivere nei bucket temporanei e di gestione temporanea del cluster Dataproc
Un criterio
all - bucket, object-path
che consente a tutti gli utenti di accedere ai metadati di tutti gli oggetti. Questo accesso è necessario per consentire al connettore Cloud Storage di eseguire operazioni su HCFS (Hadoop Compatible Filesystem).
Consigli per l'utilizzo
Accesso delle app alle cartelle del bucket
Per supportare le app che creano file intermedi nel bucket Cloud Storage,
puoi concedere le autorizzazioni Modify Objects
, List Objects
e Delete Objects
sul percorso del bucket Cloud Storage, quindi selezionare la modalità
recursive
per estendere le autorizzazioni ai percorsi secondari nel percorso specificato.
Misure di protezione
Per evitare la circonvenzione del plug-in:
Concedi all'account di servizio VM accesso alle risorse nei bucket Cloud Storage per consentirgli di concedere l'accesso a queste risorse con token di accesso con ambito limitato (consulta le autorizzazioni IAM per Cloud Storage). Inoltre, rimuovi l'accesso degli utenti alle risorse del bucket per evitare che accedano direttamente al bucket.
Disabilita
sudo
e altri mezzi di accesso root sulle VM del cluster, incluso l'aggiornamento il filesudoer
, per impedire la rappresentazione o le modifiche all'autenticazione e autorizzazioni. Per ulteriori informazioni, consulta le istruzioni per Linux per aggiungere/rimuovere i privilegi utentesudo
.Usa
iptable
per bloccare le richieste di accesso diretto a Cloud Storage dalle VM del cluster. Ad esempio, puoi bloccare l'accesso al server dei metadati della VM per impedire l'accesso alla credenziale dell'account di servizio della VM o al token di accesso utilizzato per autenticare e autorizzare l'accesso a Cloud Storage (consultablock_vm_metadata_server.sh
, un script di inizializzazione che utilizza le regoleiptable
per bloccare l'accesso al server dei metadati della VM).
Offerte di lavoro Spark, Hive-on-MapReduce e Hive-on-Tez
Per proteggere i dettagli sensibili dell'autenticazione utente e ridurre il carico sul centro di distribuzione delle chiavi (KDC), il driver Spark non distribuisce le credenziali Kerberos agli esecutori. Il driver Spark ottiene invece una delega dal plug-in Ranger Cloud Storage, quindi distribuisce la delega agli esecutori. Gli esecutori utilizzano il token di delega per autenticarsi al plug-in Cloud Storage di Ranger, scambiandolo con un token di accesso Google che consente l'accesso a Cloud Storage.
Anche i job Hive-on-MapReduce e Hive-on-Tez utilizzano token per accedere a Cloud Storage. Utilizza le seguenti proprietà per ottenere i token per accedere a bucket Cloud Storage specificati quando invii quanto segue tipi di prestazione:
Offerte di lavoro di Spark:
--conf spark.yarn.access.hadoopFileSystems=gs://bucket-name,gs://bucket-name,...
Job Hive-on-MapReduce:
--hiveconf "mapreduce.job.hdfs-servers=gs://bucket-name,gs://bucket-name,..."
Job Hive-on-Tez:
--hiveconf "tez.job.fs-servers=gs://bucket-name,gs://bucket-name,..."
Scenario del job Spark
Un job di conteggio parole Spark non riesce quando viene eseguito da una finestra del terminale su una VM del cluster Dataproc con installato il plug-in Ranger Cloud Storage.
spark-submit \ --conf spark.yarn.access.hadoopFileSystems=gs://${FILE_BUCKET} \ --class org.apache.spark.examples.JavaWordCount \ /usr/lib/spark/examples/jars/spark-examples.jar \ gs://bucket-name/wordcount.txt
Note:
- FILE_BUCKET: bucket Cloud Storage per l'accesso a Spark.
Output dell'errore:
Caused by: com.google.gcs.ranger.client.shaded.io.grpc.StatusRuntimeException: PERMISSION_DENIED: Access denied by Ranger policy: User: '<USER>', Bucket: '<dataproc_temp_bucket>', Object Path: 'a97127cf-f543-40c3-9851-32f172acc53b/spark-job-history/', Action: 'LIST_OBJECTS'
Note:
spark.yarn.access.hadoopFileSystems=gs://${FILE_BUCKET}
è obbligatorio in un ambiente attivo per Kerberos.
Output dell'errore:
Caused by: java.lang.RuntimeException: Failed creating a SPNEGO token. Make sure that you have run `kinit` and that your Kerberos configuration is correct. See the full Kerberos error message: No valid credentials provided (Mechanism level: No valid credentials provided)
Un criterio viene modificato utilizzando Gestione accessi nell'interfaccia web dell'amministratore del ranger
per aggiungere username
all'elenco di utenti che hanno List Objects
e un altro bucket temp
autorizzazioni aggiuntive.
L'esecuzione del job genera un nuovo errore.
Output degli errori:
com.google.gcs.ranger.client.shaded.io.grpc.StatusRuntimeException: PERMISSION_DENIED: Access denied by Ranger policy: User: <USER>, Bucket: '<file-bucket>', Object Path: 'wordcount.txt', Action: 'READ_OBJECTS'
Viene aggiunto un criterio per concedere all'utente l'accesso in lettura a wordcount.text
Percorso di Cloud Storage.
Il job viene eseguito e completato correttamente.
INFO com.google.cloud.hadoop.fs.gcs.auth.GcsDelegationTokens: Using delegation token RangerGCSAuthorizationServerSessionToken owner=<USER>, renewer=yarn, realUser=, issueDate=1654116824281, maxDate=0, sequenceNumber=0, masterKeyId=0 this: 1 is: 1 a: 1 text: 1 file: 1 22/06/01 20:54:13 INFO org.sparkproject.jetty.server.AbstractConnector: Stopped