DBMS_MFA_ADMINパッケージ

DBMS_MFA_ADMINパッケージは、SQLトークン・アクセスを容易にして構成します。

DBMS_MFA_ADMINサブプログラムの要約

DBMS_MFA_ADMINパッケージに含まれるサブプログラムを要約します。

REGISTER_USERプロシージャ

DBMS_MFA_ADMIN.REGISTER_USERプロシージャは、ユーザーを電子メール・アドレスに外部IDとして関連付けて、既存のデータベース・ユーザーをMFAに登録します。MFAは、ログオン認証またはSQLアクセス(あるいはその両方)に対して有効にできます。セキュアなアクセス・トークンを提供するための電子メール、Slackおよびオーセンティケータ・アプリケーションをサポートしています。

構文

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

パラメータ

パラメータ 摘要

username

マルチファクタ認証を適用する必要があるユーザー名を指定します。

type

ユーザーにMFAを適用するタイミングを制御するMFA属性を指定します。

typeには、次の値を指定できます。
  • LOGON: データベースにログオンする場合はMFAが必要です。

  • SQL ACCESS: データベースでSQLまたはDML操作を実行するには、MFAが必要です。

email

MFAのユーザーに関連付ける電子メール・アドレスを指定します。

attributes

JSON形式でMFA属性を指定します。

attributesを使用して、トークンを生成するための次の属性を指定します。

  • auth_method: データベース・ユーザー認証に使用されるMFAメソッドを指定します。このパラメータの有効値は次のとおりです。
    • OMA_PUSH: ログオンとSQLアクセスの両方のMFAがサポートされています。

    • DUO_PUSH: ログオンMFAのみがサポートされています。

    • EMAIL: SQLアクセスMFAのみがサポートされています。

    • SLACK: SQLアクセスMFAのみがサポートされています。

    ノート

    type =>'LOGON', auth_methodでは、唯一サポートされている属性です。
  • duration_min: トークンが有効である正の整数期間を分単位で指定します。

    この属性のデフォルト値は、1440分(1日)です。

  • idle_timeout_min: SQLアクセス・トークンがそのセッションで失効するまでのセッションの最大許容アイドル時間を分単位で指定します。

    デフォルト値はNULLです。

  • read_only: 登録済ユーザーにデータベースへの読取り専用SQL問合せアクセス権があるかどうかを指定します。

    デフォルト値はFALSEです。

    この属性は、スコープがSESSIONに設定されている場合にのみ適用されます。

  • roles: ユーザーに対して生成されたSQLアクセス・トークンに割り当てる必要があるデータベース・ロールのJSON配列を指定します。

    たとえば、"roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE')です。

    この属性のデフォルト値はNULLです。

  • scope: SQLアクセス・トークンが有効なスコープを指定します。

    scopeには、次の値を指定できます。
    • session:

      検証されたトークンは、duration_min属性で指定された期間、現在のデータベース・セッションにのみSQLアクセス権を付与します。

    • user:

      検証済トークンは、duration_min属性で指定された期間、現行および後続のデータベース・セッションへのSQLアクセス権を付与します。

    この属性のデフォルト値はsessionです。

  • enable_authenticator: オーセンティケータ・アプリケーションがユーザーに対して構成され、SQLアクセス・トークンに使用されることを指定します。

    この属性のデフォルト値はFALSEです。

  • slack_member_id: Slackメッセージを介してSQLアクセス・トークンを配信するSlack IDを指定します。

MFAログオン用にユーザーを登録する例:

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

MFA属性を設定して、SQLアクセス用のユーザーを登録する例。

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;
/

使用上のノート

  • ユーザーを登録するには、ADMINユーザーとしてログインするか、DBMS_MFA_ADMINパッケージに対する権限を持っている必要があります。

  • MFAタイプに応じて、異なるプロバイダを使用してMFAのデータベース・ユーザーを登録できます。DuoおよびOMAはログイン時のMFAでサポートされ、Slack、OMAおよび電子メールはSQLアクセス・トークンのMFAでサポートされます。

  • それぞれに個別に登録することで、両方のMFAタイプ(MFAログオンおよびSQLアクセス)に同じユーザーを登録できます。登録ごとに同じまたは異なる電子メール・アドレスを使用できます。構成すると、ユーザーは、ログイン時に登録済電子メール・アドレスへのプッシュ通知を受信し、使用する場合は、ユーザーがSQLアクセスに対してINITIALIZE_SESSIONを実行したときに同じアドレスへの別の通知を受信します。

SET_GLOBAL_TOKEN_ATTRIBUTESプロシージャ

DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTESプロシージャは、すべての登録済ユーザーのSQLアクセス・トークンMFA属性をグローバルに設定または更新します。

構文

DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES(       
    attributes IN VARCHAR2
);

パラメータ

パラメータ 摘要

attributes

アクセス・トークンを生成するためのトークン属性をJSON形式で指定します。有効な値は次のとおりです。

  • duration_min: トークンが有効な期間(分)を指定します。

    デフォルト値は1440分(1日)です。

  • idle_timeout_min: SQLアクセス・トークンがそのセッションで失効するまでのセッションの最大許容アイドル時間を分単位で指定します。

    デフォルト値はNULLです。

  • read_only: 登録済ユーザーにデータベースへの読取り専用SQL問合せアクセス権があるかどうかを指定します。デフォルト値はFALSEです。この属性は、スコープがSESSIONに設定されている場合にのみ適用されます。

  • roles: ユーザーに対して生成されたSQLアクセス・トークンに割り当てる必要があるデータベース・ロールのJSON配列を指定します。

    たとえば、"roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE')です。

    デフォルト値はNULLです。

  • scope: SQLアクセス・トークンが有効なスコープを指定します。

    有効な値は次のとおりです。

    • session: 検証されたトークンは、duration_min属性で指定された期間、現在のデータベース・セッションにのみSQLアクセス権を付与します。

    • user: 検証されたトークンは、duration_min属性で指定された期間、現行および後続のデータベース・セッションへのSQLアクセス権を付与します。

    デフォルト値はsessionです。

  • enable_authenticator: オーセンティケータ・アプリケーションがユーザーに対して構成され、SQLアクセス・トークンに使用されることを指定します。

    デフォルト値はFALSEです。

使用上のノート

  • トークン属性を設定するには、ADMINユーザーとしてログインするか、DBMS_MFA_ADMINパッケージに対する権限を持っている必要があります。

SET_ATTRIBUTEプロシージャ

DBMS_MFA_ADMIN.SET_ATTRIBUTEは、登録済ユーザーの単一のMFA属性を設定または更新し、その属性に適用可能なグローバル・デフォルトをオーバーライドします。

ノート

ログイン時のMFAでは、auth_methodのみがサポートされている属性です。

構文

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

パラメータ

パラメータ 摘要

username

MFA属性を更新するデータベース・ユーザーを指定します。

type

ユーザーにMFAを適用するタイミングを制御するMFA属性を指定します。

有効な値は次のとおりです。
  • LOGON: MFAは、Oracleアプリケーションにログインするときに必要です。

  • SQL ACCESS: データベースでSQLまたはDML操作を実行するには、MFAが必要です。

email

MFAのユーザーに関連付ける電子メール・アドレスを指定します。

このパラメータはオプションで、デフォルトはNULL.です。

attribute_name

更新するMFA属性の名前を指定します。有効な値は次のとおりです。
  • auth_method: データベース・ユーザー認証に使用されるMFAメソッドを指定します。このパラメータの有効値は次のとおりです。
    • OMA_PUSH: ログオンとSQLアクセスの両方のMFAがサポートされています。

    • DUO_PUSH: ログオンMFAのみがサポートされています。

    • EMAIL: SQLアクセスMFAのみがサポートされています。

    • SLACK: SQLアクセスMFAのみがサポートされています。

  • duration_min: トークンが有効な期間(分)を指定します。デフォルト値は1440分(1日)です。

  • idle_timeout_min: SQLアクセス・トークンがそのセッションで失効するまでのセッションの最大許容アイドル時間を分単位で指定します。

    デフォルト値はNULLです。

  • read_only: 登録済ユーザーにデータベースへの読取り専用SQL問合せアクセス権があるかどうかを指定します。

    デフォルト値はFALSEです。

    この属性は、スコープがSESSIONに設定されている場合にのみ適用されます。

  • roles: ユーザーに対して生成されたSQLアクセス・トークンに割り当てる必要があるデータベース・ロールのJSON配列を指定します。

    たとえば、"roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE')です。

    デフォルト値はNULLです。

  • scope: SQLアクセス・トークンが有効なスコープを指定します。

    有効な値は次のとおりです。
    • session:

      検証されたトークンは、duration_min属性で指定された期間、現在のデータベース・セッションにのみSQLアクセス権を付与します。

    • user:

      検証済トークンは、duration_min属性で指定された期間、現行および後続のデータベース・セッションへのSQLアクセス権を付与します。

    この属性のデフォルト値はsessionです。

  • enable_authenticator: オーセンティケータ・アプリケーションがユーザーに対して構成され、SQLアクセス・トークンに使用されることを指定します。

    この属性のデフォルト値はFALSEです。

  • slack_member_id: Slackメッセージを介してSQLアクセス・トークンを配信するSlack IDを指定します。

