Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server - Amazon Relational Database Service

Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server

Você pode usar AWS Managed Microsoft AD com a autenticação do Windows para autenticar usuários quando se conectam à instância de banco de dados do RDS para SQL Server. A instância de banco de dados funciona com AWS Directory Service for Microsoft Active Directory, também chamado de AWS Managed Microsoft AD, para habilitar a Autenticação do Windows. Quando os usuários se autenticam com uma instância de banco de dados do SQL Server unida ao domínio confiável, as solicitações de autenticação são encaminhadas para o diretório de domínio que você criou com o AWS Directory Service.

Disponibilidade de região e versão

O RDS só aceita o uso de AWS Managed Microsoft AD para autenticação do Windows. O RDS não oferece suporte ao uso de AD Connector. Para obter mais informações, consulte as informações a seguir.

Para obter informações sobre a disponibilidade de versões e regiões, consulte Autenticação de Kerberos com RDS para PostgreSQL.

Visão geral da configuração de autenticação do Windows

O Amazon RDS usa o modo misto para a autenticação do Windows. Essa abordagem significa que o usuário mestre (o nome e a senha usados para criar sua instância de banco de dados do SQL Server) usa a autenticação do SQL. Como a conta de usuário mestre é uma credencial privilegiada, você deve restringir o acesso a essa conta.

Para obter a autenticação do Windows usando um Microsoft Active Directory no local ou auto-hospedado, crie uma confiança de floresta. A confiança pode ser unidirecional ou bidirecional. Para obter mais informações sobre como configurar confianças de floresta usando o AWS Directory Service, consulte Quando criar um relacionamento de confiança no Guia de administração do AWS Directory Service.

Para configurar a autenticação do Windows para uma instância de banco de dados do SQL Server, realize as seguintes etapas, explicadas mais detalhadamente em Configuração da autenticação do Windows para instâncias de banco de dados do SQL Server:

  1. Use AWS Managed Microsoft AD, seja no AWS Management Console ou na API do AWS Directory Service, para criar um diretório AWS Managed Microsoft AD.

  2. Se você usar a AWS CLI ou a API do Amazon RDS para criar a instância de banco de dados do SQL Server, crie uma função do IAM (AWS Identity and Access Management). Essa função usa a política gerenciada do IAM AmazonRDSDirectoryServiceAccess e permite que o Amazon RDS realize chamadas para o diretório. Se você usa o console para criar a instância de banco de dados do SQL Server, a AWS cria a função do IAM para você.

    Para a função permitir o acesso, o endpoint do AWS Security Token Service (AWS STS) deve estar ativado na região da AWS da sua conta da AWS. Os endpoints do AWS STS são ativados por padrão em todas as regiões da AWS e você pode usá-los sem ter que tomar medidas adicionais. Para ter mais informações, consulte Gerenciar o AWS STS em uma Região da AWS no Guia do usuário do IAM.

  3. Crie e configure usuários e grupos no diretório do AWS Managed Microsoft AD usando as ferramentas do Microsoft Active Directory. Para obter mais informações sobre como criar usuários e grupos no Active Directory, consulte Gerenciar usuários e grupos no AWS Managed Microsoft AD no Guia de administração do AWS Directory Service.

  4. Se você planeja localizar o diretório e a instância de banco de dados em VPCs diferentes, habilite o tráfego entre VPCs.

  5. Use o Amazon RDS para criar uma instância de banco de dados do SQL Server a partir do console, da AWS CLI ou da API do Amazon RDS. Na solicitação de criação, forneça o identificador de domínio (identificador "d-*") que foi gerado quando você criou seu diretório e o nome da função que você criou. Também é possível modificar uma instância de banco de dados do SQL Server para usar a Autenticação do Windows definindo o domínio e os parâmetros da função do IAM para a instância de banco de dados.

  6. Use as credenciais de usuário mestre do Amazon RDS para se conectar à instância de banco de dados do SQL Server como você faria com qualquer outra instância de banco de dados. Como a instância de banco de dados é unida ao domínio do AWS Managed Microsoft AD, você pode provisionar logins e usuários do SQL Server dos usuários e grupos do Active Directory em seu domínio. (Conhecidos como logins “Windows” do SQL Server.) As permissões de banco de dados são gerenciadas por meio de permissões padrão do SQL Server concedidas e revogadas a esses logins do Windows.

Criar o endpoint para autenticação do Kerberos

A autenticação baseada em Kerberos exige que o endpoint seja o nome do host especificado pelo cliente, um ponto e o nome de domínio totalmente qualificado (FQDN). Por exemplo, o exemplo a seguir mostra um endpoint que você pode usar com a autenticação baseada em Kerberos. Neste exemplo, o nome do host da instância de banco de dados do SQL Server é ad-test e o nome de domínio é corp-ad.company.com:

ad-test.corp-ad.company.com

Se você deseja verificar se sua conexão está usando o Kerberos, execute a seguinte consulta:

SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;

Configuração da autenticação do Windows para instâncias de banco de dados do SQL Server

Use o AWS Directory Service for Microsoft Active Directory, também chamado de AWS Managed Microsoft AD, para configurar a Autenticação do Windows para uma instância de banco de dados do SQL Server. Para configurar a Autenticação do Windows, execute as seguintes etapas:

Etapa 1: Criar um diretório usando o AWS Directory Service for Microsoft Active Directory

O AWS Directory Service cria um Microsoft 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 Service (DNS) em seu nome. Os servidores do diretório são criados em duas sub-redes em duas zonas de disponibilidade diferentes com 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 Microsoft 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

    Certifique-se de salvar essa senha. O AWS Directory Service não armazena essa senha e não é possível recuperá-la ou redefini-la.

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

Quando um AWS Directory Service for Microsoft Active Directory é iniciado, a AWS cria uma Unidade Organizacional (UO) que contém todos os objetos do diretório. Essa OU, que tem o nome de NetBIOS que você digitou quando criou seu diretório, está localizada na raiz do domínio. A raiz do domínio é controlada e de propriedade da AWS.

A conta admin que foi criada com o diretório do AWS Managed Microsoft AD tem permissões para as atividades administrativas mais comuns de sua OU:

  • Criar atualização ou excluir usuários, grupos e computadores.

  • Adicione recursos ao seu domínio, como servidores de arquivos ou de impressão e atribua permissões para esses recursos a usuários e grupos em sua OU.

  • Criar OUs adicionais e contêineres.

  • Delegar autoridade.

  • Criar e vincular políticas de grupo.

  • 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. No painel de navegação do console do AWS Directory Service, escolha Directories (Diretórios) e selecione Set up directory (Configurar diretório).

  2. Selecione AWS Managed Microsoft AD. Essa é a única opção compatível atualmente para uso com o Amazon RDS.

  3. Escolha Next (Próximo).

  4. Na página Enter directory information (Inserir informações do diretório), forneça as seguintes informações:

    Edição

    Escolha a edição que atenda às suas necessidades.

    Nome do DNS do diretório

    O nome completo do diretório, como corp.example.com. Nomes com mais de 47 caracteres não são compatíveis com o SQL Server.

    Nome de NetBIOS do diretório

    O nome curto opcional do diretório, como CORP.

    Descrição do diretório

    Uma descrição opcional 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 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

    Digite a senha do administrador novamente.

  5. Escolha Next (Próximo).

  6. Na página Choose VPC and subnets (Selecionar VPC e sub-redes), forneça as seguintes informações:

    VPC

    Escolha a VPC do diretório.

    nota

    É possível localizar o diretório e a instância de banco de dados em VPCs diferentes, mas se o fizer, certifique-se de habilitar o tráfego entre VPCs. Para obter mais informações, consulte Etapa 4: Ativar o tráfego entre VPCs entre o diretório e a instância de banco de dados.

    Sub-redes

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

  7. Escolha Next (Próximo).

  8. Analise as informações do diretório. Se alterações forem necessárias, escolha Previous (Anterior). Quando as informações estiverem corretas, selecione Create directory (Criar diretório).

    Revisar e criar a página

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

Para visualizar informações sobre o diretório, selecione o ID do diretório na listagem de diretórios. Anote o Directory ID (ID do diretório). Esse valor será necessário ao criar ou modificar sua instância de banco de dados do SQL Server.

Página de detalhes do diretório

Etapa 2: Criar a função do IAM para ser usada pelo Amazon RDS

Se usar o console para criar sua instância de banco de dados do SQL Server, você pode pular esta etapa. Se você usar a CLI ou a API do RDS para criar sua instância de banco de dados do SQL Server, você deverá criar uma função do IAM que use a política AmazonRDSDirectoryServiceAccess gerenciada do IAM. Esta função permite que o Amazon RDS faça chamadas ao AWS Directory Service para você.

Se você estiver usando uma política personalizada para ingressar em um domínio, em vez de usar a política AWS-managed AmazonRDSDirectoryServiceAccess gerenciada, permita a ação ds:GetAuthorizedApplicationDetails. Esse requisito entrará em vigor a partir de julho de 2019, devido a uma alteração na API do AWS Directory Service.

A seguinte política AmazonRDSDirectoryServiceAccess do IAM, fornece acesso ao AWS Directory Service.

exemplo Política do IAM para fornecer acesso a AWS Directory Service
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }

Recomendamos usar as chaves de contexto de condição global aws:SourceArn e aws:SourceAccount em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o problema "confused deputy".

Você pode usar as duas chaves de contexto de condição global e fazer com que o valor aws:SourceArn contenha o ID da conta. Nesses casos, verifique se o valor aws:SourceAccount e a conta no aws:SourceArn usa o mesmo ID de conta quando eles são usados na mesma instrução.

  • Use aws:SourceArn se quiser acesso entre serviços para um único recurso.

  • Use aws:SourceAccount se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

Na relação de confiança, certifique-se de usar a chave de contexto de condição global aws:SourceArn com o nome do recurso da Amazon (ARN) completo dos recursos que acessam a função. Para Windows Authentication, certifique-se de incluir as instâncias de banco de dados conforme mostrado no exemplo a seguir.

exemplo relação de confiança com a chave de contexto de condição global para Windows Authentication
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier" ] } } } ] }

Crie uma função do IAM usando esta política do IAM e relacionamento de confiança. Para obter mais informações sobre como criar funções do IAM, consulte Criação de políticas gerenciadas pelo cliente no Guia do usuário do IAM.

Etapa 3: Criar e configurar usuários e grupos

É possível criar usuários e grupos com a ferramenta Usuários e computadores do Active Directory. Essa ferramenta é uma 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. Os grupos são muito úteis para conceder ou negar privilégios a grupos de usuários, em vez de ter que aplicar esses privilégios a cada usuário individual.

Para criar usuários e grupos em um diretório do AWS Directory Service, é necessário estar conectado a uma instância do EC2 do Windows que sejam membro do diretório do AWS Directory Service. Também é necessário estar conectado como um usuário com privilégios para criar usuários e grupos. Para obter mais informações, consulte Adicionar usuários e grupos (Simple AD e AWS Managed Microsoft AD) no Guia de administração do AWS Directory Service.

Etapa 4: Ativar o tráfego entre VPCs entre o diretório e a instância de banco de dados

Se você planeja localizar o diretório e a instância de banco de dados na mesma VPC, ignore esta etapa e prossiga para Etapa 5: Criar ou modificar a instância de banco de dados do SQL Server.

Se você planejar localizar o diretório e a instância de Bancos de Dados em VPCs diferentes, configure o tráfego entre VPCs usando o emparelhamento de VPCs ou o AWS Transit Gateway.

O procedimento a seguir habilita o tráfego entre VPCs usando o emparelhamento de VPCs. Siga as instruções em O que é o emparelhamento de VPCs? no Guia de emparelhamento do Amazon Virtual Private Cloud.

Como habilitar o tráfego entre VPCs usando o emparelhamento de VPCs
  1. Configure regras apropriadas de roteamento de VPC para garantir que o tráfego de rede possa fluir em ambos os sentidos.

  2. Certifique-se de que o grupo de segurança da instância de banco de dados possa receber o tráfego de entrada do grupo de segurança do diretório.

  3. Garanta que não há nenhuma regra na lista de controle de acesso (ACL) de rede para bloquear o tráfego.

Se uma conta diferente da AWS for proprietária do diretório, é necessário compartilhá-lo.

Como compartilhar o diretório entre contas da AWS.
  1. Inicie o compartilhamento do diretório com a conta da AWS na qual a instância de banco de dados será criada seguindo as instruções em Tutorial: Compartilhar o diretório AWS Managed Microsoft AD para ingresso perfeito no domínio do EC2 no AWS Directory ServiceGuia de administração.

  2. Faça login no console do AWS Directory Service usando a conta para a instância de banco de dados e garanta que o domínio tenha o status SHARED antes de prosseguir.

  3. Enquanto estiver conectado ao console do AWS Directory Service usando a conta da instância de banco de dados, observe o valor do Directory ID (ID do diretório). Use esse ID do diretório para associar a instância de banco de dados ao domínio.

Etapa 5: Criar ou modificar a instância de banco de dados do SQL Server

Crie ou modifique uma instância de banco de dados do SQL Server para usar com o diretório. É possível usar o console, a CLI ou a API do RDS para associar uma instância de banco de dados a um diretório. Você pode fazer isso por meio de uma das seguintes maneiras:

A Autenticação do Windows é compatível somente com instâncias de banco de dados do SQL Server em uma VPC.

Para que a instância de banco de dados possa usar o diretório do domínio criado, o seguinte é necessário:

  • Para Directory (Diretório), escolha o identificador de domínio (d-ID) gerado ao criar o diretório.

  • Verifique se o grupo de segurança da VPC tem uma regra de saída que permite que a instância de banco de dados se comunique com o diretório.

Diretório de autenticação Windows do Microsoft SQL Server

Quando você usa a AWS CLI, são necessários os seguintes parâmetros para que a instância de banco de dados possa usar o diretório criado:

  • Para o parâmetro --domain, use o identificador de domínio (identificador "d-ID") 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 uma instância de banco de dados para usar um diretório.

Para Linux, macOS ou Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --domain d-ID \ --domain-iam-role-name role-name

Para Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-ID ^ --domain-iam-role-name role-name
Importante

Se você modificar uma instância de banco de dados para permitir a autenticação Kerberos, reinicialize a instância de banco de dados após fazer a alteração.

Etapa 6: Criar logins do SQL Server de Autenticação do Windows

Use as credenciais de usuário mestre do Amazon RDS para se conectar à instância de banco de dados do SQL Server como você faria com qualquer outra instância de banco de dados. Como a instância de banco de dados é associada ao domínio AWS Managed Microsoft AD, você pode provisionar logins e usuários do SQL Server. É possível fazer isso a partir de usuários e grupos do Active Directory no domínio. As permissões de banco de dados são gerenciadas por meio de permissões padrão do SQL Server concedidas e revogadas a esses logins do Windows.

Para que um usuário do Active Directory faça a autenticação com o SQL Server, deve existir um login Windows do SQL Server para o usuário ou um grupo do qual o usuário é membro. O controle de acesso refinado é gerenciado por meio da concessão e revogação de permissões nesses logins do SQL Server. Um usuário que não tem um login do SQL Server ou pertence a um grupo ao qual um login não consegue obter acesso à instância de banco de dados do SQL Server.

A permissão ALTER ANY LOGIN é necessária para criar um login do Active Directory SQL Server. Se você ainda não criou logins com essa permissão, conecte-se como o usuário mestre da instância de banco de dados usando a autenticação do SQL Server.

Execute um comando de Data Definition Language (DDL – Linguagem de definição de dados) para criar um login do SQL Server para um usuário ou grupo do Active Directory.

nota

