Usare l'endpoint con privilegi nell'hub di Azure Stack
In qualità di operatore dell'hub di Azure Stack, è consigliabile usare il portale di amministrazione, PowerShell o le API di Azure Resource Manager per la maggior parte delle attività di gestione quotidiane. Per alcune operazioni meno comuni è necessario tuttavia usare l'endpoint con privilegi (PEP). PEP è una console remota di PowerShell preconfigurato che offre funzionalità sufficienti per eseguire un'attività necessaria. L'endpoint usa PowerShell JEA (Just Enough Administration) per esporre solo un set limitato di cmdlet. Per accedere al PEP e richiamare il set limitato di cmdlet, viene usato un account con privilegi limitati. Non è necessario un account amministratore. Per una maggiore sicurezza, gli script non sono consentiti.
È possibile usare il PEP per eseguire queste attività:
- Attività di basso livello, ad esempio la raccolta di log di diagnostica.
- Molte attività di integrazione dei data center post-distribuzione per sistemi integrati, ad esempio l'aggiunta di server d'inoltro DNS (Domain Name System) dopo la distribuzione, la configurazione dell'integrazione di Microsoft Graph, l'integrazione di Active Directory Federation Services (AD FS), la rotazione dei certificati e così via.
- Collaborare con il supporto per ottenere l'accesso temporaneo e di alto livello per la risoluzione avanzata dei problemi di un sistema integrato.
Il PEP registra ogni azione, e l'output corrispondente, eseguita nella sessione di PowerShell. Ciò garantisce la trasparenza completa e il controllo completo delle operazioni. È possibile conservare i file di log per i controlli futuri.
Nota
In Azure Stack Development Kit (ASDK) è possibile eseguire alcuni dei comandi disponibili nel PEP direttamente da una sessione di PowerShell nell'host del kit di sviluppo. Tuttavia, è possibile testare alcune operazioni usando il PEP, ad esempio la raccolta di log, perché questo è l'unico metodo disponibile per eseguire determinate operazioni in un ambiente di sistemi integrati.
Nota
È anche possibile usare the Operator Access Workstation (OAW) per accedere all'endpoint con privilegi (PEP), al portale di amministrazione per gli scenari di supporto e agli strumenti GitHub dell'hub di Azure Stack. Per altre informazioni, vedere Workstation di accesso dell'operatore dell'hub di Azure Stack.
Accedere all'endpoint con privilegi
È possibile accedere a PEP tramite una sessione di PowerShell remota nella macchina virtuale (VM) che ospita il PEP. In ASDK questa macchina virtuale è denominata AzS-ERCS01. Se si usa un sistema integrato, sono disponibili tre istanze di PEP, ognuna in esecuzione all'interno di una macchina virtuale (Prefix-ERCS01, Prefix-ERCS02 o Prefix-ERCS03) in host diversi per la resilienza.
Prima di iniziare questa procedura per un sistema integrato, assicurarsi di poter accedere al PEP usando l'indirizzo IP o DNS. Dopo la distribuzione iniziale dell'hub di Azure Stack, è possibile accedere al PEP solo usando l'indirizzo IP perché l'integrazione DNS non è ancora configurata. Il fornitore dell'hardware OEM metterà a disposizione un file JSON denominato AzureStackStampDeploymentInfo contenente gli indirizzi IP del PEP.
È anche possibile trovare l'indirizzo IP nel portale di amministrazione dell'hub di Azure Stack. Aprire il portale, ad esempio https://adminportal.local.azurestack.external
. SelezionareProprietàgestione area>.
È necessario impostare l'impostazione delle impostazioni cultura correnti su en-US
quando si esegue l'endpoint con privilegi. In caso contrario, i cmdlet come Test-AzureStack o Get-AzureStackLog non funzioneranno come previsto.
Nota
Per motivi di sicurezza, è necessario connettersi al PEP solo da una macchina virtuale con protezione avanzata in esecuzione sull'host del ciclo di vita hardware o da un computer dedicato e sicuro, ad esempio una workstation con accesso con privilegi. La configurazione originale dell'host del ciclo di vita dell'hardware non deve essere modificata rispetto alla configurazione originale (inclusa l'installazione di nuovo software) o usata per connettersi al PEP.
Stabilire l'attendibilità.
In un sistema integrato eseguire il comando seguente da una sessione di Windows PowerShell con privilegi elevati per aggiungere pep come host attendibile nella macchina virtuale con protezione avanzata in esecuzione nell'host del ciclo di vita hardware o nella workstation con accesso con privilegi.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '<IP Address of Privileged Endpoint>' -Concatenate
Se si esegue ASDK, accedere all'host del kit di sviluppo.
Nella macchina virtuale con protezione avanzata in esecuzione nell'host del ciclo di vita hardware o nella workstation con accesso con privilegi aprire una sessione di Windows PowerShell. Eseguire i comandi seguenti per stabilire una sessione remota nella macchina virtuale che ospita il PEP:
In un sistema integrato:
$cred = Get-Credential $pep = New-PSSession -ComputerName <IP_address_of_ERCS> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) Enter-PSSession $pep
Il
ComputerName
parametro può essere l'indirizzo IP o il nome DNS di una delle macchine virtuali che ospita il PEP.Nota
L'hub di Azure Stack non esegue una chiamata remota quando si convalidano le credenziali PEP. A tale scopo, si basa su una chiave pubblica RSA archiviata in locale.
Se si esegue asDK:
$cred = Get-Credential $pep = New-PSSession -ComputerName azs-ercs01 -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) Enter-PSSession $pep
Quando richiesto, usare le credenziali seguenti:
- Nome utente: specificare l'account CloudAdmin nel formato < dominio >dell'hub di Azure Stack\cloudadmin. (Per ASDK, il nome utente è azurestack\cloudadmin)
- Password: immettere la stessa password specificata durante l'installazione per l'account amministratore di dominio AzureStackAdmin.
Nota
Se non è possibile connettersi all'endpoint ERCS, ripetere i passaggi uno e due con un altro indirizzo IP della macchina virtuale ERCS.
Avviso
Per impostazione predefinita, lo stamp dell'hub di Azure Stack è configurato con un solo account CloudAdmin. Non sono disponibili opzioni di ripristino se le credenziali dell'account vengono perse, compromesse o bloccate. Si perderà l'accesso all'endpoint con privilegi e ad altre risorse.
È consigliabilecreare account CloudAdmin aggiuntivi per evitare la ridistribuzione del timbro a spese proprie. Assicurarsi di documentare queste credenziali in base alle linee guida dell'azienda.
Dopo la connessione, il prompt passerà a [indirizzo IP o nome macchina virtuale ERCS]: PS> o a [azs-ercs01]: PS>, a seconda dell'ambiente. Da qui eseguire
Get-Command
per visualizzare l'elenco dei cmdlet disponibili.Per informazioni di riferimento sui cmdlet, vedere Informazioni di riferimento sugli endpoint con privilegi dell'hub di Azure Stack
Molti di questi cmdlet sono destinati solo agli ambienti di sistema integrati, ad esempio i cmdlet correlati all'integrazione del data center. In ASDK sono stati convalidati i cmdlet seguenti:
- Clear-Host
- Close-PrivilegedEndpoint
- Exit-PSSession
- Get-AzureStackLog
- Get-AzureStackStampInformation
- Get-Command
- Get-FormatData
- Get-Help
- Get-ThirdPartyNotices
- Measure-Object
- New-CloudAdminUser
- Out-Default
- Remove-CloudAdminUser
- Select-Object
- Set-CloudAdminUserPassword
- Test-AzureStack
- Stop-AzureStack
- Get-ClusterLog
Come usare l'endpoint con privilegi
Come accennato in precedenza, pep è un endpoint JEA di PowerShell . Pur fornendo un livello di sicurezza sicuro, un endpoint JEA riduce alcune delle funzionalità di base di PowerShell, ad esempio il completamento di script o tabulazioni. Se si tenta un tipo di operazione script, l'operazione ha esito negativo con l'errore ScriptsNotAllowed. Questo errore è previsto comportamento.
Ad esempio, per ottenere l'elenco dei parametri per un determinato cmdlet, eseguire il comando seguente:
Get-Command <cmdlet_name> -Syntax
In alternativa, è possibile usare il cmdlet Import-PSSession per importare tutti i cmdlet PEP nella sessione corrente nel computer locale. I cmdlet e le funzioni del PEP sono ora disponibili nel computer locale, insieme al completamento delle schede e, più in generale, agli script. È anche possibile eseguire il modulo Get-Help per esaminare le istruzioni dei cmdlet.
Per importare la sessione PEP nel computer locale, seguire questa procedura:
Stabilire l'attendibilità.
In un sistema integrato eseguire il comando seguente da una sessione di Windows PowerShell con privilegi elevati per aggiungere pep come host attendibile nella macchina virtuale con protezione avanzata in esecuzione nell'host del ciclo di vita hardware o nella workstation con accesso con privilegi.
winrm s winrm/config/client '@{TrustedHosts="<IP Address of Privileged Endpoint>"}'
Se si esegue ASDK, accedere all'host del kit di sviluppo.
Nella macchina virtuale con protezione avanzata in esecuzione nell'host del ciclo di vita hardware o nella workstation con accesso con privilegi aprire una sessione di Windows PowerShell. Eseguire i comandi seguenti per stabilire una sessione remota nella macchina virtuale che ospita il PEP:
In un sistema integrato:
$cred = Get-Credential $session = New-PSSession -ComputerName <IP_address_of_ERCS> ` -ConfigurationName PrivilegedEndpoint -Credential $cred ` -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
Il
ComputerName
parametro può essere l'indirizzo IP o il nome DNS di una delle macchine virtuali che ospita il PEP.Se si esegue asDK:
$cred = Get-Credential $session = New-PSSession -ComputerName azs-ercs01 ` -ConfigurationName PrivilegedEndpoint -Credential $cred ` -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
Quando richiesto, usare le credenziali seguenti:
Nome utente: specificare l'account CloudAdmin nel formato < dominio >dell'hub di Azure Stack\cloudadmin. Per ASDK, il nome utente è azurestack\cloudadmin.
Password: immettere la stessa password specificata durante l'installazione per l'account amministratore di dominio AzureStackAdmin.
Importare la sessione PEP nel computer locale:
Import-PSSession $session
È ora possibile usare il completamento tramite tabulazione ed eseguire script come di consueto nella sessione di PowerShell locale con tutte le funzioni e i cmdlet del PEP, senza ridurre il comportamento di sicurezza dell'hub di Azure Stack. Buon lavoro.
Chiudere la sessione dell'endpoint con privilegi
Come accennato in precedenza, pep registra ogni azione (e l'output corrispondente) eseguita nella sessione di PowerShell. È necessario chiudere la sessione usando il Close-PrivilegedEndpoint
cmdlet . Questo cmdlet chiude correttamente l'endpoint e trasferisce i file di log a una condivisione file esterna per la conservazione.
Per chiudere la sessione dell'endpoint:
Creare una condivisione file esterna accessibile da PEP. In un ambiente del kit di sviluppo è sufficiente creare una condivisione file nell'host del kit di sviluppo.
Eseguire il cmdlet seguente:
Close-PrivilegedEndpoint -TranscriptsPathDestination "\\fileshareIP\SharedFolder" -Credential Get-Credential
Il cmdlet usa i parametri illustrati nella tabella seguente:
Parametro Descrizione Tipo Necessario TranscriptsPathDestination Percorso della condivisione file esterna definito come "IPCondivisioneFile\NomeCartellaCondivisione" string Sì Credenziali Credenziali per accedere alla condivisione file SecureString Sì
Dopo che i file di log delle trascrizioni vengono trasferiti correttamente alla condivisione file, vengono eliminati automaticamente dal PEP.
Nota
Se si chiude la sessione PEP usando i cmdlet Exit-PSSession
o Exit
o si chiude semplicemente la console di PowerShell, i log di trascrizione non vengono trasferiti in una condivisione file. Rimangono nel PEP. Al successivo esecuzione Close-PrivilegedEndpoint
e inclusione di una condivisione file, verranno trasferiti anche i log delle trascrizioni delle sessioni precedenti. Non usare Exit-PSSession
o Exit
per chiudere la sessione PEP. Usare Close-PrivilegedEndpoint
invece.
Sblocco dell'endpoint con privilegi per gli scenari di supporto
Durante uno scenario di supporto, il tecnico del supporto tecnico Microsoft potrebbe aver bisogno di elevare la sessione di PowerShell dell'endpoint con privilegi per poter accedere agli elementi interni dell'infrastruttura dell'hub di Azure Stack. Questo processo viene talvolta definito informalmente "sblocco di PEP". Il processo di elevazione della sessione PEP è costituito da due passaggi, due persone, due processi di autenticazione dell'organizzazione. La procedura di sblocco viene avviata dall'operatore hub di Azure Stack, che mantiene sempre il controllo dell'ambiente. L'operatore accede a PEP ed esegue questo cmdlet:
Get-SupportSessionToken
Il cmdlet restituisce il token di richiesta di sessione di supporto, una stringa alfanumerica molto lunga. L'operatore passa quindi il token di richiesta al tecnico del supporto Tecnico Microsoft tramite un supporto di propria scelta (ad esempio, chat, posta elettronica). Il tecnico del supporto tecnico Microsoft usa il token di richiesta per generare, se valido, un token di autorizzazione della sessione di supporto e lo invia all'operatore dell'hub di Azure Stack. Nella stessa sessione di PEP PowerShell l'operatore passa quindi il token di autorizzazione come input in questo cmdlet:
unlock-supportsession
cmdlet Unlock-SupportSession at command pipeline position 1
Supply values for the following parameters:
ResponseToken:
Se il token di autorizzazione è valido, la sessione PEP PowerShell viene elevata fornendo funzionalità di amministrazione complete e raggiungibilità completa nell'infrastruttura.
Nota
Tutte le operazioni e i cmdlet eseguiti in una sessione PEP con privilegi elevati richiedono una rigorosa supervisione del tecnico del supporto tecnico Microsoft. In caso contrario, potrebbe verificarsi un grave tempo di inattività, perdita di dati e potrebbe richiedere una ridistribuzione completa dell'ambiente hub di Azure Stack.
Una volta terminata la sessione di supporto, è molto importante chiudere la sessione PEP con privilegi elevati usando il cmdlet Close-PrivilegedEndpoint come illustrato nella sezione precedente. Una sessione PEP viene terminata, il token di sblocco non è più valido e non può essere riutilizzato per sbloccare nuovamente la sessione PEP. Una sessione PEP con privilegi elevati ha una validità di otto ore, dopo le quali, se non viene terminata, viene automaticamente riportata a una normale sessione PEP.
Contenuto dei token dell'endpoint con privilegi
I token di autorizzazione e le richieste di sessione di supporto PEP sfruttano la crittografia per proteggere l'accesso e garantire che solo i token autorizzati possano sbloccare la sessione PEP. I token sono progettati per garantire in modo crittografico che un token di risposta possa essere accettato solo dalla sessione PEP che ha generato il token di richiesta. I token PEP non contengono alcun tipo di informazioni che potrebbero identificare in modo univoco un ambiente hub di Azure Stack o un cliente. Sono completamente anonimi. Di seguito sono riportati i dettagli del contenuto di ogni token.
Token di richiesta di sessione di supporto
Il token di richiesta di sessione di supporto PEP è costituito da tre oggetti:
- ID sessione generato in modo casuale.
- Un certificato autofirmato, generato allo scopo di avere una coppia di chiavi pubblica/privata una tantum. Il certificato non contiene informazioni sull'ambiente.
- Timestamp che indica la scadenza del token di richiesta.
Il token di richiesta viene quindi crittografato con la chiave pubblica del cloud di Azure in cui è registrato l'ambiente dell'hub di Azure Stack.
Token di risposta dell'autorizzazione della sessione di supporto
Il token di risposta di autorizzazione del supporto PEP è costituito da due oggetti:
- ID sessione generato in modo casuale estratto dal token di richiesta.
- Timestamp che indica la scadenza del token di risposta.
Il token di risposta viene quindi crittografato con il certificato autofirmato contenuto nel token di richiesta. Il certificato autofirmato è stato decrittografato con la chiave privata associata al cloud di Azure in cui è registrato l'ambiente dell'hub di Azure Stack.