Autenticação de banco de dados com o Babelfish para Aurora PostgreSQL - Amazon Aurora

Autenticação de banco de dados com o Babelfish para Aurora PostgreSQL

O Babelfish para Aurora PostgreSQL permite duas maneiras de autenticar usuários do banco de dados. A autenticação por senha está disponível por padrão para todos os clusters de banco de dados do Babelfish. Também é possível adicionar a autenticação do Kerberos para o mesmo cluster de banco de dados.

Autenticação de senha com o Babelfish

O Babelfish para Aurora PostgreSQL é compatível com a autenticação por senha. As senhas são armazenadas em formato criptografado no disco. Para obter mais informações sobre a autenticação em um cluster do Aurora PostgreSQL, consulte Segurança com o Amazon Aurora PostgreSQL.

Podem ser solicitadas credenciais sempre que você se conectar ao Babelfish. Qualquer usuário migrado ou criado no Aurora PostgreSQL pode utilizar as mesmas credenciais na porta do SQL Server e na porta do PostgreSQL. O Babelfish não impõe políticas de senha, mas recomendamos o seguinte:

  • Exija uma senha complexa com pelo menos oito (8) caracteres.

  • Aplique uma política de validade de senha.

Para rever uma lista completa de usuários de banco de dados, utilize o comando SELECT * FROM pg_user;.

Autenticação do Kerberos com o Babelfish

A versão 15.2 do Babelfish para Aurora PostgreSQL é compatível com a autenticação em seu cluster de banco de dados usando Kerberos. Esse método possibilita usar a autenticação do Microsoft Windows para autenticar usuários quando eles se conectam ao banco de dados do Babelfish. Para fazer isso, configure o cluster de banco de dados para usar o AWS Directory Service for Microsoft Active Directory para autenticação Kerberos. Para ter mais informações, consulte O que é AWS Directory Service? no Guia de administração do AWS Directory Service.

Configurar a autenticação Kerberos

O cluster de banco de dados do Babelfish para Aurora PostgreSQL pode se conectar usando duas portas diferentes, mas a configuração da autenticação Kerberos é um processo único. Portanto, você precisa primeiro configurar a autenticação Kerberos para seu cluster de banco de dados. Para ter mais informações, consulte Configurar a autenticação Kerberos. Depois de concluir a configuração, verifique se você pode se conectar a um cliente PostgreSQL usando o Kerberos. Para ter mais informações, consulte Conectar-se com a autenticação Kerberos.

Login e provisionamento de usuários no Babelfish

Os logins do Windows criados por meio da porta Tabular Data Stream (TDS) podem ser usados com a porta TDS ou a porta PostgreSQL. Primeiro, o login que podem usar o Kerberos para autenticação devem ser provisionados por meio da porta TDS antes de serem usados por usuários e aplicações do T-SQL para conexão com um banco de dados Babelfish. Ao criar logins do Windows, os administradores podem fornecer o login usando o nome do domínio DNS ou o nome do domínio NetBIOS. Normalmente, o domínio NetBIOS é o subdomínio do nome do domínio DNS. Por exemplo, se o nome do domínio DNS for CORP.EXAMPLE.COM, o domínio do NetBIOS poderá ser CORP. Se o formato do nome de domínio do NetBIOS for fornecido para um login, deverá existir um mapeamento para o nome do domínio DNS.

Gerenciar o nome de domínio do NetBIOS para o mapeamento do nome do domínio DNS

Para gerenciar mapeamentos entre o nome de domínio do NetBIOS e o nome do domínio DNS, o Babelfish fornece procedimentos armazenados no sistema para adicionar, remover e truncar mapeamentos. Somente um usuário com um perfil sysadmin pode executar esses procedimentos.

Para criar mapeamento entre o NetBIOS e o nome do domínio DNS, use o procedimento armazenado do sistema fornecido pelo Babelfish babelfish_add_domain_mapping_entry. Os dois argumentos devem ter um valor válido e não ser NULL.

EXEC babelfish_add_domain_mapping_entry 'netbios_domain_name', 'fully_qualified_domain_name'

O exemplo a seguir mostra como criar o mapeamento entre o nome NetBIOS CORP e o nome do domínio DNS CORP.EXAMPLE.COM.

EXEC babelfish_add_domain_mapping_entry 'corp', 'corp.example.com'

Para excluir uma entrada de mapeamento existente, use o procedimento armazenado no sistema babelfish_remove_domain_mapping_entry.

EXEC babelfish_remove_domain_mapping_entry 'netbios_domain_name'

O exemplo a seguir mostra como remover o mapeamento para o NetBIOS nome CORP.

EXEC babelfish_remove_domain_mapping_entry 'corp'

Para remover todas as entradas de mapeamento existentes, use o procedimento armazenado no sistema babelfish_truncate_domain_mapping_table:

EXEC babelfish_truncate_domain_mapping_table

Para visualizar todos os mapeamentos entre o NetBIOS e o nome do domínio DNS, use a consulta a seguir.

SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;

Gerenciar logins

Criar logins

Conecte-se ao banco de dados por meio do endpoint TDS usando um login que tenha as permissões corretas. Se não houver nenhum usuário do banco de dados criado para o login, o login será mapeado para o usuário convidado. Se o usuário convidado não estiver habilitado, a tentativa de login falhará.

Crie um login do Windows usando a consulta a seguir. A opção FROM WINDOWS permite a autenticação usando o Active Directory.

CREATE LOGIN login_name FROM WINDOWS [WITH DEFAULT_DATABASE=database]

O exemplo a seguir mostra a criação de um login para o usuário do Active Directory [corp\test1] com um banco de dados padrão de db1.

CREATE LOGIN [corp\test1] FROM WINDOWS WITH DEFAULT_DATABASE=db1

Este exemplo pressupõe que haja um mapeamento entre o domínio do NetBIOS CORP e o nome do domínio DNS CORP.EXAMPLE.COM. Se não houver mapeamento, você deverá fornecer o nome do domínio DNS [CORP.EXAMPLE.COM\test1].

nota

Os logins baseados em usuários do Active Directory são limitados a nomes com até 21 caracteres.

Cancelar o login

Para cancelar um login, use a mesma sintaxe de qualquer login, conforme mostrado no seguinte exemplo:

DROP LOGIN [DNS domain name\login]
Alterar login

Para cancelar um login, use a mesma sintaxe de qualquer login, conforme mostrado no seguinte exemplo:

ALTER LOGIN [DNS domain name\login] { ENABLE|DISABLE|WITH DEFAULT_DATABASE=[master] }

O comando ALTER LOGIN é compatível com opções limitadas para logins do Windows, inclusive as seguintes:

  • DISABLE: para desabilitar um login. Você não pode usar um login desabilitado para autenticação.

  • ENABLE: para habilitar um login desabilitado.

  • DEFAULT_DATABASE: para alterar o banco de dados padrão de um login.

nota

Todo gerenciamento de senhas é executado pelo AWS Directory Service; portanto, o comando ALTER LOGIN não permite que administradores de banco de dados alterem ou definam senhas para logins do Windows.

Conectar-se ao Babelfish para Aurora PostgreSQL com autenticação Kerberos

Normalmente, os usuários de banco de dados que se autenticam usando o Kerberos o fazem nas máquinas cliente. Essas máquinas são membros do domínio do Active Directory. Elas usam a Autenticação do Windows por meio de suas aplicações cliente para acessar o servidor do Babelfish para Aurora PostgreSQL na porta TDS.

Conectar-se ao Babelfish para Aurora PostgreSQL na porta PostgreSQL com autenticação Kerberos

É possível usar logins criados por meio da porta TDS com a porta TDS ou a porta PostgreSQL. No entanto, o PostgreSQL usa comparações com distinção entre maiúsculas e minúsculas por padrão para nomes de usuário. Para que o Aurora PostgreSQL interprete os nomes de usuário do Kerberos sem fazer distinção de maiúsculas e minúsculas, você deve definir o parâmetro krb_caseins_users como true no grupo de parâmetros de cluster personalizado do Babelfish. Esse parâmetro é definido como false por padrão. Para ter mais informações, consulte Configuração de nomes de usuário que não fazem distinção de maiúsculas e minúsculas. Além disso, você deve especificar o nome de usuário de login no formato <login@nome do domínio DNS> das aplicações cliente PostgreSQL. Você não pode usar o formato <nome do domínio DNS\login>.

Erros que ocorrem com frequência

Você não pode configurar uma relação de confiança de floresta entre o Microsoft Active Directory on-premises e o AWS Managed Microsoft AD. Para ter mais informações, consulte Criar uma relação de confiança. Depois, você deve se conectar usando um endpoint específico de domínio especializado em vez de usar o domínio da Amazon rds.amazonaws.com no endpoint de host. Se você não usar o endpoint específico do domínio correto, poderá encontrar o seguinte erro:

Error: “Authentication method "NTLMSSP" not supported (Microsoft SQL Server, Error: 514)"

Esse erro ocorre quando o cliente TDS não consegue armazenar em cache o tíquete de serviço do URL do endpoint fornecido. Para ter mais informações, consulte Conectar-se com o Kerberos.