Configurar a autenticação Kerberos para clusters de banco de dados do Aurora MySQL - Amazon Aurora

Configurar a autenticação Kerberos para clusters de banco de dados do Aurora MySQL

Use o AWS Managed Microsoft AD para configurar a autenticação Kerberos para um cluster de banco de dados do Aurora MySQL. Para configurar a autenticação Kerberos, execute as etapas a seguir.

Etapa 1: Criar um diretório usando o AWS Managed Microsoft AD

O AWS Directory Service cria um Active Directory totalmente gerenciado na Nuvem AWS. Ao criar um diretório do AWS Managed Microsoft AD, o AWS Directory Service cria dois controladores de domínio e servidores do Domain Name System (DNS) em seu nome. Os servidores do diretório são criados em sub-redes diferentes em uma VPC. Essa redundância ajuda a garantir que o diretório permaneça acessível mesmo se ocorrer uma falha.

Ao criar um diretório do AWS Managed Microsoft AD, o AWS Directory Service executa as seguintes tarefas em seu nome:

  • Configura um Active Directory dentro da VPC.

  • Cria uma conta de administrador do diretório com o nome de usuário Admin e a senha especificada. Use essa conta para gerenciar seu diretório.

    nota

    Salve essa senha. O AWS Directory Service não a armazena. Você pode redefini-la, mas não recuperá-la.

  • Cria um grupo de segurança para os controladores do diretório.

Quando você inicia o AWS Managed Microsoft AD, o AWS cria uma Unidade organizacional (UO) que contém todos os objetos do diretório. Essa UO tem o nome de NetBIOS que você digitou ao criar o diretório. Ele está localizado na raiz do domínio, que pertence à AWS e é gerenciado por ela.

A conta Admin, que foi criada com o diretório AWS Managed Microsoft AD, tem permissões para as atividades administrativas mais comuns da UO, como:

  • Criar, atualizar ou excluir usuários

  • Adicionar recursos ao domínio, como servidores de arquivos ou de impressão, e atribuir permissões para esses recursos aos usuários na UO

  • Criar OUs adicionais e contêineres

  • Delegar autoridade

  • Restaurar objetos excluídos da Lixeira do Active Directory

  • Execute os módulos AD e DNS do Windows PowerShell no Active Directory Web Service

A conta Admin também possui direitos para executar as seguintes atividades de domínio:

  • Gerenciar configurações de DNS (adicionar, remover ou atualizar registros, zonas e encaminhadores)

  • Visualizar logs de eventos de DNS

  • Visualizar logs de eventos de segurança

