Partilhar via


Gestão de segredos

Por vezes, o acesso a dados requer que se autentique em origens de dados externas através de JDBC. Em vez de inserir diretamente suas credenciais em um bloco de anotações, você pode usar os segredos do Azure Databricks para armazenar suas credenciais e fazer referência a elas em blocos de anotações e trabalhos. Este artigo fornece uma visão geral dos segredos do Azure Databricks.

Visão geral dos segredos

Para configurar e usar segredos:

  1. Crie um âmbito de segredo. Um escopo secreto é uma coleção de segredos identificados por um nome.
  2. Adicionar segredos ao âmbito
  3. Atribua permissões no escopo secreto.
  4. Acesse segredos usando o Databricks Utilities, consulte Utilitário Secrets (dbutils.secrets).

Para obter um exemplo completo 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 do Spark ou variável de ambiente, consulte Usar um segredo em uma propriedade de configuração do Spark ou variável de ambiente.

Aviso

Administradores, criadores de segredos e usuários com permissão podem ler segredos do Azure Databricks. Embora o Databricks faça um esforço para redigir valores secretos que podem ser exibidos em blocos de anotações, não é possível impedir que esses usuários leiam segredos. Consulte Redação secreta.

Gerenciar escopos secretos

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

Existem dois tipos de âmbito secreto:

  • Apoiado pelo Cofre de Chaves do Azure: você pode fazer referência a segredos armazenados em um Cofre de Chaves do Azure usando escopos secretos apoiados pelo Cofre de Chaves do Azure. O escopo secreto apoiado pelo Cofre de Chaves do Azure é uma interface somente leitura para o Cofre de Chaves. Você deve gerenciar segredos em escopos secretos apoiados pelo Cofre de Chaves do Azure no Azure.
  • Databricks-backed: um escopo secreto apoiado por Databricks é armazenado em um banco de dados criptografado de propriedade e gerenciado pelo Azure Databricks.

Depois de criar um escopo secreto, podes atribuir permissões para conceder aos utilizadores acesso para ler, gravar e gerir escopos secretos.

Criar um escopo secreto apoiado pelo Cofre de Chaves do Azure

Esta seção descreve como criar um escopo secreto apoiado pelo Cofre de Chaves do Azure usando o portal do Azure e a interface do usuário do espaço de trabalho do Azure Databricks. Você também pode criar um escopo secreto apoiado pelo Cofre de Chaves do Azure usando a CLI do Databricks.

Requisitos

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

Nota

A criação de um escopo secreto apoiado pelo Cofre de Chaves do Azure requer a função de 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 anteriormente.

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

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. Definir o modelo de permissão para a política de acesso ao Vault .

    Nota

    A criação de um âmbito secreto suportado pelo Cofre de Chaves do Azure concede as permissões Obter e Listar à ID da aplicação para o serviço Azure Databricks através de políticas de acesso ao Cofre de Chaves. O modelo de permissão de controle de acesso baseado em função do Azure não é suportado com o Azure Databricks.

  4. Em Configurações , selecione Rede .

  5. No Firewalls e redes virtuais, configure para Permitir acesso de: a Permitir acesso público a partir de redes virtuais específicas e endereços IP.

    Em Exceção, marque Permitir que serviços confiáveis da Microsoft ignorem esse firewall.

    Nota

    Também pode definir Permitir acesso de: para Permitir acesso público a partir de todas as redes.

Criar um âmbito secreto apoiado pelo Azure Key Vault

  1. Aceda a https://<databricks-instance>#secrets/createScope. Substitua <databricks-instance> pela URL do espaço de trabalho da sua implantação do Azure Databricks. Este URL diferencia maiúsculas de minúsculas. Por exemplo, scope em createScope deve usar um maiúsculo S).

    Criar escopo

  2. Insira o nome do escopo secreto. Os nomes dos âmbitos de segredos são sensíveis a maiúsculas e minúsculas.

  3. Em Gerir Principal, selecione Criador ou Todos os usuários do espaço de trabalho para especificar quais usuários têm a permissão GERIR no âmbito secreto.

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

  4. Insira o Nome DNS (por exemplo, ) e https://databrickskv.vault.azure.net/ 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 > de Configurações de um Cofre da Chave do Azure em seu portal do Azure.

  5. Clique em Criar.

  6. Use o comando Databricks CLIdatabricks secrets list-scopes para verificar se o escopo foi criado com êxito.

