Utilisation de l'authentification et de l'autorisation LDAP pour Amazon MQ pour RabbitMQ - Amazon MQ

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de l'authentification et de l'autorisation LDAP pour Amazon MQ pour RabbitMQ

Ce didacticiel explique comment configurer l'authentification et l'autorisation LDAP pour votre Amazon MQ pour les courtiers RabbitMQ à l'aide de. AWS Managed Microsoft AD

Conditions préalables pour configurer l'authentification et l'autorisation LDAP

Vous pouvez configurer les AWS ressources requises dans ce didacticiel en déployant la pile AWS CDK pour Amazon MQ pour l'intégration LDAP de RabbitMQ avec. AWS Managed Microsoft AD

Cette pile CDK crée automatiquement toutes les AWS ressources nécessaires AWS Managed Microsoft AD, notamment les utilisateurs et groupes LDAP, Network Load Balancer, les certificats et les rôles IAM. Consultez le package README pour une liste complète des ressources créées par la pile.

Si vous configurez les ressources manuellement au lieu d'utiliser la pile CDK, assurez-vous de disposer de l'infrastructure équivalente avant de configurer LDAP sur votre Amazon MQ pour les courtiers RabbitMQ.

Prérequis pour configurer Amazon MQ

AWS Version CLI >= 2.28.23 pour rendre l'ajout d'un nom d'utilisateur et d'un mot de passe facultatif lors de la création du broker.

Configuration de LDAP dans RabbitMQ à l'aide de la CLI AWS

Cette procédure utilise la AWS CLI pour créer et configurer les ressources nécessaires. Dans la procédure suivante, assurez-vous de remplacer les valeurs d'espace réservé, telles que ConfigurationID et Revision<2>, <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> par leurs valeurs réelles.

  1. Créez une nouvelle configuration à l'aide de la commande create-configuration AWS CLI comme indiqué dans l'exemple suivant.

    aws mq create-configuration \ --name "rabbitmq-ldap-config" \ --engine-type "RABBITMQ" \ --engine-version "3.13"

    Cette commande renvoie une réponse similaire à l'exemple suivant.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "AuthenticationStrategy": "simple", "Created": "2025-07-17T16:03:01.759943+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:03:01.759000+00:00", "Description": "Auto-generated default for rabbitmq-ldap-config on RabbitMQ 3.13", "Revision": 1 }, "Name": "rabbitmq-ldap-config" }
  2. Créez un fichier de configuration appelé rabbitmq.conf pour utiliser LDAP comme méthode d'authentification et d'autorisation, comme indiqué dans l'exemple suivant. Remplacez toutes les valeurs d'espace réservé du modèle (marquées d'un${RabbitMqLdapTestStack.*}) par des valeurs réelles provenant de vos sorties de pile AWS CDK prérequises déployées ou d'une infrastructure équivalente.

    auth_backends.1 = ldap # LDAP authentication settings - For more information, # see https://www.rabbitmq.com/docs/ldap#basic # FIXME: Replace the ${RabbitMqLdapTestStack.*} placeholders with actual values # from your deployed prerequisite CDK stack outputs. auth_ldap.servers.1 = ${RabbitMqLdapTestStack.NlbDnsName} auth_ldap.dn_lookup_bind.user_dn = ${RabbitMqLdapTestStack.DnLookupUserDn} auth_ldap.dn_lookup_base = ${RabbitMqLdapTestStack.DnLookupBase} auth_ldap.dn_lookup_attribute = ${RabbitMqLdapTestStack.DnLookupAttribute} auth_ldap.port = 636 auth_ldap.use_ssl = true auth_ldap.ssl_options.verify = verify_peer auth_ldap.log = network # AWS integration for secure credential retrieval # - see: https://github.com/amazon-mq/rabbitmq-aws # The aws plugin allows RabbitMQ to securely retrieve credentials and certificates # from AWS services. # Replace the ${RabbitMqLdapTestStack.*} placeholders with actual ARN values # from your deployed prerequisite CDK stack outputs. aws.arns.auth_ldap.ssl_options.cacertfile = ${RabbitMqLdapTestStack.CaCertArn} aws.arns.auth_ldap.dn_lookup_bind.password = ${RabbitMqLdapTestStack.DnLookupUserPasswordArn} aws.arns.assume_role_arn = ${RabbitMqLdapTestStack.AmazonMqAssumeRoleArn} # LDAP authorization queries - For more information, # see: https://www.rabbitmq.com/docs/ldap#authorisation # FIXME: Replace the ${RabbitMqLdapTestStack.*} placeholders with actual group DN # values from your deployed prerequisite CDK stack outputs # Uses Active Directory groups created by the prerequisite CDK stack auth_ldap.queries.tags = ''' [{administrator, {in_group, "${RabbitMqLdapTestStack.RabbitMqAdministratorsGroupDn}"}}, {management, {in_group, "${RabbitMqLdapTestStack.RabbitMqMonitoringUsersGroupDn}"}}] ''' # FIXME: This provides all authenticated users access to all vhosts # - update to restrict access as required auth_ldap.queries.vhost_access = ''' {constant, true} ''' # FIXME: This provides all authenticated users full access to all # queues and exchanges - update to restrict access as required auth_ldap.queries.resource_access = ''' {for, [ {permission, configure, {constant, true}}, {permission, write, {for, [{resource, queue, {constant, true}}, {resource, exchange, {constant, true}}]}}, {permission, read, {for, [{resource, exchange, {constant, true}}, {resource, queue, {constant, true}}]}} ] } ''' # FIXME: This provides all authenticated users access to all topics # - update to restrict access as required auth_ldap.queries.topic_access = ''' {for, [{permission, write, {constant, true}}, {permission, read, {constant, true}} ] } '''
  3. Mettez à jour la configuration à l'aide de la commande update-configuration AWS CLI comme indiqué dans l'exemple suivant. Dans cette commande, ajoutez l'ID de configuration que vous avez reçu en réponse à l'étape 1 de cette procédure. Par exemple, c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca.

    aws mq update-configuration \ --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \ --data "$(cat rabbitmq.conf | base64 --wrap=0)"

    Cette commande renvoie une réponse similaire à l'exemple suivant.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-b600ac8e-8183-4f74-a713-983e59f30e3d", "Created": "2025-07-17T16:57:04.520931+00:00", "Id": "c-b600ac8e-8183-4f74-a713-983e59f30e3d", "LatestRevision": { "Created": "2025-07-17T16:57:39.172000+00:00", "Revision": 2 }, "Name": "rabbitmq-ldap-config", "Warnings": [] }
  4. Créez un courtier avec la configuration LDAP que vous avez créée à l'étape 2 de cette procédure. Pour ce faire, utilisez la commande create-broker AWS CLI comme indiqué dans l'exemple suivant. Dans cette commande, indiquez l'ID de configuration et le numéro de révision que vous avez obtenus dans les réponses des étapes 1 et 2 respectivement. Par exemple : c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca et 2.

    aws mq create-broker \ --broker-name "rabbitmq-ldap-test-1" \ --engine-type "RABBITMQ" \ --engine-version "3.13" \ --host-instance-type "mq.m7g.large" \ --deployment-mode "CLUSTER_MULTI_AZ" \ --logs '{"General": true}' \ --publicly-accessible \ --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}'

    Cette commande renvoie une réponse similaire à l'exemple suivant.

    { "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-ldap-broker:b-2a1b5133-a10c-49d2-879b-8c176c34cf73", "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73" }
    Restriction de dénomination des courtiers

    Le rôle IAM créé par la pile CDK requise limite d'emblée les noms des courtiers. rabbitmq-ldap-test Assurez-vous que le nom de votre courtier suit ce modèle, sinon le rôle IAM ne sera pas autorisé à assumer le rôle de résolution des ARN.

  5. Vérifiez que le statut du broker passe de àRUNNING, CREATION_IN_PROGRESS à l'aide de la commande describe-broker AWS CLI, comme indiqué dans l'exemple suivant. Dans cette commande, indiquez l'ID du courtier que vous avez obtenu dans le résultat de l'étape précédente. Par exemple,b-2a1b5133-a10c-49d2-879b-8c176c34cf73.

    aws mq describe-broker \ --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"

    Cette commande renvoie une réponse similaire à l'exemple suivant. La réponse suivante est une version abrégée de la sortie complète renvoyée par la describe-broker commande. Cette réponse indique le statut du courtier et la stratégie d'authentification utilisée pour sécuriser le courtier. Dans ce cas, la stratégie config_managed d'authentification indique que le courtier utilise la méthode d'authentification LDAP.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
  6. Validez l'accès à RabbitMQ en utilisant l'un des utilisateurs de test créés par la pile CDK requise

    # FIXME: Replace ${RabbitMqLdapTestStack.ConsoleUserPasswordArn} with the actual ARN from your deployed prerequisite CDK stack outputs CONSOLE_PASSWORD=$(aws secretsmanager get-secret-value \ --secret-id ${RabbitMqLdapTestStack.ConsoleUserPasswordArn} \ --query 'SecretString' --output text) # FIXME: Replace BrokerConsoleURL with the actual ConsoleURL retrieved by # calling describe-broker for the broker created above # Call management API /api/overview (should succeed) curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \ https://${BrokerConsoleURL}/api/overview # Try to create a user (should fail - console user only has monitoring permissions) curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \ -X PUT https://${BrokerConsoleURL}/api/users/testuser \ -H "Content-Type: application/json" \ -d '{"password":"testpass","tags":"management"}'