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


Руководство. Загрузка внешних данных с помощью управляемого удостоверения

В этой статье объясняется, как создавать внешние таблицы или прием данных из учетных записей 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-го поколения, необходимо предоставить удостоверению доступ к исходной учетной записи. Чтобы предоставить необходимые разрешения, выполните следующие действия.

  1. Найдите свою учетную запись хранения на портале Azure .
  2. Выберите хранилище данных —> контейнеры и перейдите в папку, в которой нужны исходные данные внешней таблицы.
  3. Выберите Управление доступом (IAM).
  4. Нажмите кнопку "Добавить" —> добавить назначение ролей.
  5. В списке ролей функции задания выберите "Участник данных BLOB-объектов хранилища" и нажмите кнопку "Далее".
  6. На странице "Добавить назначение ролей" нажмите кнопку "+ Выбрать участников". Откроется область "Выбор элементов ".
  7. Введите имя удостоверения рабочей области. Удостоверение рабочей области совпадает с именем рабочей области. При отображении выберите удостоверение рабочей области и нажмите кнопку "Выбрать".
  8. На странице добавления назначения ролей убедитесь, что список участников включает нужную учетную запись идентификатора Microsoft Entra. После проверки нажмите кнопку "Проверить и назначить".
  9. На странице подтверждения просмотрите изменения и выберите " Проверить и назначить".

Теперь удостоверение рабочей области является членом роли участника данных 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-го поколения, с помощью управляемого удостоверения для проверки подлинности.

Создание необходимых объектов базы данных

Для внешних таблиц требуется создать следующие объекты:

  1. Главный ключ базы данных, который шифрует секрет учетных данных в области базы данных
  2. Учетные данные базы данных, использующие удостоверение рабочей области
  3. Внешний источник данных, указывающий на исходную папку
  4. Формат внешнего файла, определяющий формат исходных файлов
  5. Определение внешней таблицы, используемое для запросов

Чтобы выполнить эти действия, используйте редактор 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_DELIMITERFIRST_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).