Usar credenciais de serviço do Catálogo do Unity para se conectar a serviços de nuvem externos
Este artigo descreve como usar uma credencial de serviço no Catálogo do Unity para se conectar a serviços de nuvem externos. Um objeto de credencial de serviço no Catálogo do Unity encapsula uma credencial de nuvem de longo prazo que fornece acesso a um serviço de nuvem externo ao qual os usuários precisam se conectar do Azure Databricks.
Consulte também:
- Gerencie o acesso a serviços de nuvem externos usando credenciais de serviço.
- Gerenciar credenciais de serviço
Antes de começar
Antes de usar uma credencial de serviço para se conectar a um serviço de nuvem externo, você deve ter:
Um workspace do Azure Databricks que está habilitado para o Catálogo do Unity.
Um recurso de computação que está no Databricks Runtime 16.2 ou superior.
Não há suporte para SQL warehouses.
A versão prévia pública das credenciais de serviço está disponível no Databricks Runtime 15.4 LTS e superior, com suporte do Python, mas sem suporte do Scala.
Uma credencial de serviço criada no metastore do Catálogo do Unity que dá acesso ao serviço de nuvem.
O
ACCESS
privilégio na credencial de serviço ou a propriedade da credencial de serviço.
Usar uma credencial de serviço em seu código
Esta seção fornece exemplos de como usar credenciais de serviço em um notebook. Substitua os valores de espaço reservado. Esses exemplos não mostram necessariamente a instalação de bibliotecas necessárias, que dependem do serviço cliente que você deseja acessar.
exemplo do Python: configurar um cliente do SDK do Azure para usar uma credencial de serviço específica
from azure.keyvault.secrets import SecretClient # example Azure SDK client
credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)
exemplo do Scala: configurar um cliente do SDK do Azure para usar uma credencial de serviço específica
import com.azure.security.keyvault.secrets.{SecretClient, SecretClientBuilder}
// Get credentials from dbutils
val credential = dbutils.credentials.getServiceCredentialsProvider("your-service-credential")
// URL of the Key Vault
val vaultUrl = "https://your-keyvault-name.vault.azure.net/"
// Create the SecretClient
val client: SecretClient = new SecretClientBuilder()
.vaultUrl(vaultUrl)
.credential(credential)
.buildClient()
Especificar uma credencial de serviço padrão para um recurso de computação
Opcionalmente, você pode especificar uma credencial de serviço padrão para um cluster de computação para todas as finalidades ou trabalhos definindo uma variável de ambiente. Por padrão, o SDK usará essa credencial de serviço se nenhuma autenticação for fornecida. Os usuários ainda exigem ACCESS
essa credencial de serviço para se conectar ao serviço de nuvem externo. O Databricks não recomenda essa abordagem, pois ela torna seu código menos portátil do que nomear a credencial de serviço em seu código.
Observação
A computação sem servidor e os SQL warehouses não dão suporte a variáveis de ambiente e, portanto, não dão suporte a credenciais de serviço padrão.
Abra a página de edição do cluster.
Consulte Gerenciar computação.
Clique em Opções avançadas na parte inferior da página e vá para a guia Spark .
Adicione a seguinte entrada em Variáveis de ambiente, substituindo
<your-service-credential>
:DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>
Os exemplos de código a seguir não especificam uma credencial de serviço. Em vez disso, eles usam a credencial de serviço especificada na variável de ambiente DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME
:
Python
Se você estiver usando uma credencial de serviço padrão, não precisará especificar credenciais como um argumento:
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)
Compare isso ao exemplo em : exemplo do Python configura um cliente do SDK do Azure para usar uma credencial de serviço específica, que não importa DefaultAzureCredential
e adiciona a especificação da credencial.
credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
Scala
Para Scala, você substitui o nome da credencial de serviço por null
.
val azureCredentials = dbutils.credentials.getServiceCredentialsProvider(null).asInstanceOf[TokenCredential]