Usar Autenticação de Gerenciamento de Identidades e Acessos com o Base Database Service

Você pode configurar o Oracle Database no Base Database Service para usar a autenticação e autorização do OCI IAM (Oracle Cloud Infrastructure Identity and Access Management) para permitir que os usuários do IAM acessem o banco de dados com credenciais do IAM.

Observação:

O Oracle Database suporta a integração do Base Database Service para o OCI IAM com domínios de identidades, bem como o IAM legado, que não inclui domínios de identidades. Usuários e grupos de domínio padrão e não padrão são suportados ao usar o serviço IAM com domínios de identidades.

O suporte para domínios personalizados não padrão só está disponível com o Oracle Database Versão 19c, Versão 19.21 e posterior (mas não com o Oracle Database Versão 21c).

Sobre a Autenticação do IAM

A integração do OCI IAM com o Base Database Service suporta autenticação de verificador de senha de banco de dados e autenticação baseada em token. Para obter mais informações sobre a arquitetura para utilizar usuários do IAM no Base Database Service, consulte Autenticando e Autorizando Usuários do IAM para Bancos de Dados DBaaS da Oracle.

Autenticação de Senha do Banco de Dados do IAM

Você pode ativar uma instância do Oracle Database para permitir o acesso do usuário com uma senha de banco de dados do OCI IAM (usando um verificador de senha).

Para acesso ao banco de dados verificador de senha, você cria os mapeamentos para usuários do IAM e aplicativos OCI para a instância do Oracle Database. As próprias contas de usuário do IAM são gerenciadas no IAM. As contas de usuário e os grupos de usuários podem estar no domínio padrão ou em um domínio personalizado, não padrão.

Observação:

Qualquer cliente de banco de dados com suporte 12c e acima pode ser usado para acesso por senha do banco de dados do IAM ao Oracle Database.

Uma senha de banco de dados do OCI IAM permite que um usuário do IAM faça log-in em uma instância de banco de dados porque os usuários do Oracle Database geralmente fazem log-in com um nome de usuário e uma senha. O usuário informa seu nome de usuário do IAM e a senha do banco de dados do IAM. Uma senha de banco de dados do serviço IAM é diferente da senha da Console do OCI. Usando um usuário do IAM com um verificador de senha, você pode fazer log-in no banco de dados com qualquer cliente de banco de dados suportado, desde que o cliente de banco de dados suporte os verificadores de senha do Oracle Database 12c.

Autenticação Baseada em Token de SSO do IAM

Você pode permitir que uma instância do Oracle Database use tokens SSO do OCI IAM.

Para acesso ao banco de dados de token, você cria os mapeamentos para usuários do IAM e aplicativos OCI para a instância do Oracle Database. As próprias contas de usuário do IAM são gerenciadas no IAM. As contas de usuário e os grupos de usuários podem estar no domínio padrão ou em um domínio personalizado, não padrão.

Há várias formas pelas quais um cliente de banco de dados pode obter um token de banco de dados do IAM:

  • Um aplicativo ou ferramenta cliente pode solicitar o token de banco de dados do IAM para o usuário e pode passar o token de banco de dados por meio da API do cliente. O uso da API para enviar o token substitui outras definições no cliente de banco de dados. O uso do token do banco de dados IAM exige o cliente Oracle Database 19.16 e versões posteriores (não 21c). Recursos limitados (não completos) de token de banco de dados do IAM estão disponíveis com alguns clientes Oracle Database 21.5 e versões posteriores.
  • Se o aplicativo ou a ferramenta não suportar a solicitação de um token de banco de dados do IAM e o envio para o banco de dados por meio da API cliente, o usuário do IAM poderá primeiro usar a CLI (Interface de Linha de Comando) do OCI para recuperar o token de banco de dados do IAM e salvá-lo em um local de arquivo. Por exemplo, para usar o SQL*Plus e outros aplicativos e ferramentas usando esse método de conexão, primeiro obtenha o token de banco de dados usando a CLI do OCI. Se o cliente de banco de dados estiver configurado para tokens de banco de dados do IAM, quando um usuário fizer log-in com o formato de log-in de barra, o driver do banco de dados usará o token do banco de dados do IAM que foi salvo em um local de arquivo padrão ou especificado.
  • Um aplicativo ou uma ferramenta cliente pode usar um controlador de instâncias ou um controlador de recursos do OCI IAM para obter um token de banco de dados do IAM e usar esse token para se autenticar em uma instância de banco de dados.
  • Os usuários do IAM e os aplicativos OCI podem solicitar um token de banco de dados do IAM com vários métodos, incluindo o uso de uma chave de API.

    Para obter mais informações sobre a configuração da conexão do cliente, consulte Configurar Conexão do Cliente para o SQL*Plus que Usa um Token do Serviço IAM. Para obter mais informações sobre outros métodos, como o uso de um token de delegação em um cloud shell do OCI, consulte Autenticando e Autorizando Usuários do Serviço IAM para Bancos de Dados DBaaS da Oracle.

Se um usuário informar um nome de usuário e uma senha para fazer log-in, o driver do banco de dados usará o método verificador de senha para acessar o banco de dados como o método padrão.

Pré-requisitos

Os pré-requisitos a seguir são necessários para a autenticação do IAM no Base Database Service.

Definições da Rede