Criar um escopo secreto apoiado por Databricks

Esta seção descreve como criar um escopo secreto usando o da CLI do Databricks (versão 0.205 e superior). Você também pode usar a API Secrets.

Nomes de escopo secretos:

  • Deve ser exclusivo dentro de um espaço de trabalho.
  • 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 legíveis por todos os usuários no espaço de trabalho.

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 GERENCIAR para o usuário que criou o escopo. Depois de criar um escopo secreto apoiado por Databricks, você pode adicionar segredos a ele.

Listar âmbitos secretos

Para listar os escopos existentes em um espaço de trabalho usando a CLI:

databricks secrets list-scopes

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

Eliminar âmbitos de segredos

A exclusão de um escopo secreto 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 secreto usando a API Secrets.

Gerir segredos

Um segredo é um par 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 o da CLI do Databricks (versão 0.205 e superior). Você também pode usar a API Secrets. Os nomes dos segredos são sensíveis a maiúsculas e minúsculas.

Criar um segredo

O método para criar um segredo depende se você está usando um escopo apoiado pelo Azure Key Vault ou um escopo apoiado por Databricks.

Criar um segredo em um escopo apoiado pelo Cofre de Chaves do Azure

Para criar um segredo no Azure Key Vault, use o portal do Azure ou a API REST do Azure Definir Segredo. Para obter um exemplo, consulte Etapa 4: Adicionar o segredo do cliente ao Cofre de Chaves do Azure.

Azure Key Vault

Criar um segredo em um escopo apoiado por Databricks

Esta seção descreve como criar um segredo usando o da CLI do Databricks (versão 0.205 e superior) ou em um bloco de anotações usando o SDK do Databricks para Python. Você também pode usar a API Secrets. Os nomes dos segredos são sensíveis a maiúsculas e minúsculas.

Databricks CLI

Ao criar um segredo em um escopo apoiado por Databricks, você pode especificar o valor secreto de uma das três maneiras:

  • Especifique o valor como uma cadeia de caracteres usando o sinalizador –string-value.
  • Insira o segredo quando solicitado interativamente (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 <scope-name> <key-name>

Databricks SDK para Python

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")

Ler segredos

Para ler um segredo em um bloco de anotações ou trabalho, você deve usar o utilitário Secrets (dbutils.secrets). Por exemplo:

password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")

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 das chaves dos segredos. Use o utilitário Secrets (dbutils.secrets) em um bloco de anotações ou trabalho para listar esses metadados. Por exemplo:

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

Eliminar 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 Secrets.

Para excluir um segredo de um escopo apoiado pelo Cofre de Chaves do Azure, use a API REST SetSecret do Azure ou a 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, escreva segredos no escopo e gerencie permissões no escopo.

Nota

As ACLs secretas estão no nível do escopo. Se você usar escopos apoiados pelo Cofre da Chave do Azure, os usuários aos quais é concedido acesso ao escopo terão acesso a todos os segredos no Cofre da Chave do Azure. Para restringir o acesso, use instâncias separadas do cofre de chaves do Azure.

Esta seção descreve como gerenciar o controle de acesso secreto usando o da CLI do Databricks (versão 0.205 e superior). Você também pode usar a API Secrets. Para obter níveis de permissão secretos, consulte ACLs secretas

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 que já tem 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 seu applicationId valor e um grupo usando seu nome de grupo. Para obter mais informações, consulte Principal.

Exibir permissões de escopo secreto

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

databricks secrets list-acls <scope-name>

Para obter as permissões de escopo secreto aplicadas a um principal num determinado escopo secreto:

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

Se nenhuma ACL existir para o principal e o escopo determinados, 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 segredos do Azure Databricks facilita a proteção de suas credenciais quando você executa blocos de anotações e trabalhos. No entanto, é fácil imprimir acidentalmente um segredo em buffers de saída padrão ou exibir o valor durante a atribuição de variáveis.

Para evitar isso, o Azure Databricks retira todos os valores secretos que são lidos usando dbutils.secrets.get(). Quando exibidos na saída da célula do notebook, os valores secretos são substituídos por [REDACTED].

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

Aviso

A redação secreta para saída de célula de notebook aplica-se apenas a literais. A funcionalidade de redação secreta não impede transformações deliberadas e arbitrárias de um literal secreto. Para garantir o controle adequado de 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 bloco de anotações compartilhados.