

AWS O Mainframe Modernization Service (experiência em Managed Runtime Environment) não está mais aberto a novos clientes. Para recursos semelhantes ao AWS Mainframe Modernization Service (experiência em Managed Runtime Environment), explore o AWS Mainframe Modernization Service (experiência autogerenciada). Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte Alteração na [disponibilidade AWS da modernização do mainframe](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar segurança para aplicações Gapwalk
<a name="ba-runtime-security"></a>

Os tópicos a seguir descrevem como proteger as aplicações Gapwalk.

É sua responsabilidade fornecer a configuração correta para garantir que o uso da estrutura AWS Transform for mainframe seja seguro.

Todos os atributos relacionados à segurança são desabilitados por padrão. Para habilitar a autenticação (e CSRF, XSS, CSP, etc.), defina `gapwalk-application.security` como `enabled` e `gapwalk-application.security.identity` como `oauth`.

**Topics**
+ [Configurar a acessibilidade do URI para aplicações Gapwalk](ba-runtime-filteringURIs.md)
+ [Configurar autenticação para aplicações do Gapwalk](ba-runtime-auth.md)
+ [Configure a limitação de taxa para o AWS Transform for mainframe Runtime](ba-runtime-rate-limiting.md)

# Configurar a acessibilidade do URI para aplicações Gapwalk
<a name="ba-runtime-filteringURIs"></a>

Este tópico descreve como configurar a filtragem dos aplicativos do URIs Gapwalk. Esse recurso não exige um provedor de identidades (IdP).

Para bloquear uma lista de URIs, adicione as duas linhas a seguir à `application-main.yml` do seu aplicativo modernizado*URI-1*, substituindo*URI-2*, etc., pela URIs que você deseja bloquear.

```
gapwalk-application.security.filterURIs: enabled
gapwalk-application.security.blockedURIs: URI-1, URI-2, URI-3
```

# Configurar autenticação para aplicações do Gapwalk
<a name="ba-runtime-auth"></a>

Para configurar a OAuth2 autenticação para seu aplicativo Gapwalk, você precisa configurar um provedor de identidade (IdP) e integrá-lo ao seu aplicativo. Este guia aborda as etapas para usar o Amazon Cognito ou o Keycloak como o IdP. Com o Amazon Cognito, é possível atualizar o arquivo de configuração de sua aplicação com os detalhes do grupo de usuários do Cognito. Com o Keycloak, você pode controlar o acesso aos seus aplicativos APIs e recursos com base nas funções atribuídas ao usuário.

**Topics**
+ [Configurar a OAuth2 autenticação do Gapwalk com o Amazon Cognito](ba-runtime-auth-cognito.md)
+ [Configure a OAuth2 autenticação Gapwalk com o Keycloak](ba-runtime-auth-keycloak.md)

# Configurar a OAuth2 autenticação do Gapwalk com o Amazon Cognito
<a name="ba-runtime-auth-cognito"></a>

Este tópico descreve como configurar a OAuth2 autenticação para aplicativos Gapwalk usando o Amazon Cognito como provedor de identidade (IdP).

## Pré-requisitos
<a name="ba-runtime-auth-cognito-prereq"></a>

Neste tutorial, usaremos o Amazon Cognito como IdP e PlanetDemo como projeto modernizado.

Você pode usar qualquer outro provedor de identidade externo. As ClientRegistration informações devem ser obtidas do seu IdP e são necessárias para a autenticação do Gapwalk. Para obter mais informações, consulte o [Guia do desenvolvedor do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

**As ClientRegistration informações:**

client-id  
O ID da ClientRegistration. Em nosso exemplo, será PlanetsDemo.

client-secret  
O segredo do cliente.

endpoint de autorização  
O URI do endpoint de autorização para o servidor de autorização.

endpoint de token  
O URI do endpoint do token para o servidor de autorização.

endpoint jwks  
O URI usado para receber a chave web JSON (JWK) que contém as chaves para validar a assinatura web JSON emitida pelo servidor de autorização.

URI de redirecionamento  
O URI para o qual o servidor de autorização redirecionará o usuário final se o acesso for concedido.

## Configuração do Amazon Cognito
<a name="cog-setup"></a>

Primeiro, criaremos e configuraremos um grupo de usuários e usuário do Amazon Cognito que usaremos com nossa aplicação Gapwalk implantada para fins de teste.

**nota**  
Se você estiver usando outro IdP, poderá ignorar esta etapa.

**Criar grupo de usuários**

1. Acesse o Amazon Cognito em Console de gerenciamento da AWS e autentique-se usando suas credenciais. AWS 

1. Escolha **Grupos de usuários**.

1. Selecione **Criar um grupo de usuários**.

1. Em **Configurar a experiência de login**, mantenha o tipo de provedor padrão do **grupo de usuários do Cognito**. Você pode escolher uma ou várias **opções de login do grupo de usuários do Cognito**; por enquanto, escolha **Nome do usuário** e escolha **Próximo.**  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-auth-provider.png)

1. Em **Configurar os requisitos de segurança**, mantenha os padrões e desative a **Autenticação multifator** escolhendo **Sem MFA** e selecione **Próximo**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-sec-requirements.png)

1. Como medida de segurança, desative a opção **Habilitar autorregistro** e escolha **Próximo**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-config-sign-up.png)

1. Escolha **Enviar e-mails com o Cognito** e **Próximo**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-email.png)

1. Em **Integrar sua aplicação**, escolha um nome para o grupo de usuários. Nas **páginas de autenticação hospedada**, escolha **Usar a interface do usuário hospedada do Cognito**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-domain.png)

1. Para simplificar, em **Domínio**, escolha **Usar um domínio do Cognito** e insira um prefixo de domínio; por exemplo, `https://planetsdemo`. A aplicação de demonstração deve ser adicionada como cliente.

   1. Em **Cliente inicial da aplicação**, escolha **Cliente confidencial**. Insira um nome de cliente da aplicação, por exemplo, **planetsdemo**, e escolha **Gerar um segredo de cliente**.

   1. Em **URL de retorno de chamada permitido**, insira o URL para a qual redirecionar o usuário após a autenticação. O URL deve terminar com `/login/oauth2/code/cognito`. Por exemplo, para nossas aplicações e aplicações de backend Gapwalk e BAC:

      ```
      http://localhost:8080/bac
            http://localhost:8080/bac/login/oauth2/code/cognito
            http://localhost:8080/gapwalk-application
            http://localhost:8080/gapwalk-application/login/oauth2/code/cognito
            http://localhost:8080/planetsdemo
            http://localhost:8080/planetsdemo/login/oauth2/code/cognito
      ```

      É possível editar o URL posteriormente.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-urls.png)

   1. Em **Desconexão permitida**, URLs insira a URL da página de saída para a qual você deseja que o Amazon Cognito redirecione quando seu aplicativo desconectar os usuários. Por exemplo, para aplicações de backend Gapwalk e BAC:

      ```
      http://localhost:8080/bac/logout
      http://localhost:8080/gapwalk-application/logout
      http://localhost:8080/planetsdemo/logout
      ```

      É possível editar o URL posteriormente.

   1. Mantenha os valores padrão nas seções **Configurações avançadas do cliente de aplicação** e **Permissões avançadas de leitura e gravação de atributos**.

   1. Escolha **Próximo**.

1. Em **Revisar e criar**, verifique suas escolhas e escolha **Criar grupo de usuários**.

Para obter mais informações, consulte [Criar um grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html).

**Criação de usuário**

Como o autorregistro está desativado, crie um usuário do Amazon Cognito. Navegue até o Amazon Cognito no Console de gerenciamento da AWS. Escolha o grupo de usuários que você criou e, depois, em **Usuários**, escolha **Criar usuário**.

Em **Informações do usuário**, escolha **Enviar um convite por e-mail**, insira um nome de usuário e um endereço de e-mail e escolha **Gerar uma senha**. Selecione **Criar usuário**.

**Criação de perfil**

Na guia **Grupos**, crie três grupos (SUPER\$1ADMIN, ADMIN e USER) e associe o usuário a um ou mais desses grupos. Posteriormente, esses perfis são associados a ROLE\$1SUPER\$1ADMIN, ROLE\$1ADMIN e ROLE\$1USER pela aplicação Gapwalk para possibilitar o acesso a algumas chamadas restritas de API REST.

O aplicativo implementa um scope-to-role mapeamento hierárquico que funciona com vários OAuth2 provedores de identidade. Quando os tokens JWT emitidos pelo Cognito são usados para autorização do servidor de recursos, os escopos definidos no token são mapeados automaticamente para as funções correspondentes.

## Integrar o Amazon Cognito à aplicação Gapwalk
<a name="integrate-cognito"></a>

