Zarządzanie uprawnieniami użytkownika w bezserwerowych pulach SQL usługi Azure Synapse

Ukończone

Aby zabezpieczyć dane, usługa Azure Storage implementuje model kontroli dostępu, który obsługuje zarówno kontrolę dostępu opartą na rolach platformy Azure (RBAC) jak i listy kontroli dostępu (ACL), takie jak przenośny interfejs systemu operacyjnego dla systemu Unix (POSIX)

Podmiot zabezpieczeń można skojarzyć z poziomem dostępu dla plików i katalogów. Te skojarzenia są przechwytywane na liście kontroli dostępu (ACL). Każdy plik i katalog na koncie magazynu mają listę kontroli dostępu. Gdy podmiot zabezpieczeń próbuje wykonać operację w pliku lub katalogu, sprawdzanie listy ACL określa, czy jednostka zabezpieczeń (użytkownik, grupa, jednostka usługi lub tożsamość zarządzana) ma prawidłowy poziom uprawnień do wykonania operacji.

Istnieją dwa rodzaje list kontroli dostępu:

  • Listy ACL dostępu

    Kontroluje dostęp do obiektu. Pliki i katalogi mają osobne listy ACL dostępu.

  • Domyślne listy ACL

    To szablony list ACL skojarzonych z katalogiem, które określają listy ACL dostępu dla wszystkich elementów podrzędnych utworzonych w tym katalogu. Pliki nie mają domyślnych list ACL.

Listy ACL dostępu i domyślne listy ACL mają taką samą strukturę.

Uprawnienia do obiektu kontenera to Odczyt, Zapis i Wykonywanie oraz mogą być używane w plikach i katalogach, jak pokazano w poniższej tabeli:

Poziomy uprawnień

Uprawnienie Plik Katalog
Odczyt (R) Może odczytywać zawartości pliku Wymaga odczytu i wykonania, aby wyświetlić listę zawartości katalogu
Zapis (W) Może zapisywać w pliku lub dołączać do pliku Wymaga zapisu i wykonywania w celu utworzenia elementów podrzędnych w katalogu
Wykonanie (X) Nie oznacza nic w kontekście usługi Data Lake Storage Gen2 Wymagane do przechodzenia przez elementy podrzędne katalogu

Wskazówki dotyczące konfigurowania list ACL

Zawsze używaj grup zabezpieczeń Entra firmy Microsoft jako przypisanego podmiotu zabezpieczeń we wpisie listy ACL. Unikaj bezpośredniego przypisywania poszczególnych użytkowników lub zleceniodawców usług. Użycie tej struktury umożliwia dodawanie i usuwanie użytkowników lub jednostek usługi bez konieczności ponownego stosowania list ACL do całej struktury katalogów. Zamiast tego możesz po prostu dodawać lub usuwać użytkowników i jednostki usługi z odpowiedniej grupy zabezpieczeń firmy Microsoft Entra.

Istnieje wiele sposobów konfigurowania grup. Załóżmy na przykład, że masz katalog o nazwie /LogData , który przechowuje dane dziennika generowane przez serwer. Usługa Azure Data Factory (ADF) pozyskiwa dane do tego folderu. Konkretni użytkownicy z zespołu inżynierów usług będą przekazywać dzienniki i zarządzać innymi użytkownikami tego folderu, a różne klastry usługi Databricks będą analizować dzienniki z tego folderu.

Aby włączyć te działania, możesz utworzyć grupę LogsWriter i grupę LogsReader. Następnie można przypisać uprawnienia w następujący sposób:

  • Dodaj grupę LogsWriter do listy ACL katalogu /LogData z uprawnieniami rwx.
  • Dodaj grupę LogsReader do listy ACL katalogu /LogData z uprawnieniami r-x.
  • Dodaj obiekt jednostki usługi lub tożsamość usługi zarządzanej (MSI) dla usługi ADF do grupy LogsWriters.
  • Dodaj użytkowników w zespole inżynierów usług do grupy LogsWriter.
  • Dodaj obiekt jednostki usługi lub tożsamość usługi zarządzanej dla usługi Databricks do grupy LogsReader.

Jeśli użytkownik w zespole inżynierów usług opuści firmę, możesz je usunąć z grupy LogsWriter. Jeśli nie dodano tego użytkownika do grupy, ale zamiast tego dodano dedykowany wpis listy ACL dla tego użytkownika, należy usunąć ten wpis listy ACL z katalogu /LogData . Należy również usunąć wpis ze wszystkich podkatalogów i plików w całej hierarchii katalogów katalogu /LogData .

Role niezbędne dla użytkowników bezserwerowej puli SQL

W przypadku użytkowników, którzy potrzebują dostępu tylko do odczytu, należy przypisać rolę o nazwie Czytelnik danych obiektu blob usługi Storage.

W przypadku użytkowników, którzy potrzebują dostępu do odczytu/zapisu , należy przypisać rolę o nazwie Współautor danych obiektu blob usługi Storage. Dostęp do odczytu/zapisu jest wymagany, jeśli użytkownik powinien mieć dostęp do tworzenia tabeli zewnętrznej podczas wybierania (CETAS).

Uwaga

Jeśli użytkownik ma rolę Właściciel lub Współautor, ta rola nie jest wystarczająca. Usługa Azure Data Lake Storage gen 2 ma role superrole, które należy przypisać.

Uprawnienie na poziomie bazy danych

Aby zapewnić bardziej szczegółowy dostęp do użytkownika, należy użyć składni języka Transact-SQL do tworzenia identyfikatorów logowania i użytkowników.

Aby udzielić użytkownikowi dostępu do pojedynczej bezserwerowej bazy danych puli SQL, wykonaj kroki opisane w tym przykładzie:

  1. Tworzenie identyfikatora LOGOWANIA

    use master
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. Tworzenie UŻYTKOWNIKA

    use yourdb -- Use your DB name
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. Dodawanie użytkownika do członków określonej roli

    use yourdb -- Use your DB name
    alter role db_datareader 
    Add member alias -- Type USER name from step 2
    -- You can use any Database Role which exists 
    -- (examples: db_owner, db_datareader, db_datawriter)
    -- Replace alias with alias of the user you would like to give access and domain with the company domain you are using.
    

Uprawnienia na poziomie serwera

  1. Aby udzielić użytkownikowi pełnego dostępu do wszystkich bezserwerowych baz danych puli SQL, wykonaj kroki opisane w tym przykładzie:

    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    ALTER SERVER ROLE sysadmin ADD MEMBER [alias@domain.com];