O Secret Manager pode salvaguardar os seus dados confidenciais, como chaves da API, palavras-passe e certificados. Pode usá-lo para gerir, aceder e auditar os seus segredos em Google Cloud.
Pode configurar um cluster ou uma tarefa do Dataproc para usar um segredo do Secret Manager através do fornecedor de credenciais do Secret Manager.
Disponibilidade
Esta funcionalidade está disponível para utilização com clusters do Dataproc criados com as versões de imagem 2.0.97+, 2.1.41+, 2.2.6+ ou posteriores versões de imagem do Dataproc.
Terminologia
A tabela seguinte descreve os termos usados neste documento.
Vigência | Descrição |
---|---|
Secret |
Um secret do Secret Manager é um objeto de projeto global que contém uma coleção de metadados e versões do secret. Pode armazenar, gerir e aceder a segredos como blobs binários ou strings de texto. |
Credential |
No Hadoop e noutras aplicações alojadas no Dataproc, uma credencial consiste num nome de credencial (ID) e num valor de credencial (palavra-passe). Um ID da credencial e um valor são mapeados para um ID do secret e um valor secreto (versão do secret) do Secret Manager. |
Utilização
Pode configurar o Hadoop e outros componentes de software livre (OSS) para funcionarem com o Secret Manager definindo as seguintes propriedades quando cria um cluster do Dataproc ou envia uma tarefa.
Caminho do fornecedor : a propriedade do caminho do fornecedor,
hadoop.security.credential.provider.path
, é uma lista separada por vírgulas de um ou mais URIs do fornecedor de credenciais que é percorrida para resolver uma credencial.--properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- O
scheme
no caminho do fornecedor indica o tipo de fornecedor de credenciais. Os esquemas do Hadoop incluemjceks://
,user://
elocaljceks://
. Use o esquemagsm://
para pesquisar credenciais no Secret Manager.
- O
Substituir operador de ponto : o serviço Secret Manager não permite pontos (
.
) em nomes de segredos. No entanto, alguns componentes de software de código aberto (OSS) usam pontos nas respetivas chaves de credenciais. Para corrigir esta limitação, ative esta propriedade para substituir pontos (.
) por travessões (-
) nos nomes das credenciais. Isto garante que as credenciais de OSS com pontos nos respetivos nomes podem ser armazenadas e obtidas corretamente a partir do Secret Manager.Por exemplo, se uma chave de credenciais de OSS for
a.b.c
, tem de a modificar paraa-b-c
quando a armazenar no Secret Manager.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Esta é uma propriedade opcional. Por predefinição, o valor é
false
. Para chaves de credenciais que não tenham um operador de ponto (.
) no respetivo nome de credencial, esta propriedade pode ser ignorada em segurança.Versão do Secret : os Secrets no Secret Manager podem ter várias versões (valores). Use esta propriedade para aceder a 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
Esta é uma propriedade opcional. Por predefinição, o Secret Manager acede à versão
LATEST
, que é resolvida para o valor mais recente do Secret no tempo de execução. Se o seu exemplo de utilização for aceder sempre à versãoLATEST
de um segredo, pode ignorar esta propriedade com segurança.
Crie um cluster do Dataproc com o fornecedor de credenciais do Secret Manager
- Execute o seguinte comando 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...
Notas:
- CLUSTER_NAME: o nome do novo cluster.
- REGION: Uma região do Compute Engine onde a sua carga de trabalho é executada.
- PROJECT_ID: o ID do projeto está listado na secção Informações do projeto do Google Cloud painel de controlo da consola.
Envie um Dataproc com o fornecedor de credenciais do Secret Manager
Execute o seguinte comando localmente ou no Cloud Shell para enviar uma tarefa 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
Notas:
- CLUSTER_NAME: o nome do cluster que vai executar a tarefa.
- REGION: uma região do Compute Engine onde a sua carga de trabalho vai ser executada.
- PROJECT_ID: o ID do projeto está listado na secção Informações do projeto do Google Cloud painel de controlo da consola.
Use o Secret Manager com o Hive Metastore
A propriedade do Hive Metastore, javax.jdo.option.ConnectionPassword
, contém a palavra-passe usada para autenticar o acesso à base de dados do metastore. A palavra-passe é guardada 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 palavra-passe no Secret Manager e, em seguida, atualizar o ficheiro de configuração hive-site.xml
para permitir que o serviço de metastore do Hive leia a palavra-passe do Secret Manager.
Os exemplos seguintes mostram como usar o Secret Manager em diferentes cenários do Hive Metastore.
Crie um cluster com um metastore local
- Execute o seguinte comando localmente ou no Cloud Shell para
criar um cluster do Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Notas:
- CLUSTER_NAME: o nome do novo cluster.
- REGION: Uma região do Compute Engine onde a sua carga de trabalho é executada.
Crie um segredo através do Secret Manager ou do comando
hadoop credential
.Alternativa 1: use o Secret Manager para criar um segredo.
- Nome do segredo:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valor do Secret:
METASTORE_PASSWORD
.
- Nome do segredo:
Alternativa 2: use o comando
hadoop credential
para criar um segredo.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: uma vez que o Secret Manager não suporta o operador de ponto(
.
), substitua todos os pontos(.
) na palavra-passe por hífens(-
).
- METASTORE_PASSWORD: uma vez que o Secret Manager não suporta o operador de ponto(
Verifique se o segredo existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Use um editor de texto para remover a propriedade
javax.jdo.option.ConnectionPassword
do ficheirohive-site.xml
e, em seguida, adicione as propriedadeshadoop.security.credential.provider.path
ehadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
ao ficheiro.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 Hive Metastore.
sudo systemctl restart hive-metastore
Crie um cluster com um Hive Metastore externo
Execute o seguinte comando localmente ou no Cloud Shell para criar um cluster do Dataproc com as seguintes propriedades do cluster. Use este cluster como um metastore do Hive externo para tarefas do Hive executadas a partir de 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 segredo através do Secret Manager ou do comando
hadoop credential
.- Alternativa 1: use o Secret Manager para criar um segredo.
- Nome do segredo:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valor do Secret:
METASTORE_PASSWORD
.
- Nome do segredo:
- Alternativa 2: use o comando
hadoop credential
para criar um segredo.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: uma vez que o Secret Manager não suporta o operador de ponto(
.
), substitua os pontos(.
) na palavra-passe por hífens(-
).
- METASTORE_PASSWORD: uma vez que o Secret Manager não suporta o operador de ponto(
- Alternativa 1: use o Secret Manager para criar um segredo.
Verifique se o segredo existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Crie um cluster para executar tarefas do Hive que se ligam a um metastore externo
- Execute o seguinte comando localmente ou no Cloud Shell para
criar um cluster do Dataproc
com as seguintes propriedades do cluster.
Use este cluster para executar tarefas do Hive que se ligam ao metastore externo
noutro 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 credenciais do Hadoop
Pode usar o SSH
para se ligar ao nó principal do Dataproc
para usar o comando hadoop credential
para criar, listar e gerir segredos.
Os comandos hadoop credential
usam o seguinte formato:
hadoop credential SUBCOMMAND OPTIONS
.
Nos exemplos seguintes, a flag -provider
é adicionada para especificar o tipo de fornecedor e a localização (a loja do fornecedor). O esquema gsm://
especifica
o Secret Manager.
Crie um Secret com o ID do Secret especificado. O comando não cria o segredo se o ID do segredo especificado existir. Este comportamento é consistente com a API Hadoop
CredentialProvider
.hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Apresenta os segredos armazenados num projeto.
hadoop credential list -provider gsm://projects/PROJECT_ID
Verifique se existe um segredo num projeto com um valor especificado.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Verifique se existe uma versão secreta específica num ficheiro de configuração.
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
CONFIG_FILE: o ficheiro XML que define
hadoop.security.credstore.google-secret-manager.secret-version
.Eliminar todas as versões de um segredo num projeto.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Consulte o guia de comandos do Hadoop para mais informações.
O que se segue?
- Consulte a documentação do Hive.