Migrieren zu präzisem rollenbasiertem Zugriff für Clusterkonfigurationen

Wir führen einige wichtige Änderungen ein, um differenzierteren rollenbasierten Zugriff zum Abrufen vertraulicher Informationen zu bieten. Im Rahmen dieser Änderungen müssen Sie möglicherweise bis zum 3. September 2019 aktiv werden, wenn Sie eine der betroffenen Entitäten bzw. eines der betroffenen Szenarien verwenden.

Was ändert sich?

Bisher konnten Geheimnisse von Clusterbenutzern mit den Azure-Rollen „Besitzer“, „Mitwirkender“ oder „Leser“ über die HDInsight-API abgerufen werden, da sie für jeden mit der Berechtigung */read verfügbar waren. Geheimnisse sind als Werte definiert, mit denen ein Zugriff mit erhöhten Rechten möglich ist, als es die Rolle eines Benutzers gestatten sollte. Dazu zählen Werte wie Clustergateway-HTTP-Anmeldeinformationen, Speicherkontenschlüssel und Datenbankanmeldeinformationen.

Ab dem 3. September 2019 ist für den Zugriff auf diese Geheimnisse die Berechtigung Microsoft.HDInsight/clusters/configurations/action erforderlich, d. h., dass Benutzer mit der Rolle „Leser“ nicht mehr darauf zugreifen können. Die Rollen, die über diese Berechtigung verfügen, sind „Mitwirkender“, „Besitzer“ und die neue Rolle „HDInsight-Clusteroperator“.

Wir führen außerdem eine neue Rolle ein (HDInsight-Clusteroperator), mit der Geheimnisse ohne die Administratorberechtigungen der Rollen „Mitwirkender“ oder „Besitzer“ abgerufen werden können. Zusammenfassung:

Role Bisher Zukünftige Entwicklung
Leser - Lesezugriff, einschließlich Geheimnissen - Lesezugriff, mit Ausnahme von Geheimnissen
HDInsight-Clusteroperator
(Neue Rolle)
- Lese-/Schreibzugriff, einschließlich Geheimnisse
Mitwirkender - Lese-/Schreibzugriff, einschließlich Geheimnissen
- Erstellen und Verwalten aller Arten von Azure-Ressourcen
- Ausführen von Skriptaktionen
Keine Änderung
Besitzer - Lese-/Schreibzugriff, einschließlich Geheimnissen
- Vollzugriff auf alle Ressourcen
- Delegieren des Zugriffs an andere Personen
- Ausführen von Skriptaktionen
Keine Änderung

Informationen dazu, wie Sie einem Benutzer die HDInsight-Clusteroperatorrolle hinzufügen, um ihm Lese-/Schreibzugriff auf Clustergeheimnisse zu geben, finden Sie im nachfolgenden Abschnitt Hinzufügen der HDInsight-Clusteroperator-Rollenzuweisung zu einem Benutzer.

Bin ich von diesen Änderungen betroffen?

Die folgenden Entitäten und Szenarien sind betroffen:

API

Die folgenden APIs werden geändert oder als veraltet gekennzeichnet:

  • GET /configurations/{NamederKonfiguration} (vertrauliche Informationen entfernt)
    • Bisher zum Abrufen einzelner Konfigurationstypen (einschließlich Geheimnissen) verwendet.
    • Ab dem 3. September 2019 gibt dieser API-Aufruf einzelne Konfigurationstypen ohne Angabe der Geheimnisse zurück. Um alle Konfigurationen einschließlich der Geheimnisse abzurufen, verwenden Sie den neuen Aufruf „POST /configurations“. Um lediglich Gatewayeinstellungen abzurufen, verwenden Sie den neuen Aufruf „POST /getGatewaySettings“.
  • GET /configurations (veraltet)
    • Bisher zum Abrufen aller Konfigurationen (einschließlich der Geheimnisse) verwendet
    • Ab dem 3. September 2019 ist dieser API-Aufruf als veraltet gekennzeichnet und wird nicht mehr unterstützt. Um zukünftig alle Konfigurationen abzurufen, verwenden Sie den neuen Aufruf „POST /configurations“. Um Konfigurationen abzurufen und dabei sensible Parameter auszulassen, verwenden Sie den Aufruf „GET /configurations/{NamederKonfiguration}“.
  • POST /configurations/{NamederKonfiguration} (veraltet)
    • Bisher zum Aktualisieren der Gatewayanmeldeinformationen verwendet.
    • Ab dem 3. September 2019 ist dieser API-Aufruf als veraltet gekennzeichnet und wird nicht mehr unterstützt. Verwenden Sie stattdessen das neue „POST /updateGatewaySettings“.

Die folgenden APIs wurden als Ersatz hinzugefügt:

Azure HDInsight Tools for Visual Studio Code