Agora que seu grupo de usuários e usuários do Amazon Cognito estão prontos, acesse o arquivo `application-main.yml` da sua aplicação modernizada e adicione o seguinte código:

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: https://cognito-idp.<region-id>.amazonaws.com/<pool-id>
gapwalk-application.security.domainName: <your-cognito-domain>

spring:
  security:
    oauth2:
      client:
        registration:
          cognito:
            client-id: <client-id>
            client-name: <client-name>
            client-secret: <client-secret>
            provider: cognito
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "<redirect-uri>"
        provider:
          cognito:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.domainName}/oauth2/authorize
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
            token-uri: ${gapwalk-application.security.domainName}/oauth2/token
            user-name-attribute: username
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
```

Substitua os seguintes espaços reservados conforme descrito:

1. Acesse o Amazon Cognito em Console de gerenciamento da AWS e autentique-se usando suas credenciais. AWS 

1. Escolha **Grupos de usuários** e o grupo de usuários que você criou. Você pode encontrar o seu *pool-id* no **ID do grupo de usuários**.

1. Escolha **Integração de aplicativos**, onde você pode encontrar sua*your-cognito-domain*, acesse **Clientes e análises** de aplicativos e escolha seu aplicativo.

1. Em **Cliente de aplicativo: YourApp**, você pode encontrar o *client-name**client-id*, e *client-secret* (**Mostrar segredo do cliente**).

1. *region-id*corresponde ao ID da AWS região em que você criou seu grupo de usuários e usuários do Amazon Cognito. Exemplo: `eu-west-3`.

1. Para, *redirect-uri* insira o URI que você especificou para **URL de retorno de chamada permitido**. Em nosso exemplo, é `http://localhost:8080/planetsdemo/login/oauth2/code/cognito`.

Agora é possível implantar sua aplicação Gapwalk e usar o usuário criado anteriormente para fazer login na sua aplicação.

# Configure a OAuth2 autenticação Gapwalk com o Keycloak
<a name="ba-runtime-auth-keycloak"></a>

Este tópico descreve como configurar a OAuth2 autenticação para aplicativos Gapwalk usando o Keycloak como provedor de identidade (IdP). Neste tutorial, usamos o Keycloak 24.0.0.

## Pré-requisitos
<a name="ba-runtime-auth-keycloak-prereq"></a>
+ [Keycloak](https://www.keycloak.org/)
+ Aplicação Gapwalk

## Configuração do Keycloak
<a name="keycloak-setup"></a>

1. Acesse o painel do Keycloak no navegador da web. As credenciais padrão são admin/admin. Acesse a barra de navegação do canto superior esquerdo e crie um domínio com o nome **demo**, conforme mostrado na imagem a seguir.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_2.png)

1. Crie um cliente com o nome **app-demo**.  
![\[User interface for creating a new client in an authentication management system.\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_3.jpg)

   Substituir `localhost:8080` pelo endereço da sua aplicação Gapwalk  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_4.png)  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_5.png)

1. Para receber o segredo do cliente, escolha **Clientes**, depois **app-demo** e depois **Credenciais**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_6.jpg)

1. Escolha **Clientes**, depois **Escopos do cliente** e, depois, **Adicionar mapeador predefinido**. Escolha **Perfis do domínio**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_7.jpg)

1. Edite o perfil de domínio com a configuração mostrada na imagem a seguir.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_8.jpg)

1. Lembre-se do **Nome de reivindicação de token** definido. Você precisará desse valor na definição de configurações do Gapwalk para a propriedade `gapwalk-application.security.claimGroupName`.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_9.jpg)

1. Escolha **Perfis do domínio** e crie três perfis: **SUPER\$1ADMIN**, **ADMIN** e **USER**. Esses perfis são posteriormente associados a `ROLE_SUPER_ADMIN`, `ROLE_ADMIN` e `ROLE_USER` pela aplicação Gapwalk para poder acessar algumas chamadas restritas de API REST.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_10.jpg)

## Integrar o Keycloak à aplicação Gapwalk
<a name="gapwalk-setup"></a>

Edite `application-main.yml` da seguinte forma:

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: http://<KEYCLOAK_SERVER_HOSTNAME>/realms/<YOUR_REALM_NAME>
gapwalk-application.security.claimGroupName: "keycloak:groups"

gapwalk-application.security.userAttributeName: "preferred_username"
# Use "username" for cognito, 
#     "preferred_username" for keycloak
#      or any other string

spring:
  security:
    oauth2:
      client:
        registration:
          demo:
            client-id: <YOUR_CLIENT_ID>
            client-name: Demo App
            client-secret: <YOUR_CLIENT_SECRET>
            provider: keycloak
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          keycloak:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/auth
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
            token-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/token
            user-name-attribute: ${gapwalk-application.security.userAttributeName}
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
```

Substitua *<KEYCLOAK\$1SERVER\$1HOSTNAME>**<YOUR\$1REALM\$1NAME>*,*<YOUR\$1CLIENT\$1ID>*, e *<YOUR\$1CLIENT\$1SECRET>* por seu nome de host do servidor Keycloak, seu nome de domínio, seu ID de cliente e seu segredo de cliente.

# Configure a limitação de taxa para o AWS Transform for mainframe Runtime
<a name="ba-runtime-rate-limiting"></a>

AWS O Transform for mainframe Runtime inclui funcionalidade integrada de limitação de taxa para proteger o aplicativo Gapwalk contra solicitações excessivas e possíveis abusos. O sistema de limitação de taxa usa o algoritmo Token Bucket para fornecer capacidade de intermitência e limitação de taxa sustentada.

**Topics**
+ [Visão geral da limitação de taxa](#ba-runtime-rate-limiting-overview)
+ [Propriedades de configuração](#ba-runtime-rate-limiting-config)
+ [Ativar limitação de taxa](#ba-runtime-rate-limiting-enable)
+ [Identificação do cliente](#ba-runtime-rate-limiting-client-id)
+ [Cabeçalhos de limite de taxa](#ba-runtime-rate-limiting-headers)
+ [Gerenciamento de memória](#ba-runtime-rate-limiting-memory)

## Visão geral da limitação de taxa
<a name="ba-runtime-rate-limiting-overview"></a>

O sistema de limitação de taxa fornece os seguintes recursos:

**Algoritmo de token bucket**  
+ Permite tráfego intermitente até a capacidade de intermitência configurada
+ Recarrega tokens a uma taxa constante com base nas solicitações por minuto
+ Oferece uma limitação suave da taxa sem bloquear picos de tráfego legítimos

**Identificação do cliente**  
+ Identifica clientes por endereço IP com suporte a proxy
+ Suportes X-Forwarded-For e X-Real-IP cabeçalhos
+ Lida com cenários de balanceador de carga e proxy reverso

**Gerenciamento automatizado da memória**  
+ Limpa automaticamente os buckets de limite de taxa expirados
+ Intervalos de limpeza e prazos de expiração configuráveis
+ Evita vazamentos de memória em aplicativos de longa duração

**Integração HTTP**  
+ Retorna HTTP 429 (muitas solicitações) quando os limites são excedidos
+ Inclui cabeçalhos de limite de taxa padrão nas respostas
+ Fornece informações sobre novas tentativas para clientes

## Propriedades de configuração
<a name="ba-runtime-rate-limiting-config"></a>

Configure a limitação de taxa em seu `application-main.yaml` arquivo:

```
gapwalk:
  ratelimiting:
    enabled: true                                        # Enable/disable rate limiting
    requestsPerMinute: 1000                              # Sustained rate limit per minute
    burstCapacity: 1500                                  # Maximum burst requests allowed
    includeHeaders: true                                 # Include X-RateLimit-* headers
    cleanupIntervalMinutes: 5                            # Cleanup interval for expired buckets
    bucketExpiryHours: 1                                 # Hours after which unused buckets expire
    errorMessage: "Too many requests. Try again later."  # Custom error message
    whitelistIps: ""                                     # Comma-separated IPs to bypass limiting
    perEndpointLimiting: false                           # Apply limits per endpoint (not implemented)
