Compartilhar via


Gerenciamento de segredos

Às vezes, o acesso aos dados exige que você se autentique em fontes de dados externas por meio do JDBC. Em vez de inserir diretamente suas credenciais em um notebook, você pode usar os segredos do Azure Databricks para armazenar suas credenciais e referenciá-las em notebooks e trabalhos. Este artigo fornece uma visão geral dos segredos do Azure Databricks.

Visão geral dos segredos

Para configurar e usar segredos, você:

  1. Criar um escopo secreto. Um escopo de segredos é a coleção de segredos identificada por um nome.
  2. Adicionar segredos ao escopo
  3. Atribua permissões no escopo do segredo.
  4. Acesse segredos usando o Databricks Utilities, consulte Utilitário de segredos (dbutils.secrets).

Para obter um exemplo de ponta a ponta de como usar segredos em seus fluxos de trabalho, consulte Tutorial: Criar e usar um segredo do Databricks. Para usar um segredo em uma propriedade de configuração ou variável de ambiente do Spark, consulte Usar um segredo em uma propriedade de configuração ou variável de ambiente do Spark.

Aviso

Administradores, criadores de segredo e usuários que receberam permissão podem ler os segredos do Azure Databricks. Embora o Databricks se esforce para redigir valores secretos que podem ser exibidos em notebooks, não é possível impedir que esses usuários leiam segredos. Consulte Redação secreta.

Gerenciar escopos secretos

Um escopo de segredos é a coleção de segredos identificada por um nome. A Databricks recomenda alinhar escopos secretos a funções ou aplicativos em vez de indivíduos.

Há dois tipos de escopo secreto:

  • Com suporte do Azure Key Vault: você pode fazer referência a segredos armazenados em um Azure Key Vault usando escopos secretos com suporte do Azure Key Vault. O escopo secreto com suporte do Azure Key Vault é uma interface somente leitura para o Key Vault. Você deve gerenciar segredos em escopos de segredo com suporte do Azure Key Vault no Azure.
  • Com suporte do Databricks: um escopo de segredo com suporte do Databricks é armazenado em um banco de dados criptografado de propriedade e gerenciado pelo Azure Databricks.

Depois de criar um escopo secreto, você pode atribuir permissões para conceder aos usuários acesso para ler, gravar e gerenciar escopos de script.

Criar um escopo de segredo com backup Azure Key Vault

Esta seção descreve como criar um escopo de segredos com suporte do Azure Key Vault usando o portal do Azure e a interface do usuário do workspace do Azure Databricks. Você também pode criar um escopo de segredo com suporte do Azure Key Vault usando a CLI do Databricks.

Requisitos

  • Você deve ter uma instância do Azure Key Vault. Se você não tem uma instância do de cofre de chaves, siga as instruções em Criar um Key Vault usando o portal do Azure.
  • Você deve ter a função Colaborador, Colaborador ou Proprietário do Key Vault na instância do cofre de chaves do Azure que deseja usar para dar suporte ao escopo secreto.

Observação

A criação de um escopo de segredo com suporte do Azure Key Vault requer a função Colaborador ou Proprietário na instância do cofre de chaves do Azure, mesmo que o serviço Azure Databricks tenha recebido acesso ao cofre de chaves.

Se o cofre de chaves existir em um locatário diferente do workspace do Azure Databricks, o usuário do Azure AD que cria o escopo de segredos deverá ter permissão para criar entidades de serviço no locatário do cofre de chaves. Caso contrário, o seguinte erro ocorrerá:

Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}

Configurar sua instância do cofre de chaves do Azure para o Azure Databricks

  1. Faça logon no Portal do Azure, localize e selecione a instância do cofre de chaves do Azure.

  2. Em Configurações, clique na guia Configuração do Access.

  3. Defina o Modelo de permissão como Política de acesso do key vault.

    Observação

    A criação de uma função de escopo de segredo com suporte do Azure Key Vault concede as permissões Obter e Listar à ID do aplicativo para o serviço Azure Databricks usando as políticas de acesso do cofre de chaves. O modelo de permissão de controle de acesso baseado em função do Azure não é compatível com o Azure Databricks.

  4. Em Configurações, selecione Rede.

  5. Em Firewalls e redes virtuais, defina Permitir acesso de: a Permitir acesso público de redes virtuais e endereços IP específicos.

    Em Exceção, selecione Permitir que serviços confiáveis da Microsoft contornem este firewall.

    Observação

    Você também pode definir Permitir acesso de: para Permitir acesso público de todas as redes.

