Távoli asztali átjáró konfigurálása és használata az Azure DevTest Labsban
Ez a cikk bemutatja, hogyan állíthat be és használhat átjárót az Azure DevTest Labs tesztkörnyezeti virtuális gépeihez (VM-ekhez) való biztonságos távoli asztali hozzáféréshez. Az átjáró használata növeli a biztonságot, mivel nem teszi elérhetővé a virtuális gépek távoli asztali protokoll (RDP) portjait az interneten. Ez a távoli asztali átjárómegoldás a jogkivonat-hitelesítést is támogatja.
A DevTest Labs központi helyet biztosít a tesztkörnyezet felhasználói számára a virtuális gépek megtekintéséhez és a hozzájuk való csatlakozáshoz. Ha a tesztkörnyezeti virtuális gép Áttekintés lapján az RDP csatlakoztatása> lehetőséget választja, létrejön egy gépspecifikus RDP-fájl, és a felhasználók megnyithatják a fájlt a virtuális géphez való csatlakozáshoz.
Távoli asztali átjáróval a tesztkörnyezet felhasználói egy átjárógépen keresztül csatlakoznak a virtuális gépükhöz. A felhasználók közvetlenül az átjárógépen hitelesítik magukat, és használhatják a vállalat által megadott hitelesítő adatokat a tartományhoz csatlakoztatott gépeken. A jogkivonat-hitelesítés további biztonsági réteget biztosít.
A tesztkörnyezeti virtuális gépek biztonságos elérésének másik módja a portok vagy IP-címek felfedése nélkül, ha az Azure Bastion böngészőn keresztül érhető el. További információ: Böngészőkapcsolat engedélyezése DevTest Labs virtuális gépekhez az Azure Bastion használatával.
Architektúra
Az alábbi ábra bemutatja, hogyan alkalmazza a távoli asztali átjáró a jogkivonat-hitelesítést, és hogyan csatlakozik a DevTest Labs virtuális gépekhez.
Ha kiválasztja az RDP csatlakoztatását >egy tesztkörnyezeti virtuális gépről, meghívja a getRdpFileContents REST parancsot:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/getRdpFileContents
Ha a tesztkörnyezetben van egy átjáró konfigurálva, a
getRdpFileContents
művelet meghívjahttps://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}
a hitelesítési jogkivonat kérését.{gateway-hostname}
{lb-uri}
vagy terheléselosztó esetén a tesztkörnyezet Tesztkörnyezet beállításai lapján megadott átjáró állomásneve.{lab-machine-name}
a csatlakozni kívánt virtuális gép neve.{port-number}
a kapcsolathoz használni kívánt port. Ez a port általában 3389, de ha a tesztkörnyezeti virtuális gép megosztott IP-címet használ, a portszám eltérő.
A távoli asztali átjáró egy Azure Functions-függvényalkalmazás hívásának elhalasztására szolgál
https://{function-app-uri}/api/host/{lab-machine-name}/port/{port-number}
.Feljegyzés
A kérelemfejléc automatikusan tartalmazza a függvénykulcsot, amelyet a tesztkörnyezet kulcstartójából kap. A függvénykulcs titkos kódjának neve az átjáró jogkivonata a tesztkörnyezet beállításainak lapján.
Az Azure-függvény létrehoz és visszaad egy jogkivonatot a tanúsítványalapú hitelesítéshez az átjárógépen.
A
getRdpFileContents
művelet a teljes RDP-fájlt adja vissza, beleértve a hitelesítési jogkivonatot is.
Amikor egy RDP-kapcsolati program megnyitja az RDP-fájlt, a távoli asztali átjáró hitelesíti a jogkivonatot, és a kapcsolat továbbítódik a tesztkörnyezet virtuális gépére.
Feljegyzés
Nem minden RDP-kapcsolati program támogatja a jogkivonat-hitelesítést.
Fontos
Az Azure-függvény beállítja a hitelesítési jogkivonat lejárati dátumát. A jogkivonat lejárata előtt a felhasználónak csatlakoznia kell a virtuális géphez.
Konfigurációs követelmények
Az átjárógépekre, az Azure Functionsre és a hálózatokra vonatkozó konfigurációs követelmények a DevTest Labs RDP-hozzáférésének és jogkivonat-hitelesítésének használatához szükségesek:
Átjárógép-követelmények
Az átjárógépnek a következő konfigurációval kell rendelkeznie:
TLS/SSL-tanúsítvány a HTTPS-forgalom kezeléséhez. A tanúsítványnak meg kell egyeznie az átjárógép teljes tartománynevével (FQDN), ha csak egy gép van, vagy egy átjárófarm terheléselosztójának. A helyettesítő TLS/SSL-tanúsítványok nem működnek.
Aláíró tanúsítvány. Aláíró tanúsítványt a Create-SigningCertificate.ps1 PowerShell-szkripttel hozhat létre.
Egy csatlakoztatható hitelesítési modul , amely támogatja a jogkivonat-hitelesítést. Ilyen például a RDGatewayFedAuth.msi, amely a System Center Virtual Machine Manager (VMM) rendszerképeivel rendelkezik.
A kérések kezelése a következőre
https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}
: .
Az Internet Information Server (IIS) alkalmazás-útválasztási kérés moduljának használatával átirányíthatja https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}
a kéréseket a függvényalkalmazásba.
Az Azure Functions követelményei
Egy Azure Functions-függvényalkalmazás a formátummal kezeli a https://{function-app-uri}/app/host/{lab-machine-name}/port/{port-number}
kéréseket, és létrehozza és visszaadja a hitelesítési jogkivonatot az átjárógép aláíró tanúsítványa alapján. A {function-app-uri}
függvény eléréséhez használt URI.
A kérelem fejlécének át kell adnia a függvénykulcsot, amelyet a tesztkörnyezet kulcstartójából kap.
A mintafüggvényekért lásd: CreateToken.cs.
Hálózati követelmények
Az átjárógép TLS/SSL-tanúsítványához társított teljes tartománynév DNS-ének az átjárógépre vagy egy átjárógép-farm terheléselosztójára kell irányítania a forgalmat.
Ha a tesztkörnyezeti virtuális gép magánhálózati IP-címet használ, az átjárógéptől a tesztkörnyezeti gépig hálózati elérési útnak kell lennie. A két gépnek vagy ugyanazt a virtuális hálózatot kell használnia, vagy társhálózatokat kell használnia.
Távoli asztali átjáró létrehozása
Az Azure DevTest Labs GitHub-adattár azure Resource Manager-sablonokkal (ARM) segíti a DevTest Labs-jogkivonat-hitelesítés és a távoli asztali átjáró erőforrásainak beállítását. Az átjárógép-létrehozáshoz, a tesztkörnyezet beállításaihoz és egy függvényalkalmazáshoz sablonokat is találhat.
Feljegyzés
A mintasablonok használatával elfogadja a Távoli asztali átjáró licencfeltételét.
Kövesse az alábbi lépéseket egy távoli asztali átjárófarm-minta beállításához.
Hozzon létre egy aláíró tanúsítványt.
Futtassa a Create-SigningCertificate.ps1 parancsot. Jegyezze fel a létrehozott tanúsítvány ujjlenyomatát, jelszavát és Base64-kódolását későbbi használatra.
TLS-/SSL-tanúsítvány lekérése. A TLS/SSL-tanúsítványhoz társított teljes tartománynévnek egy ön által felügyelt tartományhoz kell tartoznia.
Jegyezze fel a TLS/SSL-tanúsítvány jelszavát, ujjlenyomatát és Base64-kódolását, amelyet később használni szeretne.
Az ujjlenyomat lekéréséhez használja a következő PowerShell-parancsokat:
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate; $cer.Import('path-to-certificate'); $hash = $cer.GetCertHashString()
A Base64-kódolás lekéréséhez használja a következő PowerShell-parancsot:
[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('path-to-certificate'))
Töltse le az összes fájlt innen https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway: . Másolja az összes fájlt, és RDGatewayFedAuth.msi egy tárfiók blobtárolójába.
Nyissa meg azuredeploy.json innen https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway, és töltse ki a következő paramétereket:
Paraméter Kötelező Leírás adminUsername
Szükséges Az átjárógépek rendszergazdai felhasználóneve. adminPassword
Szükséges Az átjárógépek rendszergazdai fiókjának jelszava. instanceCount
Létrehozandó átjárógépek száma. alwaysOn
A létrehozott Azure Functions-alkalmazás melegen tartása (bekapcsolva) vagy sem. Az alkalmazás megtartása elkerüli a késést, amikor a felhasználók először próbálnak csatlakozni a tesztkörnyezeti virtuális gépeikhez, de költségvonzattal járnak. tokenLifetime
A létrehozott jogkivonat érvényes HH:MM:SS formátumban megadott időtartama. sslCertificate
Szükséges Az átjárógép TLS/SSL-tanúsítványának Base64-kódolása. sslCertificatePassword
Szükséges Az átjárógép TLS/SSL-tanúsítványának jelszava. sslCertificateThumbprint
Szükséges A tanúsítvány ujjlenyomata az aláíró tanúsítvány helyi tanúsítványtárolójában való azonosításhoz. signCertificate
Szükséges Az átjárógép aláíró tanúsítványának Base64-kódolása. signCertificatePassword
Szükséges Az átjárógép aláíró tanúsítványának jelszava. signCertificateThumbprint
Szükséges A tanúsítvány ujjlenyomata az aláíró tanúsítvány helyi tanúsítványtárolójában való azonosításhoz. _artifactsLocation
Szükséges A sablon által igényelt összetevők keresésének URI-helye. Ennek az értéknek teljes mértékben minősített URI-nak kell lennie, nem relatív elérési útnak. Az összetevők közé tartoznak más sablonok, PowerShell-szkriptek és a Távoli asztali átjáró beépülő modulja, amely várhatóan a jogkivonat-hitelesítést támogató RDGatewayFedAuth.msi lesz elnevezve. _artifactsLocationSasToken
Szükséges A közös hozzáférésű jogosultságkód (SAS) jogkivonat az összetevők eléréséhez, ha az _artifactsLocation
Egy Azure Storage-fiók.Futtassa a következő Azure CLI-parancsot a azuredeploy.json üzembe helyezéséhez:
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}"
Futtassa a
{storage-account-endpoint}
parancsotaz storage account show --name {storage-account-name} --query primaryEndpoints.blob
.Futtassa a
{sas-token}
parancsotaz storage container generate-sas --name {container-name} --account-name {storage-account-name} --https-only –permissions drlw –expiry {utc-expiration-date}
.{storage-account-name}
a feltöltött fájlokat tartalmazó tárfiók neve.{container-name}
A feltöltött fájlokat tartalmazó tároló{storage-account-name}
.{utc-expiration-date}
az a dátum (UTC), amikor az SAS-jogkivonat lejár, és a továbbiakban nem használható a tárfiók eléréséhez.
Jegyezze fel a sablon üzembehelyezési kimenetének értékeit
gatewayFQDN
gatewayIP
. Mentse az újonnan létrehozott függvény kulcsának értékét is, amelyet a függvényalkalmazás Alkalmazásbeállítások lapján talál.Konfigurálja a DNS-t úgy, hogy a TLS/SSL-tanúsítvány teljes tartományneve az
gatewayIP
IP-címre legyen irányítva.
A távoli asztali átjárófarm létrehozása és a DNS frissítése után konfigurálja az Azure DevTest Labst az átjáró használatára.
A tesztkörnyezet konfigurálása jogkivonat-hitelesítés használatára
A tesztkörnyezet beállításainak frissítése előtt tárolja a hitelesítési jogkivonat-függvény kulcsát a tesztkörnyezet kulcstartójában. A függvénykulcs értékét az Azure Portal Függvénykulcsok lapján szerezheti be. A labor kulcstartójának azonosítójának megkereséséhez futtassa a következő Azure CLI-parancsot:
az resource show --name {lab-name} --resource-type 'Microsoft.DevTestLab/labs' --resource-group {lab-resource-group-name} --query properties.vaultName
Ebből a cikkből megtudhatja, hogyan menthet titkos kulcsokat egy kulcstartóban, és hogyan adhat hozzá titkos kulcsot a Key Vaulthoz. Jegyezze fel a később használni kívánt titkos kódnevet. Ez az érték nem maga a függvénykulcs, hanem annak a kulcstartónak a neve, amely a függvénykulcsot tartalmazza.
Ha konfigurálnia kell egy tesztkörnyezet átjárójának állomásnevét és átjáró-jogkivonat-titkos kódját a token-hitelesítés használatára az átjárógép(ek) használatával, kövesse az alábbi lépéseket:
A tesztkörnyezet Áttekintés lapján válassza a Konfiguráció és szabályzatok lehetőséget a bal oldali navigációs sávon.
A Konfiguráció és szabályzatok lapon válassza a Tesztkörnyezet beállításai lehetőséget a bal oldali navigáció Beállítások szakaszában.
A Távoli asztal szakaszban:
Az Átjáró állomásnév mezőjébe írja be a távoli asztali szolgáltatások átjárójának vagy farmjának teljes tartománynevét vagy IP-címét. Ennek az értéknek meg kell egyeznie az átjárógépeken használt TLS/SSL-tanúsítvány teljes tartománynevével.
Az átjáró-jogkivonat esetében adja meg a korábban rögzített titkos kódnevet. Ez az érték nem maga a függvénykulcs, hanem annak a kulcstartónak a neve, amely a függvénykulcsot tartalmazza.
Válassza a Mentés parancsot.
Feljegyzés
A Mentés gombra kattintva elfogadja a Távoli asztali átjáró licencfeltételét.
Miután konfigurálta az átjárót és a labort is, a tesztkörnyezet felhasználójának Csatlakozás kiválasztásakor létrehozott RDP-kapcsolatfájl tartalmazza az átjáróhoz való csatlakozáshoz és a jogkivonat-hitelesítés használatához szükséges információkat.
Tesztkörnyezet konfigurációjának automatizálása
PowerShell: A Set-DevTestLabGateway.ps1 egy powerShell-példaszkript, amely automatikusan beállítja az átjáró gazdagépnevét és az átjáró jogkivonatának titkos beállításait.
ARM: Az Azure DevTest Labs GitHub-adattár átjáróminta ARM-sablonjaival létrehozhat vagy frissíthet tesztkörnyezeteket átjáró gazdagépnévvel és átjárójogkivonat titkos beállításaival.
Hálózati biztonsági csoport konfigurálása
A tesztkörnyezet további védelméhez adjon hozzá egy hálózati biztonsági csoportot (NSG) a virtuális hálózathoz, amelyet a tesztkörnyezeti virtuális gépek a hálózati biztonsági csoport létrehozása, módosítása vagy törlése című cikkben leírtak szerint használnak. Egy NSG például csak az átjárón áthaladó forgalmat engedélyezheti a labor virtuális gépek eléréséhez. A szabályforrás az átjárófarm átjárógépének vagy terheléselosztójának IP-címe.