Udostępnij za pośrednictwem


Wdrażanie usługi Ochrona hosta dla programu SQL Server

Dotyczy: SQL Server 2019 (15.x) i nowszych – tylko system Windows

W tym artykule opisano sposób wdrażania usługi Ochrona hosta (HGS) jako usługi zaświadczania dla programu SQL Server. Przed rozpoczęciem zapoznaj się z artykułem Plan dotyczący zaświadczania usługi Host Guardian Service, aby poznać pełną listę wymagań wstępnych i wytycznych dotyczących architektury.

Notatka

Administrator usługi HGS jest odpowiedzialny za wykonanie wszystkich kroków opisanych w tym artykule. Zobacz Role i obowiązki podczas konfigurowania atestacji przy użyciu usługi HGS.

Krok 1. Konfigurowanie pierwszego komputera usługi HGS

Usługa Ochrona hosta (HGS) działa jako usługa klastrowana na co najmniej jednym komputerze. W tym kroku skonfigurujesz nowy klaster usługi HGS na pierwszym komputerze. Jeśli masz już klaster usługi HGS i dodasz do niego dodatkowe komputery w celu zapewnienia wysokiej dostępności, przejdź do Krok 2: Dodawanie kolejnych komputerów usługi HGS do klastra.

Przed rozpoczęciem upewnij się, że komputer, którego używasz, działa na systemie Windows Server 2019 lub nowszym, wersji Standard lub Datacenter, masz uprawnienia administratora lokalnego, a komputer nie jest jeszcze przyłączony do domeny Active Directory.

  1. Zaloguj się do pierwszego komputera usługi HGS jako administrator lokalny i otwórz konsolę programu Windows PowerShell z podwyższonym poziomem uprawnień. Uruchom następujące polecenie, aby zainstalować rolę usługi „Host Guardian Service”. Komputer zostanie automatycznie uruchomiony ponownie, aby zastosować zmiany.

    Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools -Restart
    
  2. Po ponownym uruchomieniu komputera HGS uruchom następujące polecenia w konsoli programu Windows PowerShell z podwyższonym poziomem uprawnień, aby zainstalować nowy las Active Directory.

    # Select the name for your new Active Directory root domain.
    # Make sure the name does not conflict with, and is not subordinate to, any existing domains on your network.
    $HGSDomainName = 'bastion.local'
    
    # Specify a Directory Services Restore Mode password that can be used to recover your domain in safe mode.
    # This password is not, and will not change, your admin account password.
    # Save this password somewhere safe and include it in your disaster recovery plan.
    $DSRMPassword = Read-Host -AsSecureString -Prompt "Directory Services Restore Mode Password"
    
    Install-HgsServer -HgsDomainName $HgsDomainName -SafeModeAdministratorPassword $DSRMPassword -Restart
    

    Komputer HGS uruchomi się ponownie, aby zakończyć konfigurowanie lasu usługi Active Directory. Przy następnym logowaniu się, Twoje konto administratora stanie się kontem administratora domeny. Zalecamy zapoznanie się z dokumentami Active Directory Domain Services Operations, aby uzyskać więcej informacji na temat zarządzania nowym lasem i zabezpieczania go.

  3. Następnie skonfigurujesz klaster usługi HGS i zainstalujesz usługę zaświadczania, uruchamiając następujące polecenie w konsoli programu Windows PowerShell z podwyższonym poziomem uprawnień:

    # Note: the name you provide here will be shared by all HGS nodes and used to point your SQL Server computers to the HGS cluster.
    # For example, if you provide "attsvc" here, a DNS record for "attsvc.yourdomain.com" will be created for every HGS computer.
    Initialize-HgsAttestation -HgsServiceName 'hgs'
    

Krok 2. Dodawanie kolejnych komputerów usługi HGS do klastra

Po skonfigurowaniu pierwszego komputera i klastra usługi HGS można dodać dodatkowe serwery HGS w celu zapewnienia wysokiej dostępności. Jeśli konfigurujesz tylko jeden serwer HGS (na przykład w środowisku deweloperskim/testowym), możesz przejść do kroku 3.

