

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de la autenticación y autorización LDAP para Amazon MQ for RabbitMQ
<a name="rabbitmq-ldap-tutorial"></a>

En este tutorial se describe cómo configurar la autenticación y la autorización de LDAP para su Amazon MQ para corredores de RabbitMQ mediante. AWS Managed Microsoft AD

**Topics**
+ [Requisitos previos para configurar la autenticación y la autorización de LDAP](#rabbitmq-ldap-tutorial-prerequisites)
+ [Configuración de LDAP en RabbitMQ mediante CLI AWS](#rabbitmq-ldap-tutorial-configure-cli)

## Requisitos previos para configurar la autenticación y la autorización de LDAP
<a name="rabbitmq-ldap-tutorial-prerequisites"></a>

Puede configurar AWS los recursos necesarios en este tutorial mediante la implementación de la [pila de AWS CDK para la integración de LDAP de Amazon MQ para RabbitMQ](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-ldap-activedirectory-sample/) con. AWS Managed Microsoft AD

Esta pila de CDK crea automáticamente todos los AWS recursos necesarios AWS Managed Microsoft AD, incluidos los usuarios y grupos de LDAP, Network Load Balancer, los certificados y las funciones de IAM. Consulte el paquete README para obtener una lista completa de los recursos creados por la pila.

Si va a configurar los recursos manualmente en lugar de utilizar la pila de CDK, asegúrese de disponer de la infraestructura equivalente antes de configurar LDAP en su Amazon MQ para corredores de RabbitMQ.

### Requisito previo para configurar Amazon MQ
<a name="rabbitmq-ldap-tutorial-prerequisite-cli"></a>

AWS Versión CLI >= 2.28.23 para que la adición de un nombre de usuario y una contraseña sea opcional durante la creación del corredor.

## Configuración de LDAP en RabbitMQ mediante CLI AWS
<a name="rabbitmq-ldap-tutorial-configure-cli"></a>

Este procedimiento utiliza la AWS CLI para crear y configurar los recursos necesarios. En el siguiente procedimiento, asegúrese de reemplazar los valores de los marcadores de posición, como el ID de configuración y la revisión, `<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>` por sus valores `<2>` reales.

1. Cree una nueva configuración mediante el comando `create-configuration` AWS CLI, como se muestra en el siguiente ejemplo.

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

   Este comando devuelve una respuesta de JSON similar a la siguiente.

   ```
   {
   "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"
   }
   ```

1. Cree un archivo de configuración llamado `rabbitmq.conf` a utilizar LDAP como método de autenticación y autorización, como se muestra en el siguiente ejemplo. Sustituya todos los valores de marcador de posición de la plantilla (marcados con`${RabbitMqLdapTestStack.*}`) por valores reales de las salidas de la pila de requisitos AWS CDK previos implementada o de una infraestructura equivalente.

   ```
   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}}
       ]
   }
   '''
   ```

1. Actualice la configuración mediante el comando `update-configuration` AWS CLI, como se muestra en el siguiente ejemplo. En este comando, añada el identificador de configuración que recibió en la respuesta al paso 1 de este procedimiento. Por ejemplo, `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)"
   ```

   Este comando devuelve una respuesta de JSON similar a la siguiente.

   ```
   {
       "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": []
   }
   ```

1. Cree un broker con la configuración de LDAP que creó en el paso 2 de este procedimiento. Para ello, utilice el comando `create-broker` AWS CLI como se muestra en el siguiente ejemplo. En este comando, indique el identificador de configuración y el número de revisión que obtuvo en las respuestas de los pasos 1 y 2, respectivamente. Por ejemplo, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca` y `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>}'
   ```

   Este comando devuelve una respuesta de JSON similar a la siguiente.

   ```
   {
       "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"
   }
   ```
**Restricción de nombres de corredores**  
Para empezar, el rol de IAM creado por la pila de CDK necesaria restringe los nombres de los corredores. `rabbitmq-ldap-test` Asegúrese de que el nombre de su corredor siga este patrón o el rol de IAM no tendrá permiso para asumir el rol para la resolución de ARN.

1. Compruebe que el estado del bróker pasa de `CREATION_IN_PROGRESS` a`RUNNING`, mediante el comando `describe-broker` AWS CLI, como se muestra en el siguiente ejemplo. En este comando, proporcione el ID de agente que obtuvo en el resultado del paso anterior, por ejemplo, `b-2a1b5133-a10c-49d2-879b-8c176c34cf73`.

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

   Este comando devuelve una respuesta de JSON similar a la siguiente. La siguiente respuesta es una versión abreviada del resultado completo que devuelve el comando `describe-broker`. Esta respuesta muestra el estado del agente y la estrategia de autenticación utilizada para proteger al agente. En este caso, la estrategia de `config_managed` autenticación indica que el agente utiliza el método de autenticación LDAP.

   ```
   {
   "AuthenticationStrategy": "config_managed",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

1. Valide el acceso a RabbitMQ con uno de los usuarios de prueba creados con la pila de CDK necesaria

   ```
   # 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"}'
   ```