Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób konfigurowania i używania bramy do bezpiecznego dostępu pulpitu zdalnego do maszyn wirtualnych laboratorium w usłudze Azure DevTest Labs. Użycie bramy zwiększa bezpieczeństwo, ponieważ nie uwidaczniasz portów protokołu RDP (Remote Desktop Protocol) maszyn wirtualnych z Internetem. To rozwiązanie bramy usług pulpitu zdalnego obsługuje również uwierzytelnianie tokenów.
Usługa DevTest Labs zapewnia centralne miejsce dla użytkowników laboratorium w celu wyświetlania maszyn wirtualnych i łączenia się z nimi. Wybranie opcji Połącz>Połącz za pomocą RDP na stronie Przegląd maszyny wirtualnej tworzy specyficzny dla maszyny plik RDP, który użytkownicy mogą otworzyć, aby połączyć się z VM.
W przypadku bramy usług pulpitu zdalnego użytkownicy laboratorium łączą się ze swoimi maszynami wirtualnymi za pośrednictwem maszyny bramy. Użytkownicy uwierzytelniają się bezpośrednio na bramie sieciowej i mogą używać poświadczeń dostarczonych przez firmę na komputerach dołączonych do domeny. Uwierzytelnianie tokenem zapewnia dodatkową warstwę zabezpieczeń.
Innym sposobem bezpiecznego uzyskiwania dostępu do maszyn wirtualnych laboratorium bez uwidaczniania portów lub adresów IP jest przeglądarka z usługą Azure Bastion. Aby uzyskać więcej informacji, zobacz Włączanie połączenia przeglądarki z maszynami wirtualnymi usługi DevTest Labs za pomocą usługi Azure Bastion.
Architektura
Na poniższym diagramie pokazano, jak brama usług pulpitu zdalnego stosuje uwierzytelnianie tokenu i łączy się z maszynami wirtualnymi usługi DevTest Labs.
Wybranie Połącz>RDP z maszyny wirtualnej w laboratorium wywołuje polecenie REST getRdpFileContents:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/getRdpFileContentsPo skonfigurowaniu laboratorium z bramą,
getRdpFileContentsakcja wywołujehttps://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}w celu zażądania tokenu uwierzytelniania.-
{gateway-hostname}, lub{lb-uri}dla modułu równoważenia obciążenia, to nazwa hosta bramy określona na stronie Ustawienia laboratorium dla laboratorium. -
{lab-machine-name}to nazwa maszyny wirtualnej do nawiązania połączenia. -
{port-number}jest portem używanym dla połączenia. Zazwyczaj ten port to 3389, ale jeśli maszyna wirtualna laboratorium używa udostępnionego adresu IP, numer portu jest inny.
-
Brama usług pulpitu zdalnego używa
https://{function-app-uri}/api/host/{lab-machine-name}/port/{port-number}metody do odroczenia wywołania do aplikacji funkcji usługi Azure Functions.Uwaga
Nagłówek żądania automatycznie zawiera klucz funkcji, który jest pobierany z magazynu kluczy laboratorium. Nazwa sekretu klucza funkcyjnego to sekret tokenu bramy określony na stronie ustawień laboratorium.
Funkcja platformy Azure generuje i zwraca token na potrzeby uwierzytelniania opartego na certyfikatach na maszynie bramy.
Akcja
getRdpFileContentszwraca pełny plik RDP, w tym token uwierzytelniania.
Gdy program połączenia RDP otworzy plik RDP, brama usług pulpitu zdalnego uwierzytelnia token i przekazuje połączenie do maszyny wirtualnej laboratorium.
Uwaga
Nie wszystkie programy połączeń RDP obsługują uwierzytelnianie tokenu.
Ważne
Funkcja platformy Azure ustawia datę wygaśnięcia tokenu uwierzytelniania. Użytkownik musi nawiązać połączenie z maszyną wirtualną przed wygaśnięciem tokenu.
Wymagania dotyczące konfiguracji
Istnieją pewne wymagania konfiguracyjne dotyczące włączania maszyn bramy sieciowej, usługi Azure Functions i sieci do współpracy z dostępem RDP w usłudze DevTest Labs oraz uwierzytelnianiem za pomocą tokenów.
Wymagania dotyczące maszyny bramy
Maszyna bramy musi mieć następującą konfigurację:
Certyfikat TLS/SSL do obsługi ruchu HTTPS. Certyfikat musi być zgodny z w pełni kwalifikowaną nazwą domeny (FQDN) maszyny bramy, jeśli istnieje tylko jedna maszyna lub moduł równoważenia obciążenia farmy bramy. Certyfikaty TLS/SSL z symbolami wieloznacznymi nie działają.
Certyfikat podpisywania. Certyfikat podpisywania można utworzyć przy użyciu skryptu Create-SigningCertificate.ps1 programu PowerShell.
Podłączany moduł uwierzytelniania obsługujący uwierzytelnianie tokenów. Przykładem jest RDGatewayFedAuth.msi, który jest dostarczany z obrazami programu System Center Virtual Machine Manager (VMM ).
Możliwość obsługi żądań do
https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}.
Moduł żądania routingu aplikacji dla usług Internet Information Services (IIS) umożliwia przekierowywanie https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} żądań do funkcyjnej aplikacji.
Wymagania dotyczące usługi Azure Functions
Aplikacja funkcji usługi Azure Functions obsługuje żądania w https://{function-app-uri}/app/host/{lab-machine-name}/port/{port-number} formacie i tworzy i zwraca token uwierzytelniania na podstawie certyfikatu podpisywania maszyny bramy. To {function-app-uri} identyfikator URI używany do uzyskiwania dostępu do funkcji.
Nagłówek żądania musi przekazać klucz funkcji, który jest pobierany z magazynu kluczy laboratorium.
Aby zapoznać się z przykładową funkcją, zobacz CreateToken.cs.
Wymagania dotyczące sieci
Dns dla nazwy FQDN skojarzonej z certyfikatem TLS/SSL maszyny bramy musi kierować ruch do maszyny bramy lub do modułu równoważenia obciążenia farmy maszyn bramy.
Jeśli maszyna wirtualna laboratorium używa prywatnego adresu IP, musi istnieć ścieżka sieciowa z maszyny bramy do maszyny laboratoryjnej. Obie maszyny muszą współużytkować tę samą sieć wirtualną lub używać równorzędnych sieci wirtualnych.
Tworzenie bramy usług pulpitu zdalnego
Repozytorium GitHub usługi Azure DevTest Labs zawiera szablony usługi Azure Resource Manager (ARM), które ułatwiają konfigurowanie uwierzytelniania tokenów usługi DevTest Labs i zasobów bramy usług pulpitu zdalnego. Istnieją szablony tworzenia maszyny bramy, ustawień laboratorium i aplikacji funkcji.
Uwaga
Użycie przykładowych szablonów oznacza zgodę na postanowienia licencyjne Bramę Pulpitu Zdalnego.
Wykonaj następujące kroki, aby skonfigurować przykładową farmę bram pulpitu zdalnego.
Utwórz certyfikat podpisywania.
Uruchom polecenie Create-SigningCertificate.ps1. Zarejestruj odcisk palca, hasło i kodowanie Base64 nowego certyfikatu do późniejszego użycia.
Uzyskiwanie certyfikatu TLS/SSL. Nazwa FQDN skojarzona z certyfikatem TLS/SSL musi być dla domeny, którą kontrolujesz.
Zarejestruj hasło, odcisk palca i kodowanie Base64 dla certyfikatu TLS/SSL do późniejszego użycia.
Aby uzyskać odcisk palca, użyj następujących poleceń programu PowerShell:
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate; $cer.Import('path-to-certificate'); $hash = $cer.GetCertHashString()Aby uzyskać kodowanie Base64, użyj następującego polecenia programu PowerShell:
[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('path-to-certificate'))
Pobierz wszystkie pliki z pliku https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway. Skopiuj wszystkie pliki i RDGatewayFedAuth.msi do kontenera obiektów blob na koncie magazynu.
Otwórz azuredeploy.json z https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway, i wypełnij następujące parametry:
Parametr Wymagane? opis adminUsernameWymagania Nazwa użytkownika administratora dla maszyn bramy. adminPasswordWymagania Hasło dla konta administratora dla maszyn bramy. instanceCountLiczba maszyn bramy do utworzenia. alwaysOnCzy zachować utworzoną aplikację usługi Azure Functions. Utrzymywanie włączonej aplikacji pozwala uniknąć opóźnień, gdy użytkownicy po raz pierwszy próbują nawiązać połączenie z maszynami wirtualnymi laboratorium, ale ma to wpływ na koszty. tokenLifetimeDługość czasu w formacie HH:MM:SS, przez który utworzony token jest ważny. sslCertificateWymagania Kodowanie Base64 certyfikatu TLS/SSL dla maszyny bramy. sslCertificatePasswordWymagania Hasło certyfikatu TLS/SSL dla maszyny bramy. sslCertificateThumbprintWymagania Odcisk palca certyfikatu do identyfikacji w lokalnym magazynie certyfikatów certyfikatu podpisywania. signCertificateWymagania Kodowanie Base64 dla certyfikatu podpisywania dla maszyny bramy. signCertificatePasswordWymagania Hasło certyfikatu podpisywania dla maszyny bramy. signCertificateThumbprintWymagania Odcisk palca certyfikatu do identyfikacji w lokalnym magazynie certyfikatów certyfikatu podpisywania. _artifactsLocationWymagania Lokalizacja identyfikatora URI do znalezienia artefaktów, których wymaga ten szablon. Ta wartość musi być w pełni kwalifikowanym identyfikatorem URI, a nie ścieżką względną. Artefakty obejmują szablony, skrypty PowerShell oraz moduł wtyczki uwierzytelniania dla bramy usług pulpitu zdalnego, który powinien mieć nazwę RDGatewayFedAuth.msi i który obsługuje uwierzytelnianie tokenami. _artifactsLocationSasTokenWymagania Token sygnatury dostępu współdzielonego (SAS) umożliwiający dostęp do artefaktów, jeśli _artifactsLocationjest to konto usługi Azure Storage.Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby wdrożyć azuredeploy.json:
az deployment group create --resource-group {resource-group} --template-file azuredeploy.json --parameters @azuredeploy.parameters.json -–parameters _artifactsLocation="{storage-account-endpoint}/{container-name}" -–parameters _artifactsLocationSasToken = "?{sas-token}"Pobierz element ,
{storage-account-endpoint}uruchamiając polecenieaz storage account show --name {storage-account-name} --query primaryEndpoints.blob.Pobierz element ,
{sas-token}uruchamiając polecenieaz storage container generate-sas --name {container-name} --account-name {storage-account-name} --https-only –permissions drlw –expiry {utc-expiration-date}.-
{storage-account-name}to nazwa konta magazynu zawierającego przekazane pliki. -
{container-name}to kontener w kontenerze{storage-account-name}, w którym przechowywane są przekazane pliki. -
{utc-expiration-date}to data w formacie UTC, gdy token SAS wygaśnie i nie może być już używany do uzyskiwania dostępu do konta magazynu.
-
Zapisz wartości dla i
gatewayFQDNgatewayIPz danych wyjściowych wdrożenia szablonu. Zapisz również wartość klucza dla nowo utworzonej funkcji, którą można znaleźć na karcie Ustawienia aplikacji funkcji.Skonfiguruj system DNS tak, aby nazwa FQDN certyfikatu TLS/SSL była kierowana do
gatewayIPadresu IP.
Po utworzeniu farmy bramy usług pulpitu zdalnego i zaktualizowaniu systemu DNS skonfiguruj usługę DevTest Labs do korzystania z bramy.
Konfigurowanie laboratorium do korzystania z uwierzytelniania tokenów
Przed zaktualizowaniem ustawień laboratorium zapisz klucz funkcji tokenu uwierzytelniania w magazynie kluczy laboratorium. Wartość klucza funkcji można uzyskać na stronie Klucze funkcji w witrynie Azure Portal. Aby znaleźć identyfikator magazynu kluczy laboratorium, uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure:
az resource show --name {lab-name} --resource-type 'Microsoft.DevTestLab/labs' --resource-group {lab-resource-group-name} --query properties.vaultName
Aby dowiedzieć się, jak zapisać tajemnicę w Key Vault, zobacz Dodawanie tajemnicy do Key Vault. Zarejestruj nazwę wpisu tajnego do późniejszego użycia. Ta wartość nie jest kluczem funkcji, ale nazwą wpisu tajnego magazynu kluczy, który zawiera klucz funkcji.
Aby skonfigurować nazwę hosta bramy oraz tajny klucz tokenu bramy w celu używania uwierzytelniania za pomocą tokenu z urządzeniem bramy lub urządzeniami bramowymi, wykonaj następujące kroki:
Na stronie Przegląd laboratorium w okienku po lewej stronie wybierz pozycję Konfiguracja i zasady.
Na stronie Konfiguracja i zasady w sekcji Ustawienia w okienku po lewej stronie wybierz pozycję Ustawienia laboratorium.
W sekcji Podłączanie pulpitu zdalnego :
W polu Nazwa hosta bramy wprowadź pełną nazwę domeny (FQDN) lub adres IP maszyny lub farmy usług zdalnego pulpitu. Ta wartość musi być zgodna z nazwą FQDN certyfikatu TLS/SSL używanego na maszynach bramy.
W polu Klucz tajny tokenu gateway wprowadź nazwę sekretu, którą zapisałeś wcześniej. Ta wartość nie jest kluczem funkcji, ale nazwą wpisu tajnego magazynu kluczy, który zawiera klucz funkcji.
Wybierz pozycję Zapisz.
Uwaga
Wybranie opcji Zapisz oznacza, że zgadzasz się na postanowienia licencyjne bramy Pulpitu zdalnego.
Po skonfigurowaniu bramy i laboratorium plik połączenia RDP utworzony, gdy użytkownik laboratorium wybierze pozycję Połącz , zawiera niezbędne informacje, aby nawiązać połączenie z bramą i użyć uwierzytelniania tokenu.
Automatyzowanie konfiguracji laboratorium
PowerShell: Set-DevTestLabGateway.ps1 to przykładowy skrypt programu PowerShell umożliwiający automatyczne konfigurowanie nazwy hosta bramy i ustawień klucza tajnego tokenu bramy .
ARM: użyj przykładowych szablonów usługi ARM bramy w repozytorium GitHub usługi Azure DevTest Labs, aby utworzyć lub zaktualizować laboratoria z nazwą hosta bramy i ustawieniami klucza tajnego tokenu bramy.
Konfigurowanie sieciowej grupy zabezpieczeń
Aby dodatkowo zabezpieczyć laboratorium, dodaj sieciową grupę zabezpieczeń do sieci wirtualnej używanej przez maszyny wirtualne laboratorium zgodnie z opisem w temacie Tworzenie, zmienianie lub usuwanie sieciowej grupy zabezpieczeń. Na przykład sieciowa grupa zabezpieczeń może zezwalać na ruch, który najpierw przechodzi przez bramę, aby uzyskać dostęp do maszyn wirtualnych laboratorium. Źródłem reguły jest adres IP maszyny bramy lub modułu równoważenia obciążenia dla farmy bramy.