Autenticar Usuários do Autonomous Database com o Kerberos

Você pode configurar o Autonomous Database on Dedicated Exadata Infrastructure para usar o protocolo de autenticação de rede do Kerberos para autenticar usuários do banco de dados. O Kerberos é um protocolo de autenticação forte de rede. Ele usa criptografia de chave secreta para ativar a autenticação forte fornecendo autenticação de usuário para servidor.

  • O suporte do Autonomous Database na Infraestrutura Dedicada do Exadata para o Kerberos fornece os benefícios da autenticação de sign-on único e centralizada dos usuários da Oracle. O Kerberos é um sistema de autenticação de terceiros confiável que depende de segredos compartilhados. Ele presume que o terceiro é seguro e fornece recursos de sign-on único, armazenamento de senha centralizado, autenticação de link de banco de dados e segurança aprimorada do PC. Ele faz isso por meio de um servidor de autenticação do Kerberos.

  • O sistema Kerberos é um conceito de ticket. O ticket é um conjunto de informações eletrônicas que identifica um usuário ou um serviço. Um ticket identifica você e seus privilégios de acesso à rede.

  • Na autenticação baseada no Kerberos, você envia de forma transparente uma solicitação de ticket para um KDC (Key Distribution Center). O Key Distribution Center autentica você e concede a você um ticket para acessar o banco de dados.

Componentes do Sistema de Autenticação do Kerberos

Fornece uma visão geral do sistema de autenticação do Kerberos.

  • Um realm estabelece um domínio administrativo de autenticação. Cada realm tem seu próprio banco de dados Kerberos que contém os usuários e os serviços desse domínio administrativo específico.

  • Os tickets são emitidos pelo KDC (Key Distribution Center). Os clientes apresentam os tickets ao Servidor de Banco de Dados para demonstrar a autenticidade da identidade. Cada ticket tem um tempo de expiração e de renovação.

  • Os keytabs armazenam chaves de longo prazo para um ou mais controladores. Um arquivo keytab é gerado chamando a ferramenta kadmin.local (para o MIT Key Distribution Center) ou ktpass (para o Active Directory Key Distribution Center).

  • Os controladores são as entradas no banco de dados do Key Distribution Center. Cada usuário, host ou serviço recebe um controlador. O controlador é uma identidade exclusiva à qual o Key Distribution Center pode designar tickets.

  • O suporte a Kerberos no Autonomous Database usa esses valores para vários componentes que formam o nome de um controlador de serviços:

Componente do Controlador de Serviços Valor no Autonomous Database
kinstance

Você pode obter esse valor do atributo PUBLIC_DOMAIN_NAME na coluna CLOUD_IDENTITY de V$PDBS. Esse valor é diferente do FQDN (Nome de Domínio Totalmente Qualificado) de um banco de dados em um ponto final privado.

Use a seguinte consulta para obter o kinstance:

SELECT json_value(cloud_identity, '$.PUBLIC_DOMAIN_NAME') "KINSTANCE" FROM v$pdbs;

Observação:

Este será o valor do parâmetro host encontrado na sequência de conexão TNS.
kservice

No Autonomous Database, você tem duas opções para o valor kservice:

  • Use o GUID do banco de dados: Se você não fornecer um nome de serviço do Kerberos com DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION, o nome de serviço padrão usado será o GUID da instância do Autonomous Database. Nesse caso, quando você criar o arquivo keytab, use o GUID como o valor do nome do serviço.

    Como, no caso padrão, o arquivo Keytab usa um nome de serviço que é um GUID, que é específico da instância, quando você usa o nome de serviço padrão, deve gerar diferentes arquivos Keytab para cada instância do Autonomous Database.

    Use o seguinte comando para obter o GUID (o caso é significativo):

    SELECT GUID FROM v$pdbs;
  • Usar um nome personalizado: Defina o nome do serviço quando quiser usar os mesmos arquivos do Keytab em várias instâncias do Autonomous Database. Quando você usa um nome personalizado, não precisa criar e fazer upload de diferentes arquivos do Keytab para cada instância do Autonomous Database. Ao usar um nome personalizado, você deve especificar o parâmetro params kerberos_service_name com DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION. A especificação desse parâmetro não é obrigatória quando você usa o GUID para o nome do serviço.

Depois que o Kerberos for ativado na sua instância do Autonomous Database, use a seguinte consulta para exibir o nome do serviço Kerberos:

SELECT SYS_CONTEXT('USERENV', 'KERBEROS_SERVICE_NAME') FROM DUAL;
REALM Qualquer realm suportado pelo KDC. REALM sempre deve estar em letras maiúsculas.

Para ativar a autenticação Kerberos para o seu Autonomous Database, você deve manter os arquivos de configuração Kerberos (krb.conf) e arquivo de tabela de chaves (v5srvtab) prontos. Para mais informações sobre esses arquivos e etapas para obtê-los, consulte Configurando Autenticação Kerberos.

Observações sobre a Autenticação do Kerberos no Autonomous Database

