Ir para o conteúdo principal

Como Configurar LDAP do RabbitMQ no Ambiente OCP?

Data: 24/03/23

Autores:
1.João Batista da Silva Junior (Assessor)
2.Michel Farias Ferreira (Assessor)

_________________________________________________________________________________________________________________________________________

1. OBJETIVO

O objetivo é fornecer diversas opções para disponibilizar o LDAP do RabbitMQ Server para um Active Directory (AD) na SETIC que tem vários desenvolvedores acessando simultaneamente. Isso pode incluir a configuração do LDAP diretamente no RabbitMQ ou a utilização de ferramentas de terceiros para sincronizar o AD com o LDAP do RabbitMQ.

Esse documento tem o intuito de exemplificar a configuração utilizada para permitir que ao RabbitMQ pelo AD da SETIC.


2. JUSTIFICATIVA

Fez-se necessário realizar o estudo para atender a demanda em fornecer a ferramenta RabbitMQ no ambiente do OCP


3. DESENVOLVIMENTO

3.1. LDAP

O LDAP (Lightweight Directory Access Protocol) é um protocolo que permite a consulta e modificação de informações em um diretório de rede. Quando combinado com o RabbitMQ, um servidor de mensagens, é possível usar o LDAP para autenticar e autorizar os usuários

Existem várias maneiras de disponibilizar o LDAP do RabbitMQ Server para um Active Directory. Algumas dessas maneiras são:

3.1.1. Configuração LDAP no RabbitMQ: O RabbitMQ Server possui uma seção de configuração que permite a configuração do LDAP. É possível definir as informações de conexão com o servidor AD e mapear os grupos de usuários do AD para as permissões do RabbitMQ.

Exemplificando:

Primeiramente, é necessário ter um servidor AD em funcionamento e um usuário com privilégios suficientes para se conectar ao diretório de usuários. Suponha que o endereço do servidor AD seja ldap.example.com e que o usuário seja user1@example.com.

Em seguida, é necessário acessar a seção de configuração do RabbitMQ Server. Suponha que isso seja feito por meio da interface gráfica do usuário.

Na seção de configuração, é necessário definir as informações de conexão com o servidor AD. Isso pode ser feito nas configurações LDAP do RabbitMQ, onde é necessário informar o endereço do servidor (ldap.example.com), a porta (por exemplo, 389) e as credenciais de login do usuário (user1@example.com e a senha correspondente).

Depois de definir as informações de conexão, é necessário definir o mapeamento entre os grupos de usuários do AD e as permissões do RabbitMQ. Para isso, é necessário configurar as permissões do RabbitMQ para incluir o usuário mapeado a partir do grupo do AD. Suponha que o grupo do AD seja "developers" e que a permissão desejada seja a de leitura. Nesse caso, é necessário criar um usuário no RabbitMQ com permissão de leitura e mapear esse usuário para o grupo "developers" do AD.

Após configurar o mapeamento do grupo de usuários do AD para a permissão de leitura do RabbitMQ, é importante testar a conexão e as permissões. Isso pode ser feito por meio de um cliente LDAP que possa se conectar ao servidor AD e verificar se o usuário mapeado está tendo acesso de leitura no RabbitMQ.

É importante garantir que a configuração do LDAP no RabbitMQ seja feita corretamente e que as permissões de acesso do RabbitMQ sejam restritas apenas aos usuários e grupos autorizados do AD. Dessa forma, é possível garantir a segurança do sistema e impedir o acesso não autorizado.

3.1.2. Integração com ferramentas de terceiros: Existem várias ferramentas de terceiros disponíveis que podem ser usadas para sincronizar o AD com o LDAP do RabbitMQ. Essas ferramentas geralmente fornecem uma interface gráfica para configurar a sincronização e podem ser usadas para gerenciar outras partes do AD.

Os seguintes passos podem ser seguidos para realizar essa configuração:

Primeiro, é necessário ter um servidor AD em funcionamento e um usuário com privilégios suficientes para se conectar ao diretório de usuários.

Em seguida, é necessário instalar o plugin rabbit-auth-backend-ldap no RabbitMQ Server. Esse plugin pode ser instalado por meio da linha de comando do RabbitMQ ou por meio de ferramentas de gerenciamento de pacotes, como o apt-get ou o yum.

Depois de instalar o plugin, é necessário configurar as informações de conexão com o servidor AD. Isso pode ser feito por meio de um arquivo de configuração específico do plugin, onde é necessário informar o endereço do servidor, a porta e as credenciais de login. Além disso, é necessário definir o mapeamento entre os grupos de usuários do AD e as permissões do RabbitMQ.

