Migrer vers un accès en fonction du rôle granulaire pour les configurations de cluster

Nous ajoutons d’importantes modifications pour pouvoir utiliser des accès basés sur les rôles encore plus détaillés pour obtenir des informations sensibles. Dans le cadre de ces modifications, des actions peuvent être nécessaires d’ici le 3 septembre 2019 si vous utilisez une des entités ou un des scénarios affectés.

Qu’est-ce qui change ?

Auparavant, les secrets pouvaient être obtenus par le biais de l’API HDInsight par des utilisateurs du cluster avec les rôles Azure Propriétaire, Contributeur ou Lecteur, car ils étaient accessibles à tout utilisateur ayant l’autorisation */read. Les secrets sont définis comme des valeurs pouvant être utilisées pour obtenir un accès supérieur à celui d’un rôle d’utilisateur. Ils comprennent des valeurs telles que les informations d’identification HTTP de la passerelle du cluster, les clés de compte de stockage et les informations d'identification de la base de données.

À compter du 3 septembre 2019, l'accès à ces secrets nécessitera une autorisation Microsoft.HDInsight/clusters/configurations/action. L'utilisateur ne pourra pas y accéder avec le rôle Lecteur. Les rôles qui disposent de cette autorisation sont Contributeur, Propriétaire et le nouveau rôle Opérateur de cluster HDInsight.

Nous introduisons également un nouveau rôle d'opérateur de cluster HDInsight, capable de récupérer des secrets sans disposer des autorisations administratives de contributeur ou de propriétaire. Pour résumer :

Role Précédemment À l’avenir
Lecteur - Un accès en lecture, notamment aux secrets. - Un accès en lecture, sans les secrets
Opérateur de cluster HDInsight
(Nouveau rôle)
N/A - Accès lecture/écriture, dont aux secrets
Contributeur - Un accès en lecture/écriture, notamment aux secrets.
- Création et gestion de tous les types de ressources Azure.
- Exécution des actions de script.
Aucun changement
Propriétaire - Un accès en lecture/écriture, notamment aux secrets.
- Accès total à toutes les ressources
- Délégation de l’accès à d’autres personnes.
- Exécution des actions de script.
Aucun changement

Pour plus d’informations sur l’attribution du rôle Opérateur de cluster HDInsight à un utilisateur afin de lui autoriser l’accès lecture/écriture aux secrets du cluster, consultez la section ci-dessous, Ajouter l’attribution de rôle Opérateur de cluster HDInsight à un utilisateur.

Suis-je concerné par ces modifications ?

Les entités et scénarios suivants sont concernés :

API

Les API suivantes sont modifiées ou obsolètes :

  • GET /configurations/{configurationName} (informations sensibles supprimées)
    • Précédemment utilisé pour obtenir les types de configuration individuels (y compris les secrets).
    • À partir du 3 septembre 2019, cet appel d’API retournera les types de configuration individuels avec les secrets omis. Pour obtenir toutes les configurations, dont les secrets, utilisez le nouvel appel POST/configurations. Pour obtenir uniquement les paramètres de passerelle, utilisez le nouvel appel POST/getGatewaySettings.
  • GET /configurations (déconseillé)
    • Précédemment utilisé pour obtenir toutes les configurations (y compris les secrets)
    • À partir du 3 septembre 2019, cet appel d’API sera déprécié et ne sera plus pris en charge. Pour obtenir toutes les configurations, à l’avenir, utilisez le nouvel appel POST/configurations. Pour obtenir des configurations avec des paramètres sensibles omis, utilisez l’appel GET /configurations/{configurationName}.
  • POST /configurations/{configurationName} (déconseillé)
    • Précédemment utilisé pour mettre à jour les informations d’identification de la passerelle.
    • À partir du 3 septembre 2019, cet appel d’API sera déprécié et ne sera plus pris en charge. Utilisez le nouvel appel POST /updateGatewaySettings à la place.

Les API de remplacement suivantes ont été ajoutées :

Azure HDInsight Tools pour Visual Studio Code

Si vous utilisez la version 1.1.1 ou une version inférieure, mettez à jour vers la dernière version d’Azure HDInsight Tools pour Visual Studio Code afin d’éviter toute interruption.

