Descripción general
Secret Manager puede proteger tus datos sensibles, como claves de API, contraseñas y certificados. Úsalo para administrar, acceder y auditar tus secretos en Google Cloud.
La API de GoogleHadoopSecretManagerCredentialProvider
, que se integra en Secret Manager, es una implementación de la API de Hadoop CredentialProvider, una solución para proteger las credenciales sensibles del acceso público.
Puedes usar la API del proveedor de credenciales de Hadoop de las siguientes maneras:
- Usa los comandos de credenciales de Hadoop.
- Configura componentes de OSS, como Hive, para que funcionen con Secret Manager.
Terminología
En la siguiente tabla, se describen los términos que se usan en este documento.
Término | Descripción |
---|---|
Secret |
Un secreto es un objeto global del proyecto que contiene una colección de metadatos y versiones secretas. Secret Manager te permite 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 de secreto y un valor de secreto (versión secreta) en Secret Manager. |
Comandos de credenciales de Hadoop
Puedes usar el comando de hadoop credential
para crear, enumerar y administrar secretos.
Los comandos hadoop credential
usan este formato general:
hadoop credential SUBCOMMAND OPTIONS
En los siguientes ejemplos, se agrega la marca -provider
para especificar la
el tipo y la ubicación del proveedor (la tienda del proveedor). El esquema gsm://
especifica
Secret Manager.
Crea un Secret con el ID del 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: El archivo en formato XML que configura
hadoop.security.credstore.google-secret-manager.secret-version
.Borrar todas las versiones de un secreto de 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.
Configura los componentes de OSS
Puedes configurar Hadoop y otros componentes de OSS compatibles para trabajar con Secret Manager configurando el siguiente componente: propiedades:
Provider path (obligatorio): Es la propiedad de la ruta del proveedor,
hadoop.security.credential.provider.path
, es una lista separada por comas de uno o más URI de proveedores de credenciales que se recorre para resolver una credencial.--properties=hadoop.security.credential.provider.path=gsm://projects/project-id
- Se usa un
scheme
para indicar el tipo de proveedor de credenciales. Los esquemas de Hadoop incluyenjceks://
,user://
ylocaljceks://
. Usa el esquemagsm://
como se muestra en el ejemplo anterior para buscar la credencial en Secret Manager.
- Se usa un
Operador de punto sustituto (opcional): Es el administrador de secretos. no es compatible con el operador punto(
.
) en nombres de secretos, pero el componente de OSS las claves de credenciales 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. Esta solo se necesita para especificar una credencial usando Comandos de credenciales de Hadoop o cuando un componente de OSS intenta resolver credenciales. No tiene ningún efecto en los comandos para crear, enumerar o borrar credenciales de Hadoop.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Versión del secreto (opcional): Los secretos en Secret Manager pueden tener varias versiones (valores). Usa esta propiedad para acceder a una versión del Secret. De forma predeterminada, el Secret Manager accede a la versión de
LATEST
, que se resuelve en el valor más reciente del secreto en el entorno de ejecución. Una práctica recomendada es definir esta propiedad para obtener un acceso estable en entornos de producción.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Ejemplos de Hive Metastore
La propiedad javax.jdo.option.ConnectionPassword
de Hive Metastore contiene la contraseña que se usa para autenticar el acceso a una base de datos del almacén de metadatos. Esta contraseña se guarda en formato de texto sin formato 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 Hive Metastore lea la contraseña desde Secret Manager.
En las siguientes secciones, se proporcionan instrucciones para usar Secret Manager en distintos casos de uso de Hive Metastore.
Clúster de Hive con almacén de metadatos local
Ejecuta el siguiente comando de forma local o en Cloud Shell para crear un clúster de Dataproc con las propiedades del clúster requeridas.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Crear un secreto. Puedes crear Secrets con el Secret Manager o con 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: Dado que Secret Manager no
no admite el operador punto(
.
), sustituye cualquier punto(.
) en la contraseña con guiones(-
).
- METASTORE_PASSWORD: Dado que Secret Manager no
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
Clúster de Hive con un almacén de metadatos externo
Ejecuta el siguiente comando de forma local o en Cloud Shell para Crea un clúster de Dataproc con las siguientes propiedades de clúster.
gcloud dataproc clusters create 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...
Crear un secreto. Puedes crear un secreto con Secret Manager o el comando
hadoop credential
.- Alternativa 1: Usa Secret Manager para crear un secreto.
- Nombre del Secret:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valor secreto:
METASTORE_PASSWORD
.
- Nombre del Secret:
- 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: Dado que Secret Manager
no admite el operador punto (
.
), reemplaza los puntos (.
) en la contraseña con guiones (-
).
- METASTORE_PASSWORD: Dado que Secret Manager
no admite el operador punto (
- Alternativa 1: Usa Secret Manager para crear un secreto.
Verifica que el secreto exista.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
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 y conectarte al almacén de metadatos externo.
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...
Más información
- Explora la documentación de Hive.