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: Benutzer der Endpunkte
/configurations
oder/configurations/{configurationName}
. - Azure HDInsight Tools for Visual Studio Code, Version 1.1.1.1 oder niedriger
- Azure-Toolkit für IntelliJ, Version 3.20.0 oder niedriger
- Azure Data Lake und Stream Analytics-Tools für Visual StudioVersion 2.3.9000.1.
- Azure-Toolkit für Eclipse, Version 3.15.0 oder niedriger.
- SDK für .NET
- Versionen 1.x oder 2.x: Benutzer, die die Methoden
GetClusterConfigurations
,GetConnectivitySettings
,ConfigureHttpSettings
,EnableHttp
oderDisableHttp
aus der ConfigurationsOperationsExtensions-Klasse verwenden. - Versionen 3.x und höher: Benutzer, die die Methoden
Get
,Update
,EnableHttp
oderDisableHttp
aus derConfigurationsOperationsExtensions
-Klasse verwenden.
- Versionen 1.x oder 2.x: Benutzer, die die Methoden
- SDK für Python: Benutzer, die die Methoden
get
oderupdate
aus derConfigurationsOperations
-Klasse verwenden. - SDK für Java: Benutzer, die die Methoden
update
oderget
aus derConfigurationsInner
-Klasse verwenden. - SDK für Go: Benutzer, die die Methoden
Get
oderUpdate
aus derConfigurationsClient
-Struktur verwenden. - Az.HDInsight PowerShell, Version 2.0.0. Die Migrationsschritte für Ihr Szenario finden Sie in den Abschnitten unten (oder verwenden Sie die Links oben).
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:
- POST /configurations
- Verwenden Sie diese API, um alle Konfigurationen abzurufen, einschließlich der Geheimnisse.
- POST /getGatewaySettings
- Verwenden Sie diese API, um Gatewayeinstellungen abzurufen.
- POST /updateGatewaySettings
- Verwenden Sie diese API zum Aktualisieren von Gatewayeinstellungen (Benutzername und/oder Kennwort).
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
.
- Um alle Konfigurationen einschließlich der sensiblen Parameter zurückzugeben, verwenden Sie zukünftig
ClusterOperationsExtensions.GetConnectivitySettings
ist mittlerweile veraltet und wurde durchClusterOperationsExtensions.GetGatewaySettings
ersetzt.ClusterOperationsExtensions.ConfigureHttpSettings
ist mittlerweile veraltet und wurde durchClusterOperationsExtensions.UpdateGatewaySettings
ersetzt.ConfigurationsOperationsExtensions.EnableHttp
undDisableHttp
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:
ConfigurationOperationsExtensions.Get
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
ConfigurationOperationsExtensions.List
. 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
.
- Um alle Konfigurationen einschließlich der sensiblen Parameter zurückzugeben, verwenden Sie zukünftig
ConfigurationsOperationsExtensions.Update
ist mittlerweile veraltet und wurde durchClusterOperationsExtensions.UpdateGatewaySettings
ersetzt.ConfigurationsOperationsExtensions.EnableHttp
undDisableHttp
sind jetzt veraltet. HTTP ist jetzt immer aktiviert, sodass diese Methoden nicht mehr benötigt werden.
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:
ConfigurationsOperations.get
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
ConfigurationsOperations.list
. 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
ClusterOperations.get_gateway_settings
.
- Um alle Konfigurationen einschließlich der sensiblen Parameter zurückzugeben, verwenden Sie zukünftig
ConfigurationsOperations.update
ist mittlerweile veraltet und wurde durchClusterOperations.update_gateway_settings
ersetzt.
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:
ConfigurationsClient.get
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
ConfigurationsClient.list
. 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
ClustersClient.get_gateway_settings
.
- Um alle Konfigurationen einschließlich der sensiblen Parameter zurückzugeben, verwenden Sie zukünftig
ConfigurationsClient.update
ist mittlerweile veraltet und wurde durchClustersClient.update_gateway_settings
ersetzt.
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 CmdletSet-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.