Kit de ressources Azure pour IntelliJ

Si vous utilisez la version 3.20.0 ou une version inférieure, mettez à jour vers la dernière version du plugin Azure Toolkit pour IntelliJ afin d’éviter toute interruption.

Azure Data Lake et Stream Analytics Tools pour Visual Studio

Mettez à jour vers la version 2.3.9000.1 ou ultérieure d’Azure Data Lake et Stream Analytics Tools pour Visual Studio afin d’éviter toute interruption. Pour faciliter la mise à jour, consultez notre documentation, Update Data Lake Tools for Visual Studio (Mettre à jour Data Lake Tools pour Visual Studio).

Kit de ressources Azure pour Eclipse

Si vous utilisez la version 3.15.0 ou une version inférieure, mettez à jour vers la dernière version d’Azure Toolkit pour Eclipse afin d’éviter toute interruption.

Kit SDK pour .NET

Versions 1.x et 2.x

Mettez à jour vers la version 2.1.0 du SDK HDInsight pour .NET. Des modifications minimes du code peuvent être nécessaires si vous utilisez une méthode affectée par ces changements :

  • ClusterOperationsExtensions.GetClusterConfigurationsne retournera plus de paramètres sensibles comme les clés de stockage (core-site) ou les informations d'identification HTTP (passerelle).

    • Pour récupérer toutes les configurations, y compris les paramètres sensibles, utilisez ClusterOperationsExtensions.ListConfigurations à l’avenir. Les utilisateurs ayant le rôle « Lecteur » ne peuvent pas utiliser cette méthode. Il permet un contrôle granulaire sur les utilisateurs qui peuvent accéder aux informations sensibles d'un cluster.
    • Pour récupérer des données d’identification de passerelle HTTP, utilisez ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings est maintenant déconseillé et a été remplacé par ClusterOperationsExtensions.GetGatewaySettings.

  • ClusterOperationsExtensions.ConfigureHttpSettings est maintenant déconseillé et a été remplacé par ClusterOperationsExtensions.UpdateGatewaySettings.

  • ConfigurationsOperationsExtensions.EnableHttp et DisableHttp sont désormais déconseillés. HTTP est désormais toujours activé. Ces méthodes ne sont donc plus nécessaires.

Versions 3.x et versions ultérieures

Mettez à jour vers la version 5.0.0 ou versions ultérieures du SDK HDInsight pour .NET. Des modifications minimes du code peuvent être nécessaires si vous utilisez une méthode affectée par ces changements :

Kit SDK pour Python

Mettez à jour vers la version 1.0.0 ou versions ultérieures du SDK HDInsight pour Python. Des modifications minimes du code peuvent être nécessaires si vous utilisez une méthode affectée par ces changements :

Kit SDK pour Java

Mettez à jour vers la version 1.0.0 ou versions ultérieures du SDK HDInsight pour Java. Des modifications minimes du code peuvent être nécessaires si vous utilisez une méthode affectée par ces changements :

  • ConfigurationsInner.getne retournera plus de paramètres sensibles comme les clés de stockage (core-site) ou les informations d'identification HTTP (passerelle).
  • ConfigurationsInner.update est désormais déconseillé.

Kit SDK pour Go

Mettez à jour vers la version 27.1.0 ou versions ultérieures du SDK HDInsight pour Go. Des modifications minimes du code peuvent être nécessaires si vous utilisez une méthode affectée par ces changements :

Az.HDInsight PowerShell

Mettez à jour vers la version 2.0.0 d’Az PowerShell ou version ultérieure afin d’éviter toute interruption. Des modifications minimes du code peuvent être nécessaires si vous utilisez une méthode affectée par ces changements.

  • Grant-AzHDInsightHttpServicesAccess est maintenant déconseillé et a été remplacé par la nouvelle cmdlet Set-AzHDInsightGatewayCredential.
  • Get-AzHDInsightJobOutput a été mise à jour de façon à prendre en charge la précision de l’accès en fonction du rôle à la clé de stockage.
    • Les utilisateurs dotés des rôles Opérateur de cluster HDInsight, Contributeur ou Propriétaire ne sont pas concernés.
    • Les utilisateurs disposant uniquement du rôle Lecteur doivent spécifier explicitement le paramètre DefaultStorageAccountKey.
  • Revoke-AzHDInsightHttpServicesAccess est désormais déconseillé. HTTP est désormais toujours activé. Cette cmdlet n’est donc plus nécessaire. Pour plus de détails, consultez le guide de migration az.HDInsight.

