Sdílet prostřednictvím


Jak nastavit řízení přístupu u synchronizovaných objektů v bezserverovém fondu SQL

V Azure Synapse Analytics se databáze a tabulky Spark sdílí s bezserverovým fondem SQL. Databáze Lake, Parquet a tabulky sdíleného svazku clusteru vytvořené pomocí Sparku jsou automaticky dostupné v bezserverovém fondu SQL. Tato funkce umožňuje použití bezserverového fondu SQL k prozkoumání a dotazování dat připravených pomocí fondů Sparku. Na následujícím diagramu vidíte základní přehled architektury, který tuto funkci využívá. Nejprve kanály Azure Synapse přesouvají data z místního (nebo jiného) úložiště do Azure Data Lake Storage. Spark teď může obohatit data a vytvářet databáze a tabulky, které se synchronizují s bezserverovou službou Synapse SQL. Později může uživatel spouštět ad hoc dotazy nad rozšířená data nebo ho obsluhovat například v Power BI.

Enrich in Spark, serve with SQL diagram.

Úplný přístup správce (správce systému)

Po synchronizaci těchto databází a tabulek ze Sparku do bezserverového fondu SQL je možné tyto externí tabulky v bezserverovém fondu SQL použít pro přístup ke stejným datům. Objekty v bezserverovém fondu SQL jsou ale jen pro čtení kvůli zachování konzistence s objekty fondů Sparku. Omezení umožňuje přístup k těmto objektům v bezserverovém fondu SQL pouze uživatelům s rolí Synapse SQL Správa istrator nebo Synapse Správa istrator. Pokud se uživatel, který není správcem, pokusí spustit dotaz na synchronizovanou databázi nebo tabulku, zobrazí se tato chyba: External table '<table>' is not accessible because content of directory cannot be listed. bez ohledu na to, že mají přístup k datům v podkladových účtech úložiště.

Vzhledem k tomu, že synchronizované databáze v bezserverovém fondu SQL jsou jen pro čtení, není možné je upravovat. Vytvoření uživatele nebo udělení dalších oprávnění se nezdaří, pokud se pokusíte. Pokud chcete číst synchronizované databáze, musí mít oprávnění na úrovni privilegovaného serveru (například správce systému). Toto omezení se také týká externích tabulek v bezserverovém fondu SQL při použití Azure Synapse Linku pro tabulky Databází Dataverse a Lake.

Přístup bez oprávnění správce k synchronizovaným databázím

Uživatel, který potřebuje číst data a vytvářet sestavy, obvykle nemá úplný přístup správce (sysadmin). Tento uživatel je obvykle datový analytik, který potřebuje jen číst a analyzovat data pomocí existujících tabulek. Nemusí vytvářet nové objekty.

Uživatel s minimálním oprávněním by měl být schopný:

  • Připojení do databáze, která se replikuje ze Sparku
  • Vyberte data prostřednictvím externích tabulek a získejte přístup k podkladovým datům ADLS.

Po spuštění níže uvedeného skriptu kódu umožní uživatelům bez oprávnění správce, aby se mohli připojit k jakékoli databázi na úrovni serveru. Umožní také uživatelům zobrazit data ze všech objektů na úrovni schématu, jako jsou tabulky nebo zobrazení. Zabezpečení přístupu k datům je možné spravovat ve vrstvě úložiště.

-- 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;

Poznámka:

Tyto příkazy by se měly spouštět v hlavní databázi, protože se jedná o všechna oprávnění na úrovni serveru.

Po vytvoření přihlášení a udělení oprávnění můžou uživatelé spouštět dotazy nad synchronizovanými externími tabulkami. Toto zmírnění je také možné použít u skupin zabezpečení Microsoft Entra.

Větší zabezpečení objektů je možné spravovat prostřednictvím konkrétních schémat a uzamknout přístup ke konkrétnímu schématu. Alternativní řešení vyžaduje další DDL. V tomto scénáři můžete vytvořit novou bezserverovou databázi, schémata a zobrazení, která budou odkazovat na data tabulek Spark v ADLS.

Přístup k datům v účtu úložiště je možné spravovat prostřednictvím seznamu ACL nebo běžných rolí vlastníka dat objektů blob služby Storage, čtenáře nebo přispěvatele pro uživatele nebo skupiny Microsoft Entra. Pro instanční objekty (aplikace Microsoft Entra) se ujistěte, že používáte nastavení seznamu ACL.

Poznámka:

  • Pokud chcete zakázat použití OPENROWSET nad daty, můžete použít DENY ADMINISTER BULK OPERATIONS to [login@contoso.com]; Další informace naleznete v části Odepřít oprávnění serveru.
  • Pokud chcete zakázat používání konkrétních schémat, můžete použít DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com]; Další informace naleznete v tématu Odepřít oprávnění schématu.

Další kroky

Další informace najdete v tématu Ověřování SQL.