Podobnie jak w przypadku pierwszego komputera HGS, upewnij się, że komputer, który dołączasz do klastra, jest uruchomiony na systemie Windows Server 2019 lub nowszym — w wersji Standard lub Datacenter, posiadasz uprawnienia administratora lokalnego, a komputer nie jest jeszcze przyłączony do domeny Active Directory.

  1. Zaloguj się na komputerze jako administrator lokalny i otwórz konsolę programu Windows PowerShell z podwyższonym poziomem uprawnień. Uruchom następujące polecenie, aby zainstalować rolę Usługa Ochrony Hostów. Komputer zostanie automatycznie uruchomiony ponownie, aby zastosować zmiany.

    Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools -Restart
    
  2. Sprawdź konfigurację klienta DNS na komputerze, aby upewnić się, że może rozpoznać domenę HGS. Następujące polecenie powinno zwrócić adres IP serwera usługi HGS. Jeśli nie możesz rozpoznać domeny usługi HGS, może być konieczne zaktualizowanie informacji o serwerze DNS na karcie sieciowej, aby użyć serwera DNS usługi HGS do rozpoznawania nazw.

    # Change 'bastion.local' to the domain name you specified in Step 1.2
    nslookup bastion.local
    
    # If it fails, use sconfig.exe, option 8, to set the first HGS computer as your preferred DNS server.
    
  3. Po ponownym uruchomieniu komputera uruchom następujące polecenie w konsoli programu Windows PowerShell z podwyższonym poziomem uprawnień, aby dołączyć komputer do domeny usługi Active Directory utworzonej przez pierwszy serwer HGS. Aby uruchomić to polecenie, musisz posiadać poświadczenia administratora domeny dla domeny AD. Po zakończeniu działania polecenia komputer zostanie uruchomiony ponownie, a komputer stanie się kontrolerem domeny usługi Active Directory dla domeny usługi HGS.

    # Provide the fully qualified HGS domain name
    $HGSDomainName = 'bastion.local'
    
    # Provide a domain administrator's credential for the HGS domain
    $DomainAdminCred = Get-Credential
    
    # Specify a Directory Services Restore Mode password that can be used to recover your domain in safe mode.
    # This password is not, and will not change, your admin account password.
    # Save this password somewhere safe and include it in your disaster recovery plan.
    $DSRMPassword = Read-Host -AsSecureString -Prompt "Directory Services Restore Mode Password"
    
    Install-HgsServer -HgsDomainName $HgsDomainName -HgsDomainCredential $DomainAdminCred -SafeModeAdministratorPassword $DSRMPassword -Restart
    
  4. Zaloguj się przy użyciu poświadczeń administratora domeny po ponownym uruchomieniu komputera. Otwórz konsolę programu Windows PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenia, aby skonfigurować usługę zaświadczania. Ponieważ usługa zaświadczania obsługuje klaster, zreplikuje konfigurację z innych elementów członkowskich klastra. Zmiany wprowadzone w zasadach zaświadczania w dowolnym węźle usługi HGS będą stosowane do wszystkich innych węzłów.

    # Provide the IP address of an existing, initialized HGS server
    # If you are using separate networks for cluster and application traffic, choose an IP address on the cluster network.
    # You can find the IP address of your HGS server by signing in and running "ipconfig /all"
    Initialize-HgsAttestation -HgsServerIPAddress '172.16.10.20'
    
  5. Powtórz krok 2 dla każdego komputera, który chcesz dodać do klastra usługi HGS.

Krok 3: Skonfiguruj serwer przekazujący DNS dla klastra HGS

Usługa HGS uruchamia własny serwer DNS, który zawiera rekordy nazw potrzebne do rozpoznania usługi zaświadczania. Komputery programu SQL Server nie będą mogły rozpoznać tych rekordów do momentu skonfigurowania serwera DNS sieci do przekazywania żądań do serwerów DNS usługi HGS.

Proces konfigurowania usług przesyłania dalej DNS jest specyficzny dla dostawcy, dlatego zalecamy skontaktowanie się z administratorem sieci w celu uzyskania poprawnych wskazówek dotyczących określonej sieci.

Jeśli używasz roli serwera DNS systemu Windows Server dla sieci firmowej, administrator DNS może utworzyć warunkowy przesyłacz dalej do domeny HGS, aby tylko żądania domeny HGS były przekazywane. Jeśli na przykład serwery HGS używają nazwy domeny "bastion.local" i mają adresy IP 172.16.10.20, 172.16.10.21 i 172.16.10.22, można uruchomić następujące polecenie na firmowym serwerze DNS, aby skonfigurować usługę przesyłania dalej warunkowego:

# Tip: make sure to provide every HGS server's IP address
# If you use separate NICs for cluster and application traffic, use the application traffic NIC IP addresses here
Add-DnsServerConditionalForwarderZone -Name 'bastion.local' -ReplicationScope "Forest" -MasterServers "172.16.10.20", "172.16.10.21", "172.16.10.22"

Krok 4. Konfigurowanie usługi zaświadczania

