Sdílet prostřednictvím


Konfigurace a použití brány vzdálené plochy v Azure DevTest Labs

Tento článek popisuje, jak nastavit a používat bránu pro zabezpečený přístup ke vzdálené ploše k virtuálním počítačům testovacího prostředí v Azure DevTest Labs. Použití brány zlepšuje zabezpečení, protože nezpřístupňujete porty protokolu RDP (Remote Desktop Protocol) virtuálních počítačů na internetu. Toto řešení brány vzdálené plochy podporuje také ověřování tokenů.

DevTest Labs poskytuje centrální místo pro uživatele testovacího prostředí, kde si můžou prohlížet a připojovat se ke svým virtuálním počítačům. Výběrem možnosti Připojit RDP> na stránce Přehled testovacího virtuálního počítače se vytvoří soubor RDP specifický pro počítač a uživatelé můžou soubor otevřít pro připojení k virtuálnímu počítači.

S bránou vzdálené plochy se uživatelé testovacího prostředí připojují ke svým virtuálním počítačům prostřednictvím počítače brány. Uživatelé se ověřují přímo na počítači brány a můžou na počítačích připojených k doméně používat přihlašovací údaje zadané společností. Ověřování tokenů poskytuje další vrstvu zabezpečení.

Dalším způsobem, jak bezpečně přistupovat k virtuálním počítačům testovacího prostředí bez vystavení portů nebo IP adres, je prostřednictvím prohlížeče se službou Azure Bastion. Další informace najdete v tématu Povolení připojení prohlížeče k virtuálním počítačům DevTest Labs pomocí služby Azure Bastion.

Architektura

Následující diagram ukazuje, jak brána vzdálené plochy používá ověřování tokenů a připojuje se k virtuálním počítačům DevTest Labs.

Diagram znázorňující architekturu brány vzdálené plochy

  1. Výběrem možnosti Připojit>protokol RDP z testovacího virtuálního počítače vyvoláte příkaz getRdpFileContents REST:

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/getRdpFileContents
    
  2. Když je v testovacím prostředí nakonfigurovaná brána, getRdpFileContents akce vyvolá https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} požadavek na ověřovací token.

    • {gateway-hostname}nebo {lb-uri} pro nástroj pro vyrovnávání zatížení je název hostitele brány zadaný na stránce nastavení testovacího prostředí pro testovací prostředí.
    • {lab-machine-name} je název virtuálního počítače, ke kterému se chcete připojit.
    • {port-number} je port, který se má použít pro připojení. Tento port je obvykle 3389, ale pokud testovací virtuální počítač používá sdílenou IP adresu, číslo portu se liší.
  3. Brána vzdálené plochy používá https://{function-app-uri}/api/host/{lab-machine-name}/port/{port-number} k odvození volání do aplikace funkcí Azure Functions.

    Poznámka:

    Hlavička požadavku automaticky obsahuje klíč funkce, který získá z trezoru klíčů testovacího prostředí. Název tajného klíče funkce je tajný klíč tokenu brány na stránce nastavení testovacího prostředí.

  4. Funkce Azure vygeneruje a vrací token pro ověřování na základě certifikátu na počítači brány.

  5. Akce getRdpFileContents vrátí úplný soubor RDP včetně ověřovacího tokenu.

Když program připojení RDP otevře soubor RDP, brána vzdálené plochy ověří token a připojení předá virtuálnímu počítači testovacího prostředí.

Poznámka:

Ne všechny programy připojení RDP podporují ověřování tokenů.

Důležité

Funkce Azure nastaví datum vypršení platnosti ověřovacího tokenu. Uživatel se musí připojit k virtuálnímu počítači před vypršením platnosti tokenu.

Požadavky na konfiguraci

Existují některé požadavky na konfiguraci pro počítače brány, Azure Functions a sítě pro práci s přístupem a ověřováním tokenů RDP devTest Labs:

Požadavky na počítač brány

Počítač brány musí mít následující konfiguraci:

  • Certifikát TLS/SSL pro zpracování provozu HTTPS. Certifikát musí odpovídat plně kvalifikovanému názvu domény (FQDN) počítače brány, pokud existuje jenom jeden počítač nebo nástroj pro vyrovnávání zatížení farmy brány. Certifikáty TLS/SSL se zástupnými kartami nefungují.

  • Podpisový certifikát. Podpisový certifikát můžete vytvořit pomocí skriptu PowerShellu Create-SigningCertificate.ps1 .

  • Modul pluggable authentication , který podporuje ověřování tokenů. Jedním z příkladů je RDGatewayFedAuth.msi, která se dodává s imagemi nástroje System Center Virtual Machine Manager (VMM ).

  • Schopnost zpracovávat požadavky na https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}.

K přesměrování https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} požadavků na aplikaci funkcí můžete použít modul Žádosti o směrování aplikace pro internetový informační server (IIS).