Antes de usar a autenticação do IAM nos bancos de dados, você deve usar o serviço Networking para adicionar um gateway de serviço, uma regra de roteamento e uma regra de segurança de saída à VCN (Virtual Cloud Network) e às sub-redes nas quais seus recursos de banco de dados residem.

  1. Crie um gateway de serviço na VCN em que seus recursos de banco de dados residem seguindo as instruções em Criar o gateway de serviço.
  2. Após a criação do gateway de serviço, adicione uma regra de roteamento e uma regra de segurança de saída a cada sub-rede (na VCN) na qual os recursos do banco de dados residem para que esses recursos possam usar o gateway para usar a autenticação do IAM:
    1. Vá para a página Detalhes da Sub-rede da sub-rede.
    2. Na guia Informações da Sub-rede, clique no nome da Tabela de Roteamento da sub-rede para exibir sua respectiva página Detalhes da Tabela de Roteamento.
    3. Na tabela de Regras de Roteamento existentes, verifique se já existe uma regra com as seguintes características:
      • Destino: Todos os Serviços IAD no Oracle Services Network
      • Tipo de Destino: Gateway de Serviço
      • Destino: O nome do gateway de serviço que você acabou de criar na VCN

      Se essa regra não existir, clique em Adicionar Regras de Roteamento e adicione uma regra de roteamento com essas características.

    4. Retorne à página Detalhes da Sub-rede da sub-rede.
    5. Na tabela Listas de Segurança da sub-rede, clique no nome da lista de segurança da sub-rede para exibir a página Detalhes da Lista de Segurança.
    6. No menu lateral, em Recursos, clique em Regras de Saída.
    7. Na tabela de Regras de Saída existentes, verifique se já existe uma regra com as seguintes características:
      • Sem monitoramento de estado: Não
      • Destino: Todos os Serviços IAD no Oracle Services Network
      • Protocolo IP: TCP
      • Intervalo de Portas de Origem: Tudo
      • Faixa de Portas de Destino: 443
    8. Se essa regra não existir, clique em Adicionar Regras de Saída e adicione uma regra de saída com essas características.

Definições do Ambiente

Verifique se WALLET_ROOT está configurado ou não:

show parameters wallet_root;
NAME               TYPE        VALUE
------------------ ----------- --------
wallet_root        string     

Se uma localização de diretório não aparecer para WALLET_ROOT, você não poderá configurar esse banco de dados com o IAM. WALLET_ROOT deve ser definido na próxima vez que seu banco de dados for corrigido. Novos bancos de dados virão com WALLET_ROOT definido.

Configuração de TLS

Ao enviar tokens do IAM do cliente de banco de dados para o servidor de banco de dados, uma conexão TLS deve ser estabelecida. A wallet de TLS com o certificado de banco de dados para a instância do Base DB Service deve ser armazenada no local WALLET_ROOT. Crie um diretório tls para que se pareça com: WALLET_ROOT/<PDB GUID>/tls

Ao configurar o TLS entre o cliente de banco de dados e o servidor, há várias opções a serem consideradas.

  • Usando um certificado de servidor de banco de dados autoassinado em vez de um certificado de servidor de banco de dados assinado por uma autoridade de certificação comumente conhecida.
  • TLS (TLS) unidirecional versus TLS mútuo ou bidirecional (mTLS).
  • Cliente com ou sem uma wallet.

Certificado autoassinado: O uso de um certificado autoassinado é uma prática comum para recursos de TI enfrentados internamente, pois você pode criá-los por conta própria e é gratuito. O recurso (no nosso caso, o servidor de banco de dados) terá um certificado autoassinado para se autenticar no cliente de banco de dados. O certificado autoassinado e o certificado raiz serão armazenados na wallet do servidor de banco de dados. Para que o cliente de banco de dados possa reconhecer o certificado do servidor de banco de dados, também será necessária uma cópia do certificado raiz no cliente. Esse certificado raiz criado automaticamente pode ser armazenado em uma wallet no cliente ou instalado no armazenamento de certificados padrão do sistema cliente (somente Windows e Linux). Quando a sessão for estabelecida, o cliente de banco de dados verificará se o certificado enviado pelo servidor de banco de dados foi assinado pelo mesmo certificado raiz.

Uma autoridade de certificação conhecida: O uso de uma autoridade de certificação raiz comumente conhecida tem algumas vantagens, uma vez que o certificado raiz provavelmente já está armazenado no armazenamento de certificados padrão do sistema cliente. Não haverá etapa extra para o cliente armazenar o certificado raiz se ele for um certificado raiz comum. A desvantagem é que isso normalmente tem um custo associado.

TLS Unidirecional: Na sessão TLS padrão, somente o servidor fornece um certificado ao cliente para autenticar-se. O cliente não precisa ter um certificado de cliente separado para autenticar-se no servidor (semelhante a como as sessões HTTPS são estabelecidas). Embora o banco de dados exija uma wallet para armazenar o certificado do servidor, a única coisa que o cliente precisa ter é o certificado raiz usado para assinar o certificado do servidor.

TLS bidirecional (também chamado de TLS Mútuo, mTLS): No mTLS, o cliente e o servidor têm certificados de identidade apresentados uns aos outros. Na maioria dos casos, o mesmo certificado raiz assinará esses dois certificados para que o mesmo certificado raiz possa ser usado com o servidor e o cliente de banco de dados para autenticar o outro certificado. O mTLS às vezes é usado para autenticar o usuário, visto que a identidade do usuário é autenticada pelo servidor de banco de dados por meio do certificado. Isso não é necessário para informar tokens do IAM, mas pode ser usado ao informá-los.

Cliente com uma wallet: Uma wallet do cliente é obrigatória ao usar mTLS para armazenar o certificado do cliente. No entanto, o certificado raiz pode ser armazenado na mesma wallet ou no armazenamento de certificados padrão do sistema.

Um cliente sem uma wallet: Os clientes podem ser configurados sem uma wallet ao usar TLS sob estas condições:
  1. O TLS unidirecional está sendo configurado, no qual o cliente não tem seu próprio certificado e
  2. o certificado raiz que assinou o certificado do servidor de banco de dados é armazenado no armazenamento de certificados padrão do sistema. Muito provavelmente, o certificado raiz já estaria lá se o certificado do servidor fosse assinado por uma autoridade de certificação comum. Se for um certificado autoassinado, o certificado raiz precisará ser instalado no armazenamento de certificados padrão do sistema para evitar o uso de uma wallet do cliente.

Para obter detalhes sobre como configurar o TLS entre o cliente do banco de dados e o servidor do banco de dados, incluindo as opções descritas acima, consulte Configurando a Autenticação de Segurança da Camada de Transporte.

Se você optar por usar certificados autoassinados e tarefas adicionais relacionadas à wallet, consulte o guia de referência da CLI (interface de linha de comando) orapki no Database Security Guide. Consulte Gerenciando Elementos de PKI (Infraestrutura de Chave Pública).

Alterar Fornecedores de Identidades Externos

Este tópico descreve as etapas para alterar o provedor de identidades externo do CMU (Usuários Gerenciados Centralmente) para autenticação e autorização do OCI IAM e vice-versa no Base Database Service.

Por padrão, a autenticação e a autorização do OCI IAM para usuários não estão ativadas para bancos de dados recém-provisionados. Outra opção para autenticação externa é utilizar Usuários Gerenciados Centralmente com o Active Directory (CMU-AD). Só pode haver um esquema de autenticação externo ativado em determinado momento.

Ativar Autenticação e Autorização do OCI IAM

Execute as etapas a seguir para ativar a autenticação e a autorização do OCI IAM.

  1. Ative a autenticação e a autorização do OCI IAM usando o comando ALTER SYSTEM.
    ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=OCI_IAM SCOPE=BOTH;
  2. Verifique o valor do parâmetro do sistema IDENTITY_PROVIDER_TYPE.
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    NAME                   VALUE   
    ---------------------- ------- 
    identity_provider_type OCI_IAM 
  3. Verifique se o parâmetro IDENTITY_PROVIDER_CONFIG foi definido.
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_config';
  4. Se o parâmetro IDENTITY_PROVIDER_CONFIG tiver sido definido, redefina esse parâmetro.
    ALTER SYSTEM RESET IDENTITY_PROVIDER_CONFIG SCOPE=BOTH;

Desativar Autenticação e Autorização do OCI IAM

Execute a etapa a seguir para desativar a autenticação e a autorização do OCI IAM.

  1. Desative a integração do OCI IAM usando o comando ALTER SYSTEM.
    ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;

Ativar CMU-AD

Execute as seguintes etapas para permitir que os usuários do AD (Active Directory) estabeleçam conexão com o banco de dados usando o CMU:

  1. Desative a integração do IAM conforme descrito em Desativar Autenticação e Autorização do OCI IAM.
  2. Configure o CMU-AD conforme descrito em Configuring Centrally Managed Users with Microsoft Active Directory.

Desativar CMU-AD

Execute a seguinte etapa para desativar o CMU-AD:

  1. Desabilite o recurso CMU-AD usando o comando ALTER SYSTEM.
    ALTER SYSTEM SET LDAP_DIRECTORY_ACCESS = 'NONE';

Reativar Autenticação e Autorização do OCI IAM

Execute as seguintes etapas para reativar os usuários do IAM para estabelecerem conexão com o banco de dados usando autenticação e autorização do OCI IAM:

  1. Desative o CMU-AD conforme descrito em Desativar o CMU-AD.
  2. Ative a autenticação e a autorização do OCI IAM conforme descrito em Ativar Autenticação e Autorização do OCI IAM.

Criar Grupos e Políticas do Serviço IAM para Usuários do IAM

Este tópico descreve as etapas para gravar instruções de política para um grupo do IAM a fim de permitir o acesso do usuário do IAM aos recursos do OCI, especificamente às instâncias do banco de dados.

Uma política é um grupo de instruções que especifica quem pode acessar recursos específicos e como. O acesso pode ser concedido para toda a tenancy, bancos de dados em um compartimento ou bancos de dados individuais. Isso significa que você grava uma instrução de política que dá a um grupo específico um determinado tipo de acesso a um tipo de recurso definido dentro de um compartimento específico.

Observação:

É necessário definir uma política para usar tokens do serviço IAM para acessar o banco de dados. Não é necessária uma política ao usar senhas de banco de dados do serviço IAM para acessar o banco de dados.

Para que o banco de dados permita que os usuários do serviço IAM estabeleçam conexão com o banco de dados usando tokens do IAM:

  1. Execute os pré-requisitos do OCI IAM criando um grupo e adicionando usuários ao grupo.

    Por exemplo, crie o grupo sales_dbusers.

    Para obter mais informações, consulte Gerenciando Grupos.

  2. Escreva instruções de política para permitir o acesso aos recursos do OCI.

    1. Na Console do OCI, clique em Identidade e Segurança e em Políticas.
    2. Para gravar uma política, clique em Criar Política e digite um Nome e uma Descrição.
    3. Use o Criador de Política para criar uma política.

      Por exemplo, para criar uma política que permita aos usuários no grupo DBUsers do serviço IAM acessar qualquer banco de dados em sua tenancy:

      Allow group DBUsers to use database-connections in tenancy

      Por exemplo, para criar uma política que limite os membros do grupo DBUsers a acessar os bancos de dados no compartimento testing_compartment somente:

      allow group DBUsers to use database-connections in compartment testing_compartment

      Por exemplo, para criar uma política que limite o acesso do grupo a um único banco de dados em um compartimento:

      allow group DBUsers to use database-connections in compartment testing_compartment 
          where target.database.id = 'ocid1.database.oc1.iad.aabbcc' 
    4. Clique em Criar.

      Para obter mais informações sobre políticas, consulte Gerenciando Políticas.

Observação:

O seguinte é necessário para criar políticas para uso com usuários do IAM no banco de dados no Base Database Service.

  • As políticas podem permitir que os usuários do serviço IAM acessem instâncias de banco de dados em toda a tenancy, em um compartimento, ou podem limitar o acesso a uma única instância de banco de dados.

  • Você pode usar um controlador de instâncias ou um controlador de recursos para recuperar tokens de banco de dados a fim de estabelecer uma conexão do seu aplicativo com uma instância de banco de dados. Se estiver usando um controlador de instâncias ou um controlador de recursos, você deverá mapear um grupo dinâmico. Portanto, você não pode mapear exclusivamente instâncias e controladores de recursos; só pode mapeá-los por meio de um mapeamento compartilhado e colocar a instância ou instância de recurso em um grupo dinâmico do serviço IAM.

    Você pode criar Grupos Dinâmicos e fazer referência a grupos dinâmicos nas políticas criadas para acessar o OCI.

    Para obter mais informações, consulte Gerenciando Grupos Dinâmicos.

Adicionar Usuários do Serviço IAM

Para adicionar usuários do IAM para permitir acesso ao banco de dados, mapeie usuários globais do banco de dados para grupos ou usuários do IAM com instruções CREATE USER ou ALTER USER (com a cláusula IDENTIFIED GLOBALLY AS).

A autorização de usuários do serviço IAM para uma instância do banco de dados funciona mapeando usuários globais (esquemas) do banco de dados para usuários do IAM (mapeamento exclusivo) ou grupos (mapeamento de esquema compartilhado) do IAM.

Autorizar Usuários do Serviço IAM em uma Instância do Banco de Dados:

Execute as etapas a seguir para autorizar usuários do IAM em uma instância de banco de dados.

  1. Faça log-in como o usuário ADMIN no banco de dados que está ativado para usar o serviço IAM (o usuário ADMIN tem os privilégios de sistema CREATE USER e ALTER USER necessários para essas etapas).
  2. Crie um mapeamento entre o usuário (esquema) do banco de dados com as instruções CREATE USER ou ALTER USER e inclua a cláusula IDENTIFIED GLOBALLY AS, especificando o nome do grupo do IAM.

    Use a seguinte sintaxe para mapear um usuário global para um grupo do serviço IAM:

    CREATE USER global_user IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_NAME';

    Por exemplo, para mapear um grupo do serviço IAM chamado db_sales_group para um usuário global de banco de dados compartilhado chamado sales_group:

    CREATE USER sales_group IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=db_sales_group';

    Isso cria um mapeamento de usuário global compartilhado. O mapeamento, com o usuário global sales_group, é efetivo para todos os usuários do grupo do IAM. Assim, qualquer pessoa no db_sales_group pode fazer log-in no banco de dados usando suas credenciais do IAM (por meio do mapeamento compartilhado do usuário global sales_group).

    O exemplo a seguir mostra como fazer isso para um domínio não padrão, sales_domain:

    CREATE USER shared_sales_schema IDENTIFIED GLOBALLY AS 
        'IAM_GROUP_NAME=sales_domain/db_sales_group';
  3. Se você quiser criar mapeamentos de usuários globais adicionais para outros grupos ou usuários do IAM, siga estas etapas para cada grupo ou usuário do IAM.

Observação:

Os usuários do banco de dados que não forem IDENTIFIED GLOBALLY poderão continuar fazendo log-in como antes, mesmo quando o banco de dados estiver ativado para autenticação do IAM.

Mapeie Exclusivamente um Usuário Local do IAM para um Usuário Global do Oracle Database:

Execute as etapas a seguir para mapear exclusivamente um usuário local do IAM para um usuário global do Oracle Database.

  1. Faça log-in como o usuário ADMIN no banco de dados que está ativado para usar o serviço IAM (o usuário ADMIN tem os privilégios de sistema CREATE USER e ALTER USER necessários para essas etapas).
  2. Crie um mapeamento entre o usuário (esquema) do banco de dados com as instruções CREATE USER ou ALTER USER e inclua a cláusula IDENTIFIED GLOBALLY AS, especificando o nome do usuário IAM do local do IAM.

    Por exemplo, para criar um novo usuário global de banco de dados chamado peter_fitch e mapear esse usuário para um usuário local existente do serviço IAM chamado peterfitch:

    CREATE USER peter_fitch IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=peterfitch'

    O exemplo a seguir mostra como criar o usuário especificando um domínio não padrão, sales_domain:

    CREATE USER peter_fitch2 IDENTIFIED GLOBALLY AS 
        'IAM_PRINCIPAL_NAME=sales_domain/peterfitch';

Adicionar Atribuições do Serviço IAM

Opcionalmente, crie atribuições globais para fornecer privilégios e atribuições adicionais do banco de dados a usuários do IAM quando vários usuários do IAM forem mapeados para o mesmo usuário global compartilhado.

A criação de atribuições globais é opcional para um usuário do IAM com um mapeamento exclusivo do IAM para um usuário (esquema) do banco de dados. Quando o mapeamento do IAM for para um esquema compartilhado, a criação de uma atribuição global também será opcional. Por exemplo, todos os privilégios e atribuições podem ser concedidos ao esquema compartilhado e todos os usuários do IAM que mapeiam para o esquema compartilhado recebem os privilégios e as atribuições designados ao esquema compartilhado.

Use uma atribuição global para diferenciar opcionalmente usuários que usam o mesmo esquema compartilhado. Por exemplo, um conjunto de usuários pode ter o mesmo esquema compartilhado e o esquema compartilhado pode ter o privilégio CREATE SESSION. Em seguida, as atribuições globais podem ser usadas para fornecer privilégios e atribuições diferenciados designados a diferentes grupos de usuários que usam o mesmo esquema compartilhado.

A concessão de atribuições adicionais aos usuários do IAM funciona mapeando as atribuições globais do banco de dados para grupos do IAM.

Mapeie as Atribuições Globais do Banco de Dados para Grupos do IAM:

Execute as etapas a seguir para mapear as atribuições globais do banco de dados para grupos do IAM.

  1. Faça log-in como o usuário ADMIN no banco de dados que está ativado para usar o serviço IAM (o usuário ADMIN tem os privilégios de sistema CREATE USER e ALTER USER necessários para essas etapas).
  2. Defina a autorização do banco de dados para as atribuições do banco de dados com instruções CREATE ROLE ou ALTER ROLE e inclua a cláusula IDENTIFIED GLOBALLY AS, especificando o nome do grupo do IAM.

    Use a seguinte sintaxe para mapear uma atribuição global para um grupo do serviço IAM:

    CREATE ROLE global_role IDENTIFIED GLOBALLY AS 
        'IAM_GROUP_NAME=IAM_GROUP_of_WHICH_the_IAM_USER_IS_a_MEMBER';

    Por exemplo, para mapear um grupo do serviço IAM chamado ExporterGroup para uma atribuição global de banco de dados compartilhado chamada export_role:

    CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=ExporterGroup';

    O exemplo a seguir mostra como criar a atribuição especificando um domínio não padrão, sales_domain:

    CREATE ROLE export_role IDENTIFIED GLOBALLY AS 
        'IAM_GROUP_NAME=sales_domain/ExporterGroup';

    Todos os membros do ExporterGroup no domínio sales_domain serão autorizados com a atribuição global do banco de dados export_role quando fizerem log-in no banco de dados.

  3. Use instruções GRANT para conceder os privilégios necessários ou outras atribuições à atribuição global.
    GRANT CREATE SESSION TO export_role;
    GRANT DWROLE TO export_role;
  4. Se você quiser que uma atribuição de banco de dados existente seja associada a um grupo do IAM, use a instrução ALTER ROLE para alterar a atribuição de banco de dados existente para mapear a atribuição para um grupo do IAM. Use a seguinte sintaxe para alterar uma atribuição de banco de dados existente para mapeá-la para um grupo do IAM:
    ALTER ROLE existing_database_role 
       IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_Group_Name';

Se você quiser adicionar mais mapeamentos de atribuição global para outros grupos do IAM, siga as etapas acima para cada grupo do IAM.

Criar Senha do Banco de Dados do Serviço IAM para Usuários do IAM

Para adicionar um usuário do IAM e permitir que o usuário do IAM acesse o banco de dados fornecendo um nome de usuário e uma senha, você deve criar uma senha de banco de dados do IAM. Um nome de usuário do IAM e uma senha de banco de dados do IAM podem ser usados de duas maneiras.

  1. O usuário do IAM pode informar o nome de usuário e a senha do banco de dados do IAM ao acessar o banco de dados. Por padrão, o cliente do banco de dados seguirá o mecanismo de autenticação de senha normal com o banco de dados e o banco de dados recuperará o verificador de senha do banco de dados do IAM.
  2. O cliente de banco de dados pode ser configurado para obter um token de banco de dados do IAM usando o nome de usuário do IAM e a senha do banco de dados do IAM. O cliente do banco de dados enviará esse token ao banco de dados para acesso do usuário.

Para obter mais informações sobre como obter um token de banco de dados do IAM usando o nome de usuário do IAM e a senha do banco de dados do IAM, consulte Configurando o IAM para o Oracle DBaaS.

Para obter mais informações sobre senhas do banco de dados do serviço IAM, consulte Como Trabalhar com Nomes de Usuário e Senhas do Banco de Dados do Serviço IAM em Gerenciando Credenciais do Usuário.

Estabelecer Conexão com o Banco de Dados com a Autenticação do IAM

Após o usuário ADMIN do banco de dados mapear usuários globais e atribuições globais para os usuários do IAM e grupos do IAM, os usuários fazem log-in na instância do banco de dados usando suas credenciais do OCI IAM ou acessam o banco de dados por meio de um token de banco de dados do OCI IAM.

Você ainda pode fazer log-in no banco de dados usando o nome de usuário e a senha da sua conta de banco de dados local (conta de usuário de banco de dados não global).

Você pode usar um cliente de banco de dados para acessar uma instância de banco de dados como um usuário do OCI IAM. Para usar um cliente com credenciais de nome de usuário e senha do OCI IAM e um verificador de senha, o cliente do banco de dados deve ser 12c ou mais recente.

O uso do token do banco de dados IAM exige o cliente Oracle Database 19.16 e versões posteriores (não 21c). Recursos limitados (não completos) de token de banco de dados do IAM estão disponíveis com alguns clientes Oracle Database 21.5 e versões posteriores.

Observação:

Se sua instância de banco de dados estiver no Modo Restrito, somente os usuários com o privilégio RESTRICTED SESSION, como ADMIN, poderão se conectar ao banco de dados.

Sobre a Conexão com uma Instância do Banco de Dados Usando o IAM

Os usuários do serviço IAM podem se conectar com a instância do banco de dados usando um verificador de senha de banco de dados do IAM ou um token do IAM.

O uso do verificador de senha de banco de dados do serviço IAM é semelhante ao processo de autenticação por senha de banco de dados. No entanto, em vez do verificador de senha (hash criptografado da senha) que está sendo armazenado no banco de dados, o verificador é armazenado como parte do perfil de usuário do OCI IAM.

O segundo método de conexão usa um token do serviço IAM para o banco de dados. O uso do acesso baseado em token é melhor para recursos de Nuvem, como Oracle Databases no Base Database Service. O token se baseia na força que o ponto final do IAM pode impor. Isso pode ser autenticação multifator, que é mais forte do que o uso exclusivo de senhas. Outro benefício do uso de tokens é que o verificador de senha (que é considerado confidencial) nunca fica armazenado ou disponível na memória. Uma conexão TCPS (TLS) é necessária ao usar tokens para acesso ao banco de dados.

Observação:

Você não pode configurar a criptografia de rede nativa ao transmitir um token do IAM. Somente o TLS (Transport Layer Security) é suportado, e não a criptografia de rede nativa ou a criptografia de rede nativa com TLS.

Conexões de Cliente que Usam um Verificador de Senha do Banco de Dados do IAM

Depois de configurar a autorização necessária para o usuário do IAM, esse usuário poderá fazer log-in usando o aplicativo cliente existente, como SQL*Plus ou SQLcl, sem configuração adicional.

O usuário do IAM informa o nome de usuário e a senha do banco de dados do IAM (não a senha da Console do OCI) usando qualquer cliente de banco de dados suportado no momento. A única restrição é que a versão do cliente de banco de dados seja a do Oracle Database release 12.1.0.2 ou mais recente para usar as senhas do Oracle Database 12c. O cliente do banco de dados deve poder usar o verificador de senha 12c. Não há suporte para o uso da criptografia do verificador 11g com o IAM. Não é necessária nenhuma configuração de cliente nem ferramenta especial para conexão do usuário do IAM com o banco de dados.

O cliente do banco de dados também pode solicitar um token diretamente do IAM usando o nome de usuário do IAM e a senha do banco de dados do IAM. Para obter mais informações sobre como configurar o cliente para obter um token, consulte Conexões do Cliente que Usam um Token Solicitado por um Nome de Usuário e Senha de Banco de Dados do IAM.

Conexões de Cliente que Usam um Token

Para acesso por token do IAM ao banco de dados, o aplicativo cliente ou a ferramenta solicita um token de banco de dados do serviço IAM para o usuário do IAM.

O aplicativo cliente passará o token do banco de dados diretamente para o cliente do banco de dados por meio da API do cliente do banco de dados.

Se o aplicativo ou a ferramenta não tiver sido atualizado para solicitar um token do IAM, o usuário do IAM poderá usar a CLI do OCI para solicitar e armazenar o token do banco de dados. Você pode solicitar um token de acesso (db-token) ao banco de dados usando as seguintes credenciais:

  • Tokens de segurança (com autenticação do IAM), tokens de delegação (no cloud shell do OCI) e API-keys, que são credenciais que representam o usuário do IAM para ativar a autenticação.
  • Nome de usuário do IAM e senha do banco de dados do IAM, que podem ser usados pelo cliente do banco de dados para recuperar um token do banco de dados do IAM diretamente quando configurado para fazer isso.
  • Tokens de controlador de instâncias, que permitem que as instâncias sejam atores (ou entidades) autorizados a executar ações nos recursos de serviço após a autenticação.
  • Token de controlador de recursos, que é uma credencial que permite que o aplicativo se autentique em outros serviços do OCI.
  • Usando um nome de usuário do IAM e uma senha do banco de dados do IAM (que só pode ser solicitada pelo cliente do banco de dados).

Quando os usuários do IAM fazem log-in no cliente com um log-in de barra / e o parâmetro OCI_IAM é configurado (sqlnet.ora, tnsnames.ora ou como parte de uma string de conexão), o cliente do banco de dados recupera o token do banco de dados de um arquivo. Se o usuário do IAM enviar um nome de usuário e uma senha, a conexão usará o acesso do verificador de banco de dados do IAM descrito para conexões de cliente que usam verificadores de senha de banco de dados do IAM, a menos que o cliente do banco de dados esteja configurado para recuperar um token de banco de dados do IAM com o nome de usuário do IAM e a senha do banco de dados do IAM. As instruções deste tópico mostram como usar a CLI do OCI como auxiliar para o token de banco de dados. Se o aplicativo ou a ferramenta tiverem sido atualizados para trabalhar com o IAM, siga as instruções do aplicativo ou da ferramenta. Alguns casos de uso comuns incluem o seguinte: SQL*Plus no local, SQLcl no local, SQL*Plus no Cloud Shell ou aplicativos que usam wallets SEP.

Os seguintes tópicos explicam como:

Configurar uma Conexão de Cliente para o SQL*Plus que Usa uma Senha do Banco de Dados do IAM

Você pode configurar o SQL*Plus para usar uma senha do banco de dados do IAM.

Como usuário do IAM, faça log-in no banco de dados usando a seguinte sintaxe:

CONNECT user_name@db_connect_string
Enter password: password

Nesta especificação, user_name corresponde ao nome de usuário do IAM. Há um limite de 128 bytes para o domain_name/user_name combinado.

O exemplo a seguir mostra como o usuário do IAM peter_fitch pode fazer log-in em uma instância do banco de dados.

sqlplus /nolog
connect peter_fitch@db_connect_string
Enter password: password

Alguns caracteres especiais exigirão aspas duplas em torno de user_name e password. Por exemplo:

"peter_fitch@example.com"@db_connect_string

