Настройка контроля доступа к синхронизированным объектам в бессерверном пуле SQL

В Azure Synapse Analytics базы данных и таблицы Spark являются общими для бессерверного пула SQL. Таблицы баз данных Lake, Parquetи CSV, созданные с помощью Spark, автоматически становятся доступны в бессерверном пуле SQL. Эта функция позволяет использовать бессерверный пул SQL для просмотра и запроса данных, подготовленных с помощью пулов Spark. На схеме ниже показан обзор архитектуры, в которой можно использовать эту функцию. Во-первых, Azure Synapse Pipelines перемещает данные из локального хранилища (или другого) в Azure Data Lake служба хранилища. После этого Spark теперь обогащать данные, создавать базы данных и таблицы, которые синхронизируются с бессерверным SQL Synapse. Затем пользователь может выполнять динамические (ad-hoc) запросы к обогащенным данным или передавать их в Power BI.

Enrich in Spark, serve with SQL diagram.

Полный доступ администратора (sysadmin)

После синхронизации этих баз данных и таблиц из Spark в бессерверный пул SQL эти внешние таблицы в бессерверном пуле SQL можно использовать для доступа к одним и тем же данным. Однако объекты в бессерверном пуле SQL доступны только для чтения в целях обеспечения согласованности с объектами пулов Spark. Это ограничение делает возможным доступ к этим объектам в бессерверном пуле SQL только для пользователей с ролями администратора Synapse SQL или Synapse. Если пользователь, отличный от администратора, пытается выполнить запрос в синхронизированной базе данных или таблице, они получат такие ошибки: External table '<table>' is not accessible because content of directory cannot be listed. (даже несмотря на наличие доступа к данным в базовых учетных записях хранения).

Поскольку синхронизированные базы данных в бессерверном пуле SQL доступны только для чтения, их нельзя изменить. При попытке создать пользователя или предоставить другие разрешений произойдет сбой. Для чтения синхронизированных баз данных необходимы привилегированные разрешения уровня сервера (например, sysadmin). Это ограничение также применяется к внешним таблицам в бессерверном пуле SQL при использовании Azure Synapse Link для Dataverse и таблиц баз данных Lake.

Доступ без прав администратора к синхронизированным базам данных

Пользователь, которому необходимо считывать данные и создавать отчеты, обычно не обладает полными правами администратора (sysadmin). Этот пользователь обычно является аналитиком данных, который должен просто читать и анализировать информацию из существующих таблиц. Ему не требуется создавать новые объекты.

Пользователь с минимальными разрешениями должен иметь возможность:

  • подключиться к базе данных, реплицируемой из Spark;
  • выбрать данные через внешние таблицы и получить доступ к базовым данным ADLS.

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

-- Creating Azure AD login (same can be achieved for Azure AD app)
    CREATE LOGIN [login@contoso.com] FROM EXTERNAL PROVIDER;
    go;
    
    GRANT CONNECT ANY DATABASE to [login@contoso.com];
    GRANT SELECT ALL USER SECURABLES to [login@contoso.com];
    GO;

Примечание.

Эти инструкции должны выполняться в базе данных master, так как это все разрешения на уровне сервера.

После создания имени для входа и предоставления разрешений пользователь сможет выполнять запросы к синхронизированным внешним таблицам. Это также можно применить к группам безопасности Microsoft Entra.

Дополнительную защиту для объектов можно обеспечить с помощью конкретных схем, блокируя доступ к определенным схемам. Для решения этой проблемы требуется дополнительный код DDL. В этом сценарии можно создать бессерверную базу данных, схемы и представления, которые будут указывать на данные таблиц Spark в ADLS.

Доступ к данным учетной записи хранения можно управлять с помощью ACL или обычных служба хранилища роли владельца данных BLOB-объектов, читателя или участника для пользователей и групп Microsoft Entra. Для субъектов-служб (приложения Microsoft Entra) убедитесь, что используется настройка ACL.

Примечание.

  • Если вы хотите запретить применение к данным инструкции OPENROWSET, используйте DENY ADMINISTER BULK OPERATIONS to [login@contoso.com];. Дополнительные сведения см. в разделе DENY (разрешения на сервер).
  • Если вы хотите запретить применение конкретных схем, используйте DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com];. Дополнительные сведения см. в разделе DENY (разрешения на схему).

Следующие шаги

Дополнительные сведения см. в статье Проверка подлинности SQL.