Požadavky služby Azure Functions

Aplikace funkcí Azure Functions zpracovává požadavky ve https://{function-app-uri}/app/host/{lab-machine-name}/port/{port-number} formátu a vytváří a vrací ověřovací token na základě podpisového certifikátu počítače brány. Jedná se {function-app-uri} o identifikátor URI, který se používá pro přístup k funkci.

Hlavička požadavku musí předat klíč funkce, který získá z trezoru klíčů testovacího prostředí.

Ukázkovou funkci najdete v tématu CreateToken.cs.

Síťové požadavky

  • DNS pro plně kvalifikovaný název domény přidružený k certifikátu TLS/SSL počítače brány musí směrovat provoz do počítače brány nebo do nástroje pro vyrovnávání zatížení farmy počítačů brány.

  • Pokud virtuální počítač testovacího prostředí používá privátní IP adresu, musí existovat síťová cesta z počítače brány k počítači testovacího prostředí. Oba počítače musí buď sdílet stejnou virtuální síť, nebo používat partnerské virtuální sítě.

Vytvoření brány vzdálené plochy

Úložiště GitHub Azure DevTest Labs obsahuje šablony Azure Resource Manageru (ARM), které pomáhají nastavit ověřování tokenů DevTest Labs a prostředky brány vzdálené plochy. Existují šablony pro vytváření počítačů brány, nastavení testovacího prostředí a aplikaci funkcí.

Poznámka:

Použitím ukázkových šablon vyjadřujete souhlas s licenčními podmínkami služby Brána vzdálené plochy.

Postupujte podle těchto kroků a nastavte ukázkovou farmu brány vzdálené plochy.

  1. Vytvořte podpisový certifikát.

    Spusťte create-SigningCertificate.ps1. Poznamenejte si kryptografický otisk, heslo a kódování Base64 vytvořeného certifikátu pro pozdější použití.

  2. Získejte certifikát TLS/SSL. Plně kvalifikovaný název domény přidružený k certifikátu TLS/SSL musí být určený pro doménu, kterou řídíte.

  3. Zaznamenejte si heslo, kryptografický otisk a kódování Base64 pro certifikát TLS/SSL, které bude možné použít později.

    • K získání kryptografického otisku použijte následující příkazy PowerShellu:

      $cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate;
      $cer.Import('path-to-certificate');
      $hash = $cer.GetCertHashString()
      
    • Pokud chcete získat kódování Base64, použijte následující příkaz PowerShellu:

      [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('path-to-certificate'))
      
  4. Stáhnout všechny soubory z https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway. Zkopírujte všechny soubory a RDGatewayFedAuth.msi do kontejneru objektů blob v účtu úložiště.

  5. Otevřete azuredeploy.json z https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gatewaya vyplňte následující parametry:

    Parametr Požadováno Popis
    adminUsername Povinní účastníci Uživatelské jméno správce pro počítače brány
    adminPassword Povinní účastníci Heslo pro účet správce pro počítače brány.
    instanceCount Počet počítačů brány, které se mají vytvořit.
    alwaysOn Bez ohledu na to, jestli se vytvořená aplikace Azure Functions zahřeje (zapnutá), nebo ne. Když se uživatelé poprvé pokusí připojit ke svým testovacím virtuálním počítačům, zabráníte tomu, aby se aplikace zpožďovala, ale má to vliv na náklady.
    tokenLifetime Délka času ve formátu HH:MM:SS, který je vytvořený token platný.
    sslCertificate Povinní účastníci Kódování Base64 certifikátu TLS/SSL pro počítač brány.
    sslCertificatePassword Povinní účastníci Heslo certifikátu TLS/SSL pro počítač brány.
    sslCertificateThumbprint Povinní účastníci Kryptografický otisk certifikátu pro identifikaci v místním úložišti certifikátů podpisového certifikátu.
    signCertificate Povinní účastníci Kódování Base64 pro podpisový certifikát pro počítač brány.
    signCertificatePassword Povinní účastníci Heslo pro podpisový certifikát pro počítač brány.
    signCertificateThumbprint Povinní účastníci Kryptografický otisk certifikátu pro identifikaci v místním úložišti certifikátů podpisového certifikátu.
    _artifactsLocation Povinní účastníci Umístění identifikátoru URI pro vyhledání artefaktů, které tato šablona vyžaduje. Tato hodnota musí být plně kvalifikovaný identifikátor URI, nikoli relativní cesta. Artefakty zahrnují další šablony, skripty PowerShellu a modul pluggable pro bránu vzdálené plochy s názvem RDGatewayFedAuth.msi , který podporuje ověřování tokenů.
    _artifactsLocationSasToken Povinní účastníci Token sdíleného přístupového podpisu (SAS) pro přístup k artefaktům, pokud se jedná _artifactsLocation o účet úložiště Azure.
  6. Spuštěním následujícího příkazu Azure CLI nasaďte 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}"
    
    • Spuštěním {storage-account-endpoint} az storage account show --name {storage-account-name} --query primaryEndpoints.blobpříkazu .

    • Spuštěním {sas-token} az storage container generate-sas --name {container-name} --account-name {storage-account-name} --https-only –permissions drlw –expiry {utc-expiration-date}příkazu .

      • {storage-account-name} je název účtu úložiště, který obsahuje soubory, které jste nahráli.
      • {container-name} je kontejner v kontejneru {storage-account-name} obsahující soubory, které jste nahráli.
      • {utc-expiration-date} je datum ve standardu UTC, kdy vyprší platnost tokenu SAS a už se nedá použít pro přístup k účtu úložiště.
  7. Zaznamenejte hodnoty pro gatewayFQDN a gatewayIP z výstupu nasazení šablony. Uložte také hodnotu klíče pro nově vytvořenou funkci, kterou najdete na kartě Nastavení aplikace funkcí.

  8. Nakonfigurujte DNS tak, aby plně kvalifikovaný název domény certifikátu TLS/SSL směrovali na gatewayIP IP adresu.

Po vytvoření farmy brány vzdálené plochy a aktualizaci DNS nakonfigurujte Službu Azure DevTest Labs tak, aby tuto bránu používala.

Konfigurace testovacího prostředí pro použití ověřování tokenů

Před aktualizací nastavení testovacího prostředí uložte klíč funkce ověřovacího tokenu do trezoru klíčů testovacího prostředí. Hodnotu klíče funkce můžete získat na stránce Klíče funkcí na webu Azure Portal. Pokud chcete zjistit ID trezoru klíčů testovacího prostředí, spusťte následující příkaz Azure CLI:

az resource show --name {lab-name} --resource-type 'Microsoft.DevTestLab/labs' --resource-group {lab-resource-group-name} --query properties.vaultName

Přečtěte si, jak uložit tajný kód do trezoru klíčů v článku Přidání tajného klíče do služby Key Vault. Poznamenejte si název tajného kódu, který chcete použít později. Tato hodnota není samotný klíč funkce, ale název tajného klíče trezoru klíčů, který obsahuje klíč funkce.

Pokud chcete nakonfigurovat název hostitele brány a tajný klíč tokenu brány pro použití ověřování pomocí tokenů u počítačů brány, postupujte takto:

  1. Na stránce Přehled testovacího prostředí vyberte v levém navigačním panelu možnost Konfigurace a zásady.

  2. Na stránce Konfigurace a zásady vyberte Nastavení testovacího prostředí v části Nastavení v levém navigačním panelu.

  3. V části Vzdálená plocha:

    • Do pole Název hostitele brány zadejte plně kvalifikovaný název domény nebo IP adresu počítače nebo farmy brány vzdálené plochy. Tato hodnota musí odpovídat plně kvalifikovanému názvu domény certifikátu TLS/SSL používaného na počítačích brány.

    • Jako token brány zadejte název tajného kódu, který jste si poznamenali dříve. Tato hodnota není samotný klíč funkce, ale název tajného klíče trezoru klíčů, který obsahuje klíč funkce.

    Snímek obrazovky s možnostmi vzdálené plochy v nastavení testovacího prostředí

  4. Zvolte Uložit.

    Poznámka:

    Výběrem možnosti Uložit vyjadřujete souhlas s licenčními podmínkami služby Brána vzdálené plochy.

Jakmile nakonfigurujete bránu i testovací prostředí, soubor připojení RDP vytvořený při výběru připojení uživatele testovacího prostředí obsahuje potřebné informace pro připojení k bráně a použití ověřování tokenu.

Automatizace konfigurace testovacího prostředí

  • PowerShell: Set-DevTestLabGateway.ps1 je ukázkový skript PowerShellu, který automaticky nastaví název hostitele brány a nastavení tajných kódů tokenů brány.

  • ARM: Pomocí ukázkových šablon ARM brány v úložišti Azure DevTest Labs na GitHubu můžete vytvářet nebo aktualizovat testovací prostředí pomocí názvu hostitele brány a nastavení tajných kódů tokenů brány.

Konfigurace skupiny zabezpečení sítě

Pokud chcete testovací prostředí dále zabezpečit, přidejte skupinu zabezpečení sítě (NSG) do virtuální sítě, kterou virtuální počítače testovacího prostředí používají, jak je popsáno v tématu Vytvoření, změna nebo odstranění skupiny zabezpečení sítě. Skupina zabezpečení sítě může například povolit přístup k virtuálním počítačům testovacího prostředí jenom provoz, který nejprve prochází bránou. Zdrojem pravidla je IP adresa počítače brány nebo nástroje pro vyrovnávání zatížení pro farmu brány.

Snímek obrazovky s pravidlem skupiny zabezpečení sítě

Další kroky