Secret Manager Credential Provider

Este documento descreve como usar o Secret Manager como um repositório de credenciais com o Google Cloud Serverless para Apache Spark para armazenar e aceder em segurança a dados confidenciais processados por cargas de trabalho sem servidor.

Vista geral

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.

Quando executa uma carga de trabalho em lote sem servidor para o Apache Spark, pode configurá-la para usar um segredo do Secret Manager através do fornecedor de credenciais do Secret Manager do Dataproc.

Disponibilidade

Esta funcionalidade está disponível para as versões de tempo de execução do Serverless for Apache Spark 1.2.29+, 2.2.29+ ou versões de tempo de execução principais posteriores.

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 cargas de trabalho do 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.

Autorizações

O Dataproc verifica se existem os seguintes segredos opcionais:

  • fs-gs-encryption-key
  • fs-gs-encryption-key-hash
  • fs-gs-proxy-password
  • fs-gs-proxy-username

Para se certificar de que a conta de serviço da VM do Dataproc tem autorização para verificar os segredos do fs-gs, adicione a função Secret Manager Secret Accessor com a seguinte condição à conta de serviço, da seguinte forma:

{
  "expression": "resource.name.startsWith(\"projects/PROJECT_NUMBER/secrets/fs-gs-\")",
  "title": "gsmkeycondition",
  "description": "Permission to access Dataproc secrets"
}

Utilização

Pode configurar o Hadoop suportado e outros componentes de software de código aberto (OSS) para funcionar com o Secret Manager definindo as seguintes propriedades quando envia uma carga de trabalho sem servidor para o Apache Spark:

  • Caminho do fornecedor (obrigatório): a propriedade do caminho do fornecedor, spark.hadoop.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=spark.hadoop.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 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 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 para a-b-c quando a armazenar no Secret Manager.

    --properties=spark.hadoop.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=spark.hadoop.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ão LATEST de um segredo, pode ignorar esta propriedade com segurança.

Execute uma carga de trabalho em lote com o fornecedor de credenciais do Secret Manager

Para enviar uma carga de trabalho em lote que usa o fornecedor de credenciais do Secret Manager, execute o seguinte comando 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 o seguinte: