2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Oracle Cloud][Autonomous AI Database] Login-Time MFA を試してみた。(2026/03/06)

2
Last updated at Posted at 2026-03-06

はじめに

Autonomous AI Databaseで、マルチファクタ認証(MFA)がサポートされ、ユーザー・パスワードに加えて追加の検証ファクタを必要とすることで、データベース・アクセスのセキュリティを強化できます。MFAは、データベース・ログイン、保護されたSQL文の実行、またはその両方に対して構成できます。
この記事では、データベース・ログイン時にマルチファクタ認証(Login-Time MFA)を追加してみました。

パスワード(第1要素)によるログイン後、登録済みのモバイルアプリにプッシュ通知が届き、ユーザーが承認することで初めてセッションが確立します。パスワードが漏洩しても、スマートフォンの承認なしにはログインできません。

Login-Time MFAに対応している認証チャネルは以下の2つです。

認証チャネル 概要
Oracle Mobile Authenticator (OMA) Oracle が提供するモバイル認証アプリ
Cisco Duo Cisco が提供するエンタープライズ向け MFA サービス

今回は OMA を使った Login-Time MFA を試しました。

設定完了後のログインフローは以下のとおりです。

① 通常のパスワードで DB に接続を試みる
② 登録済みモバイルデバイス(OMA アプリ)にプッシュ通知が届く
③ アプリで承認操作を行う
④ ログイン完了・セッション確立

ログイン時の認証のみ MFA を使用し、SQL 実行前の追加操作は不要な構成です。

事前準備

  • Oracle Autonomous AI Database(Serverless)がプロビジョニング済みであること
    • 2026年3月時点では、 Oracle database release 19cのみ対応しております。
  • データベースに ADMIN ユーザーでの接続が可能であること
  • Identity Domainsの ドメインの操作が可能であること
    • OMA の API エンドポイント(Identity Domains URL)と認証情報が必要
  • スマートフォン(iOS / Android)に Oracle Mobile Authenticator アプリがインストール済みであること
    • App Store / Google Play から無料でインストール可能

手順

Step 1:OMA 通知チャネルの設定

1-1. OCI IAM Identity Domains で OAuth アプリを登録し Client ID / Secret を取得

DBMS_CLOUD.CREATE_CREDENTIAL に設定する usernamepassword は、OCI IAM Identity Domains で作成した OAuth クライアントアプリの Client ID / Secret です。

以下の手順で取得します。

  1. OCI コンソール → 「Identity & Security」→「Identity」→「Domains」

  2. 対象の Identity Domain を選択し、ドメインURL をメモ(これが後述の api_endpoint になる)image.png

  3. 「統合アプリケーション」→「アプリケーションの追加」image.png

  4. 「機密アプリケーション」 を選択 → 「ワークフローの起動」image.png

    • Name(必須)と Description を入力して 「Submit」 をクリックimage.png
  5. 作成されたアプリを開き → 「OAuth構成」タブ → 「OAuth構成の編集」をクリックimage.png

  6. クライアント構成 セクションで以下を設定:

    • 「このアプリケーションをクライアントとして今すぐ構成します」にチェック
    • 認可される権限付与タイプ → 「クライアント資格証明」 のみ選択image.png
  7. 同じ編集画面をスクロールして下部の「アプリケーション・ロール」セクションへ移動

    • 「アプリケーション・ロールの追加」トグルを 有効化 する(初期状態は無効)

    • 「アプリケーション・ロールの追加」をクリックし、以下の3ロールを追加:image.png

      • User Administrator
      • Identity Domain Administration
      • MFA Clientimage.png
  8. 「送信」 をクリックして OAuth 構成全体を保存image.png

    • 保存後、「OAuth構成」タブの クライアント構成 セクション に クライアントID と クライアント・シークレットが表示されます。

注意: クライアント・シークレットは、この画面でのみ表示され、以後は確認できません。このタイミングでコピーして安全な場所に保存してください。
image.png

9 . 「アクション」→「アクティブ化」 でアプリを有効化
image.png
image.png

1-2. OMA 認証情報を Credential として登録

Autonomous Databaseに ADMINユーザで接続し、各SQLを実行します。

発行される値 DB 設定での対応
クライアント ID username => '<client_id>'
クライアント・シークレット password => '<client_secret>'
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OMA_CRED',
    username        => 'ef0d38a9ffdb46c09fd3a88b7b21fb02',        -- Client ID
    password        => '<Client Secret>'                         -- Client Secret
  );
END;
/

1-3. OMA 通知チャネルの設定

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'OMA',
    attributes        => JSON_OBJECT(
      'credential_name' VALUE 'OMA_CRED',
      'api_endpoint'    VALUE 'https://idcs-xxxxxxxxxx.identity.oraclecloud.com'  -- Step 1-1 でメモした ドメインURL
    )
  );
END;
/

Step 2:MFA 対象ユーザーの作成

検証用のユーザーを作成し、必要な権限を付与します。

-- テストユーザー作成
CREATE USER login_mfa_test IDENTIFIED BY "<パスワード>";
GRANT CREATE SESSION TO login_mfa_test;

Step 3:ユーザーを Login-Time MFA に登録

ADMIN ユーザーで DBMS_MFA_ADMIN.REGISTER_USER を実行します。type => 'LOGON' を指定することが Login-Time MFA の登録に必要なポイントです。

BEGIN
  DBMS_MFA_ADMIN.REGISTER_USER(
    username   => 'LOGIN_MFA_TEST',
    type       => 'LOGON',
    email      => 'login_mfa_test@example.com',  -- 登録メール送信先
    attributes => JSON_OBJECT(
      'auth_method' VALUE 'oma_push'             -- OMA プッシュ通知を使用
    )
  );
END;
/

image.png

登録完了メール

ユーザーの email に登録案内メールが届きます。メール内のリンクまたは QR コードから OMA アプリへのデバイス登録を完了させます。

image.png


Step 4:OMA アプリへのデバイス登録

  1. セキュアな検証の有効化image.png

  2. 「モバイル・アプリ」を選択image.png

  3. スマートフォンで Oracle Mobile Authenticator アプリを開く

  4. 登録メールの QR コードをスキャン、またはリンクをタップimage.png

  5. アプリにアカウントが追加されれば登録完了image.png


Step 5:Login-Time MFA 動作確認

5-1. データベースに接続

CONNECT login_mfa_test/<パスワード>@<接続文字列>

パスワード認証が成功すると、OMA アプリにプッシュ通知が届きます。

プッシュ通知のスクリーンショット

5-2. アプリで承認

OMA アプリの通知を開き、「承認」 をタップします。

image.png
image.png

5-3. ログイン完了・SQL 実行

承認後、セッションが確立され、SQL が実行できます。

SELECT COUNT(*) FROM user_tables;

Step 6:ユーザー登録解除(クリーンアップ)

Autonomous Databaseに ADMINユーザで接続し、各SQLを実行します。

BEGIN
  DBMS_MFA_ADMIN.DEREGISTER_USER(
    username => 'LOGIN_MFA_TEST',
    type     => 'LOGON',
    email    => 'login_mfa_test@example.com'
  );
END;
/

SQL Access Token MFA との比較

項目 Login-Time MFA SQL Access Token MFA
認証タイミング DB ログイン時 SQL 実行前
認証チャネル OMA / Cisco Duo Email / Slack / OMA
追加操作 なし(ログイン時のみ) セッションごとに OTP 入力が必要
DB Actions 利用可能 利用不可
向いているユース 一般的な DB ユーザー 高セキュリティ要件・外部アクセス

おわりに

Autonomous AI Database の Login-Time MFA(OMA)を試した結果、以下の点が確認できました。

  • ログイン時だけ承認操作が必要: SQL Access Token MFA と異なり、いったんログインすれば SQL 実行に追加操作は不要
  • スマートフォン必須: OMA アプリのインストールとデバイス登録が前提になる
  • Identity Domains 連携が必要: OMA の API エンドポイント設定に必要

一般的な DB ユーザー向けのセキュリティ強化には Login-Time MFA、API アクセスや外部連携など高セキュリティ要件には SQL Access Token MFA と、用途に応じて使い分けるのがよいでしょう。

参考情報

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?