Em seguida, é necessário configurar o RabbitMQ Server para utilizar o plugin de autenticação LDAP. Isso pode ser feito por meio da linha de comando ou da interface gráfica do usuário, onde é necessário definir o nome do plugin e as configurações de conexão.

Depois de configurar o plugin e o RabbitMQ Server, é necessário testar a conexão e as permissões. Isso pode ser feito por meio de um cliente LDAP que possa se conectar ao servidor AD e verificar se os usuários estão sendo mapeados corretamente para as permissões do RabbitMQ.

É importante garantir que a configuração do LDAP no RabbitMQ seja feita corretamente e que as permissões de acesso do RabbitMQ sejam restritas apenas aos usuários e grupos autorizados do AD. Dessa forma, é possível garantir a segurança do sistema e impedir o acesso não autorizado.

Um exemplo prático de configuração utilizando o rabbit-auth-backend-ldap seria criar um usuário chamado "rabbit" no AD, definir as configurações de conexão do plugin para o servidor AD e mapear o grupo "developers" para uma permissão de leitura no RabbitMQ. Em seguida, o RabbitMQ Server seria configurado para utilizar o plugin de autenticação LDAP e o acesso seria testado por meio de um cliente LDAP que poderia se conectar ao servidor AD e verificar se o usuário "rabbit" está sendo autenticado corretamente no RabbitMQ com a permissão de leitura adequada.

3.1.3. Utilização de plugins: O RabbitMQ tem uma arquitetura de plugin que permite que os desenvolvedores criem seus próprios plugins. É possível usar esses plugins para integrar o RabbitMQ com outros sistemas, como o AD.

A terceira maneira de disponibilizar o LDAP no RabbitMQ Server é utilizando plugins de autenticação que oferecem suporte nativo para o protocolo LDAP. O RabbitMQ oferece suporte para diversos plugins de autenticação, incluindo o rabbitmq_auth_backend_ldap, que permite a autenticação dos usuários do RabbitMQ em um servidor LDAP externo. Os seguintes passos podem ser seguidos para configurar a autenticação LDAP no RabbitMQ utilizando plugins:

Primeiro, é necessário ter um servidor LDAP em funcionamento e um usuário com privilégios suficientes para se conectar ao diretório de usuários.

Em seguida, é necessário instalar o plugin de autenticação rabbitmq_auth_backend_ldap no RabbitMQ Server. Esse plugin pode ser instalado por meio da linha de comando do RabbitMQ ou por meio de ferramentas de gerenciamento de pacotes, como o apt-get ou o yum.

Depois de instalar o plugin, é necessário configurar as informações de conexão com o servidor LDAP. Isso pode ser feito por meio de um arquivo de configuração específico do plugin, onde é necessário informar o endereço do servidor, a porta e as credenciais de login. Além disso, é necessário definir o mapeamento entre os grupos de usuários do LDAP e as permissões do RabbitMQ.

Em seguida, é necessário definir as permissões de acesso do RabbitMQ para os usuários autenticados por meio do LDAP. Isso pode ser feito por meio de um arquivo de configuração específico do RabbitMQ, onde é possível definir as permissões de leitura e escrita para as filas, exchanges e outros recursos do RabbitMQ.

Depois de configurar o plugin e o RabbitMQ Server, é necessário testar a conexão e as permissões. Isso pode ser feito por meio de um cliente LDAP que possa se conectar ao servidor e verificar se os usuários estão sendo mapeados corretamente para as permissões do RabbitMQ.

É importante garantir que a configuração do LDAP no RabbitMQ seja feita corretamente e que as permissões de acesso do RabbitMQ sejam restritas apenas aos usuários e grupos autorizados do LDAP. Dessa forma, é possível garantir a segurança do sistema e impedir o acesso não autorizado.

Um exemplo prático de configuração utilizando o plugin rabbitmq_auth_backend_ldap seria criar um usuário chamado "rabbit" no LDAP, definir as configurações de conexão do plugin para o servidor LDAP e mapear o grupo "developers" para uma permissão de leitura no RabbitMQ. Em seguida, o RabbitMQ Server seria configurado para utilizar o plugin de autenticação LDAP e as permissões de acesso seriam definidas para as filas e exchanges específicas. O acesso seria testado por meio de um cliente LDAP que poderia se conectar ao servidor e verificar se o usuário "rabbit" está sendo autenticado corretamente no RabbitMQ com a permissão de leitura adequada.

