Freigeben über


Migrieren zu präzisem rollenbasiertem Zugriff für Clusterkonfigurationen

Wir führen einige wichtige Änderungen ein, um einen feinkörnigeren rollenbasierten Zugriff auf vertrauliche Informationen zu unterstützen. Im Rahmen dieser Änderungen sind möglicherweise bis zum 3. September 2019 Maßnahmen erforderlich, wenn Sie eine der betroffenen Entitäten/Szenarien verwenden.

Was ändert sich?

Zuvor konnten Geheimnisse über die HDInsight-API von Clusterbenutzern abgerufen werden, die über die Azure-Rollen "Besitzer", "Mitwirkender" oder "Leser" verfügten, da sie für jeden mit der */read Berechtigung verfügbar waren. Geheimnisse sind als Werte definiert, die verwendet werden können, um einen höheren Zugriff zu erhalten, als die Rolle eines Benutzers zulassen sollte. Dazu gehören Werte wie HTTP-Anmeldeinformationen für das Clustergateway, Speicherkontoschlüssel und Datenbankanmeldeinformationen.

Ab dem 3. September 2019 ist für den Zugriff auf diese Geheimnisse die Microsoft.HDInsight/clusters/configurations/action Berechtigung erforderlich, der Benutzer kann nicht mit der Rolle "Leser" darauf zugreifen. Die Rollen mit dieser Berechtigung sind "Mitwirkender", "Besitzer" und die neue Rolle "HDInsight-Clusteroperator".

Außerdem führen wir eine neue HDInsight-Clusteroperatorrolle ein, mit der Geheimnisse abgerufen werden können, ohne dass die Administratorberechtigungen "Mitwirkender" oder "Besitzer" erteilt werden müssen. Zusammenfassung:

Rolle Zuvor Von jetzt an
Leser - Lesezugriff, einschließlich Geheimnisse. - Lesezugriff, ohne Geheimnisse
HDInsight-Clusteroperator
(Neue Rolle)
Nicht verfügbar - Lese-/Schreibzugriff, einschließlich Geheimnisse
Beitragender - Lese-/Schreibzugriff, einschließlich Geheimnisse.
- Erstellen und Verwalten aller Arten von Azure-Ressourcen.
- Ausführen von Skriptaktionen.
Keine Änderung
Besitzer - Lese-/Schreibzugriff einschließlich Geheimnissen.
- Voller Zugriff auf alle Ressourcen
- Delegieren Sie den Zugriff an andere.
- Ausführen von Skriptaktionen.
Keine Änderung

Informationen zum Hinzufügen der Rollenzuweisung "HDInsight-Clusteroperator" zu einem Benutzer, um ihm Lese-/Schreibzugriff auf Clustergeheimnisse zu gewähren, finden Sie im folgenden Abschnitt Hinzufügen der Rollenzuweisung "HDInsight-Clusteroperator" für einen Benutzer.

Bin ich von diesen Änderungen betroffen?

Die folgenden Entitäten und Szenarien sind betroffen:

Programmierschnittstelle (API)

Die folgenden APIs sind geändert oder veraltet:

  • GET /configurations/{configurationName} (vertrauliche Informationen entfernt)
    • Wird zuvor zum Abrufen einzelner Konfigurationstypen (einschließlich Geheimnisse) verwendet.
    • Ab dem 3. September 2019 gibt dieser API-Aufruf nun einzelne Konfigurationstypen zurück, bei denen Geheimnisse weggelassen werden. Um alle Konfigurationen, einschließlich Geheimnisse, abzurufen, verwenden Sie den neuen POST /configurations-Aufruf. Um nur Gatewayeinstellungen abzurufen, verwenden Sie den neuen POST /getGatewaySettings-Aufruf.
  • GET /configurations (veraltet)
    • Wurde zuvor zum Abrufen aller Konfigurationen (einschließlich Geheimnisse) verwendet
    • Ab dem 3. September 2019 wird dieser API-Aufruf veraltet sein und nicht mehr unterstützt. Um alle zukünftigen Konfigurationen abzurufen, verwenden Sie den neuen POST /configurations-Aufruf. Um Konfigurationen zu erhalten, bei denen vertrauliche Parameter weggelassen werden, verwenden Sie den Aufruf GET /configurations/{configurationName}.
  • POST /configurations/{configurationName} (veraltet)
    • Wird zuvor zum Aktualisieren von Gateway-Anmeldeinformationen verwendet.
    • Ab dem 3. September 2019 wird dieser API-Aufruf veraltet sein und nicht mehr unterstützt. Verwenden Sie stattdessen das neue POST /updateGatewaySettings.

Die folgenden Ersatz-APIs wurden hinzugefügt:

Azure HDInsight-Tools für Visual Studio Code

