Eseguire la migrazione all'accesso granulare in base al ruolo per le configurazioni dei cluster
Stiamo introducendo alcune importanti modifiche per supportare l'accesso basato sui ruoli con granularità più fine per ottenere informazioni riservate. Come parte di queste modifiche, alcune azioni potrebbero essere necessarie entro il 3 settembre 2019 se si usa una delle entità/scenari interessati.
Cosa sta cambiando?
In precedenza, i segreti potevano essere ottenuti tramite l'API HDInsight dagli utenti del cluster che possiedono i ruoli Proprietario, Collaboratore o Lettore di Azure, perché erano disponibili per chiunque disponga dell'autorizzazione*/read
. I segreti vengono definiti come valori che possono essere usati per ottenere un accesso più elevato rispetto al ruolo di un utente. Sono inclusi valori come le credenziali HTTP del gateway del cluster, le chiavi dell'account di archiviazione e le credenziali del database.
A partire dal 3 settembre 2019, l'accesso a questi segreti richiederà l'autorizzazione Microsoft.HDInsight/clusters/configurations/action
e l'utente non potrà accedervi con il ruolo Lettore. I ruoli che dispongono di questa autorizzazione sono Collaboratore, Proprietario e il nuovo ruolo Operatore cluster HDInsight.
Viene inoltre introdotto un nuovo ruolo Operatore cluster HDInsight in grado di recuperare i segreti senza concedere le autorizzazioni amministrative di Collaboratore o Proprietario. Per concludere:
Ruolo | Precedentemente | In futuro |
---|---|---|
Reader | - Accesso in lettura, inclusi i segreti. | - Accesso in lettura, escluso i segreti |
Operatore di cluster HDInsight (Nuovo ruolo) |
N/D | - Accesso in lettura/scrittura, inclusi i segreti |
Collaboratore | - Accesso in lettura/scrittura, inclusi i segreti. - Creare e gestire tutti i tipi di risorse di Azure. - Eseguire azioni script. |
Nessuna modifica |
Proprietario | - Accesso in lettura/scrittura, inclusi i segreti. - Accesso completo a tutte le risorse - Delegare l'accesso ad altri utenti. - Eseguire azioni script. |
Nessuna modifica |
Per informazioni su come aggiungere l'assegnazione di ruolo Operatore cluster HDInsight a un utente per concedere loro l'accesso in lettura/scrittura ai segreti del cluster, vedere la sezione seguente Aggiungere l'assegnazione di ruolo Operatore cluster HDInsight a un utente.
Sono interessati da queste modifiche?
Sono interessate le entità e gli scenari seguenti:
- API: utenti che usano gli
/configurations
endpoint o/configurations/{configurationName}
. - Azure HDInsight Tools for Visual Studio Code versione 1.1.1 o precedente.
- Azure Toolkit for IntelliJ versione 3.20.0 o precedente.
- Strumenti di Analisi di flusso e Azure Data Lake per Visual Studio versione 2.3.9000.1.
- Azure Toolkit for Eclipse versione 3.15.0 o successiva.
- SDK per .NET
- versioni 1.x o 2.x: utenti che usano i
GetClusterConfigurations
metodi ,GetConnectivitySettings
,ConfigureHttpSettings
EnableHttp
oDisableHttp
della classe ConfigurationsOperationsExtensions. - versioni 3.x e successive: utenti che usano i
Get
metodi ,EnableHttp
Update
, oDisableHttp
dellaConfigurationsOperationsExtensions
classe .
- versioni 1.x o 2.x: utenti che usano i
- SDK per Python: utenti che usano i
get
metodi oupdate
dellaConfigurationsOperations
classe . - SDK per Java: utenti che usano i
update
metodi oget
dellaConfigurationsInner
classe . - SDK per Go: utenti che usano i
Get
metodi oUpdate
dalloConfigurationsClient
struct . - Az.HDInsight PowerShell versione 2.0.0. Per informazioni sulla procedura di migrazione per il tuo scenario, vedi le sezioni seguenti o usa i collegamenti indicati in precedenza.
API
Le API seguenti vengono modificate o deprecate:
- GET /configurations/{configurationName} (informazioni riservate rimosse)
- Usato in precedenza per ottenere singoli tipi di configurazione (inclusi i segreti).
- A partire dal 3 settembre 2019, questa chiamata API restituirà ora singoli tipi di configurazione con segreti omessi. Per ottenere tutte le configurazioni, inclusi i segreti, usare la nuova chiamata POST /configurations. Per ottenere solo le impostazioni del gateway, usare la nuova chiamata POST /getGateway Impostazioni.
- GET /configurations (deprecato)
- Usato in precedenza per ottenere tutte le configurazioni (inclusi i segreti)
- A partire dal 3 settembre 2019, questa chiamata API sarà deprecata e non sarà più supportata. Per ottenere tutte le configurazioni in futuro, usare la nuova chiamata POST /configurations. Per ottenere configurazioni con parametri sensibili omessi, usare la chiamata GET /configurations/{configurationName}.
- POST /configurations/{configurationName} (deprecato)
- Usato in precedenza per aggiornare le credenziali del gateway.
- A partire dal 3 settembre 2019, questa chiamata API sarà deprecata e non più supportata. Usare invece il nuovo POST /updateGateway Impostazioni.
Sono state aggiunte le API sostitutive seguenti:
- POST /configurations
- Usare questa API per ottenere tutte le configurazioni, inclusi i segreti.
- POST /getGateway Impostazioni
- Usare questa API per ottenere le impostazioni del gateway.
- POST /updateGateway Impostazioni
- Usare questa API per aggiornare le impostazioni del gateway (nome utente e/o password).
Strumenti di Azure HDInsight per Visual Studio Code
Se si usa la versione 1.1.1 o successiva, eseguire l'aggiornamento alla versione più recente di Azure HDInsight Tools per Visual Studio Code per evitare interruzioni.
Azure Toolkit for IntelliJ
Se si usa la versione 3.20.0 o successiva, eseguire l'aggiornamento alla versione più recente del plug-in Azure Toolkit for IntelliJ per evitare interruzioni.
Strumenti di Analisi di flusso e Azure Data Lake per Visual Studio
Eseguire l'aggiornamento alla versione 2.3.9000.1 o successiva di Azure Data Lake e strumenti di analisi di flusso per Visual Studio per evitare interruzioni. Per informazioni su come eseguire l'aggiornamento, vedere la documentazione update Data Lake Tools per Visual Studio.
Azure Toolkit for Eclipse
Se si usa la versione 3.15.0 o successiva, eseguire l'aggiornamento alla versione più recente di Azure Toolkit for Eclipse per evitare interruzioni.
SDK per .NET
Versioni 1.x e 2.x
Eseguire l'aggiornamento alla versione 2.1.0 di HDInsight SDK per .NET. È possibile che siano necessarie modifiche minime al codice se si usa un metodo interessato da queste modifiche:
ClusterOperationsExtensions.GetClusterConfigurations
non restituirà più parametri sensibili, ad esempio chiavi di archiviazione (core-site) o credenziali HTTP (gateway).- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ClusterOperationsExtensions.ListConfigurations
in futuro. Gli utenti con il ruolo "Lettore" non sono in grado di usare questo metodo. Consente un controllo granulare su quali utenti possono accedere alle informazioni riservate per un cluster. - Per recuperare solo le credenziali del gateway HTTP, usare
ClusterOperationsExtensions.GetGatewaySettings
.
- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ClusterOperationsExtensions.GetConnectivitySettings
è ora deprecato ed è stato sostituito daClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
è ora deprecato ed è stato sostituito daClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
eDisableHttp
sono ora deprecati. HTTP è ora sempre abilitato, quindi questi metodi non sono più necessari.
Versioni 3.x e successive
Eseguire l'aggiornamento alla versione 5.0.0 o successiva di HDInsight SDK per .NET. È possibile che siano necessarie modifiche minime al codice se si usa un metodo interessato da queste modifiche:
ConfigurationOperationsExtensions.Get
non restituirà più parametri sensibili, ad esempio chiavi di archiviazione (core-site) o credenziali HTTP (gateway).- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ConfigurationOperationsExtensions.List
in futuro. Gli utenti con il ruolo "Lettore" non sono in grado di usare questo metodo. Consente un controllo granulare su quali utenti possono accedere alle informazioni riservate per un cluster. - Per recuperare solo le credenziali del gateway HTTP, usare
ClusterOperationsExtensions.GetGatewaySettings
.
- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ConfigurationsOperationsExtensions.Update
è ora deprecato ed è stato sostituito daClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
eDisableHttp
sono ora deprecati. HTTP è ora sempre abilitato, quindi questi metodi non sono più necessari.
SDK per Python
Eseguire l'aggiornamento alla versione 1.0.0 o successiva di HDInsight SDK per Python. È possibile che siano necessarie modifiche minime al codice se si usa un metodo interessato da queste modifiche:
ConfigurationsOperations.get
non restituirà più parametri sensibili, ad esempio chiavi di archiviazione (core-site) o credenziali HTTP (gateway).- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ConfigurationsOperations.list
in futuro. Gli utenti con il ruolo "Lettore" non sono in grado di usare questo metodo. Consente un controllo granulare su quali utenti possono accedere alle informazioni riservate per un cluster. - Per recuperare solo le credenziali del gateway HTTP, usare
ClusterOperations.get_gateway_settings
.
- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ConfigurationsOperations.update
è ora deprecato ed è stato sostituito daClusterOperations.update_gateway_settings
.
SDK per Java
Eseguire l'aggiornamento alla versione 1.0.0 o successiva di HDInsight SDK per Java. È possibile che siano necessarie modifiche minime al codice se si usa un metodo interessato da queste modifiche:
ConfigurationsInner.get
non restituirà più parametri sensibili, ad esempio chiavi di archiviazione (core-site) o credenziali HTTP (gateway).ConfigurationsInner.update
è ora deprecato.
SDK per Go
Eseguire l'aggiornamento alla versione 27.1.0 o successiva di HDInsight SDK per Go. È possibile che siano necessarie modifiche minime al codice se si usa un metodo interessato da queste modifiche:
ConfigurationsClient.get
non restituirà più parametri sensibili, ad esempio chiavi di archiviazione (core-site) o credenziali HTTP (gateway).- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ConfigurationsClient.list
in futuro. Gli utenti con il ruolo "Lettore" non sono in grado di usare questo metodo. Consente un controllo granulare su quali utenti possono accedere alle informazioni riservate per un cluster. - Per recuperare solo le credenziali del gateway HTTP, usare
ClustersClient.get_gateway_settings
.
- Per recuperare tutte le configurazioni, inclusi i parametri sensibili, usare
ConfigurationsClient.update
è ora deprecato ed è stato sostituito daClustersClient.update_gateway_settings
.
Az.HDInsight PowerShell
Eseguire l'aggiornamento ad Az PowerShell versione 2.0.0 o successiva per evitare interruzioni. È possibile che siano necessarie modifiche minime al codice se si usa un metodo interessato da queste modifiche.
Grant-AzHDInsightHttpServicesAccess
è ora deprecato ed è stato sostituito dal nuovoSet-AzHDInsightGatewayCredential
cmdlet.Get-AzHDInsightJobOutput
è stato aggiornato per supportare l'accesso granulare in base al ruolo alla chiave di archiviazione.- Gli utenti con ruoli Operatore cluster HDInsight, Collaboratore o Proprietario non sono interessati.
- Gli utenti con solo il ruolo Lettore devono specificare il
DefaultStorageAccountKey
parametro in modo esplicito.
Revoke-AzHDInsightHttpServicesAccess
è ora deprecato. HTTP è ora sempre abilitato, quindi questo cmdlet non è più necessario. Vedere az . Guida alla migrazione di HDInsight per altri dettagli.
Aggiungere l'assegnazione di ruolo Operatore cluster HDInsight a un utente
Un utente con il ruolo Proprietario può assegnare il ruolo Operatore cluster HDInsight agli utenti a cui si vuole avere accesso in lettura/scrittura ai valori di configurazione del cluster HDInsight sensibili, ad esempio le credenziali del gateway del cluster e le chiavi dell'account di archiviazione.
Con l'interfaccia della riga di comando di Azure
Il modo più semplice per aggiungere questa assegnazione di ruolo consiste nell'usare il comando nell'interfaccia della az role assignment create
riga di comando di Azure.
Nota
Questo comando deve essere eseguito da un utente con il ruolo Proprietario, in quanto solo può concedere queste autorizzazioni. --assignee
è il nome dell'entità servizio o dell'indirizzo di posta elettronica dell'utente a cui si vuole assegnare il ruolo Operatore cluster HDInsight. Se viene visualizzato un errore di autorizzazioni insufficienti, vedere le domande frequenti.
Concedere il ruolo a livello di risorsa (cluster)
az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>
Concedere il ruolo a livello di gruppo di risorse
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>
Concedere il ruolo a livello di sottoscrizione
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com
Tramite il portale di Azure
In alternativa, è possibile usare il portale di Azure per aggiungere l'assegnazione di ruolo Operatore cluster HDInsight a un utente. Vedere la documentazione Assegnare i ruoli di Azure usando il portale di Azure.
Domande frequenti
Perché viene visualizzata una risposta 403 (Accesso negato) dopo l'aggiornamento delle richieste e/o dello strumento API?
Le configurazioni del cluster sono ora dietro il controllo granulare degli accessi in base al ruolo e richiedono l'autorizzazione Microsoft.HDInsight/clusters/configurations/*
per accedervi. Per ottenere questa autorizzazione, assegnare il ruolo Operatore cluster HDInsight, Collaboratore o Proprietario all'utente o all'entità servizio che tenta di accedere alle configurazioni.
Perché viene visualizzato "Privilegi insufficienti per completare l'operazione" quando si esegue il comando dell'interfaccia della riga di comando di Azure per assegnare il ruolo Operatore cluster HDInsight a un altro utente o a un'entità servizio?
Oltre a avere il ruolo Proprietario, l'utente o l'entità servizio che esegue il comando deve avere autorizzazioni sufficienti per cercare gli ID oggetto dell'assegnatario. Questo messaggio indica autorizzazioni di Microsoft Entra insufficienti. Provare a sostituire l'argomento -–assignee
con –assignee-object-id
e specificare l'ID oggetto dell'assegnatario come parametro anziché il nome (o l'ID entità nel caso di un'identità gestita). Per altre informazioni, vedere la sezione parametri facoltativi della documentazione az role assignment create.
Se non funziona ancora, contattare l'amministratore di Microsoft Entra per acquisire le autorizzazioni corrette.
Cosa succederà se non prendo alcuna azione?
A partire dal 3 settembre 2019, GET /configurations
le POST /configurations/gateway
chiamate non restituiranno più informazioni e la GET /configurations/{configurationName}
chiamata non restituirà più parametri sensibili, ad esempio le chiavi dell'account di archiviazione o la password del cluster. Lo stesso vale per i metodi SDK e i cmdlet di PowerShell corrispondenti.
Se si usa una versione precedente di uno degli strumenti per Visual Studio, VSCode, IntelliJ o Eclipse menzionati, non funzionerà più fino all'aggiornamento.
Per informazioni più dettagliate, vedere la sezione corrispondente di questo documento per lo scenario in uso.