DEV Community

Railander Marques
Railander Marques

Posted on • Updated on

Configurando autenticação no RDS SQL Server com usuários do AD em EC2

Este tutorial aborda a configuração da autenticação do SQL Server no Amazon RDS usando usuários do Active Directory (AD) associados a instâncias EC2. A autenticação baseada em AD proporciona uma camada adicional de segurança e gerenciamento de identidade para seus bancos de dados SQL Server.


Pré-requisitos:


Passo 1: Configurar ambiente

  • Liberar as seguintes portas na entrada do security group da EC2 com AD com destino ao SG do RDS:
    • TCP and UDP Port 53 (DNS)
    • TCP and UDP Port 88 (Kerberos)
    • TCP and UDP Port 135 (Microsoft Remote Procedure Call)
    • TCP and UDP Port 389 (Lightweight Directory Access Protocol)
    • TCP and UDP Port 445 (Microsoft Directory Services)
    • TCP and UDP Port 464 (Alteração de senhas no sistema Kerberos)
    • TCP Port 636 (Versão segura do LDAP que utiliza criptografia SSL)
    • TCP Port 3268 (Consultas de catálogo global no LDAP)
    • TCP Port 3269 (Consultas seguras de catálogo global no LDAP usando SSL)
    • TCP Port 9389 (ADWS - Serviço da web para comunicação com o Active Directory)
    • TCP Ports 49152-65535 (Dynamic and-or Private Ports)
    • UDP Port 123 (NTP - Network Time Protocol)
    • UDP Port 138 (Serviço de mensagens datagrama em redes NetBIOS)



Exemplo:
Image description


Passo 2: Teste no Active Directory (AD)

  • Para que a VPC responda ao domínio do AD no IP privado, configure um DHCP Option sets e anexe-o à sua VPC. Para a configuração, insira primeiro o IP do AD, em seguida, AmazonProvidedDNS. Veja o exemplo abaixo:

Image description

  • Vá em VPC's ➜ Marque sua VPC ➜ Edit VPC Settings.

Image description

  • Altere o DHCP option set para o recém configurado:
    • Em DNS settings, deixe marcado o Enable DNS resolution e Enable DNS hostnames e clique em Save.

Image description

  • Agora em Systems Manager ➜ Run Command ➜ Botão Run a Command em laranja ➜ Escolha o Template ➜ AWS-RunPowerShellScript ➜ e realize o teste com o seguinte comando:
  nltest /dsgetdc:dominio.intra /force
Enter fullscreen mode Exit fullscreen mode

Image description

  • Selecione o Target e clique em View output para ver o resultado:

Image description

Image description


Passo 3: Configurar KMS e Secrets


Passo 4: Configurar autenticação no SQL Server e AD

  • Selecione o banco de dados SQL Server ➜ Modify.
  • Em Microsoft SQL Server Windows Authentication, habilite a checkbox Enable Microsoft SQL Server Windows authentication, escolha Self-managed Microsoft Active Directory e preencha conforme o exemplo:

Image description

  • Observações:
    • Neste caso, a Unidade Organizacional (OU) criada para autenticação no RDS se chama 'AUTH', o nome do domínio utilizado para este tutorial foi 'dominio.intra', e repeti os dois IPs privados do AD.
    • Neste caso, como o 'dominio.intra' contém um '.', precisamos adicioná-lo na linguagem Distinguished Name (DN), conforme o exemplo acima. Exemplos de DN:
OU=TI,DC=departamento,DC=empresa,DC=com   # Domínio departamento.empresa.com
OU=Vendas,DC=empresa,DC=com   # Domínio empresa.com
Enter fullscreen mode Exit fullscreen mode

Image description


Passo 5: Configurar autenticação no SQL Server e AD

  • Voltar ao AD e criar um grupo global de segurança, chamado "admindbas" (ou outro de preferência) DENTRO da delegação criada. Veja o exemplo abaixo:

Image description

Image description

  • Neste grupo global criado, adicione como Member Of o grupo RDS Remote Access Servers e clique em OK.

Image description

  • Observação: Isso permitirá que todos os os usuários que tem a permissão do grupo RDS Remote Access Servers, consigam fazer login no RDS SQL Server com Windows Authentication.

Passo 6: Habilitar o login no RDS SQL Server para os usuários do grupo 'admindbas'.

  • Efetuar login no SQL Server com o usuário administrador do RDS para executar os seguintes comandos SQL:

Observações:
- Em [DOMINIO\admindbas], utilizar o Distinguished Name (DN), inserindo apenas o primeiro nome em maiúsculo (ex.: DOMINIO de dominio.intra) e o estou indicando o grupo global 'admindbas' para ter acesso ao banco de dados.
- Você também pode criar logins para usuários específicos, no lugar de informar o grupo "admindbas", você informa o usuário que deseja [DOMINIO\nome.sobrenome].

  USE [master]
  GO
  CREATE LOGIN [DOMINIO\admindbas] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
  GO

  USE [master]
  GO
  GRANT ALTER ANY CONNECTION TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT ALTER ANY LINKED SERVER TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT ALTER ANY LOGIN TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT ALTER SERVER STATE TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT ALTER TRACE TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT CREATE ANY DATABASE TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT VIEW ANY DATABASE TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT VIEW ANY DEFINITION TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GRANT VIEW SERVER STATE TO [DOMINIO\admindbas] WITH GRANT OPTION;
  GO
Enter fullscreen mode Exit fullscreen mode
  • Abaixo explico a descrição de cada comando SQL acima:
-- Define que as operações a seguir serão realizadas no banco de dados 'master'
USE [master]
GO

-- Cria um login no SQL Server associado a um grupo do AD Windows
CREATE LOGIN [DOMINIO\admindbas] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO

-- Concede permissão para alterar qualquer conexão ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT ALTER ANY CONNECTION TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para alterar qualquer servidor vinculado ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT ALTER ANY LINKED SERVER TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para alterar qualquer login ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT ALTER ANY LOGIN TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para alterar o estado do servidor ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT ALTER SERVER STATE TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para alterar traces ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT ALTER TRACE TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para criar qualquer banco de dados ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT CREATE ANY DATABASE TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para visualizar qualquer banco de dados ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT VIEW ANY DATABASE TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para visualizar qualquer definição ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT VIEW ANY DEFINITION TO [DOMINIO\admindbas] WITH GRANT OPTION;
-- Concede permissão para visualizar o estado do servidor ao grupo [DOMINIO\admindbas] com a opção de conceder essa permissão a outros usuários
GRANT VIEW SERVER STATE TO [DOMINIO\admindbas] WITH GRANT OPTION;
GO
Enter fullscreen mode Exit fullscreen mode

Passo 7: Testar autenticação no SQL Server

  • Logue no Windows com seu usuário do AD.
  • Logue no SSMS utilizando o Windows Autentication.
  • Lembre-se que para Logar no SQL Server o usuário do AD precisa ser membro do RDS Remote Access Servers.

Top comments (0)