Antes de continuar com a autenticação do Kerberos no Autonomous Database on Dedicated Exadata Infrastructure, verifique as seguintes observações:

  • Se você ativar a autenticação do Kerberos no Autonomous Database, ainda poderá usar a autenticação do banco de dados baseada em senha para seu banco de dados.
  • Somente um método de autenticação externo pode ser usado para o seu Autonomous Database a qualquer momento. Ou seja, você só pode ter os esquemas de autenticação do Oracle Cloud Infrastructure (IAM), do Usuário Gerenciado Centralmente com Active Directory (CMU-AD), do Azure AD ou do Kerberos ativados a qualquer momento.

    Observação:

    A única exceção é que a autenticação do Kerberos pode ser configurada no topo do CMU-AD para fornecer a autenticação do CMU-AD Kerberos para usuários do Microsoft Active Directory.
  • Não há suporte para a autenticação do Kerberos nas seguintes ferramentas:
    • Oracle Database API for MongoDB
    • Oracle REST Data Services
    • Oracle Machine Learning
    • APEX
    • Oracle Graph Studio
    • Oracle Database Actions
  • Você pode ativar a autenticação do Kerberos para autenticar o usuário ADMIN. Você poderá usar a funcionalidade Redefinir Senha na Console do OCI (Oracle Cloud Infrastructure) para redefinir a senha do usuário ADMIN e recuperar o acesso se um arquivo keytab corrompido fizer com que a autenticação do usuário ADMIN falhe.
  • Há suporte para a autenticação do Kerberos com o protocolo TCP do Autonomous Database versão 19.27 ou posterior.
  • Não há suporte para a autenticação do Kerberos com DB_LINKs e bancos de dados com o Autonomous Data Guard.

Ativar Autenticação no Kerberos no Autonomous Database

Siga as etapas listadas abaixo para ativar a autenticação do Kerberos para o Autonomous Database na Infraestrutura Dedicada do Exadata:
  • Como só pode haver um esquema de autenticação externo ativado para um Autonomous Database a qualquer momento, execute o procedimento DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION para desativar qualquer esquema de autenticação externo que já esteja ativado para seu banco de dados.

    Para executar o procedimento, você deve fazer log-in como usuário ADMIN ou ter o privilégio EXECUTE em DBMS_CLOUD_ADMIN.
    BEGIN
        DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
    END;
    /
  • Obtenha os arquivos de configuração do Kerberos: krb.conf e o arquivo de tabela de chaves de serviço v5srvtab. Para obter mais informações sobre esses arquivos e etapas necessárias para obtê-los, consulte Configuring Kerberos Authentication no Oracle Database 19c Security Guide ou no Oracle Database 23ai Security Guide.

  • Copie os arquivos de configuração do Kerberos krb.conf e v5srvtab para um bucket no Armazenamento de Objetos.

    Observação:

    A Oracle recomenda que você armazene os arquivos de configuração do Kerberos em um bucket privado no Armazenamento de Objetos.

    Se você estiver usando o Oracle Cloud Infrastructure Object Store, consulte Colocando Dados no Serviço Object Storage para obter detalhes sobre o upload de arquivos.

  • Para ativar o Kerberos como a autenticação externa do seu Autonomous Database, execute o procedimento DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION e informe um URI de local com o argumento JSON params. Coloque os arquivos de configuração krb.conf e v5srvtab no local de Armazenamento de Objetos especificado no parâmetro location_uri.

    Por exemplo:
    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
            type     => 'KERBEROS',
            params   => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                                   'credential_name' value 'my_credential_name')
        );
    END;
    /

    Observação:

    Para fornecer a autenticação do CMU-AD Kerberos para usuários do Microsoft Active Directory, você pode ativar a autenticação do Kerberos sobre o CMU-AD definindo type como CMU no exemplo acima.

    Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

    O credential_name que você usa nesta etapa são as credenciais do Armazenamento de Objetos.

    Se o location_uri for um URL pré-autenticado, não será necessário fornecer um credential_name.

    Isso cria um objeto de diretório chamado KERBEROS_DIR no banco de dados e usa a credencial para fazer download dos arquivos de configuração do Kerberos, do local de Armazenamento de Objetos para o objeto de diretório.

    É possível usar o parâmetro kerberos_service_name para especificar o nome do serviço Kerberos. Por exemplo:
    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
       type     =>'KERBEROS',
       params   => JSON_OBJECT(
       'location_uri'          value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
       'credential_name'       value 'my_credential_name'
       'kerberos_service_name' value 'oracle' ));
    END;
    /
  • Depois de ativar a autenticação do Kerberos, remova a configuração krb.conf e v5srvtab do Armazenamento de objetos. Você pode usar métodos locais de Armazenamento de Objetos para remover esses arquivos ou usar DBMS_CLOUD.DELETE_OBJECT para excluir os arquivos do Armazenamento de Objetos.

Consulte Navegar até o Oracle Cloud Infrastructure Object Storage e Criar um Bucket para obter mais informações sobre o serviço Object Storage.

Consulte Procedimento ENABLE_EXTERNAL_AUTHENTICATION para obter mais informações.

Desativar a Autenticação do Kerberos no Autonomous Database

Antes de ativar qualquer outro esquema de autenticação externo no seu banco de dados, desative a autenticação do Kerberos executando o procedimento DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION.

Para executar esse procedimento, você deve fazer log-in como usuário ADMIN ou ter o privilégio EXECUTE em DBMS_CLOUD_ADMIN.
BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/
Consulte Procedimento DISABLE_EXTERNAL_AUTHENTICATION para obter mais informações.

Observação:

Para fornecer autenticação CMU-AD Kerberos para os usuários do Microsoft Active Directory, continue a configurar a autenticação CMU-AD sem desativar a autenticação do Kerberos.