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.
É possível configurar um cluster ou job do Dataproc para usar um secret do Secret Manager usando o provedor de credenciais do Secret Manager.
Disponibilidade
Esse recurso está disponível para uso com clusters do Dataproc criados com as versões de imagem 2.0.97+, 2.1.41+, 2.2.6+ ou mais recentes versões de imagem do Dataproc.
Terminologia
A tabela a seguir descreve os termos usados neste documento.
Termo | Descrição |
---|---|
Secret |
Um secret do Secret Manager é um objeto de projeto global que contém uma coleção de metadados e versões de secrets. É possível 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 em um nome (ID) e um valor (senha). Um ID e um valor de credencial são mapeados para um ID e um valor de secret do Secret Manager (versão do secret). |
Uso
É possível configurar o Hadoop e outros componentes do OSS para trabalhar com o Secret Manager definindo as seguintes propriedades ao criar um cluster do Dataproc ou enviar um job.
Caminho do provedor : a propriedade do caminho do provedor,
hadoop.security.credential.provider.path
, é uma lista separada por vírgulas de um ou mais URIs do provedor de credenciais que é percorrida para resolver uma credencial.--properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- O
scheme
no caminho do provedor indica o tipo de provedor de credenciais. Os esquemas do Hadoop incluemjceks://
,user://
elocaljceks://
. Use o esquemagsm://
para pesquisar credenciais no Secret Manager.
- O
Operador de ponto substituto : o serviço do Secret Manager não permite pontos (
.
) em nomes de secrets. No entanto, alguns componentes de software de código aberto (OSS, na sigla em inglês) usam pontos nas chaves de credencial. Para corrigir essa limitação, ative essa propriedade para substituir pontos (.
) por hifens (-
) nos nomes das credenciais. Isso garante que as credenciais do OSS com pontos nos nomes possam ser armazenadas e recuperadas corretamente do Secret Manager.Por exemplo, se uma chave de credencial de OSS for
a.b.c
, ela precisa ser modificada paraa-b-c
ao ser armazenada no Secret Manager.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Essa é uma propriedade opcional. Por padrão, o valor é
false
. Para chaves de credenciais que não têm um operador de ponto (.
) no nome da credencial, essa propriedade pode ser ignorada com segurança.Versão do secret : os secrets no Secret Manager podem ter várias versões (valores). Use essa propriedade para acessar uma versão específica do secret para acesso estável em ambientes de produção.
--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Essa é uma propriedade opcional. Por padrão, o Secret Manager acessa a versão
LATEST
, que é resolvida para o valor mais recente do secret no momento da execução. Se o seu caso de uso for sempre acessar a versãoLATEST
de um segredo, essa propriedade poderá ser ignorada com segurança.
Criar um cluster do Dataproc com o provedor de credenciais do Secret Manager
- Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster do Dataproc com as propriedades necessárias.
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...
Observações:
- CLUSTER_NAME: o nome do novo cluster.
- REGION: uma região do Compute Engine em que a carga de trabalho será executada.
- PROJECT_ID: o ID do projeto está listado na seção Informações do projeto do painel do console do Google Cloud.
Enviar um Dataproc com o provedor de credenciais do Secret Manager
Execute o comando a seguir localmente ou no Cloud Shell para enviar um job do Dataproc com as propriedades necessárias.
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
Observações:
- CLUSTER_NAME: o nome do cluster que vai executar o job.
- REGION: uma região do Compute Engine em que a carga de trabalho será executada.
- PROJECT_ID: o ID do projeto está listado na seção Informações do projeto do painel do console do Google Cloud.
Usar o Secret Manager com o Metastore do Hive
A propriedade Metastore do Hive, javax.jdo.option.ConnectionPassword
, contém
a senha usada para autenticar o acesso ao banco de dados do metastore. A
senha é salva no formato de texto 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 de metastore do Hive leia a senha
do Secret Manager.
Os exemplos a seguir mostram como usar o Secret Manager em diferentes cenários do Hive Metastore.
Criar um cluster com uma metastore local
- Execute o comando a seguir localmente ou no Cloud Shell para
criar um cluster do Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Observações:
- CLUSTER_NAME: o nome do novo cluster.
- REGION: uma região do Compute Engine em que a carga de trabalho será executada.
Crie 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 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 ponto(
.
), substitua todos os pontos(.
) na senha por hifen(-
).
- METASTORE_PASSWORD: como o Secret Manager não oferece suporte ao 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 adicione as propriedadeshadoop.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 o Metastore do Hive.
sudo systemctl restart hive-metastore
Criar um cluster com um Metastore Hive externo
Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster do Dataproc com as propriedades a seguir. Use esse cluster como um metastore externo do Hive para jobs do Hive executados em outros clusters do Dataproc para cargas de trabalho do 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...
Crie 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 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 hifen(-
).
- 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
Criar um cluster para executar jobs do Hive que se conectam a um metastore externo
- Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster do Dataproc com as propriedades a seguir.
Use esse cluster para executar jobs do Hive que se conectam à metastore externa
em outro cluster do 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 credencial do Hadoop
É possível usar o SSH
para se conectar ao nó mestre do Dataproc
e usar o comando hadoop credential
para criar, listar e gerenciar segredos.
Os comandos hadoop credential
usam o seguinte formato:
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 existir. Esse comportamento é consistente com a API
CredentialProvider
do Hadoop.hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Lista os segredos armazenados em um projeto.
hadoop credential list -provider gsm://projects/PROJECT_ID
Verifica se um secret existe em um projeto com um valor especificado.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Verifique 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.
Para mais informações
- Consulte a documentação do Hive.