Wenn Sie Version 1.1.1 oder niedriger verwenden, aktualisieren Sie bitte auf die neueste Version von Azure HDInsight Tools for Visual Studio Code, um Unterbrechungen zu vermeiden.

Azure Toolkit für IntelliJ

Wenn Sie Version 3.20.0 oder niedriger verwenden, aktualisieren Sie bitte auf die neueste Version des Azure Toolkit für IntelliJ-Plug-Ins, um Unterbrechungen zu vermeiden.

Azure Data Lake und Stream Analytics-Tools für Visual Studio

Aktualisieren Sie auf Version 2.3.9000.1 oder höher von Azure Data Lake und Stream Analytics-Tools für Visual Studio, um Unterbrechungen zu vermeiden. Hilfe beim Aktualisieren finden Sie in unserer Dokumentation unter Aktualisieren von Data Lake Tools für Visual Studio.

Azure-Toolkit für Eclipse

Wenn Sie Version 3.15.0 oder niedriger verwenden, aktualisieren Sie bitte auf die neueste Version des Azure-Toolkit für Eclipse, um Unterbrechungen zu vermeiden.

SDK für .NET

Versionen 1.x und 2.x

Aktualisieren Sie auf Version 2.1.0 des HDInsight SDK für .NET. Möglicherweise sind minimale Codeänderungen erforderlich, wenn Sie eine von diesen Änderungen betroffene Methode verwenden:

  • ClusterOperationsExtensions.GetClusterConfigurations gibt keine sensitiven Parameter wie Speicherschlüssel (Kernwebsite) oder HTTP-Anmeldeinformationen (Gateway) mehr zurück.

    • Um alle Konfigurationen einschließlich der sensiblen Parameter zurückzugeben, verwenden Sie zukünftig ClusterOperationsExtensions.ListConfigurations. Benutzer mit der Rolle "Reader" können diese Methode nicht verwenden. Dadurch ist eine differenzierte Kontrolle der Benutzer möglich, die auf sensible Informationen für einen Cluster zugreifen können.
    • Um lediglich HTTP-Gatewayanmeldeinformationen abzurufen, verwenden Sie ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings ist mittlerweile veraltet und wurde durch ClusterOperationsExtensions.GetGatewaySettings ersetzt.

  • ClusterOperationsExtensions.ConfigureHttpSettings ist mittlerweile veraltet und wurde durch ClusterOperationsExtensions.UpdateGatewaySettings ersetzt.

  • ConfigurationsOperationsExtensions.EnableHttp und DisableHttp sind jetzt veraltet. HTTP ist jetzt immer aktiviert, sodass diese Methoden nicht mehr benötigt werden.

Versionen 3.x und höher

Aktualisieren Sie auf Version 5.0.0 oder höher des HDInsight SDK für .NET. Möglicherweise sind minimale Codeänderungen erforderlich, wenn Sie eine von diesen Änderungen betroffene Methode verwenden:

SDK für Python

Aktualisieren Sie auf Version 1.0.0 oder höher des HDInsight SDK für Python. Möglicherweise sind minimale Codeänderungen erforderlich, wenn Sie eine von diesen Änderungen betroffene Methode verwenden:

SDK für Java

Aktualisieren Sie auf Version 1.0.0 oder höher des HDInsight SDK für Java. Möglicherweise sind minimale Codeänderungen erforderlich, wenn Sie eine von diesen Änderungen betroffene Methode verwenden:

  • ConfigurationsInner.get gibt keine sensitiven Parameter wie Speicherschlüssel (Kernwebsite) oder HTTP-Anmeldeinformationen (Gateway) mehr zurück.
  • ConfigurationsInner.update gilt jetzt als veraltet.

SDK für Go

Aktualisieren Sie auf Version 27.1.0 oder höher des HDInsight SDK für Go. Möglicherweise sind minimale Codeänderungen erforderlich, wenn Sie eine von diesen Änderungen betroffene Methode verwenden:

Az.HDInsight PowerShell

Aktualisieren Sie auf Az PowerShell, Version 2.0.0 oder höher, um Unterbrechungen zu vermeiden. Möglicherweise sind minimale Codeänderungen erforderlich, wenn Sie eine von diesen Änderungen betroffene Methode verwenden.

  • Grant-AzHDInsightHttpServicesAccess ist mittlerweile veraltet und wurde durch das neue Cmdlet Set-AzHDInsightGatewayCredential ersetzt.
  • Get-AzHDInsightJobOutput wurde aktualisiert, um den detaillierten rollenbasierten Zugriff auf den Speicherschlüssel zu unterstützen.
    • Benutzer mit den Rollen HDInsight-Clusteroperator, -mitwirkender oder -besitzer sind davon nicht betroffen.
    • Benutzer, die nur über die Rolle „Leser“ verfügen, müssen den Parameter DefaultStorageAccountKey explizit angeben.
  • Revoke-AzHDInsightHttpServicesAccess gilt jetzt als veraltet. HTTP ist jetzt immer aktiviert, sodass dieses Cmdlet nicht mehr benötigt wird. Weitere Details finden Sie im az.HDInsight-Migrationsleitfaden.

