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

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:

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.
  • ClusterOperationsExtensions.GetConnectivitySettings är nu inaktuell och har ersatts av ClusterOperationsExtensions.GetGatewaySettings.

  • ClusterOperationsExtensions.ConfigureHttpSettings är nu inaktuell och har ersatts av ClusterOperationsExtensions.UpdateGatewaySettings.

  • ConfigurationsOperationsExtensions.EnableHttp och DisableHttp ä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:

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:

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:

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 nya Set-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 /configurationsPOST /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.