Řízení přístupu k úložištnímu účtu pro serverless SQL pool v Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse je relační sklad v podnikovém měřítku na základu datového jezera s architekturou připravenou pro budoucnost, integrovanou AI a novými funkcemi. Pokud s datovými sklady začínáte, začněte pracovat s Fabric Data Warehouse. Stávající úlohy fondu dedikované SQL můžou upgradovat na Fabric a získat tak přístup k novým funkcím napříč datovou vědou, analýzou v reálném čase a reportováním.

Dotaz bezserverového SQL fondu čte soubory přímo z úložiště Azure. Oprávnění pro přístup k souborům v úložišti Azure se řídí na dvou úrovních:

  • Úroveň úložiště – Uživatel by měl mít oprávnění pro přístup k podkladovým souborům úložiště. Správce úložiště by měl identitě Microsoft Entra povolit čtení a zápis souborů nebo vygenerovat klíč pro podpis sdíleného přístupu (SAS), který se použije pro přístup k úložišti.
  • Úroveň služby SQL – Uživatel by měl udělit oprávnění ke čtení dat pomocí externí tabulky nebo ke spuštění OPENROWSET funkce. Přečtěte si další informace o požadovaných oprávněních v této části.

Tento článek popisuje typy přihlašovacích údajů, které můžete použít, a jak je provedeno vyhledávání přihlašovacích údajů pro uživatele SQL a Microsoft Entra.

Oprávnění k úložišti

Bezserverový fond SQL v pracovním prostoru Synapse Analytics může číst obsah souborů uložených v Azure Data Lake úložišti. Musíte nakonfigurovat oprávnění k úložišti, aby uživatel, který spouští dotaz SQL, mohl číst soubory. Existují tři metody pro povolení přístupu k souborům:

  • Řízení přístupu na základě role (RBAC) umožňuje přiřadit roli některému Microsoft Entra uživateli v tenantovi, kde je umístěné úložiště. Čtenář musí být členem role Storage Blob Data Reader, Storage Blob Data Contributor nebo Storage Blob Data Owner v účtu úložiště. Uživatel, který zapisuje data v úložišti Azure, musí být členem role Přispěvatel dat objektů blob služby Storage nebo Vlastník dat objektů blob služby Storage. Role Vlastník úložiště neznamená, že uživatel je také vlastníkem dat úložiště.
  • Seznamy řízení přístupu (ACL) umožňují definovat podrobně vydefinovaná oprávnění Read(R), Write(W), a Execute(X) v úložišti Azure. ACL je možné přiřadit uživatelům Microsoft Entra. Pokud čtenáři chtějí číst soubor na cestě v Azure Storage, musí mít oprávnění Execute(X) ACL ve všech složkách cesty k souboru a oprávnění Read(R) ACL na souboru. Zjistěte, jak nastavit oprávnění ACL ve vrstvě úložiště.
  • Sdílený přístupový podpis (SAS) umožňuje čtenáři přistupovat k souborům v úložišti Azure Data Lake pomocí časově omezeného tokenu. Čtenář nepotřebuje být ani ověřen jako uživatel služby Microsoft Entra. Token SAS obsahuje oprávnění udělená čtenáři a také období, kdy je token platný. Token SAS je dobrou volbou pro časově omezený přístup k jakémukoli uživateli, který nemusí být ve stejném tenantovi Microsoft Entra. Token SAS je možné definovat v účtu úložiště nebo v konkrétních adresářích. Přečtěte si další informace o grantování omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů.

Jako alternativu můžete soubory zpřístupnit veřejně tak, že povolíte anonymní přístup. Tento přístup by neměl být použit, pokud máte nepubliková data.

Podporované typy autorizace úložiště

Uživatel, který se přihlásil do bezserverového fondu SQL, musí mít oprávnění k přístupu k souborům a dotazování na soubory v Azure Storage, pokud nejsou veřejně dostupné. Pro přístup k nepublikované úložišti můžete použít čtyři typy autorizace: identita uživatele, sdílený přístupový podpis, instanční objekt a spravovaná identita.

Note

Microsoft Entra pass-through je výchozí nastavení při vytváření pracovního prostoru.

Identita uživatele, označovaná také jako "Microsoft Entra průchozí ověřování", je typ autorizace, při kterém se identita uživatele Microsoft Entra, který se přihlásil do bezserverového SQL fondu, používá k autorizaci přístupu k datům. Před přístupem k datům musí správce Azure Storage udělit oprávnění Microsoft Entra uživateli. Jak je uvedeno v podporovaných typech autorizace pro tabulku uživatelé databáze, nepodporuje se pro typ uživatele SQL.