Como criar um diretório com AWS Managed Microsoft AD
  1. Faça login no AWS Management Console e abra o console do AWS Directory Service em https://console.aws.amazon.com/directoryservicev2/.

  2. No painel de navegação, escolha Directories (Diretórios) e escolha Set up directory (Configurar diretório).

  3. Escolha AWS Managed Microsoft AD. O AWS Managed Microsoft AD é a única opção que você pode usar atualmente com o Amazon RDS.

  4. Insira as seguintes informações:

    Nome do DNS do diretório

    O nome completo do diretório, como corp.example.com.

    Nome de NetBIOS do diretório

    O nome curto do diretório, como CORP.

    Descrição do diretório

    (Opcional) Uma descrição do diretório.

    Senha do Admin

    A senha do administrador do diretório. O processo de criação do diretório cria uma conta de administrador com o nome de usuário Admin e essa senha.

    A senha do administrador do diretório e não pode incluir a palavra "admin". A senha diferencia letras maiúsculas de minúsculas e deve ter entre 8 e 64 caracteres. Ela também precisa conter pelo menos um caractere de três das quatro categorias a seguir:

    • Letras minúsculas (a–z)

    • Letras maiúsculas (A–Z)

    • Números (0–9)

    • Caracteres não alfanuméricos (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    Confirmar senha

    A senha do administrador reinserida.

  5. Escolha Next (Próximo).

  6. Insira as seguintes informações na seção Networking (Rede) e escolha Next (Próximo):

    VPC

    A VPC do diretório. Crie o cluster de banco de dados do Aurora MySQL nesta mesma VPC.

    Sub-redes

    Sub-redes para os servidores do diretório. As duas sub-redes deve estar em diferentes zonas de disponibilidade.

  7. Revise as informações do diretório e faça as alterações necessárias. Quando as informações estiverem corretas, selecione Create directory (Criar diretório).

    Página de detalhes do diretório durante a criação

A criação do diretório leva alguns minutos. Depois que o diretório tiver sido criado com sucesso, o valor de Status muda para Active (Ativo).

Para ver informações sobre o diretório, selecione o nome do diretório na listagem de diretórios. Anote o valor do ID do diretório porque você precisará desse valor ao criar ou modificar seu cluster de banco de dados do Aurora MySQL.

ID do diretório na página Detalhes do diretório

Etapa 2: (Opcional) Criar uma confiança para um Active Directory on-premises

Se você não planeja usar seu próprio Microsoft Active Directory on-premises, vá para Etapa 3: Criar um perfil do IAM para ser usada pelo Amazon Aurora.

Para obter a autenticação Kerberos usando o Active Directory on-premises, é necessário criar uma relação de domínio confiável usando uma confiança de floresta entre o Microsoft Active Directory on-premises e o diretório AWS Managed Microsoft AD (criado em Etapa 1: Criar um diretório usando o AWS Managed Microsoft AD). A relação de confiança pode ser unidirecional, onde o diretório AWS Managed Microsoft AD confia no Microsoft Active Directory on-premises. A confiança também pode ser bidirecional, onde os dois Active Directories confiam um no outro. Para ter mais informações sobre como configurar confianças usando o AWS Directory Service, consulte Quando criar uma relação de confiança no Guia de administração do AWS Directory Service.

nota

Se você usa um Microsoft Active Directory on-premises:

  • Os clientes do Windows devem se conectar usando o nome de domínio do AWS Directory Service no endpoint em vez de rds.amazonaws.com. Para ter mais informações, consulte Conectar-se ao Aurora MySQL com a autenticação Kerberos.

  • Os clientes do Windows não podem se conectar usando endpoints personalizados do Aurora. Para saber mais, consulte Gerenciamento de conexões do Amazon Aurora.

  • Para bancos de dados globais:

    • Os clientes do Windows podem se conectar usando endpoints de instância ou endpoints do cluster somente na Região da AWS primária do banco de dados global.

    • Os clientes do Windows não podem se conectar usando endpoints do cluster em Regiões da AWS secundárias.

Verifique se o nome de domínio do Microsoft Active Directory on-premises inclui um roteamento de sufixo DNS que corresponde à relação de confiança recém-criada. A captura de tela a seguir mostra um exemplo.

O roteamento de DNS corresponde à confiança criada

Etapa 3: Criar um perfil do IAM para ser usada pelo Amazon Aurora

Para que o Amazon Aurora chame o AWS Directory Service para você, é necessário ter um perfil do AWS Identity and Access Management (IAM) que use a política gerenciada AmazonRDSDirectoryServiceAccess do IAM. Este perfil permite que o Aurora faça chamadas ao AWS Directory Service.

Quando você cria um cluster de banco de dados usando o AWS Management Console e tem a permissão iam:CreateRole, o console cria esse perfil automaticamente. Nesse caso, o nome da função é rds-directoryservice-kerberos-access-role. Caso contrário, é necessário criar a função do IAM manualmente. Ao criar essa função do IAM, escolha Directory Service e associe a AWS política gerenciada da AmazonRDSDirectoryServiceAccess a ela.

Para ter mais informações sobre como criar funções do IAM para um serviço, consulte o tópico sobre como Criar uma função para delegar permissões a um serviço da AWS, no Guia do usuário do IAM.

Se preferir, você poderá criar políticas com as permissões exigidas em vez de usar a política gerenciada do IAM AmazonRDSDirectoryServiceAccess. Nesse caso, o perfil do IAM deve ter a política de confiança do IAM a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

A função também deve ter a política de perfil do IAM a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }

Etapa 4: Criar e configurar usuários

Você pode criar usuários com a ferramenta Usuários e computadores do Active Directory. Essa ferramenta faz parte das ferramentas do Active Directory Domain Services e do Active Directory Lightweight Directory Services. Os usuários representam pessoas ou entidades individuais que têm acesso ao seu diretório.

Para criar usuários em um diretório AWS Directory Service, você usa uma instância on-premises ou do Amazon EC2 baseada no Microsoft Windows conectada seu diretório AWS Directory Service. É necessário estar conectado à instância como um usuário que tenha privilégios para criar usuários. Para ter mais informações, consulte o tópico sobre como Gerenciar usuários e grupos AWS Managed Microsoft AD, no Guia de administração do AWS Directory Service.

Etapa 5: Criar ou modificar um cluster de banco de dados do Aurora MySQL

Crie ou modifique um cluster de banco de dados MySQL para usar com o diretório. É possível usar o console, a AWS CLI ou a API do RDS para associar um cluster de banco de dados a um diretório. Você pode realizar essa tarefa por meio de uma das seguintes maneiras:

A autenticação Kerberos só é compatível com clusters de banco de dados do Aurora MySQL em uma VPC. O cluster de banco de dados pode estar na mesma VPC do diretório ou em uma VPC diferente. A VPC do cluster de banco de dados deve ter um grupo de segurança de VPC que permita a comunicação de saída com seu diretório.

Ao usar o console para criar, modificar ou restaurar um cluster de banco de dados, escolha Kerberos authentication (Autenticação Kerberos) na seção Database authentication (Autenticação de banco de dados). Escolha Browse Directory (Procurar diretório) e selecione o diretório ou escolha Create a new directory (Criar um diretório).

Configuração da autenticação Kerberos ao criar um cluster de banco de dados

Ao usar a AWS CLI ou a API do RDS, associe um cluster de banco de dados a um diretório. Os seguintes parâmetros são necessários para que o cluster de banco de dados utilize o diretório de domínio que você criou:

  • Para o parâmetro --domain, use o identificador de domínio (identificador "d-*") gerado quando o diretório foi criado.

  • Para o parâmetro --domain-iam-role-name, use a função criada que usa a política gerenciada AmazonRDSDirectoryServiceAccess do IAM.

Por exemplo, o comando da CLI a seguir modifica um cluster de banco de dados para usar um diretório.

Para Linux, macOS ou Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --domain d-ID \ --domain-iam-role-name role-name

Para Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --domain d-ID ^ --domain-iam-role-name role-name
Importante

Se você modificar um cluster de banco de dados para ativar a autenticação Kerberos, reinicialize as instâncias de banco de dados do leitor após a alteração.

Etapa 6: Criar usuários do Aurora MySQL que usam a autenticação Kerberos

O cluster de banco de dados é unido ao domínio AWS Managed Microsoft AD. Assim, é possível criar usuários do Aurora MySQL de usuários do Active Directory em seu domínio. As permissões de banco de dados são gerenciadas por meio de permissões padrão do Aurora MySQL que são concedidas e revogadas desses usuários.

Você pode permitir que um usuário do Active Directory seja autenticado pelo Aurora MySQL. Para fazer isso, primeiro use as credenciais do usuário primário do Amazon RDS para se conectar ao cluster de banco de dados do Aurora MySQL como você faz com qualquer outro cluster de banco de dados. Após o login, crie um usuário autenticado externamente com a autenticação Kerberos no Aurora MySQL como mostrado aqui:

CREATE USER user_name@'host_name' IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
  • Substitua user_name pelo nome de usuário. Agora, os usuários (humanos e aplicações) de seu domínio poderão se conectar ao cluster de banco de dados de uma máquina cliente conectada ao domínio usando a autenticação Kerberos.

  • Substitua host_name pelo nome do host. Você pode usar % como curinga. Você também pode usar endereços IP específicos para o nome do host.

  • Substitua realm_name pelo nome do realm do diretório do domínio. O nome do realm geralmente é igual ao nome do domínio DNS em letras maiúsculas, como CORP.EXAMPLE.COM. Um realm é um grupo de sistemas que usam o mesmo Centro de Distribuição de Chaves do Kerberos.

O exemplo a seguir cria um usuário de banco de dados com o nome Admin que é autenticado no Active Directory com o nome do realm MYSQL.LOCAL.

CREATE USER Admin@'%' IDENTIFIED WITH 'authentication_kerberos' BY 'MYSQL.LOCAL';

Modificar um login existente do Aurora MySQL

Você também pode modificar um login existente do Aurora MySQL para usar a autenticação Kerberos utilizando a seguinte sintaxe:

ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';

Etapa 7: Configurar um cliente MySQL

Para configurar um cliente MySQL, execute as seguintes etapas:

  1. Crie um arquivo krb5.conf (ou equivalente) para apontar para o domínio.

  2. Verifique se o tráfego pode fluir entre o host do cliente e o AWS Directory Service. Use um utilitário de rede, como o Netcat, para o seguinte:

    • Verifique o tráfego pelo DNS da porta 53.

    • Verifique o tráfego pelo TCP/UDP da porta 53 e do Kerberos, que inclui as portas 88 e 464 do AWS Directory Service.

  3. Verifique se o tráfego pode fluir entre o host do cliente e a instância de banco de dados pela porta do banco de dados. Por exemplo, use mysql para conectar e acessar o banco de dados.

Veja a seguir um exemplo de conteúdo krb5.conf para o AWS Managed Microsoft AD.

[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM

Veja a seguir um exemplo de conteúdo krb5.conf para o Microsoft Active Directory on-premises.

[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } ONPREM.COM = { kdc = onprem.com admin_server = onprem.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM .onprem.com = ONPREM.COM onprem.com = ONPREM.COM .rds.amazonaws.com = EXAMPLE.COM .amazonaws.com.cn = EXAMPLE.COM .amazon.com = EXAMPLE.COM

Etapa 8: (Opcional) Configurar a comparação de nomes de usuário sem distinção entre maiúsculas e minúsculas

Por padrão, a capitalização das letras do nome de usuário do banco de dados MySQL deve corresponder à capitalização usada no login do Active Directory. No entanto, agora você pode usar a comparação de nomes de usuário sem distinção entre maiúsculas e minúsculas com o plug-in authentication_kerberos. Para fazer isso, defina o parâmetro authentication_kerberos_caseins_cmp de cluster de banco de dados como true.

Como usar a comparação de nomes de usuário sem distinção entre maiúsculas e minúsculas
  1. Crie um grupo de parâmetros de cluster de banco de dados personalizado. Siga os procedimentos em Criar um grupo de parâmetros de cluster de banco de dados.

  2. Edite o novo grupo de parâmetros para definir o valor de authentication_kerberos_caseins_cmp como true. Siga os procedimentos em Modificar parâmetros em um grupo de parâmetros de cluster de banco de dados.

  3. Associe o grupo de parâmetros de cluster de banco de dados ao cluster de banco de dados do Aurora MySQL. Siga os procedimentos em Associar um grupo de parâmetros de cluster de banco de dados a um cluster de banco de dados.

  4. Reinicialize o cluster de banco de dados.