Hinzufügen der HDInsight-Clusteroperator-Rollenzuweisung zu einem Benutzer

Ein Benutzer mit der Rolle Besitzer kann Benutzern, die Lese-/Schreibzugriff auf sensible HDInsight-Clusterkonfigurationswerte (wie Anmeldeinformationen für das Clustergateway und Speicherkontoschlüssel) benötigen, die Rolle HDInsight-Clusteroperator zuweisen.

Verwenden der Azure-Befehlszeilenschnittstelle

Die einfachste Möglichkeit zum Hinzufügen dieser Rollenzuweisung bietet der Befehl az role assignment create an der Azure-Befehlszeilenschnittstelle.

Hinweis

Dieser Befehl muss von einem Benutzer mit der Rolle „Besitzer“ ausgeführt werden, da diese Berechtigungen nur von einem solchen Benutzer erteilt werden können. --assignee ist der Name des Dienstprinzipals oder die E-Mail-Adresse des Benutzers, dem Sie die Rolle „HDInsight-Clusteroperator“ zuweisen möchten. Sollte ein Fehler aufgrund unzureichender Berechtigungen auftreten, lesen Sie die häufig gestellten Fragen.

Gewähren einer Rolle auf Ressourcenebene (Cluster)

az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

Gewähren einer Rolle auf Ressourcengruppenebene

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>

Gewähren einer Rolle auf Abonnementebene

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com

Verwenden des Azure-Portals

Sie können alternativ das Azure-Portal verwenden, um einem Benutzer die HDInsight-Clusteroperator-Rollenzuweisung hinzuzufügen. Weitere Informationen finden Sie in der Dokumentation zum Zuweisen von Azure-Rollen über das Azure-Portal.

Häufig gestellte Fragen

Warum erhalte ich nach dem Aktualisieren meiner API-Anforderungen und/oder meines Tools eine Antwort vom Typ „403 (Verboten)“?

Clusterkonfigurationen befinden sind jetzt hinter einer differenzierten rollenbasierten Zugriffssteuerung, und für den Zugriff wird die Berechtigung Microsoft.HDInsight/clusters/configurations/* benötigt. Weisen Sie dem Benutzer oder Dienstprinzipal, der auf Konfigurationen zugreifen möchte, die Rolle „HDInsight-Clusteroperator“, „Mitwirkender“ oder „Besitzer“ zu, um ihm diese Berechtigung zu erteilen.

Warum wird die Meldung „Nicht genügend Berechtigungen zum Abschließen des Vorgangs.“ angezeigt, wenn ich versuche, einem anderen Benutzer oder Dienstprinzipal mithilfe des entsprechenden Azure CLI-Befehls die Rolle „HDInsight-Clusteroperator“ zuzuweisen?

Der Benutzer oder Dienstprinzipal, der den Befehl ausführt, muss neben der Rolle „Besitzer“ auch über ausreichende Microsoft Entra-Berechtigungen verfügen, um nach den Objekt-IDs der zugewiesenen Person zu suchen. Diese Meldung deutet auf unzureichende Microsoft Entra-Berechtigungen hin. Ersetzen Sie das Argument -–assignee durch –assignee-object-id, und geben Sie als Parameter anstelle des Namens die Objekt-ID der zugewiesenen Person (oder im Falle einer verwalteten Identität: die Prinzipal-ID) an. Weitere Informationen finden Sie in der Dokumentation zu „az role assignment create“ im Abschnitt zu optionalen Parametern.

Sollte das Problem weiterhin bestehen, wenden Sie sich an Ihren Microsoft Entra-Administrator, um die korrekten Berechtigungen zu erhalten.

Was passiert, wenn ich nichts unternehme?

Ab dem 3. September 2019 werden für einen Aufruf von GET /configurations oder POST /configurations/gateway keine Informationen mehr zurückgegeben, und der Aufruf von GET /configurations/{configurationName} gibt keine vertraulichen Parameter wie Speicherkontoschlüssel oder das Clusterkennwort mehr zurück. Gleiches gilt für die entsprechenden SDK-Methoden und PowerShell-Cmdlets.

Wenn Sie eine ältere Version eines der erwähnten Tools für Visual Studio, VSCode, IntelliJ oder Eclipse verwenden, funktionieren diese erst nach einem Update wieder.

Ausführlichere Informationen finden Sie im entsprechenden Abschnitt dieses Dokuments für Ihr Szenario.