Provedor de credenciais do Secret Manager

Este documento descreve como usar o Secret Manager como um repositório de credenciais com o Dataproc Serverless para armazenar e acessar com segurança os 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 segredos no Google Cloud.

Ao executar uma carga de trabalho em lote do Dataproc sem servidor, é possível configurá-la para usar um segredo do Secret Manager usando o provedor de credenciais do Secret Manager do Dataproc.

Disponibilidade

Esse recurso está disponível para as versões do ambiente de execução do Dataproc Serverless para Spark 1.2.29+, 2.2.29+ ou versões principais mais recentes.

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 workloads 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 do Secret Manager (versão do secret).

Uso

É possível configurar o Hadoop com suporte e outros componentes do OSS para trabalhar com o Secret Manager definindo as seguintes propriedades ao enviar uma carga de trabalho do Dataproc sem servidor:

  • 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 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 incluem jceks://, user:// e localjceks://. Use o esquema gsm:// para pesquisar credenciais no Secret Manager.
  • 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 para a-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ão LATEST de um segredo, 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.hive.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,spark.hive.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
    ...other flags as needed...

Substitua: