Configurar segredos externos no Unity Catalog
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 CONNECTIONem uma conexão existente ouCREATE CONNECTIONno metastore para criar um, e acesso a uma credencial de serviço, ouCREATE CREDENTIALno 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.
{
"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.
- Catalog Explorer
- Databricks CLI
- REST API
- No Databricks, abra o Catalog Explorer , clique no menu + e selecione Create a connection .
- Insira um Nome da conexão e selecione o tipo de conexão AWS Secrets Manager .
- Selecione a credencial de serviço para autenticar e defina a região da AWS do seu gerenciador de segredos.
- Clique em Criar .
Passe o corpo da conexão com --json, usando o tipo de conexão AWS_SECRETS_MANAGER. Configure aws_region para a região do seu gerenciador de segredos e credential para o nome da credencial de serviço:
databricks connections create --json '{
"name": "my_aws_secrets_connection",
"connection_type": "AWS_SECRETS_MANAGER",
"options": {
"aws_region": "us-west-2",
"credential": "my_aws_secrets_credential"
}
}'
Use o endpoint /api/2.1/unity-catalog/connections com o tipo de conexão AWS_SECRETS_MANAGER. Configure aws_region para a região do seu gerenciador de segredos e credential para o nome da credencial de serviço:
curl -X POST \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "my_aws_secrets_connection",
"connection_type": "AWS_SECRETS_MANAGER",
"options": {
"aws_region": "us-west-2",
"credential": "my_aws_secrets_credential"
}
}' \
"$DATABRICKS_HOST/api/2.1/unity-catalog/connections"
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.
-
No Databricks, abra o Catalog Explorer e vá para o esquema.
-
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.
-
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
- REST API
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.
# 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")
Defina include_value=true e leia o campo effective_value para retornar o valor. A API REST não redige os valores retornados, embora ainda audite o acesso; o Databricks recomenda dbutils em vez disso.
curl -G \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
--data-urlencode "include_value=true" \
"$DATABRICKS_HOST/api/2.1/unity-catalog/secrets/main.default.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:
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 comtag_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 comtag_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.
- Catalog Explorer
- Databricks CLI
- REST API
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.
databricks connections create --json '{
"name": "my_aws_secrets_connection",
"connection_type": "AWS_SECRETS_MANAGER",
"options": {
"aws_region": "us-west-2",
"credential": "my_aws_secrets_credential",
"tag_key": "team",
"tag_value": "data-platform"
}
}'
curl -X POST \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "my_aws_secrets_connection",
"connection_type": "AWS_SECRETS_MANAGER",
"options": {
"aws_region": "us-west-2",
"credential": "my_aws_secrets_credential",
"tag_key": "team",
"tag_value": "data-platform"
}
}' \
"$DATABRICKS_HOST/api/2.1/unity-catalog/connections"
Recursos adicionais
-
- Segredos externos no Unity Catalog
- Saiba como o Unity Catalog importa, rege e lê segredos com suporte externo e analise as limitações.
-
- Segredos no Unity Catalog
- Crie, governe e gerencie segredos que o Databricks armazena no Unity Catalog.
-
- Criar credenciais de serviço
- Crie a credencial de serviço do Unity Catalog que a conexão usa para autenticar.