Прочитать на английском

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


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

В этой статье объясняется, как создавать внешние таблицы или прием данных из учетных записей 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 ID. После проверки нажмите кнопку "Проверить и назначить".
  9. На странице подтверждения просмотрите изменения и выберите " Проверить и назначить".

Теперь идентификатор рабочей области входит в роль участника данных объектов Blob хранилища и имеет доступ к исходной папке.

Примечание

Эти действия также применяются к защищенным учетным записям ADLS 2-го поколения, настроенным для ограничения общедоступного доступа. Если учетная запись хранения связана с защищенной учетной записью ADLS 2-го поколения или связана с виртуальной сетью, внешняя таблица или команда COPY INTO должна использовать управляемое удостоверение. Дополнительные сведения о защите учетной записи ADLS Gen2 см. в статье службы хранилища 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 Gen2, с использованием управляемого удостоверения для аутентификации.

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

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

  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).