Přístup k externímu úložišti pomocí bezserverového fondu SQL v Azure Synapse Analytics
Tento článek popisuje, jak můžou uživatelé číst data ze souborů uložených ve službě Azure Storage v bezserverovém fondu SQL. Uživatelé mají pro přístup k úložišti následující možnosti:
- Funkce OPENROWSET , která umožňuje ad hoc dotazy na soubory ve službě Azure Storage.
- Externí tabulka , která je předdefinovaná datová struktura založená na sadě externích souborů.
Uživatel může používat různé metody ověřování, jako je ověřování Microsoft Entra passthrough (výchozí pro objekty zabezpečení Microsoft Entra) a ověřování SAS (výchozí pro objekty zabezpečení SQL).
Dotazování souborů pomocí OPENROWSET
OPENROWSET umožňuje uživatelům dotazovat se na externí soubory v úložišti Azure, pokud mají přístup k úložišti. Uživatel, který je připojený k bezserverovém fondu SQL, by měl ke čtení obsahu souborů v úložišti Azure použít následující dotaz:
SELECT * FROM
OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows
Uživatel má přístup k úložišti pomocí následujících pravidel přístupu:
- Uživatel Microsoft Entra –
OPENROWSET
použije identitu volajícího Microsoft Entra pro přístup ke službě Azure Storage nebo přístupu k úložišti s anonymním přístupem. - Uživatel SQL –
OPENROWSET
bude mít přístup k úložišti s anonymním přístupem nebo může být zosobněný pomocí tokenu SAS nebo spravované identity pracovního prostoru.
Objekty zabezpečení SQL můžou také použít OPENROWSET k přímému dotazování souborů chráněných pomocí tokenů SAS nebo spravované identity pracovního prostoru. Pokud uživatel SQL tuto funkci spustí, musí power uživatel s ALTER ANY CREDENTIAL
oprávněním vytvořit přihlašovací údaje s oborem serveru, které odpovídají adrese URL ve funkci (pomocí názvu úložiště a kontejneru) a udělit odkazy pro tyto přihlašovací údaje volající funkci OPENROWSET:
EXECUTE AS somepoweruser
CREATE CREDENTIAL [https://<storage_account>.dfs.core.windows.net/<container>]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sas token';
GRANT REFERENCES ON CREDENTIAL::[https://<storage_account>.dfs.core.windows.net/<container>] TO sqluser
Pokud přihlašovací údaje na úrovni serveru, které odpovídají adrese URL, nebo uživatel SQL nemá oprávnění k odkazům na tyto přihlašovací údaje, vrátí se chyba. Objekty zabezpečení SQL nemůžou zosobnit pomocí některé identity Microsoft Entra.
Poznámka:
Tato verze OPENROWSET je navržená pro rychlé a snadné zkoumání dat pomocí výchozího ověřování. Pokud chcete využít zosobnění nebo spravovanou identitu, použijte OPENROWSET s DATA_SOURCE popsanými v další části.
Dotazování na zdroje dat pomocí funkce OPENROWSET
OPENROWSET umožňuje uživateli dotazovat se na soubory umístěné v některém externím zdroji dat:
SELECT * FROM
OPENROWSET(BULK 'file/path/*.parquet',
DATA_SOURCE = MyAzureInvoices,
FORMAT= 'parquet') as rows
Uživatel, který spustí tento dotaz, musí mít přístup k souborům. Uživatelé musí být zosobněni pomocí tokenu SAS nebo spravované identity pracovního prostoru , pokud nemají přímý přístup k souborům pomocí identity Microsoft Entra nebo anonymního přístupu.
DATABASE SCOPED CREDENTIAL
určuje, jak získat přístup k souborům v odkazovaném zdroji dat (aktuálně SAS a spravovaná identita). Power user with CONTROL DATABASE
permission would need to create DATABASE SCOPED CREDENTIAL
that will be used to access storage and EXTERNAL DATA SOURCE
that specifies URL of data source and credential that be used:
EXECUTE AS somepoweruser;
-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=201********' ;
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/' ,
CREDENTIAL = AccessAzureInvoices) ;
Volající musí mít k provedení funkce OPENROWSET jednu z následujících oprávnění:
- Jedno z oprávnění ke spuštění OPENROWSET:
ADMINISTER BULK OPERATIONS
povoluje přihlášení spouštět funkci OPENROWSET.ADMINISTER DATABASE BULK OPERATIONS
povoluje uživateli s oborem databáze spouštět funkci OPENROWSET.
REFERENCES DATABASE SCOPED CREDENTIAL
přihlašovacích údajů, na které se odkazuje vEXTERNAL DATA SOURCE
souboru .
EXTERNÍ TABULKA
Uživatel s oprávněními ke čtení tabulky má přístup k externím souborům pomocí externí tabulky vytvořené nad sadou složek a souborů Azure Storage.
Uživatel s oprávněními k vytvoření externí tabulky (například CREATE TABLE a ALTER ANY CREDENTIAL nebo REFERENCES DATABASE SCOPED CREDENTIAL) může pomocí následujícího skriptu vytvořit tabulku nad zdrojem dat Azure Storage:
CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;
Uživatel, který čte data z této tabulky, musí mít přístup k souborům. Uživatelé musí být zosobnění pomocí tokenu SAS nebo spravované identity pracovního prostoru , pokud nemají přímý přístup k souborům pomocí identity Microsoft Entra nebo anonymního přístupu.
DATABASE SCOPED CREDENTIAL určuje, jak získat přístup k souborům v odkazovaném zdroji dat. Uživatel s oprávněním CONTROL DATABASE by potřeboval vytvořit PŘIHLAŠOVACÍ ÚDAJE S OBOREM DATABÁZE, které se použijí pro přístup k úložišti a externímu zdroji dat, který určuje adresu URL zdroje dat a přihlašovacích údajů, které by se měly použít:
EXECUTE AS somepoweruser;
-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';
CREATE DATABASE SCOPED CREDENTIAL cred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=201********' ;
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>' ,
CREDENTIAL = cred
) ;
Čtení externích souborů pomocí EXTERNÍ TABULKY
EXTERNÍ TABULKA umožňuje číst data ze souborů odkazovaných prostřednictvím zdroje dat pomocí standardního příkazu SQL SELECT:
SELECT *
FROM dbo.DimProductsExternal
Volající musí mít následující oprávnění ke čtení dat:
SELECT
Externí tabulka oprávnění ONREFERENCES DATABASE SCOPED CREDENTIAL
oprávnění, pokudDATA SOURCE
máCREDENTIAL
Oprávnění
Následující tabulka uvádí požadovaná oprávnění pro výše uvedené operace.
Dotaz | Požadována oprávnění |
---|---|
OPENROWSET(BULK) bez zdroje dat | ADMINISTER BULK OPERATIONS , ADMINISTER DATABASE BULK OPERATIONS nebo přihlášení SQL musí obsahovat ODKAZY CREDENTIAL::<URL> pro úložiště chráněné SAS. |
OPENROWSET(BULK) se zdroji dat bez přihlašovacích údajů | ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS , |
OPENROWSET(BULK) se zdroji dat s přihlašovacími údaji | REFERENCES DATABASE SCOPED CREDENTIAL a jednu z ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS |
VYTVOŘENÍ EXTERNÍHO ZDROJE DAT | ALTER ANY EXTERNAL DATA SOURCE a REFERENCES DATABASE SCOPED CREDENTIAL |
VYTVOŘENÍ EXTERNÍ TABULKY | CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY EXTERNAL FILE FORMAT a ALTER ANY EXTERNAL DATA SOURCE |
VÝBĚR Z EXTERNÍ TABULKY | SELECT TABLE a REFERENCES DATABASE SCOPED CREDENTIAL |
CETAS | Vytvoření tabulky - CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY DATA SOURCE a ALTER ANY EXTERNAL FILE FORMAT . Čtení dat: ADMINISTER BULK OPERATIONS nebo REFERENCES CREDENTIAL SELECT TABLE pro každou tabulku, zobrazení nebo funkci v dotazu + R/W oprávnění k úložišti |
Další kroky
Teď jste připraveni pokračovat v následujících článcích s postupy: