Sdílet prostřednictvím


Přístup k externímu úložišti pomocí bezserverového fondu SQL ve službě 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í pokročilý uživatel s oprávněním ALTER ANY CREDENTIAL vytvořit serverový rozsah přihlašovacích údajů, které odpovídají adrese URL ve funkci (pomocí názvu úložiště a kontejneru), a udělit oprávnění REFERENCES k těmto přihlašovacím údajům volajícímu 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 neexistují přihlašovací údaje na úrovni serveru, které odpovídají adrese URL, nebo pokud uživatel SQL nemá oprávnění k referencování těchto přihlašovacích údajů, vrátí se chyba. Účty SQL nemohou využít identitu Microsoft Entra k zosobnění.

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í zdrojů dat pomocí 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 zastupováni pomocí tokenu SAS nebo spravované identity pracovního prostoru, pokud nemají přímý přístup k souborům pomocí jejich identity Microsoft Entra nebo prostřednictvím 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). Uživatel s oprávněním CONTROL DATABASE by potřeboval vytvořit DATABASE SCOPED CREDENTIAL, které bude použito pro přístup k úložnému prostoru, a EXTERNAL DATA SOURCE, které specifikuje URL zdroje dat a přihlašovací údaje, které by měly být použity.

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&amp;sp=rwac&amp;se=2017-02-01T00:55:34Z&amp;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 umožňuje přihlášení ke spuštění funkce OPENROWSET.
    • ADMINISTER DATABASE BULK OPERATIONS povoluje uživateli s oborem databáze spouštět funkci OPENROWSET.
  • REFERENCES DATABASE SCOPED CREDENTIAL přihlašovacího údaje, na který se odkazuje v EXTERNAL DATA SOURCE.

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 imitováni pomocí tokenu SAS nebo spravovanou identitou 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 V RÁMCI DATABÁZE, které se použijí pro přístup k úložišti a EXTERNÍ ZDROJ DAT, který specifikuje adresu URL zdroje dat a přihlašovací údaje, 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 Oprávnění na externí tabulku
  • REFERENCES DATABASE SCOPED CREDENTIAL oprávnění, pokud DATA SOURCECREDENTIAL

Dovolení

Následující tabulka uvádí požadovaná oprávnění pro výše uvedené operace.

Dotaz Požadovaná oprávnění
OPENROWSET(BULK) bez zdroje dat ADMINISTER BULK OPERATIONS, ADMINISTER DATABASE BULK OPERATIONSnebo přihlášení SQL musí obsahovat ODKAZY CREDENTIAL::<URL> pro úložiště chráněné SAS.
OPENROWSET(BULK) s datovým zdrojem bez přihlašovacích údajů ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS,
OPENROWSET(BULK) s datovým zdrojem 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 FORMATa 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 SOURCEa ALTER ANY EXTERNAL FILE FORMAT. Čtení dat: ADMINISTER BULK OPERATIONS nebo REFERENCES CREDENTIALSELECT 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: