Udostępnij za pośrednictwem


Najlepsze rozwiązania dotyczące zabezpieczeń replikacji

Dotyczy:programu SQL Server

Replikacja przenosi dane w środowiskach rozproszonych, od intranetów w jednej domenie po aplikacje, które uzyskują dostęp do danych między niezaufanymi domenami i za pośrednictwem Internetu. Ważne jest, aby zrozumieć najlepsze podejście do zabezpieczania połączeń replikacji w tych różnych okolicznościach.

Następujące informacje są istotne dla replikacji we wszystkich środowiskach:

  • Szyfruj połączenia między komputerami w topologii replikacji przy użyciu standardowej metody branżowej, takiej jak wirtualne sieci prywatne (VPN), Transport Layer Security (TLS), wcześniej znanej jako Secure Sockets Layer (SSL) lub IP Security (IPSEC). Aby uzyskać więcej informacji, zobacz Włączanie szyfrowanych połączeń z silnikiem bazy danych (SQL Server Configuration Manager). Aby uzyskać informacje na temat używania sieci VPN i protokołu TLS do replikowania danych przez Internet, zobacz Zabezpieczanie replikacji przez Internet.

    Jeśli używasz protokołu TLS do zabezpieczania połączeń między komputerami w topologii replikacji, określ wartość 1 lub 2 dla parametru -EncryptionLevel każdego agenta replikacji (zalecana jest wartość 2 ). Wartość 1 określa, że jest używane szyfrowanie, ale agent nie sprawdza, czy certyfikat serwera TLS/SSL jest podpisany przez zaufanego wystawcę; wartość 2 określa, że certyfikat jest weryfikowany. Parametry agenta można określić w profilach agentów i w wierszu polecenia. Aby uzyskać więcej informacji, zobacz:

  • Uruchom każdego agenta replikacji na innym koncie systemu Windows i użyj uwierzytelniania systemu Windows dla wszystkich połączeń agenta replikacji. Aby uzyskać więcej informacji na temat określania kont, zobacz Identity and access control for replication (Tożsamość i kontrola dostępu do replikacji).

  • Przyznaj tylko wymagane uprawnienia każdemu agentowi. Aby uzyskać więcej informacji, zobacz sekcję "Uprawnienia wymagane przez agentów" w temacie Model zabezpieczeń agenta replikacji.

  • Upewnij się, że wszystkie konta agenta scalania i agenta dystrybucji znajdują się na liście dostępu publikacji (PAL). Aby uzyskać więcej informacji, zobacz Zabezpieczanie wydawcy.

  • Przestrzegaj zasady najniższych uprawnień, dając kontom w PAL tylko te uprawnienia, które są im potrzebne do wykonywania zadań replikacji. Nie należy dodawać identyfikatorów logowania do żadnych stałych ról serwera, które nie są wymagane do replikacji.

  • Skonfiguruj udostępnienie migawek, aby zezwolić na dostęp tylko do odczytu przez wszystkich agentów scalania i agentów dystrybucji. W przypadku migawek dla publikacji z filtrami sparametryzowanymi upewnij się, że każdy folder jest skonfigurowany tak, aby zezwalał na dostęp tylko do odpowiednich kont agenta scalania.

  • Skonfiguruj udział migawek, aby zezwolić na dostęp do zapisu przez agenta migawek.

  • Jeśli używasz subskrypcji ściągania, użyj udziału sieciowego, a nie ścieżki lokalnej dla folderu migawki.

Jeśli topologia replikacji zawiera komputery, które nie znajdują się w tej samej domenie lub znajdują się w domenach, które nie mają relacji zaufania ze sobą, możesz użyć uwierzytelniania systemu Windows lub uwierzytelniania programu SQL Server dla połączeń wykonanych przez agentów (aby uzyskać więcej informacji o domenach, zobacz dokumentację systemu Windows). Najlepszym rozwiązaniem w zakresie zabezpieczeń jest użycie uwierzytelniania systemu Windows.

  • Aby użyć uwierzytelniania systemu Windows:

    • Dodaj lokalne konto systemu Windows (nie konto domeny) dla każdego agenta w odpowiednich węzłach (użyj tej samej nazwy i hasła w każdym węźle). Na przykład Agent Dystrybucji dla subskrypcji wysyłkowej działa na dystrybutorze i nawiązuje połączenia z dystrybutorem i subskrybentem. Konto systemu Windows dla agenta dystrybucji powinno zostać dodane do dystrybutora i subskrybenta.

    • Upewnij się, że dany agent (na przykład agent dystrybucji dla subskrypcji) działa na tym samym koncie na każdym komputerze.

  • Aby użyć uwierzytelniania programu SQL Server:

    • Dodaj konto programu SQL Server dla każdego agenta w odpowiednich węzłach (użyj tej samej nazwy konta i hasła w każdym węźle). Na przykład agent dystrybucji dla subskrypcji wypychanej działa u Dystrybutora i nawiązuje połączenia z Dystrybutorem i Subskrybentem. Konto programu SQL Server dla agenta dystrybucji powinno zostać dodane do dystrybutora i subskrybenta.

    • Upewnij się, że dany agent (na przykład agent dystrybucji dla subskrypcji) nawiązuje połączenia na tym samym koncie na każdym komputerze.

    • W sytuacjach wymagających uwierzytelniania programu SQL Server dostęp do udziałów migawek UNC jest często niedostępny (na przykład dostęp może zostać zablokowany przez zaporę). W takim przypadku można przenieść migawkę do subskrybentów za pośrednictwem protokołu transferu plików (FTP). Aby uzyskać więcej informacji, zobacz Przesyłanie migawków przez FTP.

Zwiększanie poziomu zabezpieczeń za pomocą klucza głównego bazy danych

W przypadku korzystania z uwierzytelniania programu SQL Server na potrzeby replikacji wpisy tajne podane podczas konfigurowania replikacji są przechowywane w programie SQL Server — w szczególności w bazie danych dystrybucji i, w przypadku subskrypcji ściągania, również w bazie danych subskrybentów.

Aby zwiększyć poziom zabezpieczeń replikacji, przed rozpoczęciem konfigurowania replikacji:

  • Utwórz klucz główny bazy danych (DMK) w bazie danych dystrybucji serwera, który hostuje dystrybutora.
  • W przypadku subskrypcji typu pull również utwórz klucz DMK w bazie danych subskrybentów.

Jeśli replikacja została utworzona przed kluczem DMK, najpierw utwórz klucz DMK, a następnie zaktualizuj tajne dane replikacji poprzez aktualizację haseł dla zadań replikacji. Zadanie można zaktualizować przy użyciu tego samego hasła lub użyć nowego hasła.

Aby zaktualizować tajne dane replikacji, skorzystaj z jednej z poniższych procedur, aby zaktualizować hasła dla zadań replikacji.

Skonfigurowanie replikacji transakcyjnej bez klucza DMK może spowodować wyświetlenie ostrzeżenia 14130 programu SQL Server:

  • Zarządzana Instancja SQL w Azure
  • SQL Server 2022 CU18 lub nowszy
  • SQL Server 2019 CU31 i nowsze