Provedor de credenciais do Secret Manager

Este documento descreve como usar o Secret Manager como um armazenamento 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. É possível usá-lo para gerenciar, acessar e auditar seus secrets em Google Cloud.

Ao executar uma carga de trabalho em lote do Serverless para Apache Spark, você pode configurá-la para usar um secret do Secret Manager usando 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 versões principais do ambiente de execução do Serverless 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 Secret Manager ID e um valor de secret do Secret Manager (versão do secret).

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 o Hadoop e outros componentes de OSS compatíveis 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 do 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://,localjceks://. Use o esquema gsm:// para pesquisar credenciais no Secret Manager.
  • Substituir operador de ponto : 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) usam pontos nas chaves de credenciais. Para corrigir essa limitação, ative essa propriedade para substituir pontos (.) por hifens (-) em nomes de 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 de OSS for a.b.c, modifique-a para a-b-c ao armazená-la no Secret Manager.

    --properties=spark.hadoop.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, 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=spark.hadoop.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 ambiente de execução. Se o 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: