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.
Top comments (0)