3.1.4. Utilização de Proxy LDAP: Um Proxy LDAP pode ser utilizado para atuar como um intermediário entre o RabbitMQ e o AD. Dessa forma, os usuários podem se autenticar com o Proxy LDAP e o RabbitMQ pode consultar o Proxy LDAP para obter informações sobre os usuários.

A quarta maneira de disponibilizar o LDAP no RabbitMQ é por meio da utilização de um Proxy LDAP. Um Proxy LDAP é uma camada intermediária que gerencia as conexões entre o RabbitMQ Server e o servidor LDAP externo. O RabbitMQ utiliza o Proxy LDAP como se fosse um servidor LDAP nativo, mas toda a autenticação e gerenciamento de usuários é feito por meio do Proxy LDAP. Os seguintes passos podem ser seguidos para configurar a autenticação LDAP no RabbitMQ utilizando um Proxy LDAP:

Primeiramente, é necessário ter um servidor Proxy LDAP em funcionamento. O Proxy LDAP é responsável por gerenciar as conexões entre o RabbitMQ Server e o servidor LDAP externo.

Em seguida, é necessário configurar as informações de conexão com o Proxy LDAP no RabbitMQ. Isso pode ser feito por meio de um arquivo de configuração específico do RabbitMQ, onde é necessário informar o endereço do servidor Proxy LDAP, a porta e as credenciais de login.

Depois de configurar o Proxy LDAP, é necessário definir as permissões de acesso do RabbitMQ para os usuários autenticados. Isso pode ser feito por meio de um arquivo de configuração específico do RabbitMQ, onde é possível definir as permissões de leitura e escrita para as filas, exchanges e outros recursos do RabbitMQ.

Em seguida, é necessário configurar as regras de autenticação no Proxy LDAP. Isso pode ser feito por meio de um arquivo de configuração específico do Proxy LDAP, onde é necessário definir as regras de autenticação e as permissões de acesso para os usuários e grupos do LDAP.

Depois de configurar o Proxy LDAP e o RabbitMQ Server, é necessário testar a conexão e as permissões. Isso pode ser feito por meio de um cliente LDAP que possa se conectar ao servidor e verificar se os usuários estão sendo autenticados corretamente e se as permissões do RabbitMQ estão sendo aplicadas corretamente.

É importante garantir que a configuração do LDAP no RabbitMQ seja feita corretamente e que as permissões de acesso do RabbitMQ sejam restritas apenas aos usuários e grupos autorizados do LDAP. Dessa forma, é possível garantir a segurança do sistema e impedir o acesso não autorizado.

Um exemplo prático de configuração utilizando um Proxy LDAP seria criar um usuário chamado "rabbit" no LDAP e definir as configurações de conexão do RabbitMQ Server para o servidor Proxy LDAP. Em seguida, o Proxy LDAP seria configurado para gerenciar as conexões entre o RabbitMQ e o servidor LDAP externo, com as regras de autenticação e permissões de acesso específicas para o RabbitMQ. O acesso seria testado por meio de um cliente LDAP que poderia se conectar ao servidor e verificar se o usuário "rabbit" está sendo autenticado corretamente no RabbitMQ com as permissões de acesso adequadas.

3.1.5. Utilização de outras ferramentas de gerenciamento de usuários: Algumas ferramentas de gerenciamento de usuários, como o LDAP Admin, podem ser usadas para gerenciar o LDAP do RabbitMQ e sincronizá-lo com o AD.

A quinta maneira de disponibilizar o LDAP no RabbitMQ é por meio da utilização de outras ferramentas de gerenciamento de usuários que não são nativas do RabbitMQ. Essas ferramentas podem ser usadas para gerenciar usuários e grupos do LDAP e, em seguida, sincronizá-los com o RabbitMQ Server. Algumas ferramentas comuns para gerenciamento de usuários incluem:

Apache Directory Studio: Uma ferramenta gratuita e de código aberto para gerenciamento de diretórios LDAP. Ela oferece uma interface gráfica do usuário para criar, modificar e excluir objetos do LDAP, incluindo usuários e grupos.

JXplorer: Outra ferramenta gratuita e de código aberto para gerenciamento de diretórios LDAP. Ela oferece uma interface gráfica do usuário e suporta vários recursos, como pesquisa avançada, edição de atributos e importação/exportação de dados.

Active Directory Users and Computers: Uma ferramenta de gerenciamento de usuários fornecida pela Microsoft para gerenciar usuários e grupos no Active Directory. Ela oferece uma interface gráfica do usuário e permite criar, modificar e excluir usuários e grupos.

