Configurando autenticação no RDS SQL Server com usuários do AD em EC2
Railander Marques
Posted on January 18, 2024
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:
- OS: Windows Server 2012/2016/2019
- Possuir um RDS SQL Server
- Possuir um AD em EC2
- Executar 3 etapas abaixo deste link: https://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/USER_SQLServer_SelfManagedActiveDirectory.html#USER_SQLServer_SelfManagedActiveDirectory.SettingUp
- Executar Etapa 1: Criar uma unidade organizacional no AD
- Executar Etapa 2: Criar um usuário de domínio em seu AD
- Executar Etapa 3: Delegar controle ao usuário de AD
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)
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:
- Vá em VPC's ➜ Marque sua VPC ➜ Edit VPC Settings.
- 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.
- 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
- Selecione o Target e clique em View output para ver o resultado:
Passo 3: Configurar KMS e Secrets
- Configurar KMS e Secrets conforme o tutorial: Amazon RDS - Configuração do SQL Server com Active Directory
- Executar Etapa 4: Criar uma chave do AWS KMS.
- Executar Etapa 5: Criar um segredo da AWS
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:
-
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
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:
- Neste grupo global criado, adicione como Member Of o grupo RDS Remote Access Servers e clique em OK.
- 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
- 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
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.
Posted on January 18, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.