Důležité

Ověřovací token Microsoft Entra může klientské aplikace ukládat do mezipaměti. Power BI například ukládá tokeny Microsoft Entra do mezipaměti a znovu používá stejný token po dobu jedné hodiny. Dlouhotrvající dotazy můžou selhat, pokud vyprší platnost tokenu uprostřed provádění dotazu. Pokud dochází k selháním dotazů způsobeným přístupovým tokenem Microsoft Entra, jehož platnost vyprší uprostřed dotazu, zvažte přepnutí na principál služby , spravovanou identitu nebo podpis sdíleného přístupu .

Abyste mohli použít svoji identitu k přístupu k datům, musíte být členem role Vlastník dat Storage Blob, Přispěvatel dat Storage Blob nebo Čtenář dat Storage Blob. Jako alternativu můžete zadat podrobná pravidla ACL pro přístup k souborům a složkám. I když jste vlastníkem účtu úložiště, musíte se stále přidat do jedné z rolí dat objektů blob služby Storage. Další informace o řízení přístupu ve službě Azure Data Lake Store Gen2 najdete v článku Řízení přístupu ve službě Azure Data Lake Storage Gen2.

Scénáře napříč tenanty

V případech, kdy je Azure Storage v jiném tenantovi než bezserverový fond SQL Synapse, je doporučená metoda autorizace prostřednictvím instančního objektu. Autorizace SAS je také možná, i když se spravovaná identita nepodporuje.

Druh autorizace Úložiště chráněné bránou firewall úložiště, které není chráněno firewallem
SAS Podporováno Podporováno
Hlavní služba Nepodporováno Podporováno

Note

Pokud je Azure Storage chráněna firewallem Azure Storage, nebude podporován principál služby.

Podporované typy autorizace pro uživatele databází

Následující tabulka obsahuje dostupné typy autorizace Azure Storage pro různé metody přihlašování do Azure Synapse Analytics bezserverového koncového bodu SQL:

Typ autorizace Uživatel SQL Microsoft Entra uživatel Služba principal
Identita uživatele Nepodporováno Podporováno Podporováno
SAS Podporováno Podporováno Podporovaný
Služba principal Podporováno Podporováno Podporováno
Spravovaná identita Podporovaný Podporováno Podporováno

Podporované úložiště a typy autorizace

Můžete použít následující kombinace typů autorizace a typů Azure Storage:

Typ autorizace Blob Storage ADLS Gen1 ADLS Gen2
SAS Podporováno Nepodporováno Podporováno
Služba principal Podporováno Podporováno Podporováno
Spravovaná identita Podporováno Podporováno Podporováno
Identita uživatele Podporováno Podporováno Podporováno

Scénáře napříč tenanty

V případech, kdy je Azure Storage v jiném tenantovi než bezserverový SQL pool Azure Synapse Analytics, je doporučenou metodou autorizace použití service principal. Autorizace sdíleného přístupového podpisu je také možná. Identita spravované služby se nepodporuje.

Typ autorizace Úložiště chráněné bránou firewall úložiště bez ochrany firewallu
SAS Podporováno Podporováno
Služba principal Nepodporováno Podporováno

Note

Pokud je Azure Storage chráněná bránou firewall Azure Storage a nachází se v jiném tenantovi, správce služby není podporován. Místo toho použijte sdílený přístupový podpis (SAS).

Úložiště chráněné bránou firewall

Účty úložiště můžete nakonfigurovat tak, aby umožňovaly přístup ke konkrétnímu bezserverovému fondu SQL vytvořením pravidla instance prostředku. Při přístupu k úložišti chráněnému bránou firewall použijte identitu uživatele nebo spravovanou identitu.

Note

Funkce brány firewall na Azure Storage je ve verzi Public Preview a je dostupná ve všech oblastech veřejného cloudu.

Následující tabulka obsahuje dostupné typy autorizace chráněné bránou firewall Azure Storage pro různé metody přihlašování do Azure Synapse Analytics bezserverového koncového bodu SQL:

Typ autorizace Uživatel SQL Microsoft Entra uživatel Služba principal
Identita uživatele Nepodporováno Podporováno Podporováno
SAS Nepodporováno Nepodporováno Nepodporováno
Služba principal Nepodporováno Nepodporováno Nepodporováno
Spravovaná identita Podporováno Podporováno Podporováno

