Descripción general
Secret Manager puede proteger tus datos sensibles, como tus claves de API, contraseñas y certificados. Puedes usarlo para administrar, acceder y auditar tus secretos en Google Cloud.
Puedes configurar un clúster o trabajo de Dataproc para usar un Secret de Secret Manager con el Proveedor de credenciales de Secret Manager.
Disponibilidad
Esta función está disponible para usarse con clústeres de Dataproc creados con las versiones de imagen de Dataproc principales 2.0.97, 2.1.41, 2.2.6 o versiones posteriores.
Terminología
En la siguiente tabla, se describen los términos que se usan en este documento.
Término | Descripción |
---|---|
Secret |
Un secreto de Secret Manager es un objeto de proyecto global que contiene una colección de metadatos y versiones de secretos. Puedes almacenar, administrar y acceder a los secretos como BLOB binarios o cadenas de texto. |
Credential |
En Hadoop y otras aplicaciones alojadas en Dataproc, una credencial consiste en un nombre de credencial (ID) y un valor de credencial (contraseña). Un ID y un valor de credencial se asignan a un ID y un valor secretos de Secret Manager (versión secreta). |
Uso
Puedes configurar Hadoop y otros componentes de OSS para que funcionen con Secret Manager. Para ello, establece las siguientes propiedades cuando crees un clúster de Dataproc o envíes un trabajo.
Ruta de acceso del proveedor (obligatoria): La propiedad ruta de acceso del proveedor,
hadoop.security.credential.provider.path
, es una lista de uno o más URIs de proveedores de credenciales separados por comas que se recorren para resolver una credencial.--properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- El
scheme
en la ruta de acceso del proveedor indica el tipo de proveedor de credenciales. Los esquemas de Hadoop incluyenjceks://
,user://
ylocaljceks://
. Usa el esquemagsm://
para buscar credenciales en Secret Manager.
- El
Operador de punto sustituto (opcional): Secret Manager no admite el operador de punto(
.
) en nombres de secretos, pero las claves de credenciales de componentes de OSS pueden contener este operador. Cuando esta propiedad se establece entrue
. Puedes reemplazar los puntos(.
) por guiones(-
) en los nombres de las credenciales. Por ejemplo, cuando esta propiedad se establece entrue
, puedes especificar el nombre de la credenciala.b.c
comoa-b-c
cuando la pasas a Secret Manager.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Versión del secreto (opcional): Los secretos de Secret Manager pueden tener varias versiones (valores). Usa esta propiedad para acceder a una versión del Secret. De forma predeterminada, Secret Manager accede a la versión
LATEST
, que se resuelve en el valor más reciente del secreto durante el tiempo de ejecución. Una práctica recomendada es definir esta propiedad para obtener un acceso estable en entornos de producción. Para obtener información sobre cómo crear un secreto, consulta Crea y accede a un secreto con Secret Manager y Comandos de credenciales de Hadoop.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Crea un clúster de Dataproc con el proveedor de credenciales de Secret Manager
- Ejecuta el siguiente comando de forma local o en Cloud Shell para
crear un clúster de Dataproc
con las propiedades requeridas.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hadoop:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Notas:
- CLUSTER_NAME el nombre del clúster nuevo.
- REGION: Es una región de Compute Engine en la que se ejecutará tu carga de trabajo.
- PROJECT_ID: El ID de tu proyecto aparece en la sección Información del proyecto del panel de la consola de Google Cloud.
Envía un trabajo de Dataproc con el proveedor de credenciales de Secret Manager
Ejecuta el siguiente comando de forma local o en Cloud Shell para enviar un trabajo de Dataproc con las propiedades requeridas.
gcloud dataproc jobs submit CLUSTER_NAME \ --region=REGION \ --properties="hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed... \ -- job-args
Notas:
- CLUSTER_NAME: Es el nombre del clúster que ejecutará la tarea.
- REGION: Es una región de Compute Engine en la que se ejecutará tu carga de trabajo.
- PROJECT_ID: El ID de tu proyecto aparece en la sección Información del proyecto del panel de la consola de Google Cloud.
Usa Secret Manager con Hive Metastore
La propiedad Hive Metastore, javax.jdo.option.ConnectionPassword
, contiene la contraseña que se usa para autenticar el acceso a la base de datos de Metastore. La contraseña se guarda en formato de texto en hive-site.xml
, lo que representa un riesgo de seguridad. Una práctica recomendada para la producción es almacenar la contraseña en Secret Manager y, luego, actualizar el archivo de configuración hive-site.xml
para permitir que el servicio de metastore de Hive lea la contraseña desde Secret Manager.
En los siguientes ejemplos, se muestra cómo usar Secret Manager en diferentes situaciones de Hive Metastore.
Crea un clúster con un metastore local
- Ejecuta el siguiente comando de forma local o en Cloud Shell para
crear un clúster de Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Notas:
- CLUSTER_NAME el nombre del clúster nuevo.
- REGION: Es una región de Compute Engine en la que se ejecutará tu carga de trabajo.
Crea un secreto con Secret Manager o el comando
hadoop credential
.Alternativa 1: Usa Secret Manager para crear un secreto.
- Nombre del secreto:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valor secreto:
METASTORE_PASSWORD
.
- Nombre del secreto:
Alternativa 2: Usa el comando
hadoop credential
para crear un secreto.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Como Secret Manager
no admite el operador punto(
.
), reemplaza cualquier punto(.
) de la contraseña con guiones(-
).
- METASTORE_PASSWORD: Como Secret Manager
no admite el operador punto(
Verifica que el Secret exista.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Usa un editor de texto para quitar la propiedad
javax.jdo.option.ConnectionPassword
del archivohive-site.xml
y, luego, agrega las propiedadeshadoop.security.credential.provider.path
yhadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
al archivo.Propiedades de ejemplo:
hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Reinicia Hive Metastore.
sudo systemctl restart hive-metastore
Crea un clúster con un Metastore de Hive externo
Ejecuta el siguiente comando de forma local o en Cloud Shell para crear un clúster de Dataproc con las siguientes propiedades del clúster. Usa este clúster como un almacén de metadatos externo de Hive para trabajos de Hive que se ejecutan desde otros clústeres de Dataproc para cargas de trabajo de Spark Hive.
gcloud dataproc clusters create METASTORE_CLUSTER_NAME \ --region=REGION \ --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore" \ ...other flags as needed...
Crea un secreto con Secret Manager o el comando
hadoop credential
.- Alternativa 1: Usa Secret Manager para crear un secreto.
- Nombre del secreto:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valor secreto:
METASTORE_PASSWORD
.
- Nombre del secreto:
- Alternativa 2: Usa el comando
hadoop credential
para crear un secreto.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Como Secret Manager
no admite el operador punto(
.
), reemplaza los puntos(.
) en la contraseña con guiones(-
).
- METASTORE_PASSWORD: Como Secret Manager
no admite el operador punto(
- Alternativa 1: Usa Secret Manager para crear un secreto.
Verifica que el Secret exista.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Crea un clúster para ejecutar trabajos de Hive que se conecten a un almacén de metadatos externo
- Ejecuta el siguiente comando de forma local o en Cloud Shell para
crear un clúster de Dataproc
con las siguientes propiedades del clúster.
Usa este clúster para ejecutar trabajos de Hive que se conecten al almacén de metadatos externo en otro clúster de Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hive:javax.jdo.option.ConnectionURL=jdbc:mysql://METASTORE_CLUSTER_NAME-m/metastore,hive:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Comandos de credenciales de Hadoop
Puedes usar SSH para conectarte al nodo principal de Dataproc y usar el comando hadoop credential
para crear, enumerar y administrar secretos.
Los comandos hadoop credential
usan el siguiente formato: hadoop credential SUBCOMMAND OPTIONS
.
En los siguientes ejemplos, se agrega la marca -provider
para especificar el tipo y la ubicación del proveedor (la tienda del proveedor). El esquema gsm://
especifica
Secret Manager.
Crea un Secret con el ID de Secret especificado. El comando no crea el secreto si el ID de secreto especificado existe. Este comportamiento es coherente con la API de
CredentialProvider
de Hadoop.hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Enumera los secretos almacenados en un proyecto.
hadoop credential list -provider gsm://projects/PROJECT_ID
Verifica si existe un secreto en un proyecto con un valor especificado.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Busca una versión de secreto específica en un archivo de configuración.
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
CONFIG_FILE: Es el archivo en formato XML que establece
hadoop.security.credstore.google-secret-manager.secret-version
.Borra todas las versiones de un secreto en un proyecto.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Consulta la Guía de comandos de Hadoop para obtener más información.
Más información
- Explora la documentación de Hive.