Visão geral
O Secret Manager pode proteger seus dados sensíveis, como chaves de API, senhas e certificados. Use-o para gerenciar, acessar e auditar seus segredos no Google Cloud.
A API GoogleHadoopSecretManagerCredentialProvider
, que se integra ao
Secret Manager, é uma implementação da
API CredentialProvider do Hadoop, uma solução para proteger credenciais sensíveis contra
acesso público.
É possível usar a API do provedor de credenciais do Hadoop das seguintes maneiras:
- Use comandos de credencial do Hadoop.
- Configurar componentes OSS, como Hive, para trabalhar com o Secret Manager.
Terminologia
A tabela a seguir descreve os termos usados neste documento.
Termo | Descrição |
---|---|
Secret |
Um secret é um objeto global do projeto que contém uma coleção de metadados e versões de secrets. O Secret Manager permite armazenar, gerenciar e acessar secrets como blobs binários ou strings de texto. |
Credential |
No Hadoop e em outros aplicativos hospedados pelo Dataproc, uma credencial consiste no nome (ID) e no valor da credencial (senha). Um ID e um valor de credencial são mapeados para um ID e um valor de secret (versão do secret) no Secret Manager. |
Comandos de credencial do Hadoop
É possível usar o comando hadoop credential
para criar, listar e gerenciar segredos.
Os comandos hadoop credential
usam este formato geral:
hadoop credential SUBCOMMAND OPTIONS
.
Nos exemplos a seguir, a flag -provider
é adicionada para especificar o
tipo e o local do provedor (o armazenamento do provedor). O esquema gsm://
especifica
o Secret Manager.
Crie um secret com o ID especificado. O comando não cria o secret se o ID especificado já existir. Esse comportamento é consistente com a API
CredentialProvider
do Hadoop.hadoop credential create secret-id -provider gsm://projects/PROJECT_ID -v VALUE
Liste os secrets armazenados em um projeto.
hadoop credential list -provider gsm://projects/PROJECT_ID
Verifica se existe um secret em um projeto com um valor especificado.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Verificar se há uma versão específica do secret em um arquivo de configuração.
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/project-id -v VALUE
CONFIG_FILE: o arquivo XML que define
hadoop.security.credstore.google-secret-manager.secret-version
.Exclua todas as versões de um secret em um projeto.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Consulte o Guia de comandos do Hadoop para mais informações.
Configurar componentes OSS
Você pode configurar o Hadoop e outros componentes OSS compatíveis para trabalhar com o Secret Manager, definindo o seguinte componente propriedades:
Caminho do provedor (obrigatório): a propriedade do caminho do provedor,
hadoop.security.credential.provider.path
, é uma lista separada por vírgulas de um ou mais URIs de provedor de credencial que é percorrida para resolver uma credencial.--properties=hadoop.security.credential.provider.path=gsm://projects/project-id
- Um
scheme
é usado para indicar o tipo de provedor de credenciais. Os esquemas do Hadoop incluemjceks://
,user://
elocaljceks://
. Use o esquemagsm://
como mostrado no exemplo anterior para pesquisar a credencial no Secret Manager.
- Um
Operador de ponto substituto (opcional): o Secret Manager não oferece suporte ao operador de ponto (
.
) em nomes secretos, mas as chaves de credencial do componente OSS podem conter esse operador. Quando essa propriedade é definida comotrue
. Você pode substituir pontos (.
) por hífens (-
) nos nomes das credenciais. Por exemplo: Quando esta propriedade for definida comotrue
, será possível especificar o nome da credencial.a.b.c
comoa-b-c
ao passá-lo para o Secret Manager. Isso é necessária apenas para especificar uma credencial usando Comandos de credencial do Hadoop ou quando um componente OSS tenta resolver credenciais. Ela não afeta os comandos de criação, listagem ou exclusão de credenciais do Hadoop.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Versão do secret (opcional): os secrets no Secret Manager podem ter várias versões (valores). Use esta propriedade para acessar uma versão do secret. Por padrão, o Secret Manager acessa a versão
LATEST
, que é resolvida para o valor mais recente do secret no ambiente de execução. Uma prática recomendada é definir essa propriedade para acesso estável em ambientes de produção.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Exemplos de Metastore do Hive
A propriedade do metastore do Hive, javax.jdo.option.ConnectionPassword
, contém a senha usada para autenticar o acesso a um banco de dados do metastore. Essa senha foi salva no formato de texto simples em hive-site.xml
, o que representa um risco de segurança. Uma prática recomendada de produção é armazenar a senha no Secret Manager e atualizar o arquivo de configuração hive-site.xml
para permitir que o serviço do metastore Hive leia a senha do Secret Manager.
As seções a seguir dão instruções sobre como usar o Secret Manager no diferentes cenários do metastore Hive.
Cluster do Hive com metastore local
Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster do Dataproc com as propriedades do cluster necessárias.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
criar um segredo; É possível criar um secret usando o Secret Manager ou o comando
hadoop credential
.Alternativa 1: use o Secret Manager para criar um secret.
- Nome do segredo:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valor secreto:
METASTORE_PASSWORD
.
- Nome do segredo:
Alternativa 2: use o comando
hadoop credential
para criar um secret.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: como o Secret Manager faz
não for compatível com o operador ponto(
.
), substitua qualquer ponto(.
) na senha com hífen(-
).
- METASTORE_PASSWORD: como o Secret Manager faz
não for compatível com o operador ponto(
Verifique se o secret existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Use um editor de texto para remover a propriedade
javax.jdo.option.ConnectionPassword
do arquivohive-site.xml
e adicionehadoop.security.credential.provider.path
ehadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
ao arquivo.Exemplos de propriedades:
hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Reinicie a Metastore do Hive.
sudo systemctl restart hive-metastore
Cluster do Hive com uma metastore externa
Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster do Dataproc com as propriedades do cluster a seguir.
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...
criar um segredo; É possível criar um secret usando o Secret Manager ou o comando
hadoop credential
.- Alternativa 1: use o Secret Manager para criar um secret.
- Nome do secret:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valor secreto:
METASTORE_PASSWORD
.
- Nome do secret:
- Alternativa 2: use o comando
hadoop credential
para criar uma chave secreta.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: como o Secret Manager não oferece suporte ao operador de ponto (
.
), substitua os pontos (.
) na senha por hifens (-
).
- METASTORE_PASSWORD: como o Secret Manager não oferece suporte ao operador de ponto (
- Alternativa 1: use o Secret Manager para criar um secret.
Verifique se o secret existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster do Dataproc com as propriedades do cluster a seguir. Use esse cluster para executar jobs do Hive e se conectar ao metastore 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...
Para mais informações
- Confira a documentação do Hive.