Autenticação do Kerberos com o Babelfish - Amazon Aurora

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.