Поделиться через


CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azureбазе данных SQL Azure Synapse Analytics Analytics Platform System (PDW)в Microsoft Fabric

Создает учетные данные для базы данных. Учетные данные базы данных не сопоставляются с именем входа сервера или пользователем базы данных. База данных использует эти учетные данные для доступа к внешнему расположению каждый раз при выполнении операции, требующей доступа.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

credential_name

Указывает имя создаваемых учетных данных для базы данных. credential_name не удается начать с знака номера (#). Системные учетные данные начинаются с ##. Максимальная длина credential_name составляет 128 символов.

IDENTITY = "identity_name"

Указывает имя учетной записи для использования при подключении за пределами сервера.

  • Чтобы импортировать файл из Хранилище BLOB-объектов Azure или Azure Data Lake Storage с помощью общего ключа, необходимо указать SHARED ACCESS SIGNATUREимя удостоверения. Дополнительные сведения о подписанных URL-адресах см. в статье Использование подписанных URL-адресов. Используется IDENTITY = SHARED ACCESS SIGNATURE только для подписанного URL-адреса.
  • Чтобы импортировать файл из Хранилище BLOB-объектов Azure с помощью управляемого удостоверения, необходимо указать MANAGED IDENTITYимя удостоверения.
  • При использовании Kerberos (Windows Active Directory или MIT KDC) не используйте доменное имя в аргументе IDENTITY . В этом аргументе должно быть только имя учетной записи.
  • В экземпляре SQL Server при создании учетных данных с областью действия базы данных с ключом доступа к хранилищу, используемым в качестве ключа SECRET, IDENTITY игнорируется.
  • WITH IDENTITY Не требуется, если контейнер в хранилище BLOB-объектов Azure включен для анонимного доступа. Пример запроса к хранилищу OPENROWSET BULKBLOB-объектов Azure см. в статье "Импорт в таблицу" из файла, хранящегося в хранилище BLOB-объектов Azure.
  • В SQL Server 2022 (16.x) и более поздних версиях соединитель REST-API заменяет HADOOP. Для хранилища BLOB-объектов Azure и Azure Data Lake 2-го поколения единственным поддерживаемым методом проверки подлинности является подписанный URL-адрес. Дополнительные сведения см. в статье CREATE EXTERNAL DATA SOURCE (Transact-SQL).
  • В SQL Server 2019 (15.x) единственный внешний источник данных PolyBase, поддерживающий проверку подлинности Kerberos, — Hadoop. Все другие внешние источники данных (SQL Server, Oracle, Teradata, MongoDB, универсальный ODBC) поддерживают только обычную проверку подлинности.
  • Пулы SQL в Azure Synapse Analytics содержат следующие заметки:
    • Для загрузки данных в Azure Synapse Analytics можно использовать IDENTITYлюбое допустимое значение.
    • В бессерверном пуле SQL Azure Synapse Analytics учетные данные базы данных могут указывать управляемое удостоверение рабочей области, имя субъекта-службы или маркер подписанного URL-адреса (SAS). Доступ с помощью удостоверения пользователя, включенного сквозной проверкой подлинности Microsoft Entra, также возможен с учетными данными базы данных, так как анонимный доступ к общедоступному хранилищу. Дополнительные сведения см. в разделе "Поддерживаемые типы авторизации хранилища".
    • В выделенном пуле SQL в Azure Synapse Analytics учетные данные базы данных могут указывать маркер подписанного URL-адреса (SAS), пользовательский идентификатор приложения, управляемое удостоверение рабочей области или ключ доступа к хранилищу.
Аутентификация T-SQL Поддерживается Примечания
Подпись Общего Доступа (SAS) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022, Управляемый экземпляр SQL Azure, Azure Synapse Analytics, База данных SQL Azure
Управляемая идентичность CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; База данных SQL Azure, управляемое удостоверение SQL
Сквозная проверка подлинности Microsoft Entra с помощью удостоверения пользователя CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; База данных SQL Azure В Azure Synapse см. раздел Microsoft Entra Connect: сквозная проверка подлинности
Обычная проверка подлинности ключа доступа S3 CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022
Kerberos (Windows Active Directory или MIT KDC) или для источников данных ODBC CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; Версии SQL только для Hadoop

SECRET = "secret"

Указывает секретный код, необходимый для исходящей проверки подлинности. SECRET требуется для импорта файла из хранилища больших двоичных объектов Azure. Для загрузки из хранилища BLOB-объектов Azure в Azure Synapse Analytics или Parallel Data Warehouse в качестве секретного ключа необходимо использовать ключ хранилища Azure.

Предупреждение

Значение ключа SAS может начинаться с '?' (вопросительный знак). При использовании ключа SAS необходимо удалить начальный символ '?'. В противном случае действия могут быть заблокированы.

Замечания

Учетные данные базы данных — это запись, содержащая сведения о проверке подлинности, необходимые для подключения к ресурсу за пределами SQL Server. Большинство учетных данных включают имя пользователя и пароль Windows.

Для защиты конфиденциальной информации в учетных данных в области базы данных требуется главный ключ базы данных (DMK). DMK — это симметричный ключ, который шифрует секрет в учетных данных в области базы данных. Перед созданием учетных данных с областью действия базы данных база данных должна иметь dmK. DmK должен быть зашифрован с помощью надежного пароля. База данных SQL Azure создаст динамический административный код со строгим, случайным образом выбранным паролем в рамках создания учетных данных базы данных или в рамках создания аудита сервера. Пользователи не могут создать dmK в логической master базе данных. Пароль главного ключа неизвестен корпорации Майкрософт и недоступен после создания. По этой причине рекомендуется создать dmK перед созданием учетных данных в области базы данных. Дополнительные сведения см. в разделе CREATE MASTER KEY (Transact-SQL).

Если IDENTITY является пользователем Windows, секретный код может быть паролем. Секрет шифруется с помощью главного ключа службы (SMK). При повторном создании SMK секрет повторно шифруется с помощью нового SMK.

При предоставлении разрешений для подписанных URL-адресов (SAS) для использования с внешней таблицей PolyBase выберите Контейнер и Объект в качестве допустимых типов ресурсов. Если это не предоставлено, при попытке доступа к внешней таблице может появиться ошибка 16535 или 16561.

Дополнительные сведения об учетных данных для базы данных см. в представлении каталога sys.database_scoped_credentials.

Далее приводятся некоторые варианты использования учетных данных для базы данных.

Разрешения

Требуется разрешение CONTROL для базы данных.

Примеры

А. Создание учетных данных в области базы данных для приложения

В следующем примере создаются учетные данные с именем AppCred для базы данных. В эти учетные данные для базы данных входят имя пользователя Windows Mary5 и пароль.

-- 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>';

В. Создание учетных данных в области базы данных для подписанного URL-адреса

В следующем примере создаются учетные данные базы данных, которые можно использовать для создания внешнего источника данных, который может выполнять массовые операции, такие как BULK INSERT (Transact-SQL) и OPENROWSET (Transact-SQL).

-- 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';

В. Создание учетных данных с областью действия базы данных для подключения PolyBase к Azure Data Lake Store

В следующем примере создается учетные данные с областью действия базы данных, которые можно использовать для создания внешнего источника данных, который можно использовать PolyBase в Azure Synapse Analytics.

Azure Data Lake Store использует приложение Microsoft Entra для службы для проверки подлинности службы.

Создайте приложение Microsoft Entra и задокументируйте client_id, OAuth_2.0_Token_EndPoint и ключ перед созданием учетных данных в области базы данных.

-- 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>'
;