```

### Descrições da propriedade
<a name="ba-runtime-rate-limiting-config-properties"></a>

**habilitado**  
Interruptor principal para ativar ou desativar a funcionalidade de limitação de taxa. Padrão: `false`

**requestsPerMinute**  
Número de solicitações permitidas por minuto para limitação sustentada da taxa. Isso representa a taxa de recarga do token. Padrão: `1000`

**Capacidade de explosão**  
Número máximo de solicitações permitidas em uma sequência antes da aplicação da limitação de taxa. Deve ser maior do que `requestsPerMinute` permitir picos de tráfego. Padrão: `1500`

**Incluir cabeçalhos**  
Se os cabeçalhos de limite de taxa padrão (`X-RateLimit-Limit`,`X-RateLimit-Remaining`,`X-RateLimit-Reset`) devem ser incluídos nas respostas HTTP. Padrão: `true`

**cleanupIntervalMinutes**  
Intervalo em minutos entre a limpeza automática dos intervalos de limite de taxa expirados. Ajuda a evitar vazamentos de memória. Padrão: `5`

**bucketExpiryHours**  
Tempo em horas após o qual os intervalos de limite de tarifa não utilizados são considerados expirados e elegíveis para limpeza. Padrão: `1`

**errorMessage**  
Mensagem de erro personalizada retornada na resposta JSON quando o limite de taxa é excedido. Padrão: `"Too many requests. Try again later."`

**Dicas de White List**  
Lista separada por vírgula de endereços IP que ignoram totalmente a limitação de taxa. Útil para verificações de saúde ou sistemas confiáveis. Padrão: `empty`

**perEndpointLimiting**  
Se deve aplicar limites de taxa separados por endpoint em vez de apenas por cliente. Atualmente não implementado. Padrão: `false`

## Ativar limitação de taxa
<a name="ba-runtime-rate-limiting-enable"></a>

Para ativar a limitação de taxa com as configurações padrão:

```
gapwalk:
  ratelimiting:
    enabled: true
```

## Identificação do cliente
<a name="ba-runtime-rate-limiting-client-id"></a>

O sistema de limitação de taxa identifica clientes usando a seguinte ordem de prioridade:

1. **X-Forwarded-For cabeçalho** (primeiro IP se separado por vírgula)

1. **X-Real-IP cabeçalho**

1. **Endereço remoto** da solicitação HTTP

Isso garante a identificação adequada do cliente quando o aplicativo está atrasado:
+ Balanceadores de cargas
+ Proxies reversos
+ CDNs
+ Gateways de API

### Exemplo de identificação do cliente
<a name="ba-runtime-rate-limiting-client-id-example"></a>

```
# Direct connection
Client IP: 192.168.1.100

# Behind load balancer with X-Forwarded-For
X-Forwarded-For: 203.0.113.45, 192.168.1.100
Client IP: 203.0.113.45 (first IP used)

# Behind reverse proxy with X-Real-IP
X-Real-IP: 203.0.113.45
Client IP: 203.0.113.45
```

## Cabeçalhos de limite de taxa
<a name="ba-runtime-rate-limiting-headers"></a>

Quando `includeHeaders` ativado, os seguintes cabeçalhos são adicionados às respostas HTTP:

**X- RateLimit -Limite**  
O limite máximo de tarifa para o cliente (solicitações por minuto)

**X- RateLimit -Restante**  
O número de solicitações restantes na janela de limite de taxa atual

**X- RateLimit -Reiniciar**  
A hora em que a janela de limite de taxa é redefinida (carimbo de data/hora do Unix)

### Exemplos de cabeçalhos de resposta
<a name="ba-runtime-rate-limiting-headers-example"></a>

```
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1640995200
```

### Limite de taxa de resposta excedido
<a name="ba-runtime-rate-limiting-headers-exceeded"></a>

Quando o limite de taxa é excedido, o sistema retorna:

**Status HTTP**  
429, muitas solicitações

**Content-Type**  
application/json

**Retry-After**  
Número de segundos de espera antes de tentar novamente

```
{
  "error": "Rate limit exceeded",
  "message": "Too many requests. Try again later.",
  "retryAfter": 60,
  "timestamp": 1640995140000
}
```

## Gerenciamento de memória
<a name="ba-runtime-rate-limiting-memory"></a>

O sistema de limitação de taxa gerencia automaticamente a memória para evitar vazamentos em aplicativos de longa execução:

**Limpeza automática**  
+ É executado a cada `cleanupIntervalMinutes` minuto
+ Remove baldes não utilizados por horas `bucketExpiryHours`
+ Registra a atividade de limpeza para monitoramento

**Eficiência de memória**  
+ Usa estruturas de dados simultâneas para segurança de threads
+ Criação lenta de buckets (somente quando necessário)
+ Implementação eficiente de token bucket

### Monitorando a atividade de limpeza
<a name="ba-runtime-rate-limiting-memory-monitoring"></a>

Verifique os registros das mensagens de limpeza:

```
INFO  RateLimitingService - Cleaned up 15 expired rate limiting buckets
```