Zabezpieczanie dedykowanej puli SQL (dawniej SQL DW) w usłudze Azure Synapse Analytics

W tym artykule przedstawiono podstawy zabezpieczania dedykowanej puli SQL (dawniej SQL DW). W szczególności ten artykuł umożliwia rozpoczęcie pracy z zasobami dotyczącymi ograniczania dostępu, ochrony danych i monitorowania działań przy użyciu dedykowanej puli SQL (dawniej SQL DW).

Zabezpieczenia połączeń

Zabezpieczenia połączeń dotyczą sposobu ograniczania i zabezpieczania połączeń z bazą danych przy użyciu reguł zapory i szyfrowania połączeń.

Reguły zapory są używane zarówno przez logiczny serwer SQL, jak i jego bazy danych do odrzucania prób połączenia z adresów IP, które nie zostały jawnie zatwierdzone. Aby zezwolić na połączenia z publicznego adresu IP aplikacji lub komputera klienckiego, należy najpierw utworzyć regułę zapory na poziomie serwera przy użyciu witryny Azure Portal, interfejsu API REST lub programu PowerShell.

Najlepszym rozwiązaniem jest ograniczenie zakresów adresów IP dozwolonych przez zaporę na poziomie serwera, jak najwięcej. Aby uzyskać dostęp do dedykowanej puli SQL (dawniej SQL DW) z komputera lokalnego, upewnij się, że zapora w sieci i komputerze lokalnym zezwala na komunikację wychodzącą na porcie TCP 1433.

Dedykowana pula SQL (dawniej SQL DW) używa reguł zapory adresów IP na poziomie serwera. Nie obsługuje reguł zapory adresów IP na poziomie bazy danych. Aby uzyskać więcej informacji, zobacz Reguły zapory usługi Azure SQL Database

Połączenie do dedykowanej puli SQL (dawniej SQL DW) są domyślnie szyfrowane. Modyfikowanie ustawień połączenia w celu wyłączenia szyfrowania jest ignorowane.

Uwierzytelnianie

Uwierzytelnianie to sposób potwierdzenia tożsamości podczas nawiązywania połączenia z bazą danych. Dedykowana pula SQL (dawniej SQL DW) obsługuje obecnie uwierzytelnianie programu SQL Server przy użyciu nazwy użytkownika i hasła oraz identyfikatora Entra firmy Microsoft.

Podczas tworzenia serwera dla bazy danych określono identyfikator logowania "administrator serwera" z nazwą użytkownika i hasłem. Korzystając z tych poświadczeń, można uwierzytelnić się w dowolnej bazie danych na tym serwerze jako właściciel bazy danych lub "dbo" za pomocą uwierzytelniania programu SQL Server.

Jednak zgodnie z najlepszymi rozwiązaniami użytkownicy organizacji powinni używać innego konta do uwierzytelniania. W ten sposób można ograniczyć uprawnienia przyznane aplikacji i zmniejszyć ryzyko złośliwego działania w przypadku, gdy kod aplikacji jest narażony na atak polegający na wstrzyknięciu kodu SQL.

Aby utworzyć użytkownika uwierzytelnionego programu SQL Server, połącz się z bazą danych master na serwerze przy użyciu identyfikatora logowania administratora serwera i utwórz nowy identyfikator logowania serwera. Dobrym pomysłem jest również utworzenie użytkownika w bazie danych master. Tworzenie użytkownika w bazie danych master umożliwia użytkownikowi logowanie się przy użyciu narzędzi takich jak SSMS bez określania nazwy bazy danych. Umożliwia również korzystanie z Eksploratora obiektów do wyświetlania wszystkich baz danych na serwerze.

-- Connect to master database and create a login
CREATE LOGIN ApplicationLogin WITH PASSWORD = 'Str0ng_password';
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;

Następnie połącz się z dedykowaną pulą SQL (dawniej SQL DW) przy użyciu identyfikatora logowania administratora serwera i utwórz użytkownika bazy danych na podstawie utworzonego identyfikatora logowania serwera.

-- Connect to the database and create a database user
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;

Aby nadać użytkownikowi uprawnienia do wykonywania dodatkowych operacji, takich jak tworzenie identyfikatorów logowania lub tworzenie nowych baz danych, przypisz użytkownika do Loginmanager ról i dbmanager w bazie danych master.

Aby uzyskać więcej informacji na temat tych dodatkowych ról i uwierzytelniania w usłudze SQL Database, zobacz Zarządzanie bazami danych i identyfikatorami logowania w usłudze Azure SQL Database. Aby uzyskać więcej informacji na temat nawiązywania połączenia przy użyciu identyfikatora Entra firmy Microsoft, zobacz Połączenie przy użyciu uwierzytelniania firmy Microsoft Entra.

Autoryzacja

Autoryzacja odnosi się do tego, co można zrobić w bazie danych po uwierzytelnieniu i nawiązaniu połączenia. Uprawnienia autoryzacji są określane przez członkostwo w rolach i uprawnienia. Zalecanym najlepszym rozwiązaniem jest przyznanie użytkownikom minimalnych niezbędnych uprawnień. Do zarządzania rolami można użyć następujących procedur składowanych:

EXEC sp_addrolemember 'db_datareader', 'ApplicationUser'; -- allows ApplicationUser to read data
EXEC sp_addrolemember 'db_datawriter', 'ApplicationUser'; -- allows ApplicationUser to write data

Konto administratora serwera, za pomocą którego nawiązujesz połączenie, jest członkiem roli db_owner, która ma uprawnienia do wykonywania wszystkich funkcji w bazie danych. Zapisz to konto, aby móc wdrażać uaktualnienia schematów i wykonywać inne operacje zarządzania. Używaj konta „ApplicationUser” z bardziej ograniczonymi uprawnienia do nawiązywania połączenia pomiędzy swoją aplikacją a bazą danych aplikacji, korzystając z minimalnych uprawnień wymaganych przez aplikację.

Istnieją sposoby dalszego ograniczania możliwości użytkownika w bazie danych:

  • Szczegółowe uprawnienia umożliwiają kontrolowanie operacji, które można wykonywać w poszczególnych kolumnach, tabelach, widokach, schematach, procedurach i innych obiektach w bazie danych. Użyj szczegółowych uprawnień, aby mieć największą kontrolę i przyznać minimalne uprawnienia niezbędne.
  • Role bazy danych inne niż db_datareader i db_datawriter mogą służyć do tworzenia bardziej zaawansowanych kont użytkowników aplikacji lub mniej zaawansowanych kont zarządzania. Wbudowane stałe role bazy danych zapewniają łatwy sposób udzielania uprawnień, ale może spowodować przyznanie większej liczby uprawnień, niż jest to konieczne.
  • Procedury składowane umożliwiają ograniczenie czynności wykonywanych w bazie danych.

Poniższy przykład zapewnia dostęp do odczytu do schematu zdefiniowanego przez użytkownika.

--CREATE SCHEMA Test
GRANT SELECT ON SCHEMA::Test to ApplicationUser

Zarządzanie bazami danych i serwerami w witrynie Azure Portal lub korzystanie z interfejsu API usługi Azure Resource Manager jest kontrolowane przez przypisania ról konta użytkownika portalu. Aby uzyskać więcej informacji, zobacz przypisywanie ról Azure za pomocą portalu Azure.

Szyfrowanie

Funkcja Transparent Data Encryption (TDE) pomaga chronić przed zagrożeniem złośliwym działaniem przez szyfrowanie i odszyfrowywanie danych magazynowanych. Podczas szyfrowania bazy danych skojarzone kopie zapasowe i pliki dziennika transakcji są szyfrowane bez konieczności wprowadzania żadnych zmian w aplikacjach. Technologia TDE szyfruje magazyn całej bazy danych przy użyciu klucza symetrycznego nazywanego kluczem szyfrowania bazy danych.

W usłudze SQL Database klucz szyfrowania bazy danych jest chroniony przez wbudowany certyfikat serwera. Wbudowany certyfikat serwera jest unikatowy dla każdego serwera. Firma Microsoft automatycznie wymienia te certyfikaty co najmniej co 90 dni. Używany algorytm szyfrowania to AES-256. Aby uzyskać ogólny opis funkcji TDE, zobacz Transparent Data Encryption.

Bazę danych można zaszyfrować przy użyciu witryny Azure Portal lub języka T-SQL.

Następne kroki

Aby uzyskać szczegółowe informacje i przykłady dotyczące nawiązywania połączenia z magazynem przy użyciu różnych protokołów, zobacz Połączenie do dedykowanej puli SQL (dawniej SQL DW).