Pular para o conteúdo principal

Configurar segredos externos no Unity Catalog

info

Beta

Este recurso está em Beta. Os administradores do workspace podem controlar o acesso a este recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.

Esta página mostra como conectar um esquema do Unity Catalog a um gerenciador de segredos externo para que seus valores secretos permaneçam no AWS Secrets Manager.

Para saber como os segredos externos funcionam e suas limitações, consulte Segredos externos no Unity Catalog.

Antes de começar

  • Atenda aos requisitos para segredos do Unity Catalog.

  • O Beta de segredos externos deve estar habilitado para seu workspace.

  • O esquema que você deseja oferecer suporte externamente não deve conter nenhum segredo gerenciado pelo Databricks. Exclua os segredos existentes antes de alternar o backend.

  • Você deve ter uma conexão do Unity Catalog com seu gerenciador de segredos externo e uma credencial de serviço do Unity Catalog que a conexão usa para autenticar. Para criá-los, você deve ter USE CONNECTION em uma conexão existente ou CREATE CONNECTION no metastore para criar um, e acesso a uma credencial de serviço, ou CREATE CREDENTIAL no metastore para criar um.

  • O suporte do AWS Secrets Manager está disponível apenas no Databricks on AWS, usando uma conexão AWS_SECRETS_MANAGER. O gerenciador de segredos deve estar na região que você configurar na conexão.

Configurar segredos externos

Criar uma credencial de serviço

A conexão autentica-se no seu gerenciador de segredos externo com uma credencial de serviço do Unity Catalog.

Crie a credencial de serviço e sua IAM role conforme descrito em Create service credentials, incluindo a política de confiança necessária. Anexe a seguinte política de permissão à role para que ela possa ler seus segredos no AWS Secrets Manager. Substitua <AWS-ACCOUNT-ID> e <AWS-IAM-ROLE-NAME> pelo account ID e pelo nome da role.

JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadAllSecrets",
"Effect": "Allow",
"Action": ["secretsmanager:ListSecrets", "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue"],
"Resource": "*"
},
{
"Sid": "SelfAssume",
"Effect": "Allow",
"Action": ["sts:AssumeRole"],
"Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"]
}
]
}

Criar uma conexão

Crie uma conexão do Unity Catalog que referencie a credencial de serviço do o passo anterior e aponte para seu gerenciador de segredos externo.

  1. No Databricks, abra o Catalog Explorer , clique no menu + e selecione Create a connection .
  2. Insira um Nome da conexão e selecione o tipo de conexão AWS Secrets Manager .
  3. Selecione a credencial de serviço para autenticar e defina a região da AWS do seu gerenciador de segredos.
  4. Clique em Criar .
nota

Make sure the service credential's permissions and the connection's tag filter cover the same secrets. If the role can list a secret but cannot read its value, Unity Catalog imports the secret but reads of it fail.

Para exibir apenas um subconjunto de seus segredos no Unity Catalog, adicione um filtro de tag à conexão. Consulte Filtrar segredos importados por tag.

Dar suporte a um esquema com a conexão

Configure o backend de segredos do esquema no Catalog Explorer.

  1. No Databricks, abra o Catalog Explorer e vá para o esquema.

  2. Nos detalhes do esquema, localize a configuração do gerenciador de segredos externos e clique em Habilitar .

    O esquema não deve conter nenhum segredo gerenciado pelo Databricks. Se isso acontecer, remova-os primeiro. Enable permanece desativado até que o esquema não tenha segredos.

  3. Selecione a conexão que você criou na etapa anterior e, em seguida, confirme.

O esquema agora é suportado pelo seu gerenciador de segredos externo, e seus segredos aparecem no Unity Catalog.

Para apontar o esquema para uma conexão diferente, use Editar . Para retornar o esquema ao armazenamento gerenciado pelo Databricks, edite o esquema e desative os segredos externos.

Definir ou alterar o backend de segredos de um esquema requer USE CATALOG no catálogo pai, propriedade do esquema ou MANAGE nele, e USE CONNECTION na conexão.

Ler segredos externos

Após o esquema ser armazenado externamente, seus segredos aparecem no Unity Catalog e você os lê como qualquer outro segredo do Unity Catalog. Listar um esquema aciona um Trigger de importação, portanto, um segredo recém-adicionado aparece apenas após a próxima listagem. Os comandos de leitura são os mesmos em ambas as clouds.

dbutils aplica a redação de segredos e é a maneira recomendada de ler um valor. Requer Databricks Runtime 17.3 LTS ou superior, ou versão 4 ou superior do ambiente serverless.

Python
# List the secrets in the schema
all_secrets = dbutils.secrets.list(catalog="main", schema="default")

# Read a specific secret value from the external secret manager
my_secret = dbutils.secrets.get(catalog="main", schema="default", key="example_secret")

Você também pode navegar e listar segredos externos no Catalog Explorer, da mesma forma que os segredos gerenciados pelo Databricks. Consulte Ler um segredo.

Se um segredo ainda não aparecer no Unity Catalog, você ainda poderá lê-lo pelo nome. Forneça o nome conforme ele aparece no gerenciador de segredos externo, com as substituições de caracteres de Restrições de nomenclatura aplicadas.

Por exemplo, para um segredo da AWS chamado myOrg/mySecret.v3, leia-o com:

Python
dbutils.secrets.get(catalog="my_catalog", schema="my_schema", key="myOrg|mySecret:v3")

Filtrar segredos importados por tag

Para revelar apenas alguns dos segredos que a conexão pode acessar, filtre por uma tag de recurso da AWS. Defina as opções de tag na conexão ao criá-la ou editá-la:

  • tag_key: Revelar apenas segredos que contenham esta chave de tag.
  • tag_value: Opcional. Quando você o define junto com tag_key, o Unity Catalog exibe apenas os segredos cuja tag corresponde à key e ao valor. Quando você o omite, o Unity Catalog exibe todos os segredos com tag_key, independentemente do valor.

A correspondência de tag diferencia maiúsculas de minúsculas e usa igualdade exata de strings.

O filtro de tag de conexão controla apenas quais segredos o Unity Catalog revela; para também restringir quais segredos a credencial pode ler, adicione uma condição de tag (secretsmanager:ResourceTag) à política de permissão do IAM role.

Ao criar ou editar a conexão do AWS Secrets Manager, adicione a opção tag_key e, opcionalmente, tag_value como opções de conexão.

Recursos adicionais