CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Cria uma credencial de banco de dados. Uma credencial de banco de dados não é mapeada para um usuário do banco de dados ou logon do servidor. A credencial é usada pelo banco de dados para acessar o local externo sempre que o banco de dados está executando uma operação que requer acesso.

Convenções de sintaxe de Transact-SQL

Sintaxe

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

credential_name

Especifica o nome da credencial no escopo do banco de dados que está sendo criada. credential_name não pode começar com a tecla jogo da velha (#). As credenciais de sistema começam com ##.

IDENTITY ='identity_name'

Especifica o nome da conta a ser usada ao conectar o servidor externamente.

  • Para importar um arquivo do Armazenamento de Blobs do Azure ou do Azure Data Lake Storage usando uma chave compartilhada, o nome da identidade deve ser SHARED ACCESS SIGNATURE. Para mais informações sobre assinaturas de acesso compartilhado, consulte Usando SAS (Assinatura de Acesso Compartilhado). Somente use IDENTITY = SHARED ACCESS SIGNATURE com uma assinatura de acesso compartilhado.
  • Para importar um arquivo do Armazenamento de Blobs do Azure usando uma identidade gerenciada, o nome de identidade deve ser MANAGED IDENTITY.
  • Quando usar o Kerberos (Windows Active Directory ou MIT KDC), não use o nome de domínio no argumento IDENTITY. Ele deve ser apenas o nome da conta.
  • Na instância do SQL Server, se estiver criando uma credencial no escopo do banco de dados com uma Chave de Acesso de Armazenamento usada como SECRET, IDENTITY será ignorada.
  • WITH IDENTITY não será necessário se o contêiner no armazenamento de Blobs do Azure estiver habilitado para acesso anônimo. Para obter um exemplo de como consultar o armazenamento de Blobs do Azure, confira Importar dados em uma tabela de um arquivo armazenado no Armazenamento de Blobs do Azure.

Importante

A única fonte de dados externa do PolyBase que dá suporte à autenticação Kerberos é o Hadoop. Todas as outras fontes de dados externas (SQL Server, Oracle, Teradata, MongoDB, ODBC genérico) dão suporte apenas à autenticação básica.

  • Para carregar dados no Azure Synapse Analytics, é possível usar qualquer valor válido em IDENTITY.
  • Em um pool SQL sem servidor do Azure Synapse Analytics, as credenciais com escopo de banco de dados podem especificar uma identidade gerenciada de espaço de trabalho, nome da entidade de serviço ou token de assinatura de acesso compartilhado (SAS). O acesso por meio de uma identidade de usuário, habilitada pela autenticação de passagem do Microsoft Entra, também é possível com uma credencial com escopo de banco de dados, assim como o acesso anônimo ao armazenamento disponível publicamente. Para obter mais informações, confira Tipos de autorização de armazenamento com suporte.
  • Em um pool SQL dedicado do Azure Synapse Analytics, as credenciais com escopo de banco de dados podem especificar token de assinatura de acesso compartilhado (SAS), identidade de aplicativo personalizada, identidade gerenciada de espaço de trabalho ou chave de acesso de armazenamento.

SECRET ='secret'

Especifica o segredo necessário para a autenticação de saída. SECRET é necessário para importar um arquivo de armazenamento de Blobs do Azure. Para fazer o carregamento do Armazenamento de Blobs do Azure para o Azure Synapse Analytics ou o Parallel Data Warehouse, o Segredo deve ser a Chave de Armazenamento do Azure.

Aviso

O valor da chave SAS pode começar com um '?' (ponto de interrogação). Quando você usa a chave SAS, deve remover o '?' à esquerda. Caso contrário, seus esforços poderão ser bloqueados.

Comentários

Uma credencial no escopo do banco de dados é um registro que contém as informações de autenticação necessárias para conectar-se a um recurso fora do SQL Server. A maioria das credenciais inclui um usuário e uma senha do Windows.

Para proteger as informações confidenciais dentro da credencial com escopo do banco de dados, uma chave mestra de banco de dados (DMK) é necessária. O DMK é uma chave simétrica que criptografa o segredo na credencial com escopo do banco de dados. O banco de dados deve ter uma chave mestra antes que qualquer credencial com escopo de banco de dados possa ser criada. Um DMK deve ser criptografado com uma senha forte. O Banco de Dados SQL do Azure criará uma chave mestra de banco de dados com uma senha forte selecionada aleatoriamente como parte da criação da credencial com escopo do banco de dados ou como parte da criação de uma auditoria de servidor. Os usuários não podem criar a chave mestra em um banco de dados lógico master . A senha da chave mestra é desconhecida pela Microsoft e não pode ser descoberta após a criação. Por esse motivo, é recomendável criar uma chave mestra de banco de dados antes de criar uma credencial com escopo de banco de dados. Para obter mais informações, confira CREATE MASTER KEY (Transact-SQL).

Quando IDENTITY for um usuário do Windows, o segredo poderá ser a senha. O segredo é criptografado com a chave mestre de serviço. Se a chave mestre de serviço for gerada novamente, o segredo será criptografado novamente com a nova chave mestre de serviço.

Ao conceder permissões para SAS (assinaturas de acesso compartilhado) para uso com uma tabela externa do PolyBase, selecione Contêiner e Objeto como tipos de recursos permitidos. Se não for concedido, você poderá receber o erro 16535 ou 16561 ao tentar acessar a tabela externa.

Informações sobre credenciais no escopo do banco de dados ficam visíveis na exibição do catálogo database_scoped_credentials.

Estas são algumas aplicações das credenciais no escopo do banco de dados:

Permissões

Exige a permissão CONTROL no banco de dados.

SQL Server 2022

A partir do SQL Server 2022 (16.x), foi introduzido um novo tipo de conector, usando chamadas à API REST que substituem o HADOOP. No caso do Armazenamento de Blobs do Azure e o Azure Data Lake Gen 2, o único método de autenticação é SHARED ACCESS SIGNATURE.

Confira criar uma fonte de dados externa para obter mais informações.

Exemplos

a. Como criar uma credencial no escopo do banco de dados para seu aplicativo

O exemplo a seguir cria a credencial no escopo do banco de dados chamada AppCred. A credencial no escopo do banco de dados contém o usuário do Windows Mary5 e uma senha.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';

B. Como criar uma credencial no escopo do banco de dados para uma Assinatura de Acesso Compartilhado

O exemplo a seguir cria uma credencial no escopo do banco de dados que pode ser usada para criar uma fonte de dados externa, que pode executar operações em massa, como BULK INSERT e OPENROWSET. Assinaturas de Acesso Compartilhado não podem ser usadas com o PolyBase no SQL Server, APS ou Azure Synapse Analytics.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

C. Como criar uma credencial no escopo do banco de dados para a conectividade do PolyBase com o Azure Data Lake Storage

O exemplo a seguir cria uma credencial no escopo do banco de dados que pode ser usada para criar uma fonte de dados externa, que pode ser usada pelo PolyBase no Azure Synapse Analytics.

O Repositório Azure Data Lake usa um aplicativo Microsoft Entra para autenticação de serviço para serviço.

Crie um aplicativo Microsoft Entra e documente seu client_id, OAuth_2.0_Token_EndPoint e Key antes de tentar criar uma credencial com escopo de banco de dados.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
    IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
    SECRET = '<key>'
;