Criar um escopo de segredo com backup Azure Key Vault

  1. Ir para https://<databricks-instance>#secrets/createScope. Substitua <databricks-instance> pela URL do workspace da sua implantação do Azure Databricks. Essa URL diferencia maiúsculas de minúsculas. Por exemplo, scope em createScope deve usar uma maiúscula S).

    Criar escopo

  2. Insira o nome do escopo de segredos. Os nomes de escopo secreto não diferenciam maiúsculas de minúsculas.

  3. Em Gerenciar Entidade de Segurança , selecione Criador ou Todos os usuários do workspace para especificar quais usuários têm a permissão MANAGE no escopo do segredo.

    A permissão MANAGE permite que os usuários leiam, gravem e concedam permissões no escopo. Sua conta deve ter o plano Premium para escolher Creator.

  4. Insira o Nome DNS (por exemplo, https://databrickskv.vault.azure.net/) e a ID do Recurso, por exemplo:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Essas propriedades estão disponíveis na guia Configurações > Propriedades de um Azure Key Vault no portal do Azure.

  5. Clique em Criar.

  6. Use o comando databricks secrets list-scopes da CLI do Databricks para verificar se o escopo foi criado com sucesso.

Criar um escopo de segredo com suporte do Databricks

Esta seção descreve como criar um escopo secreto usando a interface O que é a CLI do Databricks? (versão 0.205 e superior). Você também pode usar a API de Segredos.

Nomes de escopo secreto:

  • Deve ser exclusivo dentro de um workspace.
  • Deve consistir em caracteres alfanuméricos, traços, @sublinhados e pontos, e não pode exceder 128 caracteres.
  • Não diferenciam maiúsculas de minúsculas.

Os nomes de escopo secretos são considerados não confidenciais e podem ser lidos por todos os usuários no workspace.

Para criar um escopo usando a CLI do Databricks:

databricks secrets create-scope <scope-name>

Por padrão, os escopos são criados com a permissão MANAGE atribuída ao usuário que criou o escopo. Depois de criar um escopo de segredo com suporte do Databricks, você pode adicionar segredos a ele.

Listar escopos de segredo

Para listar os escopos existentes em um workspace usando a CLI:

databricks secrets list-scopes

Você também pode listar escopos secretos usando a API Secrets.

Excluir um escopo de segredo

A exclusão de um escopo de segredo exclui todos os segredos e ACLs aplicados ao escopo. Para excluir um escopo usando a CLI, execute o seguinte:

databricks secrets delete-scope <scope-name>

Você também pode excluir um escopo de segredos usando a API de Segredos.

Gerenciar segredos

Um segredo é um par de chave-valor que armazena material confidencial usando um nome de chave exclusivo dentro de um escopo secreto.

Esta seção descreve como criar um escopo secreto usando a interface O que é a CLI do Databricks? (versão 0.205 e superior). Você também pode usar a API de Segredos. Os nomes secretos não diferenciam maiúsculas de minúsculas.

Criar um segredo

O método usado para criar um segredo depende do fato de você estar usando um escopo com suporte do Azure Key Vault ou um escopo com suporte do Databricks.

Criar um segredo em um escopo com suporte do Azure Key Vault

Para criar um segredo no Azure Key Vault, use o portal do Azure ou a API REST do Azure Set Secret . Para obter um exemplo, consulte Etapa 4: Adicionar o segredo do cliente ao Azure Key Vault.

Cofre de Chave do Azure

Criar um segredo em um escopo com suporte do Databricks

Esta seção descreve como criar segredos usando a interface O que é a CLI do Databricks? (versão 0.205 e superior). Você também pode usar a API de Segredos. Os nomes secretos não diferenciam maiúsculas de minúsculas.

Ao criar um segredo em um escopo com suporte do Databricks, você pode especificar o valor do segredo de uma das três maneiras:

  • Especifique o valor como uma cadeia de caracteres usando o sinalizador –string-value.
  • Insira o segredo quando solicitado de forma interativa (segredos de linha única).
  • Passe o segredo usando a entrada padrão (segredos de várias linhas).

Por exemplo:

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

Se você estiver criando um segredo de várias linhas, poderá passar o segredo usando a entrada padrão. Por exemplo:

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <secret_scope> <secret_key>

Listar segredos

Para listar segredos em um determinado escopo:

databricks secrets list-secrets <scope-name>

A resposta exibe informações de metadados sobre os segredos, como os nomes de chave de segredos. Use o utilitário Secrets (dbutils.secrets) em um notebook ou trabalho para listar esses metadados. Por exemplo:

dbutils.secrets.list('my-scope')

Ler um segredo

Crie segredos usando a API REST ou a CLI, mas use o utilitário Secrets (dbutils.secrets) em um notebook ou trabalho para ler um segredo.

Excluir um segredo

Para excluir um segredo de um escopo com a CLI do Databricks:

databricks secrets delete-secret <scope-name> <key-name>

Você também pode usar a API de Segredos.

Para excluir um segredo de um escopo com suporte do Azure Key Vault, use a API REST do Azure SetSecret ou interface do usuário do portal do Azure.

Gerenciar permissões de escopo secreto

Por padrão, o usuário que cria os escopos secretos recebe a permissão MANAGE. Isso permite que o criador do escopo leia segredos no escopo, grave segredos no escopo e gerencie permissões no escopo.

Observação

As ACLs secretas estão no nível do escopo. Se você usar escopos com suporte Azure Key Vault, os usuários que recebem acesso ao escopo terão acesso a todos os segredos no Azure Key Vault. Para restringir o acesso, utilize instâncias separadas do Azure Key Vault.

Esta seção descreve como gerenciar o controle de acesso secreto usando O que é a CLI do Databricks? (versão 0.205 e superior). Você também pode usar a API de Segredos. Para obter níveis de permissão de segredo, confira ACLs de segredo

Conceder permissões a um usuário em um escopo secreto

Para conceder permissões a um usuário em um escopo secreto usando a CLI do Databricks:

databricks secrets put-acl <scope-name> <principal> <permission>

Fazer uma solicitação Put para uma entidade de segurança que já tenha uma permissão aplicada substitui o nível de permissão existente.

O principal campo especifica uma entidade de segurança existente do Azure Databricks. Um usuário é especificado usando seu endereço de email, uma entidade de serviço usando o valor applicationId e um grupo usando o respectivo nome de grupo. Para obter mais informações, consulte Entidade de segurança.

Exibir permissões de escopo secreto

Para exibir todas as permissões de escopo de segredo para um determinado escopo de segredo:

databricks secrets list-acls <scope-name>

Para obter as permissões de escopo secreto aplicadas a uma entidade de segurança para um determinado escopo secreto:

databricks secrets get-acl <scope-name> <principal>

Se não houver ACL para a entidade de segurança e o escopo fornecidos, essa solicitação falhará.

Excluir uma permissão de escopo secreto

Para excluir uma permissão de escopo secreto aplicada a uma entidade de segurança para um determinado escopo secreto:

databricks secrets delete-acl <scope-name> <principal>

Redação secreta

Armazenar credenciais como Azure Databricks segredos facilita a proteção de suas credenciais quando você executa blocos de anotações e trabalhos. No entanto, é fácil imprimir acidentalmente um segredo para os buffers de saída padrão ou exibir o valor durante a atribuição de variáveis.

Para evitar isso, o Azure Databricks redige todos os valores de segredo que são lidos usando dbutils.secrets.get(). Quando exibido na saída da célula do bloco de anotações, os valores secretos são substituídos por [REDACTED].

Por exemplo, se você definir uma variável como um valor de segredo usando dbutils.secrets.get() e imprimir essa variável, essa variável será substituída por [REDACTED].

Aviso

A redação secreta para saída de célula do bloco de anotações aplica-se somente a literais. A funcionalidade de redação de segredo não impede transformações deliberadas e arbitrárias de um literal de segredo. Para garantir o controle adequado dos segredos, você deve usar listas de controle de acesso para limitar as permissões para executar comandos. Isso impede o acesso não autorizado a contextos de notebook compartilhados.