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 : Utilisateurs ayant recours aux points de terminaison
/configurations
et/configurations/{configurationName}
. - Informations de connexion Azure HDInsight Tools for Visual Studio Code version 1.1.1 ou inférieure.
- Azure Toolkit for IntelliJ version 3.20.0 ou inférieure.
- Outils Azure Data Lake et Stream Analytics pour Visual Studio version 2.3.9000.1.
- Azure Toolkit pour Eclipse version 3.15.0 ou inférieure.
- Kit SDK pour .NET
- Versions 1.x ou 2.x : utilisateurs qui ont recours aux méthodes
GetClusterConfigurations
;GetConnectivitySettings
,ConfigureHttpSettings
,EnableHttp
ouDisableHttp
de la classe ConfigurationsOperationsExtensions. - Versions 3.x et versions ultérieures : Utilisateurs ayant recours aux méthodes
Get
,Update
,EnableHttp
, ouDisableHttp
depuis la classeConfigurationsOperationsExtensions
.
- Versions 1.x ou 2.x : utilisateurs qui ont recours aux méthodes
- Kit SDK pour Python : Utilisateurs ayant recours aux méthodes
get
ouupdate
depuis la classeConfigurationsOperations
. - Kit SDK pour Java : Utilisateurs ayant recours aux méthodes
update
ouget
depuis la classeConfigurationsInner
. - Kit SDK pour Go : Utilisateurs ayant recours aux méthodes
Get
ouUpdate
depuis la structureConfigurationsClient
. - Az.HDInsight PowerShell version 2.0.0. Consultez les sections qui suivent (ou utilisez les liens mentionnés plus haut) pour connaître les étapes de migration de votre scénario.
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 :
- POST /configurations
- Utilisez cette API pour obtenir toutes les configurations, y compris les secrets.
- POST /getGatewaySettings
- Utilisez cette API pour obtenir les paramètres de la passerelle.
- POST /updateGatewaySettings
- Utilisez cette API pour mettre à jour les paramètres de la passerelle (nom d’utilisateur et/ou mot de passe).
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.GetClusterConfigurations
ne 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
.
- Pour récupérer toutes les configurations, y compris les paramètres sensibles, utilisez
ClusterOperationsExtensions.GetConnectivitySettings
est maintenant déconseillé et a été remplacé parClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
est maintenant déconseillé et a été remplacé parClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
etDisableHttp
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 :
ConfigurationOperationsExtensions.Get
ne 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
ConfigurationOperationsExtensions.List
à 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
.
- Pour récupérer toutes les configurations, y compris les paramètres sensibles, utilisez
ConfigurationsOperationsExtensions.Update
est maintenant déconseillé et a été remplacé parClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
etDisableHttp
sont désormais déconseillés. HTTP est désormais toujours activé. Ces méthodes ne sont donc plus nécessaires.
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 :
ConfigurationsOperations.get
ne 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
ConfigurationsOperations.list
à 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
ClusterOperations.get_gateway_settings
.
- Pour récupérer toutes les configurations, y compris les paramètres sensibles, utilisez
ConfigurationsOperations.update
est maintenant déconseillé et a été remplacé parClusterOperations.update_gateway_settings
.
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.get
ne 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 :
ConfigurationsClient.get
ne 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
ConfigurationsClient.list
à 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
ClustersClient.get_gateway_settings
.
- Pour récupérer toutes les configurations, y compris les paramètres sensibles, utilisez
ConfigurationsClient.update
est maintenant déconseillé et a été remplacé parClustersClient.update_gateway_settings
.
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 cmdletSet-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.