Lorsque plusieurs applications et équipes partagent une instance ApsaraMQ for RocketMQ, un accès non restreint aux topics et aux groupes engendre des risques de sécurité. L'authentification des utilisateurs vous permet de contrôler les clients autorisés à se connecter et les ressources auxquelles ils peuvent accéder. ApsaraMQ for RocketMQ authentifie chaque client se connectant à un broker : seuls les clients authentifiés peuvent envoyer et recevoir des messages.
Méthodes d'authentification
ApsaraMQ for RocketMQ propose deux méthodes d'authentification. Sélectionnez-en au moins une pour chaque instance.
| Méthode | Description | Autorisations après authentification |
|---|---|---|
| Authentification intelligente (par défaut) | Méthode d'authentification par défaut. Elle authentifie les clients à l'aide du nom d'utilisateur et du mot de passe de l'instance. | Accès complet à tous les topics et groupes |
| Authentification basée sur les ACL | Offre un contrôle d'accès plus fin sur des topics ou groupes spécifiques de l'instance. | Uniquement les ressources explicitement accordées à l'utilisateur ACL |
Choisir votre méthode
Tous les clients nécessitent un accès complet -- Utilisez l'authentification intelligente. Chaque client s'authentifie avec le nom d'utilisateur et le mot de passe de l'instance et obtient l'accès à tous les topics et groupes.
Différents clients ont besoin d'autorisations différentes -- Utilisez l'authentification basée sur les ACL. Créez des utilisateurs ACL, accordez à chacun des autorisations sur des topics ou groupes spécifiques, puis authentifiez les clients avec les identifiants de l'utilisateur ACL.
-
Les deux scénarios s'appliquent -- Activez les deux méthodes sur la même instance. Le système sélectionne la méthode en fonction des identifiants présents dans le code du client :
Nom d'utilisateur et mot de passe de l'instance -- utilise l'authentification intelligente.
Nom d'utilisateur et mot de passe de l'utilisateur ACL -- utilise l'authentification basée sur les ACL.
Fonctionnement de l'authentification intelligente
Lors de l'initialisation d'une instance, le système lui attribue un nom d'utilisateur et un mot de passe uniques. Les clients s'authentifient avec ces identifiants pour obtenir un accès complet à tous les topics et groupes de l'instance.
Connexions VPC : Si l'option Authentication-free in VPCs est activée, les clients se connectant via un point de terminaison VPC n'ont pas besoin d'identifiants ; le système les identifie grâce au point de terminaison VPC. Cette fonctionnalité est désactivée par défaut.
Connexions Internet : Les clients se connectant via Internet doivent toujours spécifier le nom d'utilisateur et le mot de passe de l'instance.
Fonctionnement de l'authentification basée sur les ACL
L'authentification basée sur les ACL accorde à chaque utilisateur ACL des autorisations sur des topics ou groupes spécifiques. Une fois authentifié avec les identifiants d'un utilisateur ACL, le client ne peut accéder qu'aux ressources que cet utilisateur est autorisé à utiliser.
Par exemple, si l'utilisateur ACL user_mq dispose d'autorisations de publication uniquement sur Topic_A, un client authentifié en tant que user_mq peut publier des messages sur Topic_A mais ne peut accéder à aucun autre topic ou groupe.
Un utilisateur ACL nouvellement créé ne dispose d'aucune autorisation. Accordez-lui des autorisations avant qu'il ne puisse publier ou s'abonner à une ressource.
Lorsque des règles Allow et Deny coexistent pour la même ressource, la règle Deny est prioritaire.
Sélectionner la méthode d'authentification
Connectez-vous à la console ApsaraMQ for RocketMQ. Dans le volet de navigation de gauche, cliquez sur Instances.
Dans la barre de navigation supérieure, sélectionnez une région, telle que China (Hangzhou). Sur la page Instances, cliquez sur le nom de l'instance à gérer.
Dans le volet de navigation de gauche, cliquez sur Access Control. Sur la page qui s'affiche, cliquez sur Edit à côté de Access Control Type.
Dans la boîte de dialogue, sélectionnez Intelligent Authentication, ACL-based Authentication ou les deux, puis cliquez sur OK.
Configurer l'authentification intelligente
Les paramètres d'authentification intelligente apparaissent dans la console uniquement après avoir sélectionné Intelligent Authentication comme type de contrôle d'accès.
La modification du nom d'utilisateur et du mot de passe de l'instance déconnecte tous les clients utilisant les identifiants actuels. Procédez avec prudence.
Activer ou désactiver l'authentification gratuite dans les VPC
Dans le volet de navigation de gauche, cliquez sur Access Control. Sur la page qui s'affiche, cliquez sur l'onglet Intelligent Authentication.
-
Activez ou désactivez l'option Authentication-free in VPCs.
On : Les clients se connectant via un point de terminaison VPC n'ont pas besoin d'identifiants. Le système identifie le client grâce au point de terminaison VPC.
Off (par défaut) : Tous les clients doivent spécifier le nom d'utilisateur et le mot de passe de l'instance, qu'ils se connectent via Internet ou via un VPC.
Récupérer les identifiants de l'instance
Si l'authentification intelligente est activée et que l'option Authentication-free in VPCs est désactivée, spécifiez les identifiants de l'instance dans le code de votre client.
Sur la page Access Control, cliquez sur l'onglet Intelligent Authentication.
Consultez le nom d'utilisateur de l'instance dans la liste des noms d'utilisateur et copiez le mot de passe.
Configurer l'authentification basée sur les ACL
L'authentification basée sur les ACL nécessite deux étapes : créer un utilisateur ACL, puis lui accorder des autorisations sur des ressources spécifiques. Un nouvel utilisateur ACL ne dispose d'aucune autorisation par défaut.
Spécifiez le nom d'utilisateur et le mot de passe de l'utilisateur ACL dans le code de votre client. Après l'authentification, le client ne peut accéder qu'aux ressources incluses dans le périmètre d'autorisation de l'utilisateur ACL.
Les paramètres de gestion des utilisateurs ACL apparaissent dans la console uniquement après avoir sélectionné ACL-based Authentication comme type de contrôle d'accès.
La désactivation ou la suppression d'un utilisateur ACL déconnecte tous les clients utilisant les identifiants de cet utilisateur. Procédez avec prudence.
Créer un utilisateur ACL
Dans le volet de navigation de gauche, cliquez sur Access Control. Sur la page qui s'affiche, cliquez sur l'onglet ACL User.
Sur l'onglet ACL User, cliquez sur Create ACL User. Dans le panneau qui s'affiche, définissez le nom d'utilisateur et le mot de passe selon les instructions.
Accorder des autorisations à un utilisateur ACL
Sur la page Access Control, cliquez sur l'onglet ACL Permissions, puis cliquez sur Add Permissions.
Dans le panneau Add Permissions, configurez les paramètres suivants et cliquez sur OK.
| Paramètre | Description | Exemple |
|---|---|---|
| Username | L'utilisateur ACL auquel accorder des autorisations. Sélectionnez un utilisateur ACL existant dans la liste déroulante. | user_mq |
| Resource Type | TOPIC : accorder des autorisations sur les topics. GROUP : accorder des autorisations sur les groupes. | TOPIC |
| Resource Name | Le nom du topic ou du groupe. Saisissez un nom spécifique, un astérisque (*) pour tout faire correspondre, ou un préfixe avec un astérisque (par exemple order_*) pour effectuer une correspondance par motif. |
normal_topic |
| Action | Les opérations autorisées sur la ressource. Si le type de ressource est GROUP, seule l'option Subscribe est disponible. Publish : publier des messages sur les topics spécifiés. Subscribe : s'abonner aux messages des topics ou groupes spécifiés. | Publish |
| IP Address Whitelist | Adresses IP ou blocs CIDR autorisés à accéder à la ressource, séparés par des points-virgules (;) ou des virgules (,). Laissez vide pour autoriser toutes les adresses IP. |
192.168.xx.xx |
| Permission Rule | Allow : autoriser l'action spécifiée. Deny : bloquer l'action spécifiée. | Allow |
Exemple : Les paramètres du tableau ci-dessus signifient qu'un client authentifié en tant que user_mq peut se connecter uniquement depuis l'adresse IP 192.168.xx.xx et ne peut publier des messages que sur le topic normal_topic.
Récupérer les identifiants de l'utilisateur ACL
Que le client se connecte via Internet ou via un VPC, spécifiez le nom d'utilisateur et le mot de passe de l'utilisateur ACL dans le code du client.
Dans le volet de navigation de gauche, cliquez sur Access Control. Sur la page qui s'affiche, cliquez sur l'onglet ACL User.
Sur l'onglet ACL User, consultez le nom d'utilisateur dans la liste des utilisateurs et copiez le mot de passe.
Gérer les utilisateurs ACL et les autorisations en masse
Utilisez des modèles CSV pour créer des utilisateurs ACL et accorder des autorisations en masse via la fonctionnalité d'importation/exportation.
Créer des utilisateurs ACL en masse
Sur la page Access Control, cliquez sur l'onglet ACL User.
-
Cliquez sur Export File pour télécharger le modèle, ou cliquez sur Import File pour charger un modèle rempli.
Pour obtenir le format du modèle, créez d'abord au moins un utilisateur ACL, puis exportez-le.
Avant l'importation, renseignez le modèle avec les informations relatives aux utilisateurs ACL.
Lors de l'importation, choisissez si vous souhaitez écraser les utilisateurs existants. Si l'écrasement est désactivé et qu'un utilisateur du modèle existe déjà, l'enregistrement concerné échoue à l'importation. Si l'écrasement est activé, les enregistrements des utilisateurs existants sont mis à jour.
Paramètres du modèle d'utilisateur ACL
| Paramètre | Description | Valeur valide |
|---|---|---|
| Username | Le nom d'utilisateur ACL. | Commence par une lettre. Contient uniquement des lettres, des chiffres, des traits d'union (-) et des underscores (_). De 3 à 64 caractères. |
| Password | Le mot de passe de l'utilisateur ACL. | De 3 à 64 caractères. |
| AccountStatus | L'état du compte. | ENABLE (disponible) ou DISABLE (indisponible). |
Exemple
| Username | Password | AccountStatus |
|---|---|---|
| user1 | xxx | ENABLE |
| user2 | xxx | DISABLE |
| user3 | xxx | ENABLE |
Accorder des autorisations ACL en masse
Sur la page Access Control, cliquez sur l'onglet ACL Permissions.
-
Cliquez sur Export File pour télécharger le modèle, ou cliquez sur Import File pour charger un modèle rempli.
Pour obtenir le format du modèle, créez d'abord au moins une autorisation ACL, puis exportez-la.
Avant l'importation, renseignez le modèle avec les informations relatives aux autorisations.
Lors de l'importation, choisissez si vous souhaitez écraser les autorisations existantes. Le système fait correspondre les enregistrements existants par nom d'utilisateur, type de ressource et nom de ressource. Si l'écrasement est désactivé et qu'un enregistrement correspondant existe, l'importation échoue. Si l'écrasement est activé, l'enregistrement existant est mis à jour.
Paramètres du modèle d'autorisation ACL
| Paramètre | Description | ||
|---|---|---|---|
| Username | L'utilisateur ACL auquel accorder des autorisations. Doit être un utilisateur ACL existant. | ||
| ResourceType | Le type de ressource : TOPIC ou GROUP. |
||
| ResourceName | Le nom de la ressource. | ||
| Actions | PUB (publication), SUB (abonnement) ou `PUB |
SUB` (les deux). |
SUB` n'est valide que lorsque ResourceType est |
| SourceIps | Adresses IP ou blocs CIDR autorisés. | ||
| Decision | Allow ou Deny. |
Exemple
| Username | ResourceType | ResourceName | Actions | SourceIps | Decision | |
|---|---|---|---|---|---|---|
| user1 | TOPIC | topic_normal | PUB | 0.0.0.0/0 | Allow | |
| user2 | TOPIC | * | PUB | SUB | 0.0.0.0/0 |
Allow |
| user3 | GROUP | Group_a | SUB | 192.168.xx.xx | Deny |
Limites
Si l'authentification des utilisateurs n'est pas encore activée pour votre instance, soumettez un ticket pour demander son activation. Le point d'entrée Access Control apparaît dans la console uniquement après approbation de la demande.