Para utilizar essas ferramentas em conjunto com o RabbitMQ, é necessário criar usuários e grupos no diretório LDAP por meio da ferramenta de gerenciamento escolhida. Em seguida, é necessário sincronizar esses usuários e grupos com o RabbitMQ Server por meio de um plugin de gerenciamento de usuários. O RabbitMQ Server oferece suporte a vários plugins de gerenciamento de usuários, como o RabbitMQ LDAP Plugin, que pode ser configurado para sincronizar usuários e grupos do LDAP com o RabbitMQ.

Um exemplo prático de configuração utilizando outras ferramentas de gerenciamento de usuários seria criar usuários e grupos no Apache Directory Studio e, em seguida, configurar o RabbitMQ LDAP Plugin para sincronizar esses usuários e grupos com o RabbitMQ Server. A configuração do plugin incluiria informações como o endereço do servidor LDAP, as credenciais de login e as regras de mapeamento de grupos e permissões. O acesso seria testado por meio de um cliente LDAP que poderia se conectar ao servidor e verificar se os usuários e grupos estão sendo sincronizados corretamente com o RabbitMQ.


3.2. VARIÁVEIS DE AMBIENTE

No ambiente OCP estamos usando o RabbitMQ em um contêiner Docker, assim precisará definir as variáveis de ambiente apropriadas para configurar a autenticação do LDAP. Algumas variáveis relevantes incluem:

RABBITMQ_AUTH_BACKEND: esta variável deve ser definida como rabbit_auth_backend_ldap para usar o plugin de autenticação LDAP do RabbitMQ.

RABBITMQ_LDAP_SERVER: esta variável define o endereço do servidor LDAP que será usado para autenticação.

RABBITMQ_LDAP_PORT: esta variável define a porta do servidor LDAP que será usado para autenticação.

RABBITMQ_LDAP_USER_DN_PATTERN: esta variável define o padrão de nome distinto (DN) do usuário no servidor LDAP. Por exemplo, se seus usuários LDAP tiverem um atributo uid, o valor poderia ser uid=${username},ou=people,dc=example,dc=com.

RABBITMQ_LDAP_TLS: esta variável indica se a conexão com o servidor LDAP deve usar TLS. Defina-a como on para usar TLS ou off para não usar.

RABBITMQ_LDAP_TLS_CAFILE: esta variável define o caminho para o arquivo CA que contém as autoridades de certificação que confiamos para autenticar o servidor LDAP.

RABBITMQ_LDAP_TLS_CERTFILE: esta variável define o caminho para o arquivo de certificado a ser usado ao autenticar o cliente com o servidor LDAP.

RABBITMQ_LDAP_TLS_KEYFILE: esta variável define o caminho para o arquivo de chave privada a ser usado ao autenticar o cliente com o servidor LDAP.

RABBITMQ_LDAP_TLS_VERIFY: esta variável define como o cliente verifica a autenticidade do certificado do servidor LDAP. Defina-a como verify_peer para verificar o certificado do servidor, verify_none para não verificar o certificado ou verify_peer_name para verificar o certificado e o nome do servidor LDAP.

RABBITMQ_LDAP_USER_SEARCH_BASE: esta variável define o DN da base de pesquisa para localizar usuários no servidor LDAP.

RABBITMQ_LDAP_USER_SEARCH_SCOPE: esta variável define o escopo da pesquisa de usuários no servidor LDAP. Defina-a como subtree para pesquisar em toda a subárvore abaixo da base ou onelevel para pesquisar apenas abaixo da base.

RABBITMQ_LDAP_USER_SEARCH_FILTER: esta variável define o filtro de pesquisa usado para localizar usuários no servidor LDAP.

RABBITMQ_LDAP_USER_SEARCH_USERNAME: esta variável define o atributo do servidor LDAP que contém o nome do usuário.

 

4. CONCLUSÃO

Disponibilizar o LDAP do RabbitMQ Server para um Active Directory é importante para garantir a segurança e a eficiência do sistema. Existem várias maneiras de fazer isso, incluindo a configuração do LDAP diretamente no RabbitMQ, a utilização de ferramentas de terceiros para sincronizar o AD com o LDAP do RabbitMQ, a utilização de plugins, a utilização de Proxy LDAP e outras ferramentas de gerenciamento de usuários. É importante escolher a solução que melhor atenda às necessidades da SETIC e garantir que a segurança do sistema seja mantida em todos os momentos.