Especifique usuários e grupos que usam o nome de login anterior ao Windows 2000 no formato domainName\login_name. Não é possível usar um User Principal Name (UPN – Nome de usuário principal) no formato login_name@DomainName.

Você só pode criar um login de autenticação do Windows em uma instância do RDS para SQL Server usando instruções T-SQL. Não é possível usar o SQL Server Management Studio para criar um login de autenticação do Windows.

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

Para obter mais informações, consulte CREATE LOGIN (Transact-SQL) na documentação da Microsoft Developer Network.

Os usuários (humanos e aplicações) do seu domínio agora podem se conectar à instância do RDS for SQL Server a partir de uma máquina cliente conectada ao domínio usando a Autenticação do Windows.

Gerenciamento de uma instância de banco de dados em um domínio

É possível usar o console, a AWS CLI ou a API do Amazon RDS para gerenciar a instância de banco de dados e a respectiva relação no domínio. Por exemplo, é possível mover a instância de banco de dados para dentro, para fora, de e entre os domínios.

Por exemplo, usando a API do Amazon RDS, você pode fazer o seguinte:

  • Para tentar uma união de domínio novamente cuja associação falhou, use a operação ModifyDBInstance da API e especifique o ID do diretório da associação atual.

  • Para atualizar o nome da função do IAM para a associação, use a operação ModifyDBInstance da API e especifique o ID do diretório da associação atual e a nova função do IAM.

  • Para remover uma instância de banco de dados de um domínio, use a operação ModifyDBInstance da API e especifique none como o parâmetro do domínio.

  • Para mover uma instância de banco de dados de um domínio para outro, use a operação ModifyDBInstance da API e especifique o identificador do novo domínio como o parâmetro do domínio.

  • Para listar a associação de cada instância de banco de dados, use a operação DescribeDBInstances da API.

Compreensão da associação de domínio

Após criar ou modificar sua instância de banco de dados, a instância se tornará um membro do domínio. O console da AWS indica o status da associação de domínio para a instância de banco de dados. O status da instância de banco de dados pode ser um dos seguintes:

  • joined – a instância é membro do domínio.

  • joining – a instância está em processo de se tornar membro do domínio.

  • pending-join – a associação da instância está pendente.

  • pending-maintenance-join: a AWS tentará tornar a instância um membro do domínio durante a próxima janela de manutenção agendada.

  • pending-removal – a remoção da instância do domínio está pendente.

  • pending-maintenance-removal: a AWS tentará remover a instância do domínio durante a próxima janela de manutenção programada.

  • failed – um problema de configuração impediu que a instância se associasse ao domínio. Verifique e corrija sua configuração antes de emitir novamente o comando de modificação da instância.

  • removing – a instância está sendo removida do domínio.

Uma solicitação para se tornar um membro de um domínio pode falhar devido a um problema de conectividade de rede ou a uma função do IAM incorreta. Por exemplo, é possível criar uma instância de banco de dados ou modificar uma instância existente e não conseguir transformar a instância de banco de dados em um membro de um domínio. Nesse caso, reexecute o comando para criar ou modificar a instância de banco de dados ou modifique a instância recém-criada para ingressar no domínio.

Conexão ao SQL Server com autenticação do Windows

Para se conectar ao SQL Server com Autenticação do Windows, você deve estar conectado em um computador pertencente ao domínio como um usuário de domínio. Após iniciar o SQL Server Management Studio, escolha Autenticação do Windows como o tipo de autenticação, conforme mostrado a seguir.

Conexão ao SQL Server usando autenticação do Windows

Restauração de uma instância de banco de dados do SQL Server e adição posterior a um domínio

Você pode restaurar um snapshot de banco de dados ou fazer uma Point-In-Time Restore (PITR – Restauração de ponto no tempo) de uma instância de banco de dados do SQL Server e adicioná-la a um domínio. Depois que a instância de banco de dados tiver sido restaurada, modifique a instância usando o processo explicado em Etapa 5: Criar ou modificar a instância de banco de dados do SQL Server para adicionar a instância de banco de dados a um domínio.