Usługa HGS obsługuje dwa tryby zaświadczania: zaświadczanie modułu TPM na potrzeby weryfikacji kryptograficznych integralności i tożsamości każdego komputera z programem SQL Server i zaświadczanie klucza hosta w celu prostej weryfikacji tożsamości komputera z programem SQL Server. Jeśli nie wybrano jeszcze trybu zaświadczania, zapoznaj się z informacjami dotyczącymi zaświadczania w przewodniku planowania , aby uzyskać więcej informacji na temat gwarancji zabezpieczeń i przypadków użycia dla każdego trybu.

Kroki opisane w tej sekcji spowodują skonfigurowanie podstawowych zasad zaświadczania dla określonego trybu zaświadczania. Informacje specyficzne dla hosta zostaną zarejestrowane w kroku 4. Jeśli chcesz zmienić tryb zaświadczania w przyszłości, powtórz krok 3 i 4 przy użyciu żądanego trybu zaświadczania.

Przełącz na atestację TPM

Aby skonfigurować atestację modułu TPM w HGS, będziesz potrzebować komputera z dostępem do Internetu oraz co najmniej jednego komputera z modułem TPM 2.0 rev 1.16.

Aby skonfigurować usługę HGS do korzystania z trybu TPM, otwórz konsolę programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie:

Set-HgsServer -TrustTpm

Wszystkie komputery HGS w twoim klastrze będą teraz używać trybu TPM, gdy komputer SQL Server próbuje przeprowadzić atestację.

Przed zarejestrowaniem informacji dotyczących TPM z komputerów SQL Server za pomocą usługi HGS należy zainstalować główne certyfikaty klucza poręczenia (EK) od dostawców TPM. Każdy fizyczny moduł TPM jest skonfigurowany w fabryce z unikatowym kluczem poręczenia, któremu towarzyszy certyfikat klucza poręczenia, który identyfikuje producenta. Ten certyfikat gwarantuje, że moduł TPM jest oryginalny. Usługa HGS weryfikuje certyfikat klucza poręczenia podczas rejestrowania nowego modułu TPM w usłudze HGS, porównując łańcuch certyfikatów z listą zaufanych certyfikatów głównych.

Firma Microsoft publikuje listę znanych dobrych głównych certyfikatów dostawców TPM, które można zaimportować do magazynu zaufanych głównych certyfikatów TPM usługi HGS. Jeśli komputery programu SQL Server są zwirtualizowane, skontaktuj się z dostawcą usług w chmurze lub dostawcą platformy wirtualizacji, aby uzyskać informacje na temat uzyskiwania łańcucha certyfikatów dla klucza poręczenia wirtualnego modułu TPM.

Aby pobrać pakiet zaufanych certyfikatów głównych modułu TPM firmy Microsoft dla fizycznych modułów TPM, wykonaj następujące kroki:

  1. Na komputerze z dostępem do Internetu pobierz najnowszy pakiet certyfikatów głównych modułu TPM z https://go.microsoft.com/fwlink/?linkid=2097925

  2. Sprawdź podpis pliku cab, aby upewnić się, że jest on autentyczny.

    # Note: replace the path below with the correct one to the file you downloaded in step 1
    Get-AuthenticodeSignature ".\TrustedTpm.cab"
    

    Ostrzeżenie

    Nie kontynuuj, jeśli podpis jest nieprawidłowy i skontaktuj się z pomocą techniczną firmy Microsoft, aby uzyskać pomoc.

  3. Rozwiń plik CAB do nowego katalogu.

    mkdir .\TrustedTpmCertificates
    expand.exe -F:* ".\TrustedTpm.cab" ".\TrustedTpmCertificates"
    
  4. W nowym katalogu zobaczysz katalogi dla każdego dostawcy modułu TPM. Możesz usunąć katalogi dostawców, których nie używasz.

  5. Skopiuj cały katalog "TrustedTpmCertificates" do serwera HGS.

  6. Otwórz konsolę programu PowerShell z podwyższonym poziomem uprawnień na serwerze usługi HGS i uruchom następujące polecenie, aby zaimportować wszystkie certyfikaty główne i pośrednie modułu TPM:

    # Note: replace the path below with the correct location of the TrustedTpmCertificates folder on your HGS computer
    cd "C:\scratch\TrustedTpmCertificates"
    .\setup.cmd
    
  7. Powtórz kroki 5 i 6 dla każdego komputera HGS.

