Руководство. Загрузка внешних данных с помощью управляемого удостоверения
В этой статье объясняется, как создавать внешние таблицы или прием данных из учетных записей Azure Data Lake Storage (ADLS) 2-го поколения с помощью управляемого удостоверения.
Необходимые компоненты
Для выполнения этого руководства требуются следующие ресурсы:
- Учетная запись Azure Data Lake Storage (ADLS) 2-го поколения
- Рабочая область Azure Synapse Analytics и выделенный пул SQL
Предоставление удостоверению рабочей области доступа к учетной записи хранения
Каждая рабочая область Azure Synapse Analytics автоматически создает управляемое удостоверение, которое помогает настроить безопасный доступ к внешним данным из рабочей области. Дополнительные сведения об управляемых удостоверениях для Azure Synapse Analytics см. в статье об управляемом удостоверении службы Azure Synapse Analytics.
Чтобы разрешить управляемому удостоверению доступ к данным в учетных записях ADLS 2-го поколения, необходимо предоставить удостоверению доступ к исходной учетной записи. Чтобы предоставить необходимые разрешения, выполните следующие действия.
- Найдите свою учетную запись хранения на портале Azure .
- Выберите хранилище данных —> контейнеры и перейдите в папку, в которой нужны исходные данные внешней таблицы.
- Выберите Управление доступом (IAM).
- Нажмите кнопку "Добавить" —> добавить назначение ролей.
- В списке ролей функции задания выберите "Участник данных BLOB-объектов хранилища" и нажмите кнопку "Далее".
- На странице "Добавить назначение ролей" нажмите кнопку "+ Выбрать участников". Откроется область "Выбор элементов ".
- Введите имя удостоверения рабочей области. Удостоверение рабочей области совпадает с именем рабочей области. При отображении выберите удостоверение рабочей области и нажмите кнопку "Выбрать".
- На странице добавления назначения ролей убедитесь, что список участников включает нужную учетную запись идентификатора Microsoft Entra. После проверки нажмите кнопку "Проверить и назначить".
- На странице подтверждения просмотрите изменения и выберите " Проверить и назначить".
Теперь удостоверение рабочей области является членом роли участника данных BLOB-объектов хранилища и имеет доступ к исходной папке.
Примечание.
Эти действия также применяются к защищенным учетным записям ADLS 2-го поколения, настроенным для ограничения общедоступного доступа. Дополнительные сведения о защите учетной записи ADLS 2-го поколения см. в статье Настройка брандмауэров и виртуальных сетей служба хранилища Azure.
Прием данных с помощью COPY INTO
Инструкция T-SQL COPY INTO
обеспечивает гибкую, высокую пропускную способность приема данных в таблицы и является основной стратегией приема данных в выделенные таблицы пула SQL. COPY INTO
позволяет пользователям получать данные из внешних расположений без необходимости создавать какие-либо из дополнительных объектов базы данных, необходимых для внешних таблиц.
Чтобы запустить инструкцию COPY INTO
с помощью управляемого удостоверения рабочей области для проверки подлинности, используйте следующую команду T-SQL:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Где:
<TableName>
— имя таблицы для приема данных в<AccountName>
— имя учетной записи ADLS 2-го поколения<Container>
— имя контейнера в учетной записи хранения, в которой хранятся исходные данные.<Folder>
— это папка (или путь с вложенными папками), где исходные данные хранятся в контейнере. Вы также можете указать имя файла, указывая непосредственно на один файл.<CopyIntoOptions>
— это список других параметров, которые вы хотите предоставить инструкции COPY INTO.
Дополнительные сведения и изучение полного синтаксиса COPY INTO см. в разделе COPY INTO (Transact-SQL).
Запрос данных в ADLS 2-го поколения с помощью внешних таблиц
Внешние таблицы позволяют пользователям запрашивать данные из учетных записей Azure Data Lake Storage (ADLS) 2-го поколения без необходимости приема данных. Пользователи могут создать внешнюю таблицу, которая указывает на файлы в контейнере ADLS 2-го поколения и запрашивать ее так же, как обычную таблицу пользователей.
Ниже описан процесс создания внешней таблицы, указывающей на данные в ADLS 2-го поколения, с помощью управляемого удостоверения для проверки подлинности.
Создание необходимых объектов базы данных
Для внешних таблиц требуется создать следующие объекты:
- Главный ключ базы данных, который шифрует секрет учетных данных в области базы данных
- Учетные данные базы данных, использующие удостоверение рабочей области
- Внешний источник данных, указывающий на исходную папку
- Формат внешнего файла, определяющий формат исходных файлов
- Определение внешней таблицы, используемое для запросов
Чтобы выполнить эти действия, используйте редактор SQL в рабочей области Azure Synapse или предпочитаемый клиент SQL, подключенный к выделенному пулу SQL. Давайте подробно рассмотрим эти шаги.
Создание главного ключа базы данных
Главный ключ базы данных — это симметричный ключ, используемый для защиты закрытых ключей сертификатов и асимметричных ключей, присутствующих в базе данных и секретах в учетных данных в области базы данных. Если в базе данных уже есть главный ключ, вам не нужно создавать новый ключ. Замените <Secure Password>
безопасным паролем. Этот пароль используется для шифрования главного ключа в базе данных.
Чтобы создать главный ключ, используйте следующую команду T-SQL:
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
Дополнительные сведения о главном ключе базы данных см. в статье CREATE MASTER KEY (Transact-SQL).
Создание учетных данных в области базы данных
Учетные данные базы данных используют удостоверение рабочей области и необходимы для доступа к внешнему расположению в любое время, когда внешняя таблица требует доступа к исходным данным.
Чтобы создать учетные данные в области базы данных, используйте следующую команду. Замените <CredentialName>
имя, используемое для учетных данных в области базы данных.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Дополнительные сведения о учетных данных в области базы данных см. в статье CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Создание внешнего источника данных
Следующим шагом является создание внешнего источника данных, указывающего, где находятся исходные данные, используемые внешней таблицей.
Чтобы создать внешний источник данных, используйте следующую команду T-SQL:
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
CREDENTIAL = <CredentialName>
);
Где:
<ExternalDataSourceName>
— это имя, которое вы хотите использовать для внешнего источника данных.<AccountName>
— имя учетной записи ADLS 2-го поколения.<Container>
— это имя контейнера в учетной записи хранения, в которой хранятся исходные данные.<Folder>
— это папка (или путь с вложенными папками), где исходные данные хранятся в контейнере. Вы также можете указать имя файла, указывая непосредственно на один файл.<Credential>
— это имя созданных ранее учетных данных базы данных.
Дополнительные сведения о внешних источниках данных см. в статье CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Создание формата внешнего файла
Следующим шагом является создание формата внешнего файла. Он задает фактический макет данных, на которые ссылается внешняя таблица.
Чтобы создать формат внешнего файла, используйте следующую команду T-SQL. Замените <FileFormatName>
именем, которое вы хотите использовать для внешнего формата файла.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
В этом примере настройте такие параметры, как FIELD_TERMINATOR
, STRING_DELIMITER
FIRST_ROW
и другие, по мере необходимости в соответствии с исходными данными. Дополнительные параметры форматирования и дополнительные сведения см EXTERNAL FILE FORMAT
. в статье CREATE EXTERNAL FILE FORMAT.
Создание внешней таблицы
Теперь, когда создаются все необходимые объекты, в которых хранятся метаданные для безопасного доступа к внешним данным, пришло время создать внешнюю таблицу. Чтобы создать внешнюю таблицу, используйте следующую команду T-SQL:
-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
Col1 INT,
Col2 NVARCHAR(100),
Col4 INT
)
WITH
(
LOCATION = '<Path>',
DATA_SOURCE = <ExternalDataSourceName>,
FILE_FORMAT = <FileFormatName>
);
Где:
<ExternalTableName>
— это имя, которое вы хотите использовать для внешней таблицы.<Path>
— это путь к исходным данным относительно расположения, указанного во внешнем источнике данных.<ExternalDataSourceName>
— это имя созданного ранее внешнего источника данных.<FileFormatName>
— имя созданного ранее формата внешнего файла.
Обязательно измените имя таблицы и схему на нужное имя и схему данных в исходных файлах.
Запрос к внешней таблице
На этом этапе создаются все метаданные, необходимые для доступа к внешней таблице. Чтобы протестировать внешнюю таблицу, используйте запрос, например следующий пример T-SQL, чтобы проверить работу:
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Если все было настроено правильно, данные из исходных данных должны отображаться в результате этого запроса.
Дополнительные сведения и изучение полного синтаксиса CREATE EXTERNAL TABLE
см. в статье CREATE EXTERNAL TABLE (Transact-SQL).