Neste documento, descrevemos como usar o Secret Manager como um repositório de credenciais com o Google Cloud Serverless para Apache Spark para armazenar e acessar com segurança dados sensíveis processados por cargas de trabalho sem servidor.
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 secrets no Google Cloud.
Ao executar uma carga de trabalho em lote do Serverless para Apache Spark, é possível configurá-la para usar um secret do Secret Manager com o provedor de credenciais do Secret Manager do Dataproc.
Disponibilidade
Terminologia
A tabela a seguir descreve os termos usados neste documento.
Termo | Descrição |
---|---|
Secret |
Um secret do Secret Manager é um objeto global do projeto 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 outras cargas de trabalho do 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 (versão do secret) do Secret Manager. |
Permissões
O Dataproc verifica se os seguintes secrets opcionais existem:
- fs-gs-encryption-key
- fs-gs-encryption-key-hash
- fs-gs-proxy-password
- fs-gs-proxy-username
Para garantir que a conta de serviço da VM do Dataproc
tenha permissão para verificar os secrets fs-gs
, adicione o
papel de acessador de secrets do Secret Manager
com a seguinte condição à conta de serviço:
{ "expression": "resource.name.startsWith(\"projects/PROJECT_NUMBER/secrets/fs-gs-\")", "title": "gsmkeycondition", "description": "Permission to access Dataproc secrets" }
Uso
É possível configurar componentes compatíveis do Hadoop e outros OSS para trabalhar com o Secret Manager definindo as seguintes propriedades ao enviar uma carga de trabalho do Serverless para Apache Spark:
Caminho do provedor (obrigatório): a propriedade de caminho do provedor,
spark.hadoop.hadoop.security.credential.provider.path
, é uma lista separada por vírgulas de um ou mais URIs de provedor de credenciais que são percorridos para resolver uma credencial.--properties=spark.hadoop.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
Substituir operador de ponto : o serviço Secret Manager não permite pontos (
.
) em nomes de secrets. No entanto, alguns componentes de software de código aberto (OSS) usam pontos nas chaves de credenciais. Para corrigir essa limitação, ative a propriedade para substituir pontos (.
) por hífens (-
) nos nomes das credenciais. Isso garante que as credenciais de OSS com pontos nos nomes possam ser armazenadas e recuperadas corretamente do Secret Manager.Por exemplo, se uma chave de credencial do OSS for
a.b.c
, modifique paraa-b-c
ao armazenar no Secret Manager.--properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Essa 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 e ter acesso estável em ambientes de produção.
--properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-version=1
Essa propriedade é opcional. Por padrão, o Secret Manager acessa a versão
LATEST
, que é resolvida com o valor mais recente do secret durante a execução. Se o seu caso de uso for sempre acessar a versãoLATEST
de um secret, essa propriedade poderá ser ignorada com segurança.
Executar uma carga de trabalho em lote com o provedor de credenciais do Secret Manager
Para enviar uma carga de trabalho em lote que usa o provedor de credenciais do Secret Manager, execute o comando a seguir localmente ou no Cloud Shell.
gcloud dataproc batches submit spark \ --region=REGION \ --jars=JARS \ --class=MAIN_CLASS \ --properties="spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Substitua:
- REGION: uma região do Compute Engine em que sua carga de trabalho é executada
- JARS: caminho do jar da carga de trabalho
- MAIN_CLASS: a classe principal do Jar
- PROJECT_ID: o ID do projeto, listado na seção Informações do projeto do painel do console doGoogle Cloud