Jeśli uzyskano certyfikaty pośredniego (Intermediate) i głównego (Root) urzędu certyfikacji od producenta OEM, dostawcy usług w chmurze lub dostawcy platformy wirtualizacji, możesz bezpośrednio zaimportować certyfikaty do odpowiedniego magazynu certyfikatów lokalnego komputera: TrustedHgs_RootCA lub TrustedHgs_IntermediateCA. Na przykład w programie PowerShell:

# Imports MyCustomTpmVendor_Root.cer to the local machine's "TrustedHgs_RootCA" store
Import-Certificate -FilePath ".\MyCustomTpmVendor_Root.cer" -CertStoreLocation "Cert:\LocalMachine\TrustedHgs_RootCA"

Przełącz na uwierzytelnianie klucza hosta

Aby użyć zaświadczania klucza hosta, uruchom następujące polecenie na serwerze HGS w konsoli programu PowerShell z podwyższonym poziomem uprawnień:

Set-HgsServer -TrustHostKey

Wszystkie komputery HGS w klastrze będą teraz używać trybu klucza hosta, gdy komputer SQL Server próbuje się uwierzytelnić.

Krok 5. Konfigurowanie powiązania HTTPS usługi HGS

W instalacji domyślnej usługa HGS uwidacznia tylko powiązanie HTTP (port 80). Można skonfigurować powiązanie HTTPS (port 443) w celu szyfrowania całej komunikacji między komputerami z programem SQL Server i usługą HGS. Zaleca się, aby wszystkie wystąpienia produkcyjne usługi HGS używały powiązania HTTPS.

  1. Uzyskaj certyfikat TLS od urzędu certyfikacji przy użyciu w pełni kwalifikowanej nazwy usługi HGS z kroku 1.3 jako nazwy podmiotu. Jeśli nie znasz nazwy usługi, możesz ją znaleźć, uruchamiając Get-HgsServer na dowolnym komputerze usługi HGS. Możesz dodać alternatywne nazwy DNS do listy dodatkowych nazw DNS podmiotu, jeśli serwery SQL Server używają innej nazwy DNS, aby uzyskać dostęp do klastra usługi HGS (na przykład, jeśli usługa HGS znajduje się za modułem równoważenia obciążenia sieciowego, który ma inny adres).

  2. Na komputerze usługi HGS użyj Set-HgsServer, aby włączyć powiązanie HTTPS i określić certyfikat TLS uzyskany w poprzednim kroku. Jeśli certyfikat jest już zainstalowany na komputerze w lokalnym magazynie certyfikatów, użyj następującego polecenia, aby zarejestrować go w usłudze HGS:

    # Note: you'll need to know the thumbprint for your certificate to configure HGS this way
    Set-HgsServer -Http -Https -HttpsCertificateThumbprint "54A043386555EB5118DB367CFE38776F82F4A181"
    

    Jeśli certyfikat został wyeksportowany (z kluczem prywatnym) do pliku PFX chronionego hasłem, możesz zarejestrować go w usłudze HGS, uruchamiając następujące polecenie:

    $PFXPassword = Read-Host -AsSecureString -Prompt "PFX Password"
    Set-HgsServer -Http -Https -HttpsCertificatePath "C:\path\to\hgs_tls.pfx" -HttpsCertificatePassword $PFXPassword
    
  3. Powtórz kroki 1 i 2 dla każdego komputera HGS w klastrze. Certyfikaty TLS nie są automatycznie replikowane między węzłami usługi HGS. Ponadto każdy komputer usługi HGS może mieć własny unikatowy certyfikat TLS, o ile temat jest zgodny z nazwą usługi HGS.

Krok 6. Określanie i udostępnianie adresu URL zaświadczania usługi HGS

Jako administrator usługi HGS musisz udostępnić adres URL zaświadczania usługi HGS zarówno administratorom komputerów programu SQL Server, jak i administratorom aplikacji w organizacji. Administratorzy komputerów z programem SQL Server będą potrzebować adresu URL zaświadczania, aby sprawdzić, czy komputery z programem SQL Server mogą potwierdzić usługę HGS. Administratorzy aplikacji będą potrzebować adresu URL zaświadczania, aby skonfigurować sposób łączenia aplikacji z programem SQL Server.

Aby określić adres URL zaświadczania, uruchom następujące polecenie cmdlet.

Get-HGSServer

Dane wyjściowe polecenia będą wyglądać podobnie do poniższych:

Name                           Value                                                                         
----                           -----                                                                         
AttestationOperationMode       HostKey                                                                       
AttestationUrl                 {http://hgs.bastion.local/Attestation}                                        
KeyProtectionUrl               {}         

Adres URL zaświadczania dla usługi HGS jest wartością właściwości AttestationUrl.

Następne kroki