Ajouter l’attribution de rôle Opérateur de cluster HDInsight à un utilisateur

Un utilisateur disposant du rôle Propriétaire peut attribuer le rôle Opérateur de cluster HDInsight aux utilisateurs auxquels vous voulez donner l’accès en lecture/écriture à des valeurs de configuration sensibles de cluster HDInsight (telles que les informations d’identification de la passerelle du cluster et les clés de compte de stockage).

Utilisation de l’interface de ligne de commande Azure (CLI)

La façon la plus simple pour ajouter cette attribution de rôle consiste à utiliser la commande az role assignment create dans Azure CLI.

Notes

Cette commande doit être exécutée par un utilisateur avec le rôle Propriétaire, car ils sont les seuls à pouvoir accorder ces autorisations. --assignee correspond au nom du principal de service ou à l’adresse e-mail de l’utilisateur à qui vous souhaitez attribuer le rôle Opérateur de cluster HDInsight. Si vous recevez une erreur d'autorisations insuffisantes, consultez la FAQ.

Attribuer un rôle au niveau des ressources (cluster)

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

Attribuer un rôle au niveau du groupe de ressources

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

Attribuer un rôle au niveau de l’abonnement

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

Utilisation du portail Azure

Vous pouvez également utiliser le portail Azure pour ajouter l’attribution du rôle Opérateur de cluster HDInsight à un utilisateur. Consultez la documentation, Attribuer des rôles Azure à l’aide du portail Azure.

Questions fréquentes (FAQ)

Pourquoi est-ce que je vois une réponse 403 (Interdit) après la mise à jour de mes demandes d’API et/ou de l’outil ?

Les configurations de cluster se trouvent maintenant derrière un contrôle d’accès en fonction du rôle précis et nécessitent l’autorisation Microsoft.HDInsight/clusters/configurations/* pour y accéder. Pour obtenir cette autorisation, attribuez le rôle Opérateur de cluster HDInsight, Contributeur ou Propriétaire au principal de service ou à l’utilisateur qui tente d’accéder aux configurations.

Pourquoi est-ce que je vois « Privilèges insuffisants pour effectuer l’opération » lors de l’exécution de la commande Azure CLI pour attribuer le rôle Opérateur de cluster HDInsight à un autre utilisateur ou principal de service ?

En plus d'avoir le rôle de propriétaire, l'utilisateur ou le principal du service exécutant la commande doit disposer d'autorisations Microsoft Entra suffisantes pour rechercher les ID d'objet du destinataire. Ce message indique des autorisations Microsoft Entra insuffisantes. Essayez de remplacer l’argument -–assignee par –assignee-object-id et fournissez l’ID d’objet de la personne responsable en tant que paramètre au lieu du nom (ou l’ID du principal dans le cas d’une identité managée). Pour plus d’informations, consultez la section des paramètres facultatifs de la documentation relative à az role assignment create.

Si cela ne fonctionne toujours pas, contactez votre administrateur Microsoft Entra pour acquérir les autorisations appropriées.

Que se passe-t-il si je n’effectue aucune action ?

À partir du 3 septembre 2019, les appels à GET /configurations et POST /configurations/gateway ne retourneront plus d’informations et l’appel à GET /configurations/{configurationName} ne retournera plus de paramètres sensibles comme les clés de compte de stockage ou le mot de passe du cluster. Il en va de même pour les méthodes du kit SDK et les applets de commande PowerShell correspondantes.

Si vous utilisez une ancienne version de l'un des outils pour Visual Studio, VSCode, IntelliJ ou Eclipse mentionnés, il ne fonctionnera plus jusqu'à la mise à jour.

Pour obtenir des informations plus détaillées, consultez la section correspondante de ce document pour votre scénario.