Autenticação do Kerberos para o OCI Database with PostgreSQL

Saiba como ativar e gerenciar a autenticação do Kerberos no seu sistema de banco de dados OCI Database with PostgreSQL.

Este tópico explica a autenticação do Kerberos, seus benefícios, pré-requisitos, limitações e procedimentos passo a passo para ativar, gerenciar e desativar a autenticação do Kerberos no sistema de banco de dados PostgreSQL.

O Kerberos é um protocolo de autenticação padrão do setor que fornece autenticação segura e centralizada de cliente-servidor usando tíquetes criptográficos em vez de senhas. A integração do Kerberos com o OCI Database with PostgreSQL permite aproveitar o gerenciamento centralizado de credenciais, fortalecer a segurança e reduzir os riscos associados à autenticação baseada em senha.

A autenticação do Kerberos é suportada por meio do GSSAPI integrado do PostgreSQL.

Os benefícios da autenticação do Kerberos para o OCI Database with PostgreSQL incluem o seguinte:
  • Gerenciamento centralizado de credenciais e recursos de logon único (SSO).
  • Elimina senhas de fluxos de autenticação de rede.
  • Integra-se a sistemas de identidade comuns da empresa, como Active Directory e MIT Kerberos.

Workflow

Kerberos é um protocolo de autenticação de rede projetado para autenticação forte de cliente/servidor usando criptografia de chave secreta. O workflow típico é:

  1. Você se autentica com um Key Distribution Center (KDC) confiável e recebe um ticket-granting ticket (TGT).
  2. Ao estabelecer conexão com o banco de dados PostgreSQL, apresente um ticket de serviço do KDC para o servidor.
  3. O servidor PostgreSQL verifica o ticket usando um arquivo keytab seguro. Nenhuma senha é transmitida pela rede.

Pré-requisitos

Para usar a autenticação do Kerberos para o OCI Database with PostgreSQL, você deve ter os seguintes pré-requisitos:
  • Uma infraestrutura operacional do Kerberos, como Active Directory ou MIT Kerberos.
  • Acesso ao OCI Vault e permissões necessárias do OCI.
  • Acesso privilegiado aos recursos do KDC e do OCI.
  • Familiaridade com o gerenciamento de usuário/função PostgreSQL.

Configurando a Autenticação do Kerberos

Execute essas tarefas para configurar a autenticação do Kerberos para o OCI Database with PostgreSQL.

Etapa 1: Criar Principal de Serviço e Keytab no KDC

Active Directory

  1. Crie uma conta de serviço dedicada.
  2. Mapeie todos os FQDNs de ponto final PostgreSQL necessários como SPNs para a conta.
  3. Gere um arquivo keytab com criptografia forte, por exemplo:
    ktpass /out odsp.krb5.keytab /princ postgres/<database_fqdn>@your.realm /mapuser <service_user> /crypto AES256-SHA1 +rndpass ...

    Certifique-se de que apenas os tipos de criptografia aprovados sejam usados, por exemplo: aes256-cts-hmac-sha256-128)

MIT Kerberos

Para cada ponto final, adicione um principal e gere um keytab, por exemplo:
kadmin.local -q "addprinc -randkey postgres/<database_fqdn>@your.realm"
kadmin.local -q "ktadd -k odsp.krb5.keytab postgres/<database_fqdn>@your.realm"

Etapa 2: Armazenar o Keytab no OCI Vault

  1. Faça upload do arquivo keytab como segredo no OCI Vault.
    Para obter mais informações, consulte Gerenciando Segredos.
  2. Forneça ao seu sistema de banco de dados PostgreSQL acesso para ler esse segredo atualizando sua política do serviço IAM, por exemplo:
    allow any-user to SECRET_BUNDLE_READ in compartment <compartment_ocid> where all {request.user.id='<database_system_ocid>', target.secret.id='<secret_ocid>'}

Etapa 3: Ativar o Kerberos no Sistema de Banco de Dados PostgreSQL

Usando a CLI ou a API, edite seu sistema de banco de dados PostgreSQL:
  1. Defina a Autenticação Kerberos como HABILITADA.
  2. Informe o nome do Realm do Kerberos, o OCID do segredo da keytab e a versão.
O sistema faz download do keytab, atualiza postgresql.conf e pg_hba.conf e recarrega PostgreSQL.

Etapa 4: Designar Usuários para Autenticação do Kerberos

  1. Acesse o sistema de banco de dados PostgreSQL como usuário com o oci_admin_role.
  2. Para cada principal do Kerberos necessário, crie um usuário correspondente e atribua a atribuição odsp_kerberos:
    CREATE ROLE "kerberos_user@your.realm" WITH LOGIN;
    GRANT odsp_kerberos TO "kerberos_user@your.realm";
  3. Atribua todas as outras funções/permissões conforme necessário.
  4. Cada principal do Kerberos requer seu próprio usuário do sistema de banco de dados PostgreSQL.

Uso do Cliente Kerberos

No sistema cliente, execute o seguinte comando:

kinit kerb_user@your.realm
psql "sslmode=prefer host=<database_fqdn> dbname=<datbase_name> user=kerb_user@your.realm" 

Desativando a Autenticação do Kerberos

Usando a CLI ou a API, edite seu sistema de banco de dados PostgreSQL para Definir a Autenticação do Kerberos como DESATIVADA. Para obter mais informações, consulte Editando um Sistema de Banco de Dados.

Esta ação remove a configuração keytab e desativa a autenticação Kerberos.

Rotação e Manutenção do Keytab

Rotacione regularmente as credenciais do principal do serviço Kerberos de acordo com sua política de segurança.

Para rotacionar as credenciais do Kerberos e, ao mesmo tempo, minimizar interrupções, você precisa fazê-lo como um processo em duas etapas:

  1. Primeiro, adicione o novo keytab como um novo segredo no OCI Vault.
  2. Atualize o sistema de banco de dados PostgreSQL para ter os dois keytabs: o novo segredo do keytab como currentCredential e o segredo do keytab existente como backupCredential.

Após algum tempo, atualize o sistema de banco de dados PostgreSQL para ter apenas uma keytab: o novo segredo da keytab como currentCredential, backupCredential=null.

Observação

Permita possíveis interrupções curtas na autenticação durante a rotação do keytab/chave.

Diagnóstico e Solução de Problemas

Execute as seguintes tarefas para resolver os problemas que ocorrerem:

  • Verifique se há falhas de autenticação no Kerberos nos logs do serviço PostgreSQL.
  • Certifique-se de que os relógios sejam sincronizados entre os sistemas de banco de dados PostgreSQL, os clientes e o KDC.
  • Verifique as definições adequadas de SPN, keytab e criptografia se ocorrerem problemas de autenticação.

Limitações

Observe as seguintes limitações para usar a Autenticação do Kerberos para o OCI Database with PostgreSQL:

  • A autenticação do Kerberos é uma camada adicional de segurança. Você ainda pode usar a autenticação por senha.
  • Cada principal do Kerberos que requer acesso ao banco de dados deve ter um usuário/atribuição PostgreSQL correspondente criado e com a atribuição odsp_kerberos concedida.
  • Como o PostgreSQL não suporta autenticação baseada em grupo, crie um usuário PostgreSQL para cada principal do Kerberos.
  • Você é responsável por todos os principais serviços (SPN) e gerenciamento de keytab.
  • O Kerberos é sensível à variação do relógio. Certifique-se de que o NTP ou um serviço equivalente esteja em execução em qualquer lugar.
  • Falhas breves de autenticação são possíveis durante a rotação do keytab, especialmente em ambientes MIT Kerberos.
  • As interrupções do KDC impedem que usuários autenticados pelo Kerberos acessem o sistema, mas usuários autenticados por senha permanecem inalterados.
  • O sistema de banco de dados PostgreSQL deve ter permissão para acessar segredos no OCI Vault que contém a keytab.