"IAM database password"

Configurar Conexão do Cliente para o SQL*Plus que Use um Token do IAM

Execute as etapas a seguir para configurar uma conexão de cliente para o SQL*Plus que use um token do serviço IAM.

  1. Certifique-se de ter uma conta de usuário do serviço IAM.
  2. Verifique com um administrador do serviço IAM e o administrador do banco de dados se você tem uma política que permite acessar o banco de dados no compartimento ou em sua tenancy e se você está mapeado para um esquema global no banco de dados.
  3. Se seu aplicativo ou ferramenta não oferecer suporte à integração direta do serviço IAM, faça download, instale e configure a CLI do OCI. Para obter mais informações sobre a instalação e a configuração da CLI do OCI, consulte Inicialização rápida.
  4. Configure uma chave de API como parte da configuração da CLI do OCI e selecione valores padrão.
    1. Configure o acesso de chave da API para o usuário do serviço IAM.
    2. Recupere o db-token. Por exemplo:
      • Recuperando um db-token com um API-key usando a CLI do OCI:
        oci iam db-token get
      • Recuperando um db-token com um token de segurança (ou sessão):
        oci iam db-token get --auth security_token

        Se o token de segurança tiver expirado, será exibida uma janela para que o usuário possa fazer log-in no OCI novamente. Isso gerará o token de segurança para o usuário. A CLI do OCI usará esse token atualizado para obter o db-token.

      • Recuperando um db-token com um token de delegação: Quando você faz log-in no cloud shell, o token de delegação é gerado automaticamente e colocado no diretório /etc. Para obter esse token, execute o seguinte comando na CLI do OCI:
        oci iam db-token get
      • Recuperando um token de instância usando a CLI do OCI:
        oci iam db-token get --auth instance_principal

    Para obter mais informações, consulte Chaves e OCIDs Necessários.

  5. Essa configuração só funciona com o cliente Oracle Database 19c. Certifique-se de estar usando as atualizações de versão mais recentes para este cliente.

    Observação:

    A release 21c do cliente Oracle Database oferece recursos limitados de token do IAM.
  6. Siga o processo existente para fazer download da wallet do banco de dados e siga as instruções para configurá-la para uso com o SQL*Plus.
    1. Confirme se a correspondência de DN está ativada procurando SSL_SERVER_DN_MATCH=ON no arquivo sqlnet.ora.
    2. Configure o cliente de banco de dados para usar o token do serviço IAM adicionando TOKEN_AUTH=OCI_TOKEN ao arquivo sqlnet.ora. Como você usará os locais padrão para o arquivo de token do banco de dados, não será necessário incluir o local do token.
    Os valores TOKEN_AUTH e TOKEN_LOCATION nas strings de conexão tnsnames.ora têm precedência sobre as definições sqlnet.ora dessa conexão. Por exemplo, para a string de conexão, supondo que o token esteja no local padrão (~/.oci/db-token para Linux):
    (description= 
      (retry_count=20)(retry_delay=3)
      (address=(protocol=tcps)(port=1522)
      (host=example.us-phoenix-1.oraclecloud.com))
      (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
      (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, 
         OU=Oracle BMCS US, O=Example Corporation, 
         L=Redwood City, ST=California, C=US")
      (TOKEN_AUTH=OCI_TOKEN)))

Depois que a string de conexão for atualizada com o parâmetro TOKEN_AUTH, o usuário do IAM poderá fazer log-in na instância do banco de dados executando o comando a seguir para iniciar o SQL*Plus. Você pode incluir o próprio descritor de conexão ou usar o nome do descritor do arquivo tnsnames.ora.

connect /@exampledb_high

ou:

connect /@(description= 
  (retry_count=20)(retry_delay=3)
  (address=(protocol=tcps)(port=1522)
  (host=example.us-phoenix-1.oraclecloud.com))
  (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
  (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, 
     OU=Oracle BMCS US, O=Example Corporation, 
     L=Redwood City, ST=California, C=US")
  (TOKEN_AUTH=OCI_TOKEN)))

O cliente de banco de dados já está configurado para obter um db-token porque o parâmetro TOKEN_AUTH já foi definido, por meio do arquivo sqlnet.ora ou em uma string de conexão. O cliente do banco de dados obtém o db-token e o assina usando a chave privada e, em seguida, envia o token ao banco de dados. Se um nome de usuário do IAM e uma senha de banco de dados do IAM forem especificados, em vez de uma barra /, o cliente de banco de dados estabelecerá conexão usando a senha, em vez de usar db-token, a menos que outro parâmetro seja especificado: PASSWORD_AUTH = OCI_TOKEN. Isso direciona o cliente do banco de dados para obter o token do IAM usando o nome de usuário do IAM e a senha do banco de dados do IAM. Além de definir PASSWORD_AUTH,, você também precisará definir OCI_IAM_URL, OCI_TENANCY e, opcionalmente, OCI_COMPARTMENT e OCI_DATABASE.

Usar o Controlador de Instâncias para Acessar o Banco de Dados com Autenticação do IAM

Após o usuário ADMIN ativar o OCI IAM no banco de dados, um aplicativo poderá acessar o banco de dados por meio de um token de banco de dados do OCI IAM usando um controlador de instâncias.

Para obter mais informações, consulte Accessing the Oracle Cloud Infrastructure API Using Instance Principals.

Configurar Autenticação de Proxy

A autenticação de proxy permite que um usuário do IAM faça proxy em um esquema para tarefas como manutenção de aplicativos.

A autenticação de proxy geralmente é usada para autenticar o usuário real e, em seguida, autorizá-lo a usar um esquema com os privilégios e atribuições do esquema para gerenciar um aplicativo. Alternativas como o compartilhamento da senha do esquema do aplicativo são consideradas perigosas e não podem verificar qual usuário real executou uma ação.

Um caso de uso pode estar em um ambiente no qual um usuário do IAM designado que é um administrador de banco de dados de aplicativo pode se autenticar usando suas credenciais e, em seguida, fazer proxy para um usuário de esquema (por exemplo, hrapp). Essa autenticação permite que o administrador do IAM use os privilégios e atribuições hrapp como usuário hrapp para executar a manutenção do aplicativo e ainda use suas credenciais do IAM para autenticação. Um administrador de banco de dados de aplicativo pode acessar o banco de dados e, em seguida, fazer proxy em um esquema de aplicativo para gerenciar esse esquema.

Você pode configurar a autenticação de proxy para os métodos de autenticação de senha e de token.

Configurando a Autenticação de Proxy para o Usuário do IAM

Para configurar a autenticação de proxy para um usuário do IAM, o usuário do IAM já deve ter um mapeamento para um esquema global (mapeamento exclusivo ou compartilhado). Um esquema separado para o usuário do IAM para proxy também deve estar disponível.

Depois de garantir que você tenha esse tipo de usuário, altere o usuário do banco de dados para permitir que o usuário do IAM faça proxy dele.

  1. Faça log-in na instância do banco de dados como um usuário que tem os privilégios do sistema ALTER USER.
  2. Conceda permissão para que o usuário do IAM faça proxy para a conta de usuário do banco de dados local. Um usuário do IAM não pode ser referenciado no comando para que o proxy seja criado entre o usuário global do banco de dados (mapeado para o usuário do IAM) e o usuário do banco de dados de destino. No exemplo a seguir, hrapp é o esquema para o proxy e peterfitch_schema é o usuário global do banco de dados mapeado exclusivamente para o usuário peterfitch.
    ALTER USER hrapp GRANT CONNECT THROUGH peterfitch_schema;

Nesse estágio, o usuário do IAM pode fazer log-in na instância do banco de dados usando o proxy. Por exemplo:

Para estabelecer conexão usando um verificador de senha:

CONNECT peterfitch[hrapp]@connect_string
Enter password: password

Para estabelecer conexão usando um token:

CONNECT [hrapp]/@connect_string

Validando a Autenticação de Proxy do Usuário do IAM

Você pode validar a configuração de proxy do usuário do IAM para métodos de autenticação de senha e token.

  1. Faça log-in na instância de banco de dados como um usuário que tenha privilégios de sistema CREATE USER e ALTER USER.
  2. Conecte-se como usuário do IAM e execute os comandos SHOW USER e SELECT SYS_CONTEXT. Por exemplo, suponha que você queira verificar a autenticação de proxy do usuário do IAM peterfitch quando ele fizer proxy para o usuário do banco de dados hrapp. Você precisará estabelecer conexão com o banco de dados usando os diferentes tipos de métodos de autenticação mostrados aqui, mas a saída dos comandos que você executar será a mesma para todos os tipos.
    • Para autenticação de senha, supondo que o usuário do IAM esteja no domínio padrão:
      CONNECT peterfitch[hrapp]/password\!@connect_string
      SHOW USER;
      --The output should be USER is "HRAPP"
      SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL;
      --The output should be "PASSWORD_GLOBAL_PROXY"
      SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL;
      --The output should be "PETERFITCH_SCHEMA"
      SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL;
      --The output should be "HRAPP"
    • Para autenticação de token, para um usuário que está em um domínio não padrão, sales_domain:
      CONNECT [hrapp]/@connect_string
      SHOW USER;
      --The output should be USER is "HRAPP "
      SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL;
      --The output should be "TOKEN_GLOBAL_PROXY"
      SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL;
      --The output should be "PETERFITCH_SCHEMA"
      SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL;
      --The output should be "HRAPP"

Usar um Link de Banco de Dados com Usuários Autenticados do Serviço IAM

Você pode usar um link de banco de dados para estabelecer conexão de uma instância de banco de dados com outra como usuário do OCI IAM.

Você pode usar o link de usuário conectado ou de banco de dados de usuário fixo para estabelecer conexão com um banco de dados como um usuário do OCI IAM.

Observação:

Não há suporte para o link de banco de dados do usuário atual para estabelecer conexão com um banco de dados no Base Database Service como um usuário do OCI IAM.
  • Link de Banco de Dados de Usuário Conectado: Para um link de banco de dados de usuário conectado, um usuário do serviço IAM deve ser mapeado para um esquema nos bancos de dados de origem e de destino conectados por um link de banco de dados. Você pode usar um verificador de senha do banco de dados ou um token de banco de dados do serviço IAM para usar um link de banco de dados do usuário conectado.

  • Link de Banco de Dados de Usuário Fixo: Um link de banco de dados de usuário fixo pode ser criado utilizando um usuário do banco de dados ou um usuário do serviço IAM. Ao usar um usuário do serviço IAM como um link de banco de dados de usuário fixo, o usuário do serviço IAM deve ter um mapeamento de esquema no banco de dados de destino. O usuário do serviço IAM para um link de banco de dados só pode ser configurado com um verificador de senha.

Desativar Autenticação do IAM

Você pode desativar o acesso do usuário do serviço IAM na sua instância de banco de dados usando o comando ALTER SYSTEM, conforme mostrado abaixo:

ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;

Se você também quiser atualizar o acesso ao serviço IAM do recurso, talvez precise remover ou modificar o grupo do serviço IAM e as políticas configuradas para permitir acesso ao serviço IAM desses recursos.