Provedor de credenciais do Secret Manager

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

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

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 incluem jceks://, user:// e localjceks://. Use o esquema gsm:// para pesquisar credenciais no Secret Manager.
  • 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 para a-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ão LATEST 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: