Pacote DBMS_MFA_ADMIN

O pacote DBMS_MFA_ADMIN facilita e configura o Acesso ao Token SQL.

Resumo dos Subprogramas DBMS_MFA_ADMIN

Resume os subprogramas incluídos no pacote DBMS_MFA_ADMIN.

REGISTER_USER Procedimento

O procedimento DBMS_MFA_ADMIN.REGISTER_USER registra um usuário de banco de dados existente para MFA, associando o usuário a um endereço de e-mail como a identidade externa. Você pode ativar a MFA para autenticação de log-on, acesso SQL ou ambos. Ele suporta aplicativos de e-mail, Slack e autenticador para fornecer tokens de acesso seguro.

Sintaxe

DBMS_MFA_ADMIN.REGISTER_USER (       
       username    IN VARCHAR2,
       type        IN VARCHAR2,
       email       IN CLOB DEFAULT NULL,
       attributes  IN CLOB DEFAULT NULL
 );

Parâmetros

Parâmetro Descrição

username

Especifica o nome de usuário para o qual a Autenticação Multifator precisa ser imposta.

type

Especifica o atributo MFA que controla quando a MFA é imposta para o usuário.

type aceita os seguintes valores:
  • LOGON: A MFA é necessária quando você faz log-on no banco de dados.

  • SQL ACCESS: A MFA é necessária para executar qualquer operação SQL ou DML no banco de dados.

email

Especifica o endereço de e-mail a ser associado ao usuário para MFA.

attributes

Especifica atributos MFA no formato JSON.

Use attributes para especificar os seguintes atributos para gerar o token:

  • auth_method: Especifica o método de MFA usado para autenticação do usuário do banco de dados. Os valores inválidos para este parâmetro são:
    • OMA_PUSH: Há suporte para MFA de Log-on e Acesso SQL.

    • DUO_PUSH: Somente a MFA de Log-on é suportada.

    • EMAIL: Somente a MFA de acesso SQL é suportada.

    • SLACK: Somente a MFA de acesso SQL é suportada.

    Observação

    Para type =>'LOGON', auth_method, é o único atributo suportado.
  • duration_min: Especifica uma duração de inteiro positiva, em minutos, para a qual o token é válido.

    O valor padrão para esse atributo é 1440 mins (1 dia).

  • idle_timeout_min: Especifica o tempo máximo de inatividade permitido, em minutos, para uma sessão antes de o Token de Acesso SQL expirar para essa sessão.

    O valor-padrão é NULL.

  • read_only: Especifica se o usuário registrado tem acesso de consulta SQL somente para leitura ao banco de dados.

    O valor padrão é FALSE.

    Este atributo só se aplica quando o escopo é definido como SESSION.

  • roles: Especifica um Array JSON de atribuições de banco de dados que devem ser designadas ao Token de Acesso SQL gerado para o usuário.

    Por exemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    O valor padrão para esse atributo é NULL.

  • scope: Especifica o escopo no qual o Token de Acesso SQL é válido.

    scope aceita os seguintes valores:
    • session:

      O token validado concede o acesso SQL apenas à sessão do banco de dados atual pela duração especificada no atributo duration_min.

    • user:

      O token validado concede acesso SQL às sessões de banco de dados atuais e subsequentes pela duração especificada no atributo duration_min.

    O valor padrão para esse atributo é session.

  • enable_authenticator: Especifica se o aplicativo autenticador está configurado para o usuário e é usado para o Token de Acesso SQL.

    O valor padrão para esse atributo é FALSE.

  • slack_member_id: Especifica o id do Slack no qual entregar o Token de Acesso SQL por meio de uma mensagem do Slack.

Exemplos

Exemplo para registrar um usuário para log-on de MFA:

BEGIN
    DBMS_MFA_ADMIN.REGISTER_USER(
      user_name        => 'SCOTT',
      type             => 'LOGON',
      email            => 'scott@example.com',
      token_attributes => '{"auth_method":"oma_push"}'
   );
END;
/

Exemplo para registrar um usuário para acesso SQL definindo os atributos MFA.

BEGIN
    DBMS_MFA_ADMIN.REGISTER_USER( 
      user_name   => 'SCOTT',
      type        => 'SQL ACCESS',
      email       => 'scott@example.com',
      attributes  => '{
             "duration_min"   : 720,
             "read_only"      : true,
             "roles"          : ["DEVELOPER_ROLE", "INFRA_ROLE"],
             "scope"          : "SESSION",
             "slack_member_id": "<slack_user_id>"
      }'
   );
END;
/

Observações de Uso

  • Para registrar um usuário, você deve estar conectado como o usuário ADMIN ou ter privilégios no pacote DBMS_MFA_ADMIN.

  • Você pode registrar usuários do banco de dados para MFA usando diferentes provedores, dependendo do tipo de MFA: Duo e OMA são suportados para MFA de login, enquanto Slack, OMA e e-mail são suportados para MFA de Token de Acesso SQL.

  • Você pode registrar o mesmo usuário para os dois tipos de MFA (Logon de MFA e Acesso SQL) registrando-os separadamente para cada um. Você pode usar o mesmo ou diferente endereço de email para cada registro; uma vez configurado, o usuário recebe uma notificação push para o endereço de email registrado no logon, e outra notificação, para o mesmo endereço, se usado, quando o usuário executa INITIALIZE_SESSION para o SQL Access.

SET_GLOBAL_TOKEN_ATTRIBUTES Procedimento

O procedimento DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES define ou atualiza atributos MFA do Token de Acesso SQL globalmente para todos os usuários registrados.

Sintaxe

DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES(       
    attributes IN VARCHAR2
);

Parâmetros

Parâmetro Descrição

attributes

Especifica atributos de token no formato JSON para gerar um Token de Acesso. Os valores válidos são:

  • duration_min: Especifica a duração, em minutos, para a qual o token é válido.

    O valor padrão é 1440 min (1 dia).

  • idle_timeout_min: Especifica o tempo máximo de inatividade permitido, em minutos, para uma sessão antes de o Token de Acesso SQL expirar para essa sessão.

    O valor-padrão é NULL.

  • read_only: Especifica se o usuário registrado tem acesso de consulta SQL somente para leitura ao banco de dados. O valor padrão é FALSE. Este atributo só se aplica quando o escopo é definido como SESSION.

  • roles: Especifica um Array JSON de atribuições de banco de dados que devem ser designadas ao Token de Acesso SQL gerado para o usuário.

    Por exemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    O valor-padrão é NULL.

  • scope: Especifica o escopo no qual o Token de Acesso SQL é válido.

    Os valores válidos são:

    • session: O token validado concede o acesso SQL apenas à sessão do banco de dados atual pela duração especificada no atributo duration_min.

    • user: O token validado concede acesso SQL às sessões de banco de dados atuais e subsequentes pela duração especificada no atributo duration_min.

    O valor padrão é session.

  • enable_authenticator: Especifica se o aplicativo autenticador está configurado para o usuário e é usado para o Token de Acesso SQL.

    O valor padrão é FALSE.

Observação do Uso

  • Para definir os atributos de token, você deve estar conectado como o usuário ADMIN ou ter privilégios no pacote DBMS_MFA_ADMIN.

SET_ATTRIBUTE Procedimento

O DBMS_MFA_ADMIN.SET_ATTRIBUTE define ou atualiza um único atributo de MFA para um usuário registrado e substitui qualquer padrão global aplicável a esse atributo.

Observação

Para MFA de tempo de log-in, auth_method é o único atributo suportado.

Sintaxe

DBMS_MFA_ADMIN.SET_ATTRIBUTE(            
  username         IN VARCHAR2,
  type             IN VARCHAR2,
  email            IN VARCHAR2 DEFAULT NULL,
  attribute_name   IN VARCHAR2,
  attribute_value  IN CLOB
);

Parâmetros

Parâmetro Descrição

username

Especifica o usuário do banco de dados cujo atributo de MFA deve ser atualizado.

type

Especifica o atributo MFA que controla quando a MFA é imposta para o usuário.

Os valores válidos são:
  • LOGON: A MFA é obrigatória quando você faz log-in em um aplicativo Oracle.

  • SQL ACCESS: A MFA é necessária para executar qualquer operação SQL ou DML no banco de dados.

email

Especifica o endereço de e-mail a ser associado ao usuário para MFA.

Esse parâmetro é opcional e tem como padrão NULL.

attribute_name

Especifica o nome do atributo de MFA a ser atualizado. Os valores válidos são:
  • auth_method: Especifica o método de MFA usado para autenticação do usuário do banco de dados. Os valores inválidos para este parâmetro são:
    • OMA_PUSH: Há suporte para MFA de Log-on e Acesso SQL.

    • DUO_PUSH: Somente a MFA de Log-on é suportada.

    • EMAIL: Somente a MFA de acesso SQL é suportada.

    • SLACK: Somente a MFA de acesso SQL é suportada.

  • duration_min: Especifica a duração, em minutos, para a qual o token é válido. O valor padrão é 1440 minutos (1 dia).

  • idle_timeout_min: Especifica o tempo máximo de inatividade permitido, em minutos, para uma sessão antes de o Token de Acesso SQL expirar para essa sessão.

    O valor-padrão é NULL.

  • read_only: Especifica se o usuário registrado tem acesso de consulta SQL somente para leitura ao banco de dados.

    O valor padrão é FALSE.

    Este atributo só se aplica quando o escopo é definido como SESSION.

  • roles: Especifica um Array JSON de atribuições de banco de dados que devem ser designadas ao Token de Acesso SQL gerado para o usuário.

    Por exemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    O valor-padrão é NULL.

  • scope: Especifica o escopo no qual o Token de Acesso SQL é válido.

    Os valores válidos são:
    • session:

      O token validado concede o acesso SQL apenas à sessão do banco de dados atual pela duração especificada no atributo duration_min.

    • user:

      O token validado concede acesso SQL às sessões de banco de dados atuais e subsequentes pela duração especificada no atributo duration_min.

    O valor padrão para este atributo é session.

  • enable_authenticator: Especifica se o aplicativo autenticador está configurado para o usuário e é usado para o Token de Acesso SQL.

    O valor padrão para esse atributo é FALSE.

  • slack_member_id: Especifica o id do Slack no qual entregar o Token de Acesso SQL por meio de uma mensagem do Slack.

attribute_value

Novo valor para o atributo especificado.

Exemplo

Exemplo para atualizar a definição de MFA para o usuário SCOTT:
BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTE(    
    username         => 'scott',
    type             => 'sql access',
    email            => 'testscott@example.com',
    attribute_name   => 'duration_min',
    attribute_value  => '20');
END;
/

Observações de Uso

  • O parâmetro username deve especificar um usuário de banco de dados existente registrado para MFA.

  • Você deve estar conectado como usuário ADMIN ou ter privilégios no pacote DBMS_MFA_ADMIN para executar este procedimento.

SET_ATTRIBUTES Procedimento

O procedimento DBMS_MFA_ADMIN.SET_ATTRIBUTES define ou atualiza um ou mais atributos MFA para um usuário registrado e substitui quaisquer padrões globais aplicáveis a esses atributos.

Observação

Para MFA de tempo de log-in, auth_method é o único atributo suportado.

Sintaxe

DBMS_MFA_ADMIN.SET_ATTRIBUTES (          
   username    IN VARCHAR2,
   type        IN VARCHAR2,
   attributes  IN CLOB
);

Parâmetros

Parâmetro Descrição

username

Especifica o nome de usuário cujos atributos de MFA devem ser atualizados.

type

Especifica o atributo MFA que controla quando a MFA é imposta para o usuário.

Os valores válidos são:
  • LOGON: A MFA é necessária quando você faz log-in no banco de dados.

  • SQL ACCESS: A MFA é necessária para executar qualquer operação SQL ou DML no banco de dados.

attributes
Especifica atributos MFA no formato JSON. Os valores válidos são:
  • auth_method: Especifica o método de MFA usado para autenticação do usuário do banco de dados. Os valores inválidos para este parâmetro são:
    • OMA_PUSH: Há suporte para MFA de Log-on e Acesso SQL.

    • DUO_PUSH: Somente a MFA de Log-on é suportada.

    • EMAIL: Somente a MFA de acesso SQL é suportada.

    • SLACK: Somente a MFA de acesso SQL é suportada.

  • duration_min: Especifica a duração, em minutos, para a qual o token é válido. O valor padrão é 1440 minutos (1 dia).

  • idle_timeout_min: Especifica o tempo máximo de inatividade permitido, em minutos, para uma sessão antes de o Token de Acesso SQL expirar para essa sessão.

    O valor-padrão é NULL.

  • read_only: Especifica se o usuário registrado tem acesso de consulta SQL somente para leitura ao banco de dados.

    O valor padrão é FALSE.

    Este atributo só se aplica quando o escopo é definido como SESSION.

  • roles: Especifica um Array JSON de atribuições de banco de dados que devem ser designadas ao Token de Acesso SQL gerado para o usuário.

    Por exemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    O valor-padrão é NULL.

  • scope: Especifica o escopo no qual o Token de Acesso SQL é válido.

    Os valores válidos são:
    • session:

      O token validado concede o acesso SQL apenas à sessão do banco de dados atual pela duração especificada no atributo duration_min.

    • user:

      O token validado concede acesso SQL às sessões de banco de dados atuais e subsequentes pela duração especificada no atributo duration_min.

    O valor padrão para este atributo é session.

  • enable_authenticator: Especifica se o aplicativo autenticador está configurado para o usuário e é usado para o Token de Acesso SQL.

    O valor padrão para esse atributo é FALSE.

  • slack_member_id: Especifica o id do Slack no qual entregar o Token de Acesso SQL por meio de uma mensagem do Slack.

Exemplo

Exemplo para atualizar a definição de MFA para o usuário SCOTT:
BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTES(
    username   => 'SCOTT',
    type       => 'SQL ACCESS',
    attributes => json_object(
                    'duration_min'        VALUE 15,
                    'email'               VALUE 'testscott@example.com',
                    'scope'               VALUE 'session',
                    'idle_timeout_min'    VALUE 10)
  );
END;
/

Observações de Uso

  • O parâmetro USERNAME deve especificar um usuário de banco de dados existente registrado para MFA.

  • Você deve estar conectado como usuário ADMIN ou ter privilégios no pacote DBMS_MFA_ADMIN para executar este procedimento.

CONFIGURE_NOTIFICATION Procedimento

O procedimento DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION configura os canais por meio dos quais os tokens de MFA são enviados aos usuários registrados. Isso inclui definir o método de entrega e as propriedades específicas do canal necessárias para a distribuição de token.

Sintaxe

DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION (        
    notification_type  IN VARCHAR2,
    attributes         IN CLOB
);

Parâmetros

Parâmetro Descrição

notification_type

Especifica o tipo de canal de notificação a ser configurado. Os valores válidos são: EMAIL, SLACK, OMA, DUO.

attributes

Fornece os detalhes de configuração do canal de notificação especificado no formato JSON.

A seguir estão os tipos de atributo válidos para cada um destes canais de notificação:

EMAIL: Obrigatório para configuração de log-on de MFA; OTP via e-mail suportado somente para MFA de Token de Acesso SQL
  • credential_name: O nome do objeto de credencial de e-mail criado no banco de dados.

  • sender: O endereço de e-mail do host aprovado que aparecerá como o remetente das mensagens MFA. Este endereço deve ser permitido pelo seu servidor SMTP.

  • smtp_host: O nome de domínio ou endereço IP totalmente qualificado do servidor SMTP que enviará e-mails de notificação de MFA.

  • smtp_port: O número da porta usado para estabelecer conexão com o servidor SMTP, geralmente 587 para TLS ou 465 para SSL. Esse parâmetro é opcional e tem como padrão 587.

  • sender_email_display_name: O nome para exibição que aparecerá como o remetente. Esse parâmetro é opcional e tem como padrão NULL.

SLACK: Suportado somente para MFA de Token de Acesso SQL
  • credential_name: O nome da credencial que contém informações de autenticação para enviar tokens como notificações do Slack.

OMA: Suportado para MFA de Log-on e Token de Acesso SQL
  • credential_name: O nome do objeto de credencial que contém informações de autenticação usadas para enviar notificações MFA com segurança por meio do OMA.

  • api_endpoint: O URL do domínio do Oracle Identity and Access Management (IAM) associado a essa credencial. Esse ponto final identifica a instância do IAM usada para inscrever usuários no domínio do OCI IAM, gerenciar o fator MFA e processar solicitações de autenticação OMA, incluindo o envio de notificações MFA aos usuários.

DUO: Somente suportado para MFA de Log-on:
  • credential_name: O nome do objeto de credencial que contém informações de autenticação usadas para enviar notificações MFA com segurança por meio do OMA.

  • api_endpoint: O nome do host da API fornecido pelo Duo Security para sua integração, por exemplo, API-xxxxxxxx.duosecurity.com..

Exemplos

Exemplo: Configurar canal de notificação EMAIL

BEGIN
    DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION (
    notification_type => 'EMAIL',
    attributes        => JSON_OBJECT(
                          'credential_name'           VALUE 'EMAIL_CRED',
                          'smtp_host'                 VALUE 'smtp.email.us-phoenix-1.oci.oraclecloud.com',
                          'sender'                    VALUE 'send.email@test.com',
                          'smtp_port'                 VALUE 587,
                          'sender_email_display_name' VALUE 'DB SECURITY')
  );
END;
/

Exemplo: Configurar canal de notificação do Slack

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
        notification_type => 'SLACK',
        attributes             => JSON_OBJECT('credential_name' VALUE 'SLACK_CRED')
  );
END;
/

Exemplo: Configurar canal de notificação do OMA

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'OMA',
    attributes        => JSON_OBJECT(
                                     'credential_name' VALUE 'OMA_CRED_01',
                                     'api_endpoint'    VALUE 'https://idcs-xyz.identity.oraclecloud.com'
    )
  );
END;
/

Exemplo: Configurar canal de notificação DUO

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'OMA',
    attributes        => JSON_OBJECT(
                                      'credential_name' VALUE 'OMA_CRED_01',
                                      'api_endpoint'    VALUE 'https://idcs-xyz.identity.oraclecloud.com'
    )
  );
END;
/

Observações de Uso

  • Para executar este procedimento, você deve estar conectado como o usuário ADMIN ou ter privilégios no pacote DBMS_MFA_ADMIN.

  • Para notificações do Slack, defina a credencial necessária e confirme se a integração do Slack está ativada no seu ambiente. As notificações do Slack só são suportadas para operações MFA de acesso SQL.

    • Para definir os atributos de token, você deve estar conectado como o usuário ADMIN ou ter privilégios no pacote DBMS_MFA_ADMIN.

    • Para Tokens Baseados em Aplicativo Autenticador:

      • Instale um app autenticador suportado no dispositivo móvel que você pretende registrar para a MFA.

      • Configure a MFA usando um dispositivo que você possa acessar toda vez que acessar. A MFA não pode ser ativada em seu nome por outro usuário.

      • Para ativar a MFA, use o aplicativo autenticador no seu dispositivo móvel para digitalizar o código QR gerado na IU do Database Actions. Consulte Configurando o Oracle Mobile Authenticator para obter mais informações.

        Você só pode registrar um dispositivo móvel para MFA.

    • Para a entrega de Token baseada em E-mail, certifique-se de que a entrega de e-mail esteja ativada e que os endereços de e-mail válidos estejam configurados para usuários do banco de dados. Consulte Enviar E-mail no Autonomous AI Database para obter mais informações.
    • Para entrega de Token baseado no Slack, configure o plug-in do Slack e registre o ID do Slack do usuário para entrega de OTP. Consulte Enviar Notificações do Slack do Autonomous AI Database para obter mais informações.

DEREGISTER_USER Procedimento

O procedimento DBMS_MFA_ADMIN.DEREGISTER_USER remove um usuário do banco de dados que está registrado no momento para MFA. Depois que o usuário é removido, a MFA não é mais imposta para essa conta, e o usuário pode se autenticar sem um segundo fator.

Sintaxe

PROCEDURE DBMS_MFA_ADMIN.DEREGISTER_USER (
  username IN VARCHAR2,
  type     IN VARCHAR2,
  email    IN VARCHAR2 DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

username

Especifica o nome de usuário para o qual a Autenticação Multifator precisa ser removida.

type

Especifica o atributo MFA que controla quando a MFA é imposta para o usuário. Os valores válidos são:

  • LOGON: A MFA é necessária quando você faz log-in no banco de dados.
  • SQL ACCESS: A MFA é necessária para executar qualquer operação SQL ou DML no banco de dados.
email

Especifica o endereço de e-mail associado ao usuário para MFA.

Esse parâmetro é opcional e tem como padrão NULL.

Exemplos

BEGIN
  DBMS_MFA_ADMIN.DEREGISTER_USER(
    username => 'SCOTT',
    type     => 'SQL ACCESS',
    email    => 'scott@example.com'
  );
END;
/

Este exemplo cancela o registro do usuário SCOTT da MFA para a type (SQL ACCESS) especificada e remove a identidade de e-mail associada (scott@example.com) da configuração da MFA.

Observação do Uso

  • Para executar este procedimento, você deve estar conectado como o usuário ADMIN ou ter privilégios no pacote DBMS_MFA_ADMIN.

  • Se um usuário estiver registrado com vários endereços de e-mail, cancele o registro de cada endereço de e-mail individualmente.