Pokud chcete získat přístup k úložišti chráněnému bránou firewall prostřednictvím identity uživatele, můžete použít portál Azure nebo modul Az.Storage PowerShell.

konfigurace brány firewall Azure Storage prostřednictvím portálu Azure

  1. Na portálu Azure vyhledejte svůj účet úložiště.
  2. V hlavní navigační nabídce přejděte do části Sítě v části Nastavení.
  3. V části PříkladyResource přidejte výjimku pro váš pracovní prostor Azure Synapse.
  4. Vyberte Microsoft.Synapse/workspaces jako typ zdroje.
  5. Vyberte název pracovního prostoru jako název instance.
  6. Vyberte Uložit.

konfigurace brány firewall Azure Storage přes PowerShell

Podle těchto kroků nakonfigurujte účet úložiště a přidejte výjimku pro Azure Synapse pracovní prostor.

  1. Otevřete PowerShell nebo nainstalujte PowerShell.

  2. Nainstalujte nejnovější verze modulu Az.Storage a modulu Az.Synapse, například v následujícím skriptu:

    Install-Module -Name Az.Storage -RequiredVersion 3.4.0
    Install-Module -Name Az.Synapse -RequiredVersion 0.7.0
    

    Důležité

    Ujistěte se, že používáte aspoň verzi 3.4.0. Verzi Az.Storage můžete zkontrolovat spuštěním tohoto příkazu:

    Get-Module -ListAvailable -Name Az.Storage | Select Version
    
  3. Připojte se ke svému tenantovi Azure:

    Connect-AzAccount
    
  4. Definování proměnných v PowerShellu:

    • Název skupiny prostředků – najdete ho v části Overview na portálu Azure vašeho účtu úložiště.
    • Název účtu úložiště – název účtu, který je chráněný pravidly brány firewall.
    • ID tenanta – toto najdete v Azure portálu v Microsoft Entra ID, v části Vlastnosti, v Vlastnostech tenanta.
    • Název pracovního prostoru – název pracovního prostoru Azure Synapse.
        $resourceGroupName = "<resource group name>"
        $accountName = "<storage account name>"
        $tenantId = "<tenant id>"
        $workspaceName = "<Azure Synapse workspace name>"
    
        $workspace = Get-AzSynapseWorkspace -Name $workspaceName
        $resourceId = $workspace.Id
        $index = $resourceId.IndexOf("/resourceGroups/", 0)
        # Replace G with g - /resourceGroups/ to /resourcegroups/
        $resourceId = $resourceId.Substring(0,$index) + "/resourcegroups/" ` 
            + $resourceId.Substring($index + "/resourceGroups/".Length)
    
        $resourceId
    

    Důležité

    Hodnota $resourceid vrácená skriptem PowerShellu by měla odpovídat této šabloně: /subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Synapse/workspaces/{name-of-workspace} Je důležité psát resourcegroups v malých písmenech.

  5. Přidejte síťové pravidlo pro účet úložiště Azure.

        $parameters = @{
            ResourceGroupName = $resourceGroupName
            Name = $accountName
            TenantId = $tenantId 
            ResourceId = $resourceId
        }
    
        Add-AzStorageAccountNetworkRule @parameters
    
  6. Ověřte, že síťové pravidlo účtu úložiště bylo aplikováno v bráně firewall vašeho účtu úložiště. Následující skript PowerShellu $resourceid porovná proměnnou z předchozích kroků s výstupem síťového pravidla účtu úložiště.

        $parameters = @{
            ResourceGroupName = $resourceGroupName
            Name = $accountName
        }
    
        $rule = Get-AzStorageAccountNetworkRuleSet @parameters
        $rule.ResourceAccessRules | ForEach-Object { 
            if ($_.ResourceId -cmatch "\/subscriptions\/(\w\-*)+\/resourcegroups\/(.)+") { 
                Write-Host "Storage account network rule is successfully configured." -ForegroundColor Green
                $rule.ResourceAccessRules
            } else {
                Write-Host "Storage account network rule is not configured correctly. Remove this rule and follow the steps in detail." -ForegroundColor Red
                $rule.ResourceAccessRules
            }
        }
    

Přihlašovací údaje

K dotazování souboru umístěného v Azure Storage potřebuje koncový bod bezserverového fondu SQL přihlašovací údaje, které obsahují ověřovací informace. Používají se dva typy přihlašovacích údajů:

  • Přihlašovací údaje na úrovni serveru se používají pro ad hoc dotazy spuštěné pomocí OPENROWSET funkce. Název přihlašovacích údajů se musí shodovat s adresou URL úložiště.
  • Přihlašovací údaje s rozsahem databáze se používají pro externí tabulky. Odkazy DATA SOURCE na externí tabulku s přihlašovacími údaji, které by se měly použít pro přístup k úložišti.

Udělení oprávnění ke správě přihlašovacích údajů

Udělení možnosti správy přihlašovacích údajů:

  • Aby mohl uživatel vytvořit nebo odstranit přihlašovací údaje na úrovni serveru, musí správce udělit ALTER ANY CREDENTIAL oprávnění k jeho přihlášení v hlavní databázi. Příklad:

    GRANT ALTER ANY CREDENTIAL TO [login_name];
    
  • Aby mohl uživatel vytvořit nebo odstranit přihlašovací údaje s vymezeným oborem databáze, musí správce udělit CONTROL oprávnění k databázi uživateli databáze v uživatelské databázi. Příklad:

    GRANT CONTROL ON DATABASE::[database_name] TO [user_name];
    

Udělení oprávnění k používání přihlašovacích údajů

Uživatelé databáze, kteří přistupují k externímu úložišti, musí mít oprávnění k používání přihlašovacích údajů. Aby mohl uživatel používat přihlašovací údaje, musí mít REFERENCES oprávnění ke konkrétním přihlašovacím údajům.

Pokud chcete udělit REFERENCES oprávnění k přihlášení na úrovni serveru, použijte v hlavní databázi následující dotaz T-SQL:

GRANT REFERENCES ON CREDENTIAL::[server-level_credential] TO [login_name];

Pokud chcete udělit REFERENCES oprávnění k přihlašovacím údajům v oboru databáze pro uživatele databáze, použijte v uživatelské databázi následující dotaz T-SQL:

GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[database-scoped_credential] TO [user_name];

Přihlašovací údaje na úrovni serveru

Přihlašovací údaje na úrovni serveru se používají, když se funkce OPENROWSET volá bez přihlášení SQL DATA_SOURCE k čtení souborů v účtu úložiště.

Název přihlašovacích údajů na úrovni serveru musí odpovídat základní adrese URL úložiště Azure, případně je následován názvem kontejneru. Přihlašovací údaje se přidají spuštěním příkazu CREATE CREDENTIAL. Argument musíte zadat CREDENTIAL NAME .

Note

Argument FOR CRYPTOGRAPHIC PROVIDER není podporován.

Název CREDENTIAL na úrovni serveru musí odpovídat následujícímu formátu: <prefix>://<storage_account_path>[/<container_name>]. Cesty k účtu úložiště jsou popsané v následující tabulce:

Externí zdroj dat Prefix Cesta k účtu úložiště
Azure Blob Storage https <storage_account>.blob.core.windows.net
Azure Data Lake Storage Gen1 https <storage_account>.azuredatalakestore.net/webhdfs/v1
Azure Data Lake Storage Gen2 https <storage_account>.dfs.core.windows.net

Přihlašovací údaje na úrovni serveru pak můžou přistupovat k úložišti Azure pomocí následujících typů ověřování:

Uživatelé Microsoft Entra mají přístup k libovolnému souboru v úložišti Azure, pokud jsou členové některé z těchto rolí: Vlastník dat objektů blob úložiště, Přispěvatel dat objektů blob úložiště nebo Čtenář dat objektů blob úložiště. Microsoft Entra uživatelé nepotřebují pro přístup k úložišti přihlašovací údaje.

Uživatelé ověření pomocí SQL nemůžou pro přístup k úložišti používat ověřování pomocí Microsoft Entra. K úložišti mají přístup prostřednictvím přihlašovacích údajů databáze nebo pomocí spravované identity, klíče SAS, principála služby, nebo pokud existuje veřejný přístup k úložišti.

Povolení na úrovni databáze

Přihlašovací údaje v rozsahu databáze se používají, když jakýkoli hlavní objekt volá OPENROWSET funkci s DATA_SOURCE nebo vybírá data z externí tabulky , která nemají přístup k veřejným souborům. Přihlašovací údaje v oboru databáze se nemusí shodovat s názvem účtu úložiště. Odkazuje se na něj ve ZDROJI DAT, který definuje umístění úložiště.

Přihlašovací údaje v oboru databáze umožňují přístup k úložišti Azure pomocí následujících typů ověřování:

Uživatelé Microsoft Entra mají přístup k libovolnému souboru v úložišti Azure, pokud jsou členy některé z rolí: Vlastník dat pro objekty blob úložiště, Přispěvatel dat pro objekty blob úložiště nebo Čtenář dat pro objekty blob úložiště. Microsoft Entra uživatelé nepotřebují pro přístup k úložišti přihlašovací údaje.

CREATE EXTERNAL DATA SOURCE mysample
WITH (    LOCATION   = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>'
)

Uživatelé autentizovaní SQL nemohou pro přístup k úložišti používat ověřování Microsoft Entra. K úložišti mají přístup prostřednictvím přihlašovacích údajů k databázi pomocí spravované identity, klíče SAS, služebního principálu, nebo pokud je úložiště veřejně přístupné.

Přihlašovací údaje s vymezeným oborem databáze se používají v externích zdrojích dat k určení metody ověřování, která se použije pro přístup k tomuto úložišti:

CREATE EXTERNAL DATA SOURCE mysample
WITH (    LOCATION   = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>',
          CREDENTIAL = <name of database scoped credential> 
)

Příklady

Přístup k veřejně dostupnému zdroji dat

Pomocí následujícího skriptu vytvořte tabulku, která přistupuje k veřejně dostupnému zdroji dat.

CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat]
       WITH ( FORMAT_TYPE = PARQUET)
GO
CREATE EXTERNAL DATA SOURCE publicData
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<public_container>/<path>' )
GO

CREATE EXTERNAL TABLE dbo.userPublicData ( [id] int, [first_name] varchar(8000), [last_name] varchar(8000) )
WITH ( LOCATION = 'parquet/user-data/*.parquet',
       DATA_SOURCE = [publicData],
       FILE_FORMAT = [SynapseParquetFormat] )

Uživatel databáze může číst obsah souborů ze zdroje dat pomocí externí tabulky nebo funkce OPENROWSET , která odkazuje na zdroj dat:

SELECT TOP 10 * FROM dbo.userPublicData;
GO
SELECT TOP 10 * FROM OPENROWSET(BULK 'parquet/user-data/*.parquet',
                                DATA_SOURCE = 'mysample',
                                FORMAT='PARQUET') as rows;
GO

Přístup ke zdroji dat pomocí přihlašovacích údajů

Upravte následující skript a vytvořte externí tabulku, která přistupuje k Azure úložišti pomocí tokenu SAS, Microsoft Entra identity uživatele nebo spravované identity pracovního prostoru.

-- Create master key in databases with some password (one-off per database)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>'
GO

-- Create databases scoped credential that use Managed Identity, SAS token or service principal. User needs to create only database-scoped credentials that should be used to access data source:

CREATE DATABASE SCOPED CREDENTIAL WorkspaceIdentity
WITH IDENTITY = 'Managed Identity'
GO
CREATE DATABASE SCOPED CREDENTIAL SasCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sv=2019-10-1********ZVsTOL0ltEGhf54N8KhDCRfLRI%3D'
GO
CREATE DATABASE SCOPED CREDENTIAL SPNCredential WITH
IDENTITY = '**44e*****8f6-ag44-1890-34u4-22r23r771098@https://login.microsoftonline.com/**do99dd-87f3-33da-33gf-3d3rh133ee33/oauth2/token' 
, SECRET = '.7OaaU_454azar9WWzLL.Ea9ePPZWzQee~'
GO
-- Create data source that one of the credentials above, external file format, and external tables that reference this data source and file format:

CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat] WITH ( FORMAT_TYPE = PARQUET)
GO

CREATE EXTERNAL DATA SOURCE mysample
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>'
-- Uncomment one of these options depending on authentication method that you want to use to access data source:
--,CREDENTIAL = WorkspaceIdentity 
--,CREDENTIAL = SasCredential 
--,CREDENTIAL = SPNCredential
)

CREATE EXTERNAL TABLE dbo.userData ( [id] int, [first_name] varchar(8000), [last_name] varchar(8000) )
WITH ( LOCATION = 'parquet/user-data/*.parquet',
       DATA_SOURCE = [mysample],
       FILE_FORMAT = [SynapseParquetFormat] );

Uživatel databáze může číst obsah souborů ze zdroje dat pomocí externí tabulky nebo funkce OPENROWSET , která odkazuje na zdroj dat:

SELECT TOP 10 * FROM dbo.userdata;
GO
SELECT TOP 10 * FROM OPENROWSET(BULK 'parquet/user-data/*.parquet', DATA_SOURCE = 'mysample', FORMAT='PARQUET') as rows;
GO

Tyto články vám pomůžou zjistit, jak se dotazovat na různé typy složek, typy souborů a vytvářet a používat zobrazení: