Migrera till detaljerad rollbaserad åtkomst för klusterkonfigurationer
Vi introducerar några viktiga ändringar för att stödja mer detaljerad rollbaserad åtkomst för att få känslig information. Som en del av dessa ändringar kan vissa åtgärder krävas senast den 3 september 2019 om du använder någon av de berörda entiteterna/scenarierna.
Vad ändras?
Tidigare kunde hemligheter hämtas via HDInsight-API:et av klusteranvändare som har Azure-rollerna Ägare, Deltagare eller Läsare, eftersom de var tillgängliga för alla med behörigheten*/read
. Hemligheter definieras som värden som kan användas för att få mer förhöjd åtkomst än vad en användares roll bör tillåta. Dessa inkluderar värden som HTTP-autentiseringsuppgifter för klustergateway, lagringskontonycklar och databasautentiseringsuppgifter.
Från och med den 3 september 2019 kräver åtkomst till dessa hemligheter behörigheten Microsoft.HDInsight/clusters/configurations/action
, användaren kan inte komma åt den med rollen Läsare. De roller som har den här behörigheten är Deltagare, Ägare och den nya ROLLEN SOM HDInsight-klusteroperator.
Vi introducerar också en ny ROLL för HDInsight-klusteroperator som kan hämta hemligheter utan att beviljas administratörsbehörighet för deltagare eller ägare. Sammanfattningsvis:
Roll | Tidigare | Framöver |
---|---|---|
Läsare | - Läsåtkomst, inklusive hemligheter. | - Läsåtkomst, exklusive hemligheter |
HDInsight-klusteroperator (Ny roll) |
Inte tillgängligt | - Läs-/skrivåtkomst, inklusive hemligheter |
Deltagare | – Läs-/skrivåtkomst, inklusive hemligheter. – Skapa och hantera alla typer av Azure-resurser. – Kör skriptåtgärder. |
Ingen ändring |
Ägare | – Läs-/skrivåtkomst inklusive hemligheter. – Fullständig åtkomst till alla resurser - Delegera åtkomst till andra. – Kör skriptåtgärder. |
Ingen ändring |
Information om hur du lägger till rolltilldelningen för HDInsight-klusteroperator till en användare för att ge dem läs-/skrivåtkomst till klusterhemligheter finns i avsnittet Lägg till rolltilldelningen för HDInsight-klusteroperator till en användare.
Påverkas jag av dessa ändringar?
Följande entiteter och scenarier påverkas:
- API: Användare som använder slutpunkterna
/configurations
eller/configurations/{configurationName}
. - Azure HDInsight Tools for Visual Studio Code version 1.1.1 eller tidigare.
- Azure Toolkit for IntelliJ version 3.20.0 eller tidigare.
- Azure Data Lake och Stream Analytics Tools för Visual Studio version 2.3.9000.1.
- Azure Toolkit för Eclipse version 3.15.0 eller senare.
- SDK för .NET
- version 1.x eller 2.x: Användare som använder
GetClusterConfigurations
metoderna ,GetConnectivitySettings
,ConfigureHttpSettings
ellerEnableHttp
DisableHttp
från klassen ConfigurationsOperationsExtensions. - version 3.x och senare: Användare som använder
Get
metoderna ,Update
,EnableHttp
eller frånDisableHttp
ConfigurationsOperationsExtensions
klassen.
- version 1.x eller 2.x: Användare som använder
- SDK för Python: Användare som använder
get
metoderna ellerupdate
frånConfigurationsOperations
klassen. - SDK för Java: Användare som använder
update
metoderna ellerget
frånConfigurationsInner
klassen. - SDK för Go: Användare som använder
Get
metoderna ellerUpdate
från structenConfigurationsClient
. - Az.HDInsight PowerShell version 2.0.0. Läs avsnitten nedan (eller använd länkarna ovan) om du vill se migreringsanvisningarna för ditt scenario.
API
Följande API:er ändras eller är inaktuella:
- GET /configurations/{configurationName} (känslig information har tagits bort)
- Användes tidigare för att hämta enskilda konfigurationstyper (inklusive hemligheter).
- Från och med den 3 september 2019 returnerar api-anropet nu enskilda konfigurationstyper med utelämnade hemligheter. Om du vill hämta alla konfigurationer, inklusive hemligheter, använder du det nya POST/configurations-anropet. Om du bara vill hämta gatewayinställningar använder du det nya POST/getGateway Inställningar-anropet.
- GET/configurations (inaktuell)
- Användes tidigare för att hämta alla konfigurationer (inklusive hemligheter)
- Från och med den 3 september 2019 kommer det här API-anropet att vara inaktuellt och stöds inte längre. Om du vill hämta alla konfigurationer framöver använder du det nya POST/configurations-anropet. Om du vill hämta konfigurationer med känsliga parametrar som utelämnas använder du GET/configurations/{configurationName}-anropet.
- POST /configurations/{configurationName} (inaktuell)
- Användes tidigare för att uppdatera gatewayautentiseringsuppgifter.
- Från och med den 3 september 2019 kommer det här API-anropet att vara inaktuellt och stöds inte längre. Använd den nya POST /updateGateway Inställningar i stället.
Följande ersättnings-API:er har lagts till:
- POST /configurations
- Använd det här API:et för att hämta alla konfigurationer, inklusive hemligheter.
- POST /getGateway Inställningar
- Använd det här API:et för att hämta gatewayinställningar.
- POST /updateGateway Inställningar
- Använd det här API:et för att uppdatera gatewayinställningarna (användarnamn och/eller lösenord).
Azure HDInsight Tools för Visual Studio Code
Om du använder version 1.1.1 eller senare uppdaterar du till den senaste versionen av Azure HDInsight Tools för Visual Studio Code för att undvika avbrott.
Azure Toolkit for IntelliJ
Om du använder version 3.20.0 eller senare uppdaterar du till den senaste versionen av plugin-programmet Azure Toolkit for IntelliJ för att undvika avbrott.
Azure Data Lake- och Stream Analytics-verktyg för Visual Studio
Uppdatera till version 2.3.9000.1 eller senare av Azure Data Lake och Stream Analytics Tools för Visual Studio för att undvika avbrott. Hjälp med att uppdatera finns i vår dokumentation, Uppdatera Data Lake Tools för Visual Studio.
Azure Toolkit for Eclipse
Om du använder version 3.15.0 eller senare uppdaterar du till den senaste versionen av Azure Toolkit for Eclipse för att undvika avbrott.
SDK för .NET
Versionerna 1.x och 2.x
Uppdatera till version 2.1.0 av HDInsight SDK för .NET. Minimala kodändringar kan krävas om du använder en metod som påverkas av dessa ändringar:
ClusterOperationsExtensions.GetClusterConfigurations
returnerar inte längre känsliga parametrar som lagringsnycklar (kärnplats) eller HTTP-autentiseringsuppgifter (gateway).- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ClusterOperationsExtensions.ListConfigurations
framöver. Användare med rollen Läsare kan inte använda den här metoden. Det ger detaljerad kontroll över vilka användare som kan komma åt känslig information för ett kluster. - Om du bara vill hämta autentiseringsuppgifter för HTTP-gatewayen använder du
ClusterOperationsExtensions.GetGatewaySettings
.
- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ClusterOperationsExtensions.GetConnectivitySettings
är nu inaktuell och har ersatts avClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
är nu inaktuell och har ersatts avClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
ochDisableHttp
är nu inaktuella. HTTP är nu alltid aktiverat, så dessa metoder behövs inte längre.
Versioner 3.x och senare
Uppdatera till version 5.0.0 eller senare av HDInsight SDK för .NET. Minimala kodändringar kan krävas om du använder en metod som påverkas av dessa ändringar:
ConfigurationOperationsExtensions.Get
returnerar inte längre känsliga parametrar som lagringsnycklar (kärnplats) eller HTTP-autentiseringsuppgifter (gateway).- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ConfigurationOperationsExtensions.List
framöver. Användare med rollen Läsare kan inte använda den här metoden. Det ger detaljerad kontroll över vilka användare som kan komma åt känslig information för ett kluster. - Om du bara vill hämta autentiseringsuppgifter för HTTP-gatewayen använder du
ClusterOperationsExtensions.GetGatewaySettings
.
- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ConfigurationsOperationsExtensions.Update
är nu inaktuell och har ersatts avClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
ochDisableHttp
är nu inaktuella. HTTP är nu alltid aktiverat, så dessa metoder behövs inte längre.
SDK för Python
Uppdatera till version 1.0.0 eller senare av HDInsight SDK för Python. Minimala kodändringar kan krävas om du använder en metod som påverkas av dessa ändringar:
ConfigurationsOperations.get
returnerar inte längre känsliga parametrar som lagringsnycklar (kärnplats) eller HTTP-autentiseringsuppgifter (gateway).- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ConfigurationsOperations.list
framöver. Användare med rollen Läsare kan inte använda den här metoden. Det ger detaljerad kontroll över vilka användare som kan komma åt känslig information för ett kluster. - Om du bara vill hämta autentiseringsuppgifter för HTTP-gatewayen använder du
ClusterOperations.get_gateway_settings
.
- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ConfigurationsOperations.update
är nu inaktuell och har ersatts avClusterOperations.update_gateway_settings
.
SDK för Java
Uppdatera till version 1.0.0 eller senare av HDInsight SDK för Java. Minimala kodändringar kan krävas om du använder en metod som påverkas av dessa ändringar:
ConfigurationsInner.get
returnerar inte längre känsliga parametrar som lagringsnycklar (kärnplats) eller HTTP-autentiseringsuppgifter (gateway).ConfigurationsInner.update
är nu inaktuell.
SDK för Go
Uppdatera till version 27.1.0 eller senare av HDInsight SDK för Go. Minimala kodändringar kan krävas om du använder en metod som påverkas av dessa ändringar:
ConfigurationsClient.get
returnerar inte längre känsliga parametrar som lagringsnycklar (kärnplats) eller HTTP-autentiseringsuppgifter (gateway).- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ConfigurationsClient.list
framöver. Användare med rollen Läsare kan inte använda den här metoden. Det ger detaljerad kontroll över vilka användare som kan komma åt känslig information för ett kluster. - Om du bara vill hämta autentiseringsuppgifter för HTTP-gatewayen använder du
ClustersClient.get_gateway_settings
.
- Om du vill hämta alla konfigurationer, inklusive känsliga parametrar, använder du
ConfigurationsClient.update
är nu inaktuell och har ersatts avClustersClient.update_gateway_settings
.
Az.HDInsight PowerShell
Uppdatera till Az PowerShell version 2.0.0 eller senare för att undvika avbrott. Minimala kodändringar kan krävas om du använder en metod som påverkas av dessa ändringar.
Grant-AzHDInsightHttpServicesAccess
är nu inaktuell och har ersatts av den nyaSet-AzHDInsightGatewayCredential
cmdleten.Get-AzHDInsightJobOutput
har uppdaterats för att stödja detaljerad rollbaserad åtkomst till lagringsnyckeln.- Användare med HDInsight-klusteroperator-, deltagar- eller ägarroller påverkas inte.
- Användare med endast rollen Läsare måste uttryckligen ange parametern
DefaultStorageAccountKey
.
Revoke-AzHDInsightHttpServicesAccess
är nu inaktuell. HTTP är nu alltid aktiverat, så den här cmdleten behövs inte längre. Se az. HdInsight-migreringsguide för mer information.
Lägga till rolltilldelningen för HDInsight-klusteroperator till en användare
En användare med rollen Ägare kan tilldela rollen HDInsight-klusteroperator till användare som du vill ha läs-/skrivåtkomst till känsliga HDInsight-klusterkonfigurationsvärden (till exempel autentiseringsuppgifter för klustergateway och lagringskontonycklar).
Använda Azure CLI
Det enklaste sättet att lägga till den här rolltilldelningen az role assignment create
är att använda kommandot i Azure CLI.
Kommentar
Det här kommandot måste köras av en användare med rollen Ägare, eftersom endast de kan bevilja dessa behörigheter. --assignee
är namnet på tjänstens huvudnamn eller e-postadress för den användare som du vill tilldela rollen HDInsight-klusteroperator. Om du får ett fel om otillräcklig behörighet kan du läsa vanliga frågor och svar.
Bevilja roll på resursnivå (kluster)
az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>
Bevilja roll på resursgruppsnivå
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>
Bevilja roll på prenumerationsnivå
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com
Med hjälp av Azure-portalen
Du kan också använda Azure-portalen för att lägga till rolltilldelningen hdinsight-klusteroperator till en användare. Se dokumentationen Tilldela Azure-roller med hjälp av Azure-portalen.
Vanliga frågor
Varför ser jag felet 403 när jag har uppdaterat mina API-förfrågningar och/eller API-verktyg?
Klusterkonfigurationer finns nu bakom detaljerad rollbaserad åtkomstkontroll och kräver Microsoft.HDInsight/clusters/configurations/*
behörighet att komma åt dem. Om du vill få den här behörigheten tilldelar du rollen HDInsight-klusteroperator, deltagare eller ägare till användaren eller tjänstens huvudnamn som försöker komma åt konfigurationer.
Varför visas "Otillräckliga behörigheter för att slutföra åtgärden" när jag kör Azure CLI-kommandot för att tilldela rollen HDInsight-klusteroperator till en annan användare eller tjänstens huvudnamn?
Förutom rollen Ägare måste användaren eller tjänstens huvudnamn som kör kommandot ha tillräcklig Microsoft Entra-behörighet för att söka efter objekt-ID:t för den tilldelade personen. Det här meddelandet anger otillräckliga Microsoft Entra-behörigheter. Prova att -–assignee
ersätta argumentet med –assignee-object-id
och ange objekt-ID:t för den tilldelade som parameter i stället för namnet (eller huvud-ID för en hanterad identitet). Mer information finns i avsnittet om valfria parametrar i az role assignment create-dokumentationen.
Om det fortfarande inte fungerar kontaktar du Microsoft Entra-administratören för att hämta rätt behörigheter.
Vad händer om jag inte vidtar några åtgärder?
Från och med den 3 september 2019 GET /configurations
POST /configurations/gateway
returnerar anrop inte längre någon information och anropet GET /configurations/{configurationName}
returnerar inte längre känsliga parametrar, till exempel lagringskontonycklar eller klusterlösenordet. Detsamma gäller för motsvarande SDK-metoder och PowerShell-cmdletar.
Om du använder en äldre version av något av verktygen för Visual Studio, VSCode, IntelliJ eller Eclipse som nämns, fungerar den inte längre förrän du uppdaterar.
Mer detaljerad information finns i motsvarande avsnitt i det här dokumentet för ditt scenario.