Wenn Sie Version 1.1.1 oder niedriger 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 niedriger verwenden, aktualisieren Sie auf die neueste Version des Plug-Ins Azure-Toolkit für IntelliJ , 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 zum Aktualisieren finden Sie in unserer Dokumentation 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 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. Möglicherweise sind minimale Codeänderungen erforderlich, wenn Sie eine Methode verwenden, die von diesen Änderungen betroffen ist:

  • ClusterOperationsExtensions.GetClusterConfigurations gibt keine sensiblen Parameter wie Speicherschlüssel (core-site) oder HTTP-Anmeldeinformationen (gateway) mehr zurück.

    • Um alle Konfigurationen, einschließlich sensibler Parameter, abzurufen, verwenden Sie ClusterOperationsExtensions.ListConfigurations in Zukunft. Benutzer mit der Rolle "Leser" können diese Methode nicht verwenden. Es ermöglicht eine granulare Kontrolle darüber, welche Benutzer auf vertrauliche Informationen für einen Cluster zugreifen können.
    • Um nur die Anmeldeinformationen für das HTTP-Gateway abzurufen, verwenden Sie ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings ist jetzt veraltet und wurde durch ClusterOperationsExtensions.GetGatewaySettingsersetzt.

  • ClusterOperationsExtensions.ConfigureHttpSettings ist jetzt veraltet und wurde durch ClusterOperationsExtensions.UpdateGatewaySettingsersetzt.

  • ConfigurationsOperationsExtensions.EnableHttp und DisableHttp sind jetzt veraltet. HTTP ist jetzt immer aktiviert, so dass 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 Methode verwenden, die von diesen Änderungen betroffen ist:

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 Methode verwenden, die von diesen Änderungen betroffen ist:

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 Methode verwenden, die von diesen Änderungen betroffen ist:

  • ConfigurationsInner.get gibt keine sensiblen Parameter wie Speicherschlüssel (core-site) oder HTTP-Anmeldeinformationen (gateway) mehr zurück.
  • ConfigurationsInner.update ist jetzt veraltet.

SDK für unterwegs

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 Methode verwenden, die von diesen Änderungen betroffen ist:

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 Methode verwenden, die von diesen Änderungen betroffen ist.

  • Grant-AzHDInsightHttpServicesAccess ist jetzt veraltet und wurde durch das Set-AzHDInsightGatewayCredential neue Cmdlet ersetzt.
  • Get-AzHDInsightJobOutput Wurde aktualisiert, um den granularen 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 DefaultStorageAccountKey Parameter explizit angeben.
  • Revoke-AzHDInsightHttpServicesAccess ist jetzt veraltet. HTTP ist jetzt immer aktiviert, sodass dieses Cmdlet nicht mehr benötigt wird. Siehe die az. Weitere Informationen finden Sie im HDInsight-Migrationshandbuch .

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

Ein Benutzer mit der Rolle "Besitzer " kann die Rolle "HDInsight-Clusteroperator" Benutzern zuweisen, denen Sie Lese-/Schreibzugriff auf vertrauliche HDInsight-Clusterkonfigurationswerte (z. B. Anmeldeinformationen für das Clustergateway und Speicherkontoschlüssel) gewähren möchten.

Verwenden der Azure-Befehlszeilenschnittstelle

Die einfachste Möglichkeit, diese Rollenzuweisung hinzuzufügen, ist die Verwendung des az role assignment create Befehls in der Azure CLI.

Hinweis

Dieser Befehl muss von einem Benutzer mit der Rolle "Besitzer" ausgeführt werden, da nur er diese Berechtigungen erteilen kann. Dies --assignee ist der Name des Dienstprinzipals oder die E-Mail-Adresse des Benutzers, dem Sie die Rolle "HDInsight-Clusteroperator" zuweisen möchten. Wenn Sie einen Fehler mit unzureichenden Berechtigungen erhalten, lesen Sie die häufig gestellten Fragen.

Erteilen 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>

Erteilen einer Rolle auf Ressourcengruppenebene

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

Erteilen einer Rolle auf Abonnementebene

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

Verwenden des Azure-Portals

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

Häufig gestellte Fragen

Warum wird nach dem Aktualisieren meiner API-Anfragen und/oder meines Tools die Antwort 403 (Forbidden) angezeigt?

Clusterkonfigurationen befinden sich jetzt hinter einer granularen rollenbasierten Zugriffskontrolle und erfordern die Microsoft.HDInsight/clusters/configurations/* Berechtigung für den Zugriff. Um diese Berechtigung zu erhalten, weisen Sie dem Benutzer oder Dienstprinzipal, der versucht, auf Konfigurationen zuzugreifen, die Rolle "HDInsight-Clusteroperator", "Mitwirkender" oder "Besitzer" zu.

Warum wird beim Ausführen des Azure CLI-Befehls zum Zuweisen der Rolle "HDInsight-Clusteroperator" zum Zuweisen der Rolle "HDInsight-Clusteroperator" einem anderen Benutzer oder Dienstprinzipal angezeigt?

Zusätzlich zur Rolle "Besitzer" muss der Benutzer oder Dienstprinzipal, der den Befehl ausführt, über ausreichende Microsoft Entra-Berechtigungen verfügen, um die Objekt-IDs des Beauftragten nachzuschlagen. Diese Meldung weist auf unzureichende Microsoft Entra-Berechtigungen hin. Versuchen Sie, das -–assignee Argument durch –assignee-object-id zu ersetzen, und geben Sie die Objekt-ID des Beauftragten als Parameter anstelle des Namens (oder die Prinzipal-ID im Fall einer verwalteten Identität) an. Weitere Informationen finden Sie im Abschnitt optionale Parameter der Dokumentation az role assignment create .

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

Was passiert, wenn ich nichts unternehme?

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

Wenn Sie eine ältere Version eines der genannten Tools für Visual Studio, VS Code, IntelliJ oder Eclipse verwenden, funktioniert es bis zum Update nicht mehr.

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