2
2

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 Databaseのローカル・ユーザーに対するMFA有効化

Last updated at Posted at 2025-11-05

最新のOracle Databaseのアップデートでは、ローカル・ユーザーの多要素認証(MFA)の機能がサポートされました。これは、通常のユーザー・パスワードに加えて、モバイル・オーセンティケータでプッシュ通知を受け取って、許可を押すことでログインできるようになるMFA機能で認証強化することができます。
まずは、こちらのスライドをご覧ください。

image.png

設定するデータベースは、対応するバージョンまでアップグレードが必要、また、OCI IAMのドメインURLに対してアクセスできる必要があります。詳細な設定手順は、こちらが分かりすいと思います。ただ、この手順で設定しているSMTPについてですが、MFA自体の動作には必須の要件ではありません。なので、ここではより簡単に試すことができる最小限の手順を紹介したいと思います。

アイデンティティ・ドメインの設定

アイデンティティ・ドメインは、Defaultまたは作成済みのものでOK。詳細タグからドメインURLをコピーしておく。※データベースは、このURLにアクセスできることが必要
image.png

統合アプリケーション -> アプリケーションの追加をクリック
image.png

機密アプリケーションを選択して、ワークフローの起動する
image.png

任意の名前を付けて、一旦、送信して作成
image.png

作成後に、OAuth構成 -> OAuth構成の編集をクリック
image.png

以下のようにOAuth構成を編集する
image.png

クライアントIDとシークレットは、後で使用するのでコピーしておく
image.png

作成後、忘れずにアクティブ化しておく
image.png

Oracle DatabaseのMFA設定

SYSDBA権限でPDBに接続し、パラメータを追加

alter system set MFA_OMA_IAM_DOMAIN_URL = 'アイデンティティ・ドメインのURL'; 
ex)
alter system set MFA_OMA_IAM_DOMAIN_URL = 'https://idcs-b69af6ff925d44xxxxxxxx.identity.oraclecloud.com:443'; 

//ウォレットの場所を確認しておく
show parameter wallet_root;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
wallet_root                          string      /opt/oracle/dcs/commonstore/wa
                                                 llets/DB1031_sys

新たにWalletを作成し、コピーしておいたクライアントIDとシークレット情報を格納する。配置する場所は以下。mfaのディレクトリ名は新たに作成する

  • CDBは、{WALLET_ROOT}/mfa
  • PDBは、{WALLET_ROOT}/{PDB's guid}/mfa
//PDB用のウォレットを作成。{WALLET_ROOT}/{PDB's guid}/mfaのディレクトリから実行

$ pwd
/opt/oracle/dcs/commonstore/wallets/DB1031_sys/40BA6EE05F8027C2E063B501F40ABC91/mfa

orapki wallet create -wallet ./ -pwd "password" -auto_login -compat_v12
orapki secretstore create_entry -wallet ./ -pwd "password" -alias oracle.security.mfa.oma.clientid -secret クライアントID
orapki secretstore create_entry -wallet ./ -pwd "password" -alias oracle.security.mfa.oma.clientsecret -secret シークレット


ex)
orapki wallet create -wallet ./ -pwd "xxxxxxxxxxx" -auto_login -compat_v12
orapki secretstore create_entry -wallet ./ -pwd "xxxxxxxxxxx" -alias oracle.security.mfa.oma.clientid -secret 0d35509a70f846cebff0697c37630cbc
orapki secretstore create_entry -wallet ./ -pwd xxxxxxxxxxx" -alias oracle.security.mfa.oma.clientsecret -secret idcscs-b8bfe262-fedd-4356-xxxx-xxxxxxxxxxx

MFAの動作確認

まず、新しいデータベース・ユーザーを作成する場合を想定して試してみる

IAMに存在していないユーザー(メールアドレス)を指定して、CREATE USERを実行する。ここでは、エラーになってSQLは失敗する

CREATE USER ユーザ名 IDENTIFIED BY "パスワード" AND FACTOR 'OMA_PUSH' AS 'メールアドレス';

ex) 
CREATE USER test IDENTIFIED BY "xxxxxxxx" AND FACTOR 'OMA_PUSH' AS 'xxxx.xxxx@oracle.com';
*
ERROR at line 1:
ORA-28470: Failure to enroll the user for Oracle Mobile Authenticator (OMA)
Push Notification
Help: https://docs.oracle.com/error-help/db/ora-28470/

SQLが失敗するとすぐに、アイデンティティ・ドメインにユーザーが作成され、下記のアクティベーションのメールが指定したメールアドレスに送信される。リンクに従って、アカウントをアクティベーションをする。※アイデンティティ・ドメインでMFAを強制している場合は、ログイン時にMFAの設定を行う。ならない場合は、ログイン後に自身のマイ・プロファイルからMFAの設定を追加すること
image.png

※マイ・プロファイルから2ステップ検証でモバイルアプリケーションが設定済みであればOK
image.png

アクティベーション完了後、再度同じCREATE USERを実行する。今度は、ユーザー作成が成功

SQL> CREATE USER test IDENTIFIED BY "xxxxxxxx" AND FACTOR 'OMA_PUSH' AS 'xxxx.xxxx@oracle.com';
grant create session test;

User created.

ユーザー、パスワードで指定して接続すると、OMAのアプリケーションに通知が配信される

sqlplus test/xxxxxx@xxx.xxx.xxx.oraclevcn.com:1521/xxx_pdb1.xxx.demovcn.oraclevcn.com
SQL*Plus: Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems on Sat Nov 1 02:59:39 2025
Version 23.26.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved. 

許可をクリックする
image.png

接続が成功

Connected to:
Oracle AI Database 26ai EE High Perf Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.26.0.0.0
SQL>

既存のIAMユーザを指定した場合、MFAの設定がされてないければ、同様に下記のようなエラーになる。MFAがされていれば、エラーにならずユーザー作成が成功する

CREATE USER ユーザ名 IDENTIFIED BY "パスワード" AND FACTOR 'OMA_PUSH' AS 'メールアドレス';

ex) 
CREATE USER test IDENTIFIED BY "xxxxxxxx" AND FACTOR 'OMA_PUSH' AS 'xxxx.xxxx@oracle.com';
*
ERROR at line 1:
ORA-28470: Failure to enroll the user for Oracle Mobile Authenticator (OMA)
Push Notification
Help: https://docs.oracle.com/error-help/db/ora-28470/

既存のDBユーザーへのMFAの追加は、ALTER USERを使用する

ALTER USER ユーザ名 ADD FACTOR 'OMA_PUSH' AS 'xxxx.xxxx@xxxx.xxx';

設定は以上です。必要なのは、アイデンティティ・ドメインの機密アプリケーションとその機密アプリケーションにアクセスするためのクライアント情報をデータベース側に設定するだけで使用できます。SMTPは、データベース側からMFAの登録を促すバーコードを配信するだけなので、無くてもMFA自体の動作には問題ありません。

データベースを対応バージョンまでアップグレードする必要がありますが、設定自体は簡単にセキュリティ強化できる機能ですので試して頂ければと思います。

また、IAMとのトークン認証を使用すれば、MFAだけでなくユーザーID連携などの様々な要件にも対応できるようになります。

2
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?