Configurar a Autenticação do Kerberos com o Autonomous Database

Descreve como configurar o Kerberos para autenticar usuários do Oracle Autonomous Database.

Sobre a Autenticação do Kerberos

Você pode configurar o Oracle Autonomous Database para usar o protocolo de autenticação de rede Kerberos para autenticar usuários de 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 Oracle Autonomous Database 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 Principal de Serviço 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;
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 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, ao 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 arquivos Keytab diferentes para cada instância do Autonomous Database.

    Use o seguinte comando para obter o GUID (o uso de maiúsculas e minúsculas é significativo):

    SELECT GUID FROM v$pdbs;
  • Use um nome personalizado: defina o nome do serviço quando quiser usar os mesmos arquivos 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 Keytab para cada instância do Autonomous Database. Ao usar um nome personalizado, especifique o parâmetro params kerberos_service_name com DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION. A especificação desse parâmetro não é necessá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 do Kerberos no Autonomous Database, mantenha os arquivos de configuração do Kerberos (krb.conf) e o arquivo de tabela de chaves de serviço (v5srvtab) prontos. Para obter mais informações sobre esses arquivos e etapas para obtê-los, consulte Configurando a Autenticação no Kerberos.

Ativar Autenticação do Kerberos no Autonomous Database

Mostra as etapas para ativar a autenticação do Kerberos na instância do Autonomous Database.

Para executar DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION, você deve fazer log-in como usuário ADMIN ou ter o privilégio EXECUTE em DBMS_CLOUD_ADMIN.

Para usar DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION para ativar a autenticação do Kerberos:

Para ativar a autenticação do Kerberos no Autonomous Database, 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 as etapas necessárias para obtê-los, consulte Configurando a Autenticação no Kerberos .

  1. Copie os arquivos de configuração do Kerberos krb.conf e v5srvtab para um bucket 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.

  2. Execute o procedimento DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION e informe um URI de localização com o argumento params JSON. 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

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

    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.

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

    A criação de uma credencial para acessar o Oracle Cloud Infrastructure Object Store não será necessária se você ativar as credenciais do controlador de recursos. Para obter mais informações, consulte Usar o Controlador de Recursos para Acessar Recursos do Oracle Cloud Infrastructure.

    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.

    Você pode especificar o parâmetro params kerberos_service_name para especificar um nome de 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;
    /
  3. 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 ENABLE_EXTERNAL_AUTHENTICATION Procedimento para obter mais informações.

Desativar a Autenticação do Kerberos no Autonomous Database

Mostra as etapas para desativar a autenticação do Kerberos para sua instância do Autonomous Database.

  1. Execute o procedimento DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION para desativar a autenticação do Kerberos. 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;
    /

    Isso desativa a autenticação do Kerberos (ou qualquer esquema de autenticação externo especificado) para o Oracle Autonomous Database.

    Consulte Procedimento DISABLE_EXTERNAL_AUTHENTICATION para obter mais informações.

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

Fornece observações sobre o uso da Autenticação do Kerberos no Autonomous Database.

  • 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.

  • Não há suporte para a autenticação do Kerberos nestas ferramentas:
    • Oracle Database API for MongoDB

    • Oracle REST Data Services

    • Oracle Machine Learning

    • APEX

    • Oracle Graph Studio

    • Ações do Oracle Database

  • Você pode ativar a autenticação do Kerberos para autenticar o usuário ADMIN. Você poderá usar a funcionalidade Redefinir Senha na Console do 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.

  • O valor padrão para a defasamento de relógio máxima no Autonomous Database é 300 segundos (5 minutos). Não é possível alterar o valor padrão da defasagem de relógio.