attribute_value

指定された属性の新しい値。

ユーザーSCOTTのMFA設定を更新する例:
BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTE(    
    username         => 'scott',
    type             => 'sql access',
    email            => 'testscott@example.com',
    attribute_name   => 'duration_min',
    attribute_value  => '20');
END;
/

使用上のノート

  • usernameパラメータには、MFAに登録されている既存のデータベース・ユーザーを指定する必要があります。

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_MFA_ADMINパッケージに対する権限を持っている必要があります。

SET_ATTRIBUTESプロシージャ

DBMS_MFA_ADMIN.SET_ATTRIBUTESプロシージャは、登録済ユーザーの1つ以上のMFA属性を設定または更新し、それらの属性に適用可能なグローバル・デフォルトをオーバーライドします。

ノート

ログイン時のMFAでは、auth_methodのみがサポートされている属性です。

構文

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

パラメータ

パラメータ 摘要

username

MFA属性を更新するユーザー名を指定します。

type

ユーザーにMFAを適用するタイミングを制御するMFA属性を指定します。

有効な値は次のとおりです。
  • LOGON: MFAは、データベースにログインするときに必要です。

  • SQL ACCESS: データベースでSQLまたはDML操作を実行するには、MFAが必要です。

attributes
JSON形式でMFA属性を指定します。有効な値は次のとおりです。
  • auth_method: データベース・ユーザー認証に使用されるMFAメソッドを指定します。このパラメータの有効値は次のとおりです。
    • OMA_PUSH: ログオンとSQLアクセスの両方のMFAがサポートされています。

    • DUO_PUSH: ログオンMFAのみがサポートされています。

    • EMAIL: SQLアクセスMFAのみがサポートされています。

    • SLACK: SQLアクセスMFAのみがサポートされています。

  • duration_min: トークンが有効な期間(分)を指定します。デフォルト値は1440分(1日)です。

  • idle_timeout_min: SQLアクセス・トークンがそのセッションで失効するまでのセッションの最大許容アイドル時間を分単位で指定します。

    デフォルト値はNULLです。

  • read_only: 登録済ユーザーにデータベースへの読取り専用SQL問合せアクセス権があるかどうかを指定します。

    デフォルト値はFALSEです。

    この属性は、スコープがSESSIONに設定されている場合にのみ適用されます。

  • roles: ユーザーに対して生成されたSQLアクセス・トークンに割り当てる必要があるデータベース・ロールのJSON配列を指定します。

    たとえば、"roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE')です。

    デフォルト値はNULLです。

  • scope: SQLアクセス・トークンが有効なスコープを指定します。

    有効な値は次のとおりです。
    • session:

      検証されたトークンは、duration_min属性で指定された期間、現在のデータベース・セッションにのみSQLアクセス権を付与します。

    • user:

      検証済トークンは、duration_min属性で指定された期間、現行および後続のデータベース・セッションへのSQLアクセス権を付与します。

    この属性のデフォルト値はsessionです。

  • enable_authenticator: オーセンティケータ・アプリケーションがユーザーに対して構成され、SQLアクセス・トークンに使用されることを指定します。

    この属性のデフォルト値はFALSEです。

  • slack_member_id: Slackメッセージを介してSQLアクセス・トークンを配信するSlack IDを指定します。

ユーザーSCOTTのMFA設定を更新する例:
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;
/

使用上のノート

  • USERNAMEパラメータには、MFAに登録されている既存のデータベース・ユーザーを指定する必要があります。

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_MFA_ADMINパッケージに対する権限を持っている必要があります。

CONFIGURE_NOTIFICATIONプロシージャ

DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATIONプロシージャは、MFAトークンが登録済ユーザーに送信されるチャネルを構成します。これには、配信方法およびトークン配布に必要なチャネル固有のプロパティの定義が含まれます。

構文

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

パラメータ

パラメータ 摘要

notification_type

構成する通知チャネルのタイプを指定します。有効な値は、EMAILSLACKOMADUOです。

attributes

指定された通知チャネルの構成詳細をJSON形式で提供します。

これらの各通知チャネルの有効な属性タイプは次のとおりです。

電子メール: MFAログオン設定に必要です。電子メールによるOTPはSQLアクセス・トークンMFAでのみサポートされています
  • credential_name: データベースに作成された電子メール資格証明オブジェクトの名前。

  • sender: MFAメッセージの送信者として表示される承認済ホストの電子メール・アドレス。このアドレスはSMTPサーバーで許可されている必要があります。

  • smtp_host: MFA通知電子メールを送信するSMTPサーバーの完全修飾ドメイン名またはIPアドレス。

  • smtp_port: SMTPサーバーへの接続に使用されるポート番号(通常はTLSの場合は587、SSLの場合は465)。このパラメータはオプションで、デフォルトは587です。

  • sender_email_display_name: 送信者として表示される表示名。このパラメータはオプションで、デフォルトはNULLです。

SLACK: SQL Acccess Token MFAでのみサポートされています
  • credential_name: トークンをSlack通知として送信するための認証情報を含む資格証明の名前。

OMA: ログオンとSQL Acccess Token MFAの両方でサポートされています
  • credential_name: OMAを介してMFA通知を安全に送信するために使用される認証情報を含む資格証明オブジェクトの名前。

  • api_endpoint: この資格証明に関連付けられているOracle Identity and Access Management (IAM)ドメインのURL。このエンドポイントは、OCI IAMドメインへのユーザーの登録、MFAファクタの管理、およびユーザーへのMFA通知の送信など、OMA認証リクエストの処理に使用されるIAMインスタンスを識別します。

DUO: ログオンMFAでのみサポートされています:
  • credential_name: OMAを介してMFA通知を安全に送信するために使用される認証情報を含む資格証明オブジェクトの名前。

  • api_endpoint: 統合用にDuoセキュリティによって提供されるAPIホスト名(API-xxxxxxxx.duosecurity.comなど)。

例: 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;
/

例: Slack通知チャネルの構成

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

例: 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;
/

例: 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;
/

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインしているか、DBMS_MFA_ADMINパッケージに対する権限を持っている必要があります。

  • Slack通知の場合は、必要な資格証明を設定し、ご使用の環境でSlack統合が有効になっていることを確認します。Slack通知は、SQLアクセスMFA操作でのみサポートされます。

    • トークン属性を設定するには、ADMINユーザーとしてログインするか、DBMS_MFA_ADMINパッケージに対する権限を持っている必要があります。

    • オーセンティケータ・アプリケーション・ベースのトークンの場合:

      • MFAに登録するモバイル・デバイスに、サポートされているオーセンティケータ・アプリケーションをインストールします。

      • MFAは、サインインするたびにアクセスできるデバイスを使用して設定する必要があります。別のユーザーがかわりにMFAを有効にすることはできません。

      • MFAを有効にするには、モバイル・デバイスでオーセンティケータ・アプリケーションを使用して、データベース・アクションUIで生成されたQRコードをスキャンします。詳細は、「Oracle Mobile Authenticatorの構成」を参照してください。

        MFAに登録できるモバイル・デバイスは1つのみです。

    • Eメール・ベースのトークン配信の場合、Eメール配信が有効であり、データベース・ユーザーに対して有効なEメール・アドレスが構成されていることを確認します。詳細は、Autonomous AI Databaseでの電子メールの送信を参照してください。
    • Slackベースのトークン配信の場合は、Slackプラグインを構成し、ユーザーのSlack IDをOTP配信用に登録します。詳細は、Autonomous AI DatabaseからのSlack通知の送信を参照してください。

DEREGISTER_USERプロシージャ

DBMS_MFA_ADMIN.DEREGISTER_USERプロシージャは、MFAに現在登録されているデータベース・ユーザーを削除します。ユーザーが削除されると、そのアカウントに対してMFAは強制されなくなり、ユーザーは2番目の要素なしで認証できます。

構文

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

パラメータ

パラメータ 摘要

username

マルチファクタ認証を削除する必要があるユーザー名を指定します。

type

ユーザーにMFAを適用するタイミングを制御するMFA属性を指定します。有効な値は次のとおりです。

  • LOGON: MFAは、データベースにログインするときに必要です。
  • SQL ACCESS: データベースでSQLまたはDML操作を実行するには、MFAが必要です。
email

MFAのユーザーに関連付けられた電子メール・アドレスを指定します。

このパラメータはオプションで、デフォルトはNULLです。

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

この例では、指定されたtype (SQL ACCESS)のユーザーSCOTTをMFAから登録解除し、関連付けられた電子メール・アイデンティティ(scott@example.com)をMFA構成から削除します。

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインしているか、DBMS_MFA_ADMINパッケージに対する権限を持っている必要があります。

  • ユーザーが複数のEメール・アドレスに登録されている場合は、各Eメール・アドレスを個別に登録解除します。