Freigeben über


Migrieren zu präzisem rollenbasiertem Zugriff für Clusterkonfigurationen

Wir führen einige wichtige Änderungen ein, um einen differenzierten rollenbasierten Zugriff zu unterstützen, um vertrauliche Informationen zu erhalten. Im Rahmen dieser Änderungen kann bis zum 3. September 2019 eine Aktion erforderlich sein, wenn Sie eine der betroffenen Entitäten/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. Geheime Schlüssel werden als Werte definiert, die verwendet werden können, um erhöhten Zugriff zu erhalten, als die Rolle eines Benutzers zulassen sollte, z. B. HTTP-Anmeldeinformationen für Clustergateway, Speicherkontoschlü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:

Rolle Bisher Zukünftige Entwicklung
Leser - Lesezugriff, einschließlich Geheimnissen - Lesezugriff, mit Ausnahme von Geheimnissen
HDInsight-Clusteroperator
(Neue Rolle)
Nicht verfügbar - Lese-/Schreibzugriff, einschließlich Geheimnisse
Beitragender - 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 darüber, wie Sie die Rollenzuweisung des HDInsight-Clusteroperators zu einem Benutzer hinzufügen, um ihm Lese-/Schreibzugriff auf Clustergeheimnisse zu gewähren, finden Sie unter Hinzufügen der Rollenzuweisung des HDInsight-Clusteroperators zu einem Benutzer.

Verstehen, ob Ihre Entitäten oder Szenarien betroffen sind

Die folgenden Entitäten und Szenarien sind betroffen:

Programmierschnittstelle (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 jetzt einzelne Konfigurationstypen zurück, bei der geheime Schlüssel weggelassen werden. 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 veraltet 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/{configurationName} (veraltet)
    • Bisher zum Aktualisieren der Gatewayanmeldeinformationen verwendet.
    • Ab dem 3. September 2019 ist dieser API-Aufruf veraltet 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 unten verwenden, aktualisieren Sie auf die neueste Version von Azure HDInsight Tools für Visual Studio Code , um Unterbrechungen zu vermeiden.

Azure Toolkit für IntelliJ

Wenn Sie Version 3.20.0 oder unten verwenden, aktualisieren Sie 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 unten verwenden, aktualisieren Sie auf die neueste Version des Azure Toolkits 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. Es können minimale Codeänderungen erforderlich sein, wenn Sie eine von diesen Änderungen betroffene Methode verwenden:

  • ClusterOperationsExtensions.GetClusterConfigurations gibt keine vertraulichen Parameter mehr zurück, z. B. Speicherschlüssel (Core-Site) oder HTTP-Anmeldeinformationen (Gateway).

    • Um alle Konfigurationen einschließlich der sensiblen Parameter zurückzugeben, verwenden Sie zukünftig ClusterOperationsExtensions.ListConfigurations. Benutzer mit der Rolle "Leser" 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 veraltet und ersetzt durch ClusterOperationsExtensions.GetGatewaySettings.

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

  • ConfigurationsOperationsExtensions.EnableHttp und DisableHttp sind veraltet. HTTP ist 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. Es können minimale Codeänderungen erforderlich sein, 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. Es können minimale Codeänderungen erforderlich sein, 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. Es können minimale Codeänderungen erforderlich sein, wenn Sie eine von diesen Änderungen betroffene Methode verwenden:

  • ConfigurationsInner.get gibt keine vertraulichen Parameter mehr zurück, z. B. Speicherschlüssel (Core-Site) oder HTTP-Anmeldeinformationen (Gateway).
  • ConfigurationsInner.update ist veraltet.

SDK für Go

Aktualisieren Sie auf Version 27.1.0 oder höher des HDInsight SDK für Go. Es können minimale Codeänderungen erforderlich sein, 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. Es können minimale Codeänderungen erforderlich sein, wenn Sie eine von diesen Änderungen betroffene Methode verwenden.

  • Grant-AzHDInsightHttpServicesAccess wird veraltet und durch das neue Set-AzHDInsightGatewayCredential Cmdlet ersetzt.
  • Get-AzHDInsightJobOutput wurde aktualisiert, um den detaillierten rollenbasierten Zugriff auf den Speicherschlüssel zu unterstützen.
    • Benutzer mit HDInsight-Clusteroperator-, Mitwirkenden- oder Besitzerrollen sind nicht betroffen.
    • Benutzer, die nur über die Rolle „Leser“ verfügen, müssen den Parameter DefaultStorageAccountKey explizit angeben.
  • Revoke-AzHDInsightHttpServicesAccess ist veraltet. HTTP ist 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.

Wenn sie immer noch nicht funktioniert, wenden Sie sich an Ihren Microsoft Entra-Administrator, um die richtigen Berechtigungen zu erhalten.

Was geschieht, wenn ich keine Aktion ergreift?

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

Wenn Sie eine ältere Version eines der Tools für Visual Studio, VS Code, IntelliJ oder Eclipse verwenden, funktioniert sie nicht mehr, bis Sie ein Update durchführen.

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