Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Databaseセキュリティ【認証編】

Avatar for oracle4engineer oracle4engineer PRO
May 28, 2026
1.1k

Oracle Databaseセキュリティ【認証編】

Oracle Databaseのセキュリティ機能を、4つのテーマに分けて紹介する資料群です。
本資料では、そのうち認証に関する機能を解説します。

暗号化・マスキング編
アクセス制御編
監査・評価編
認証編(本資料)

Avatar for oracle4engineer

oracle4engineer PRO

May 28, 2026

More Decks by oracle4engineer

Transcript

  1. 目次 0 はじめに(p3) 1 Oracle Database がサポートする認証方式(p8) 2 パスワード認証(p13) 3

    外部認証(p38) 4 グローバル認証(p41) 5 まとめ(p57) 6 補足資料(p60) 2 Copyright © 2026, Oracle and/or its affiliates
  2. 全体のセキュリティ対策 データ漏洩が起きるリスクパターンと対策 リ ス ク 対 策 分 野 4

    3 2 1 4 第三者の バイパスしたアクセスに よる不当なデータ奪取 正規ユーザーの 業務範囲外の データ持ち出し 正規ユーザーの 業務範囲内の データ持ち出し 運用において 後から発生する 潜在的なリスク 例)ディスク盗難、 通信の盗聴、など 例)ユーザー乗っ取り、 内部不正、など 例)ユーザー乗っ取り、 内部不正、など 例)権限設定の不備、 システムの脆弱性など ・監査 ・ログ監視 ・定期的な セキュリティ評価 ・パッチ適用 ・暗号化 ・データ・マスキング Copyright © 2026, Oracle and/or its affiliates ・認証 ・ユーザ管理 ・認可 (アクセス制御)
  3. 全体のセキュリティ対策 データ漏洩が起きるリスクパターンと対策 1 2 3 リ ス ク 第三者の バイパスしたアクセスに

    よる不当なデータ奪取 対 策 分 野 ・暗号化 ・データ・マスキング ・ユーザ管理 TDE(透過的データ暗号化) Data Redaction 機 能 ・ サ ー ビ ス 5 ネットワーク暗号化 暗号化編 Data Masking and Subsetting Oracle Data Safe Copyright © 2026, Oracle and/or its affiliates 正規ユーザーの 業務範囲外の データ持ち出し 4 正規ユーザーの 業務範囲内の データ持ち出し 構成変更等によって 後から発生する 潜在的なリスク ・認可 ・監査 ・ログ監視 ・定期的なセキュリティ評価 ・パッチ適用 CMU DB Vault 統合監査 DBSAT クラウドIAM 認証 本資料の Label Security アクセス ファイングレイン監査 ・認証 対象 制御編 SQL Firewall VPD 監査編 Oracle Data Safe OCI Log Analytics Autonomous Database
  4. OWASP Top 10 Webアプリケーションに関する脆弱性やリスク 2017年 2021年 2025年 A1 インジェクション アクセス制御の不備

    アクセス制御の不備 A2 認証の不備 暗号化の失敗 セキュリティ設定の不備 A3 機密データの露出 インジェクション ソフトウェアサプライチェーンの不具合 A4 XML外部エンティティ(XXE)new 不適切な設計 new 暗号化の失敗 A5 アクセス制御の不備 セキュリティ設定の不備 インジェクション A6 セキュリティ設定の不備 脆弱で古いコンポーネント 不適切な設計 A7 クロスサイトスクリプティング 認証および識別の失敗 認証の失敗 A8 不適切な逆シリアル化 new ソフトウェアおよびデータの整合性の失敗 new ソフトウェアおよびデータの整合性の不具合 A9 脆弱性のあるコンポーネントの使用 セキュリティログとモニタリングの失敗 セキュリティログ記録およびアラート障害 A10 ロギングとモニタリングの不足 new サーバーサイトリクエストフォージェリ new 例外的な状態の不適切な処理 new https://owasp.org/Top10/2025/ 6 Copyright © 2026, Oracle and/or its affiliates
  5. OWASP Top 10 Webアプリケーションに関する脆弱性やリスク 2017年 2021年 2025年 A1 インジェクション アクセス制御の不備

    アクセス制御の不備 A2 認証の不備 背景 暗号化の失敗 セキュリティ設定の不備 A3 機密データの露出 A7 「認証の失敗」は、このカテゴリに含まれる36のCWEをより正確に反映させるため名称を インジェクション 若干変更したものの、7位を維持しています。標準化されたフレームワークの恩恵を受 けているにもかかわらず、このカテゴリは2021年と同様に7位の順位を維持しています。 XML外部エンティティ (XXE)new 不適切な設計 new 注目すべきCWEには、CWE-259「ハードコードされたパスワードの使用」、CWE-297 アクセス制御の不備 セキュリティ設定の不備 「ホスト不一致時の証明書の不適切な検証」、CWE-287「不適切な認証」、CWE384「セッション固定」、およびCWE-798「ハードコードされた認証情報の使用」が含まれ セキュリティ設定の不備 脆弱で古いコンポーネント ます。 クロスサイトスクリプティング 認証および識別の失敗 ↓ A8 不適切な逆シリアル化 new A4 A5 A6 ソフトウェアおよびデータの整合性の失敗 new A9 認証に関する標準規格により技術的にはリスクとしては低減されたものの、 脆弱性のあるコンポーネントの使用 セキュリティログとモニタリングの失敗 パスワードの利用・運用におけるリスクはまだ拭いきれていない A10 ロギングとモニタリングの不足 new サーバーサイトリクエストフォージェリ new ソフトウェアサプライチェーンの不具合 暗号化の失敗 インジェクション 不適切な設計 認証の失敗 ソフトウェアおよびデータの整合性の不具合 セキュリティログ記録およびアラート障害 例外的な状態の不適切な処理 new https://owasp.org/Top10/2025/ 7 Copyright © 2026, Oracle and/or its affiliates
  6. 認証とは • サービスまたはシステムへ接続しようとするユーザーなどのエンティティの身元を検証し、正当性を確認する仕組み • アクセス可否の判定そのものではなく、認可の前提となるプロセス 今回は一部ここも絡んでくる 1. 識別 2. 認証

    3. 認可 利用者がだれかを宣言 ユーザーが 本人であることを確認 認証が完了したユーザーが どの操作ができるか決定 確認 アクセス許可 ID/Password 9 Copyright © 2026, Oracle and/or its affiliates
  7. Oracle Databaseにおける認証 認証とは、データ、リソースまたはアプリケーションの使用を希望するユーザーやデバイスなどのエンティティの 身元を検証することです。 Release 26 – セキュリティ・ガイド より •

    データベース・ユーザーと非データベース・ユーザーの両方の認証が可能 • 認証後、権限やロールに基づく許可設定によって実行可能な操作を制御 • Oracle Databaseでは、認証および認可付与に関して次の3つのタイプに分類 1. ローカル・データベース認証 および ローカル・データベース認可 → パスワード認証 2. 外部認証 および ローカル・データベース認可 → 外部認証 3. 外部認証 および 外部認可 → グローバル認証 • 1つのデータベース環境で、要件に応じて複数の認証方式を併用可能 10 Copyright © 2026, Oracle and/or its affiliates
  8. 認証の種類 Oracle Database がサポートする認証方法 ◼ パスワード認証 • データベース内部に保持された認証情報を用いてユーザーを認証する方式 • 追加で多要素認証も対応

    ◼ 外部認証 • OS やネットワークサービスなど、データベース外部の仕組みを用いて認証する方式 ◼ グローバル認証 • ディレクトリサービスやクラウド認証基盤を利用して、 ユーザー情報と認可情報を一元管理する方式 • 認証基盤が持つ認証機能が利用可能 11 Copyright © 2026, Oracle and/or its affiliates 方式 認証 認可 パスワード認証 ローカル ローカル 外部認証 外部 ローカル グローバル認証 外部 外部
  9. 認証の種類 SQL リファレンスより Oracle AI Database SQL言語リファレンス, 26ai https://docs.oracle.com/cd/G47991_01/sqlrf/CREATE-USER.html パスワード認証

    外部認証 グローバル認証 認証無しのスキーマ限定アカウントもできる (18c~) 12 Copyright © 2026, Oracle and/or its affiliates
  10. パスワード認証 Oracle Database 内に定義されたユーザー名とパスワードで認証 • 接続時に 「ユーザー名/パスワード」 を提示する • 最もシンプルな接続方法

    • データベース単体で完結するため、設計や障害切り分けが単純 • パスワードの複雑性、期限、失敗回数などのルールはユーザー・プロファイルで設定 • パスワードの最大長 • (~21c ) 30 バイト • (23ai~) 1,024 バイト • パスワード・ハッシュは Oracle Database 内にて管理・保存 • 19c よりデフォルト・ユーザーはパスワードレスに • 使用する際にはじめてパスワードを設定 • 多要素認証による認証強化も可能 * * 使用できる方式はADBか非ADBかで少し異なる 14 Copyright © 2026, Oracle and/or its affiliates $ sql user/pass@db
  11. パスワードの保護・管理を行うための機能 パスワードの保護 15 パスワード・ポリシー パスワード・バージョン ユーザー・プロファイル データベース・パスワード・ ファイル パスワード検証関数 Copyright

    © 2026, Oracle and/or its affiliates パスワードの変更 段階的パスワード・ ロールオーバー パスワードの保管 外部パスワード・ストア OCI シークレット管理 サービス (旧 OCI Vault シークレット)
  12. パスワード・バージョン パスワードハッシュ(検証子)の生成と保存 • パスワードは指定のパラメータに従いハッシュ化したのち SYS.USER$ 表に保存 • 使用される認証プロトコルなどは、sqlnet.ora のパラメータで制御 •

    SQLNET.ALLOWED_LOGON_VERSION_SERVER:DBへの接続時に許可する下限の認証プロトコルを設定 • SQLNET.ALLOWED_LOGON_VERSION_CLIENT: クライアントとしてのDB接続時に許可される下限の設定値 • バージョン10G は大文字小文字を区別しないため、設定値は 12 以上を推奨 • バージョン 10G は 23ai より非サポート • 各ユーザーにて生成されているバージョンは DBA_USER ビューの他、DBSAT や Data Safe から確認が可能 設定値 パスワード・バージョンの生成 対応するクライアント 10G 11G 12C 12a ✕ ✕ ◦ 12.1.0.2 ~ 12 (default) ✕ ◦ ◦ 11.2.0.4 ~, 12.1 ~ 11 ◦ ◦ ◦ 10g ~ (*) 8 ◦ ◦ ◦ 10g ~ (*) (*) 11.2.0.3以降のクライアントは2012年10月のCPUがあてられていない場合、10gパスワードバージョンを使用 16 Copyright © 2026, Oracle and/or its affiliates
  13. データベース・パスワード・ファイル 管理権限を持つユーザーのパスワード管理 • 管理権限 (SYSDBA, SYSOPERなど) を持つユーザーは、データベース・パスワード・ファイルを使用することができる • V$PASSWORDFILE_INFO:パスワード・ファイルに関する情報 •

    V$PWFILE_USERS:パスワード・ファイルに格納されている全ユーザーの一覧 • パスワード・ファイルの作成、管理は orapwd ユーティリティを使用 • パスワード・ファイルの使用については、REMOTE_LOGIN_PASSWORDFILE パラメータで設定 • shared:複数データベースでパスワード・ファイルを共有 • exclusive:1つのデータベースのみでパスワード・ファイルを使用 • none:パスワード・ファイルを無視。管理ユーザーはOS認証にて接続する必要がある • Data Guard の REDO転送における認証要素としても使用される 管理者アクセス 検証 17 Copyright © 2026, Oracle and/or its affiliates
  14. ユーザー・プロファイル パスワードの長さなどのポリシーを設定 • ユーザーアカウントに適用されるリソース制限やパスワード・ ポリシーをまとめて適用・管理するための仕組み • 作成したプロファイルは ALTER USER ...

    PROFILE で ユーザーに割り当て パスワード • 9文字以上 • 数字記号を1つ以上 • 5回失敗するとロック パスワード • 12文字以上 • 数字記号を2つ以上 • 2回失敗するとロック DB利用者用 プロファイル アプリケーション用 プロファイル • パスワードの有効期限や複雑性などを設定できる • 複数ユーザーに一括で割り当てることで、パスワードポリシーを統一 • • ユーザーには1つだけプロファイルを割り当て • 外部ユーザーまたはグローバル・ユーザーに割り当てる場合、 パスワードのパラメータは無効に OCI Database サービスでは一部パラメータが設定済み DB管理ユーザー 18 Copyright © 2026, Oracle and/or its affiliates 開発者DBユーザー アプリケーション DBユーザー
  15. ユーザープロファイルのパスワード制限項目 password_parameters(RESOURCE_TYPE = PASSWORD) 制限 デフォルト値 * 説明 FAILED_LOGIN_ATTEMPTS 10

    ログインに連続して失敗できる回数。超えるとロックされる PASSWORD_GRACE_TIME 7 パスワードの有効期限後、ログインできる猶予日数 PASSWORD_LIFE_TIME 180 同じパスワードを使用できる日数 PASSWORD_LOCK_TIME 1 FAILED_LOGIN_ATTEMPTSの後、ロックされる日数 PASSWORD_REUSE_MAX UNLIMITED パスワードを再利用する前に必要なパスワードの変更回数 PASSWORD_REUSE_TIME UNLIMITED パスワードを再利用できない日数 INACTIVE_ACCOUNT_TIME UNLIMITED ロックされるまでの連続非ログイン日数の許容数 PASSWORD_VERIFY_FUNCTION NULL パスワードの複雑性を検証する PL/SQL ファンクションを指定 デフォルトのスクリプトもあるが、独自に作成することも可能 PASSWORD_ROLLOVER_TIME 0 パスワード・ロールオーバーとして有効な日数 1秒単位で設定が可能 * Base Database 26ai の DEFAULT プロファイルの値 19 Copyright © 2026, Oracle and/or its affiliates
  16. ユーザープロファイルのリソース制限項目 resource_parameters(RESOURCE_TYPE = KERNEL) 制限 デフォルト値 * 説明 CONNECT_TIME UNLIMITED

    1セッション当たりの経過時間制限(分単位) IDLE_TIME UNLIMITED 許容される非アクティブ時間(分単位) SESSIONS_PER_USER UNLIMITED ユーザーが同時に利用できるセッション数 COMPOSITE_LIMIT UNLIMITED セッションの総リソースコストをサービス単位で指定 CPU_PER_SESSION UNLIMITED 1セッションのCPU時間制限を、100分の1秒単位で指定 CPU_PER_CALL UNLIMITED 1呼び出し(パース、実行、またはフェッチ)あたりのCPU時間制限 を、100分の1秒単位で指定 LOGICAL_READS_PER_SESSION UNLIMITED 1セッション中に読み取ることができるデータブロックの許容数 LOGICAL_READS_PER_CALL UNLIMITED SQL文を処理する1呼び出し(パース、実行、またはフェッチ)で読 み取ることができるデータブロックの許容数 PRIVATE_SGA UNLIMITED 1セッションでSGAの共有プール内で割り当てることができるプライ ベート領域の大きさ(バイト単位) * Base Database 26ai の場合 DEFAULT プロファイルの値 20 Copyright © 2026, Oracle and/or its affiliates
  17. パスワード検証関数(PVF) パスワード要件を適用するための関数 • パスワード変更時に、長さ、文字の種類、旧パスワードとの差分などの条件をチェックする PL/SQL 関数 • ユーザー・プロファイルの PASSWORD_VERIFY_FUNCTION に設定して利用する

    • 以下の事前定義が用意 * 関数名 長さ パスワード要件 * ora12c_verify_function 8 文字以上 英字と数字、特殊文字が1つ以上 ora12c_strong_verify_function 9 文字以上 大文字、小文字、数字と特殊文字が2つ以上 ora12c_stig_verify_function 15 文字以上 大文字、小文字、数字と特殊文字が1つ以上 CLOUD_VERIFY_FUNCTION ** 12 文字以上 大文字、小文字、数字と特殊文字が1つ以上 • 独自の検証関数を作成して、業務要件に合わせたパスワード・ポリシーを実装することも可能 • 詳しくは $ORACLE_HOME/rdbms/admin/catpvf.sql を参照 * パスワード要件の詳細はドキュメントを参照 Release 23 - 3.2.1 Oracle AI Databaseの組込みパスワード保護の概要 ** ADBのデフォルトパスワード検証関数。詳細は以下ドキュメントを参照 Autonomous AI Databaseによるユーザー・プロファイルの管理 21 Copyright © 2026, Oracle and/or its affiliates
  18. 段階的パスワード・ロールオーバー 一定時間のみ旧パスワードも利用可能に • パスワードの変更時、旧パスワードを一定期間だけ有効とし、新旧どちらのパスワードでも接続可能に • DBパスワードをローテーションするときのや、DBパスワード変更を即時に全アプリへ反映しづらい環境で有用 • ユーザー・プロファイルの PASSWORD_ROLLOVER_TIME を

    0 以外に設定し有効化 • 値は日単位で指定 • 時間は分数で表現(例:4 時間の場合、4/24) • ALTER USER <user> EXPIRE PASSWORD ROLLOVER PERIOD; にて古いパスワードの強制失効 • 旧パスワードでログインしたかは監査ログで確認可能 パスワードA パスワードB パスワード更新 22 Copyright © 2026, Oracle and/or its affiliates
  19. 外部パスワード・ストア Secure External Password Store(SEPS) • データベース接続用のパスワードを「Wallet」ファイルとして保存し、クライアントがログイン時にアクセスして使用 • アプリケーション・コード、スクリプトなどへのユーザー名やパスワードのハードコードを抑止 •

    wallet は PKCS#12* ファイルを含む一式で管理 • 管理には mkstore ユーティリティを使用 • CONNECT /@db_connect_string で接続 ユーザー名/パスワード を格納 ① 資格情報を取得 Wallet ② 接続 DBクライアント * Public-Key Cryptography Standards #12 23 Copyright © 2026, Oracle and/or its affiliates $ sql /@db
  20. 外部パスワード・ストアの使用(1/3) ウォレットの作成 $ orapki wallet create -wallet <Wallet Path> -pwd

    <Wallet Password> -auto_login Oracle PKI Tool Release 23.0.0.0.0 – Production Version 23.0.0.0.0 Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. Operation is successfully completed. $ ls cwallet.sso cwallet.sso.lck ewallet.p12 ウォレットにシークレットを格納 ewallet.p12.lck TNSエイリアスまたはサービス名 $ mkstore -wrl <Wallet Path> -createCredential <接続文字列> <DB Username> <Password> Oracle Secret Store Tool Release 23.0.0.0.0 - Production Version 23.0.0.0.0 Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. Enter wallet password: <Wallet Password> 24 Copyright © 2026, Oracle and/or its affiliates
  21. 外部パスワード・ストアの使用(2/3) シークレットの確認 $ mkstore -wrl <Wallet Path> -listCredential Oracle Secret

    Store Tool Release 23.0.0.0.0 - Production Version 23.0.0.0.0 Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. Enter wallet password: List credential (index: connect_string username) 1: <接続記述子> <DB Username> 接続 $ sql /@<接続記述子> SQLcl: Release 25.3 Production on Thu Dec 18 01:54:56 2025 … SQL> 25 Copyright © 2026, Oracle and/or its affiliates WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /path/to/wallet) ) ) SQLNET.WALLET_OVERRIDE = TRUE
  22. 外部パスワード・ストアの使用(3/3) パスワードの更新 SQL> alter user <DB Username> identified by <New

    Password>; User <DB Username> altered. $ mkstore -wrl <Wallet Path> -modifyCredential <接続記述子> <DB Username> <New Password> Oracle Secret Store Tool Release 23.0.0.0.0 - Production Version 23.0.0.0.0 Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. Enter wallet password: <Wallet Password> 26 Copyright © 2026, Oracle and/or its affiliates
  23. OCI シークレット管理サービス アプリの資格情報・APIキー等を安全に保管/配布 サービス概要/特徴 • パスワード、APIキー、トークン、証明書などのシークレットを 保管/取得/管理 • OCI リソースとして

    IAM ポリシーでアクセス制御 • バージョン管理とローテーション(運用自動化)に対応 ユース・ケース • DB接続情報・APIトークン等のハードコーディングを禁止し、 中央管理 • 安全に資格情報を配布と、定期ローテーション • 監査/統制のため「誰がいつ取得したか」の追跡 • テンプレートによるシークレット自動生成 • 暗号化には OCI Vault の鍵を利用 サービス価格 • 無償(5,000 シークレットまで) 保管 管理者 シークレット 管理サービス シークレット 取得 アプリケーション 27 Copyright © 2026, Oracle and/or its affiliates
  24. OCI シークレット管理サービス の利用(1/2) シークレット取得の例 REST API GET /20190301/secretbundles/<secretId> Host: https://secrets.vaults.<region>.oci.oraclecloud.com

    … OCI CLI oci secrets secret-bundle get --secret-id <secretId> Python SDK import oci secrets_client = oci.secrets.SecretsClient(oci.config.from_file()) get_secret_bundle_response = secrets_client.get_secret_bundle(secret_id="<secretId>") print(get_secret_bundle_response.data) API Ref:https://docs.oracle.com/en-us/iaas/api/#/en/secretretrieval/20190301/SecretBundle/GetSecretBundle OCI CLI Ref:https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/secrets/secret-bundle/get.html 28 Copyright © 2026, Oracle and/or its affiliates
  25. OCI シークレット管理サービス の利用(2/2) パスワードローテーションに伴う DBパスワードの自動変更 • OCI Functions との連携により、シークレット管理サービスのパスワードローテーション時に Function

    を起動 • データベースへのパスワード変更までを自動で実施 以下を格納 • ユーザー名 • パスワード • 接続文字列 alter user xxx identified by… シークレット管理サービス OCI Functions ランダム文字列を生成し、 新しいバージョンを作成 Oracle Databaseへ接続し 新しく生成された文字列へ パスワードを変更 参考 • Oracle Cloud Infrastructureドキュメント - ウォレット関数を使用しないデータベース・シークレット・ローテーション • Oracle Cloud Infrastructureドキュメント -ウォレット関数を使用するデータベース・シークレット・ローテーション 29 Copyright © 2026, Oracle and/or its affiliates Oracle Database
  26. 外部パスワード・ストアとシークレット管理サービスの違い パスワードをセキュアに保存し、ログやコードからパスワードを隠蔽することで、コピペや個人端末の侵害などからの 意図しない漏洩を緩和する点は同じ 外部パスワード・ストア シークレット管理サービス アクセス制御 OS のファイル権限 OCI IAM

    ポリシー シークレットを取得するクライアント Oracle Database クライアント OCI クライアント パスワードの保管場所 各クライアント上のローカル Wallet OCI サービス上 更新・ローテーション Wallet 内の資格情報を更新 手動または Function サービスと連携した 自動ローテーション 可用性 OSファイルとしてバックアップ 最大3リージョンにレプリケーション 管理ツール mkstore/orapki ユーティリティ * OCI コンソール / CLI / SDK / API * Instant Client にはこれらは梱包されていないため、 Full Clientを使用する必要がある 30 Copyright © 2026, Oracle and/or its affiliates
  27. 多要素認証 非ADB の場合 • Oracle Databaseのネイティブ・ユーザーに対して、多要素認証 (MFA) を構成 • 認証要素

    • Oracle Mobile Authenticator (OMA) プッシュ通知 • Cisco Duo プッシュ通知 • 証明書ベース認証 • MFAの失敗は統合監査ログの additional_info 列に記録 • 対応バージョン • 19.28 以降 $ sql user/pass@db ① アクセス ② プッシュ通知 ③ 許可 32 Copyright © 2026, Oracle and/or its affiliates
  28. 多要素認証 ADB の場合 • ADB の場合も同様に多要素認証をサポート • 併用可能な2つの認証方式 1. ログイン時MFA(Login-Time

    MFA) - ログイン時に追加の認証を実施 - OMA または Cisco Duo Mobile のプッシュ通知 2. SQLアクセス時MFA(SQL Access Token MFA) - 保護されたSQL実行前に追加の要素を要求 - Email/Slack のワンタイムパスワード、または OMA のプッシュ通知 • 対応バージョン 33 • 19c 認証要素 方式 ログイン時MFA SQLアクセス時MFA • 26ai 電子メール ワンタイムパスワード ✕ ◦ Slack ワンタイムパスワード ✕ ◦ Oracle Mobile Authenticator (OMA) プッシュ通知 ◦ ◦ Cisco Duo Mobile app プッシュ通知 ◦ ✕ Copyright © 2026, Oracle and/or its affiliates
  29. ログイン時MFA(Login-Time MFA) 実行イメージ: OMA(1/1) ログイン ❯ ./sqlcl/bin/sql /nolog SQLcl: Release

    25.1 Production on Sat Mar 07 17:56:56 2026 Copyright (c) 1982, 2026, Oracle. All rights reserved. SQL> set cloudconfig tns_files/adb_wallet/Wallet_ADBTPNRTDEV.zip SQL> connect mfa_user@adbtpnrtdev_medium プッシュ通知が届く Password? (**********?) ****************** 「許可」を選択 Connected. ※ OMAの場合 34 Copyright © 2026, Oracle and/or its affiliates
  30. SQLアクセス時MFA(SQL Access Token MFA) 実行イメージ: メール(1/3) ① SQLを実行 SQL> select

    count(*) from sh.sales; Error starting at line : 1 in command select count(*) from sh.sales Error at Command Line : 1 Column : 1 Error report SQL Error: ORA-64660: Token Authorization is not complete for the user or the session. https://docs.oracle.com/error-help/db/ora-64660/ More Details : https://docs.oracle.com/error-help/db/ora-64660/ 35 Copyright © 2026, Oracle and/or its affiliates
  31. SQLアクセス時MFA(SQL Access Token MFA) 実行イメージ: メール(2/3) ② OTP発行を依頼 BEGIN DBMS_MFA.INITIALIZE_SESSION(

    email => '<mail_address>' ); END; / ③ OTPを受信する ※ メールの場合 36 Copyright © 2026, Oracle and/or its affiliates
  32. SQLアクセス時MFA(SQL Access Token MFA) 実行イメージ: メール(3/3) ④ 受信したOTPを設定 BEGIN DBMS_MFA.SET_TOKEN(

    token => '<otp>' ); END; / ⑤ SQLを実行する SQL> select count(*) from sh.sales; COUNT(*) ___________ 918843 37 Copyright © 2026, Oracle and/or its affiliates
  33. 外部認証 OSやネットワークサービスなど、データベース外部の仕組みを用いて認証 • アカウント自体は Oracle Database 内部 に存在するが、認証の実行やパスワード管理は 外部 で行う方式

    • データベース外の認証メカニズムを使用 • データベースのパスワードを使わずにログインを実施 • データベース側では外部ユーザーを使用 CREATE USER ... IDENTIFIED EXTERNALLY で作成 • • クライアントの侵害がそのままデータベース侵害につながる可能性があるため注意が必要 • 使用できる外部サービスの例 • OS 認証 • Kerberos 認証 • RADIUS 認証 • PKI 証明書認証 DB 権限 外部ユーザー 外部で認証を実施済み 39 Copyright © 2026, Oracle and/or its affiliates DB ユーザー
  34. OS認証 OS が保持しているユーザー情報を使って認証 一般ユーザーの外部OS認証 DBAのOS認証 • DB ユーザー名を OS ユーザー名にマップ

    • DBサーバーのローカルで実施 • OS_AUTHENT_PREFIX でOSユーザー名とDBユーザー 名の対応を定義(デフォルト: OPS$) • OSの専用グループに加えることで管理者として操作 • OSユーザー名にこの接頭辞を付けDBユーザー名と照合 • リモートOS認証は 21c より非サポート • • REMOTE_OS_AUTHENT パラメータは廃止 Linux: - OSDBAグループ (dba) - OSOPERグループ (oper) • Windows: - ORA_DBA - ORA_OPER など • CDBルートのみで有効 40 Copyright © 2026, Oracle and/or its affiliates
  35. グローバル認証 企業内のID管理サービスを用いて、ユーザー情報や認可情報を集中管理する方式 • 各データベースのローカルごとにユーザーを管理するのではなく、 企業で使用する ID 基盤にて認証を実施 • 複数データベース環境にわたるユーザーや権限を一元管理 •

    ID 基盤のユーザーやグループの情報にマッピングする形で、DB ユーザーや DB ロールを使用 ディレクトリ・サービス / クラウド • データベース側ではグローバル・ユーザーを使用 • ユーザーと ロールを管理 CREATE USER GLOBALLY <username> … で作成 • 対象 IDサービス ディレクトリサービス - OID、OUD、OVD (Enterprise User Security: EUS) 認証 - Active Directory(Centrally Managed Users: CMU) Cloudサービス - OCI IAM - Microsoft Entra ID(旧Azure AD) 42 Copyright © 2026, Oracle and/or its affiliates 接続
  36. 【Oracle DbaseCamp】 第15回_【基本】Oracle Database データベース・ユーザー・セキュリティ入門 資料より グローバル・ユーザーとして利用可能な仕組み(1) エンタープライズ・ユーザー・セキュリティとMicrosoft Active Directoryによる集中管理ユーザー

    エンタープライズ・ユーザー・セキュリティ(EUS) Microsoft Active Directoryによる集中管理ユーザー (Centrally Managed Users: CMU) • Oracle8i〜 • Enterprise Edition機能 • Oracle Database 18.1〜 • 認証方式 • Enterprise Edition機能 • 認証方式 - パスワード、Kerberos、PKI証明書 • Oracle Identity Management Directory Services Plusラ イセンスが別途必要 - Oracle Internet Directory(OID)を別途構築 - パスワード、Kerberos、PKI証明書 • Microsoft Active Directory(AD)に、 データベース・ユーザーの認証と認可を統合 - EUSにくらべてシンプルな構成 エンタープライズ・ ユーザー エンタープライズ・ ドメイン エンタープライズ・ ロール Domain user1 グローバル・ ロール グローバル・ ユーザー ユーザー role1 user1 user1 role_a role2 user2 Oracle Internet Directory EUSは 23/26ai より非推奨、 Oracle Database グローバル・ ロール グループ 排他マッピング(1:1) user2 group1 user3 group2 Active Directory グローバル・ ユーザー user1 role1 共有マッピング(n:1) user2 Oracle Database CMU、またはクラウドプロバイダへの移行を推奨 エンタープライズ・ユーザー・セキュリティ・ガイド: 5.5 エンタープライズ・ドメインの管理 43 Copyright © 2026, Oracle and/or its affiliates セキュリティ・ガイド: 6 Microsoft Active Directoryによる集中管理ユーザーの構成
  37. 【Oracle DbaseCamp】 第15回_【基本】Oracle Database データベース・ユーザー・セキュリティ入門 資料より グローバル・ユーザーとして利用可能な仕組み(2) OAuth2トークンによるOracle Databaseの認証と認可 OCI

    IAM Identity DomainsおよびEntra ID(Azure AD)による 統合的なユーザー管理 OAuth2トークンによるOracle Databaseの認証と認可 OCI IAM / Entra ID(Azure AD) • Oracle Databaseのグローバル・ユーザおよびグローバル・ ロールとのマッピングの考え方は、CMUと同様。 ユーザー グループ 排他マッピング(1:1) user1 user2 group1 user3 group2 OCI IAM / Entra ID グローバル・ ロール user1 OAuth2 token role1 user2 共有マッピング(n:1) Oracle Database ユーザー情報に アクセスするための アクセス権のリクエスト Request token • JDBC-thinドライバ、ODP.NETはネイティブクラウド認証対応 • 以下のOracle Database環境で利用可能 • • • • • Oracle Autonomous Database Serverless Oracle Autonomous Database on Dedicated Exadata Oracle Exadata Database Service on Dedicated Infrastructure Oracle Base Database Service オンプレミスOracle Databaseリリース19.18以降 (Entra IDのみ) セキュリティ・ガイド: 7 Oracle DBaaSデータベースに対するIAMユーザーの認証と認可 8 Oracle DatabaseのMicrosoft Azure Active Directoryユーザーの認証および認可 44 Copyright © 2026, Oracle and/or its affiliates Oracle Databaseと IAM/Entra ID間の 通信はTLSにより 暗号化されセキュアに トークンを受け渡す グローバル・ ユーザー Send OCI、Entra IDユーザー アクセストークンからユーザー情報 を取得してログイン Blog記事: Oracle Databaseの外部認証 Oracle DatabaseのTLS暗号化を設定する OCI IAMとBaseDBのトークン・ベースの認証連携① OCI IAMとBaseDBのトークン・ベースの認証連携② OCI IAMとAutonomous Databaseのトークン・ベースの認証連携
  38. クラウド ID サービスとの連携 • クラウド ID プロバイダにて認証したのち、発行したトークンをデータベース接続に利用可能 • 外部 ID

    プロバイダでのグループ紐づけがそのまま Oracle Database 内のロール・ユーザーの紐づけに対応 • データベース環境におけるユーザー管理および権限管理を一括化 • 外部管理のユーザーとDBユーザーのマッピング方法は次の2種類 - 共有スキーマ・マッピング - 排他的マッピング • データベースへの接続は TLSで保護されている必要あり • 対応 ID プロバイダ 共有スキーマ・マッピング ロール:DBユーザー ロール/ グループ ユーザー 排他的マッピング 45 Copyright © 2026, Oracle and/or its affiliates グローバル・ ロール 個別ユーザー:DBユーザー • Microsoft Entra ID • OCI IAM グローバル・ ユーザー 割り当て 外部の割り当て状況により 動的に変化するため、 DB内での割り当て操作は 行わない
  39. Microsoft Entra ID を用いた認証(MS-EI認証) OAuth 2.0 アクセス・トークンによる外部認証と権限連携 • Microsoft Entra

    ID(旧 Azure AD)を外部 ID プロバイダーとして利用し、Entra ID の発行するトークンで Oracle Database へ接続 • ユーザーは Entra ID にサインインするため、Entra ID の認証機能をそのまま活用 • Entra ID 側では、データベース用のアプリケーションを作成し、アプリ・ロールを定義および割り当て • Oracle Database 側は、アプリ・ロールをスキーマやロールにマッピングし、接続後の権限を制御 • 対応環境 • Oracle Database 19.18〜(21cを除く) • Autonomous AI Database(Serverless, Dedicated, Cloud@Customer) • Exadata Database Service(Dedicated, Exacales, Cloud@Customer) • Base Database Service Entra ID 認証を実施 トークンを発行 アクセス アプリケーション 47 Copyright © 2026, Oracle and/or its affiliates トークンを提示して アクセス
  40. トークンの取得方法 Entra ID がサポートするトークン取得フロー フロー 説明 ユースケース 認可コード 人間ユーザー向けの代表的な方式 ブラウザを使って対話的にログインし、認可コードを経由して

    トークンを取得 ネイティブアプリケーションまたは Webアプリケーション (例:SQL Developerなど) クライアント・クレデンシャル アプリケーション自身が、ユーザーなしで自分の ID でトークンを 取得して API に接続する方式 サービス間通信、デーモン、バッチ、 バックエンド処理、接続ツールなど インプリシット 旧来のブラウザアプリケーション向け方式。 ー ROPC アプリがユーザー名とパスワードを直接扱ってトークンを取得する 方式。非推奨 ー デバイス・コード クライアント側に十分な入力手段やブラウザがないとき、別の端 末のブラウザでユーザーがサインインしてトークンを取得する方式 CUI 環境、CLI ツールなど (例:シェル、SQLcl など) On Behalf Of (OBO) 上流のアプリケーションがユーザーのコンテクストを使って下流の アプリケーションにアクセスする方式 API を中継する構成のアプリケー ション 48 Copyright © 2026, Oracle and/or its affiliates
  41. 認可コード フロー概要 アプリケーション ユーザー Entra ID (OAuthクライアント) 接続要求 認証を実施 Oracle

    Database (認可サーバー) 認可リクエスト 認可エンドポイント /oauth2/v2.0/authorize 認証を要求 認可コード返却 トークンリクエスト トークンを返却 トークンエンドポイント /oauth2/v2.0/token トークン提示 トークン検証 49 Copyright © 2026, Oracle and/or its affiliates アクセス許可
  42. クライアント・クレデンシャル フロー概要 アプリケーション Entra ID (OAuthクライアント) Oracle Database (認可サーバー) トークンリクエスト

    トークンエンドポイント /oauth2/v2.0/token トークンを返却 トークン提示 トークン検証 アクセス許可 50 Copyright © 2026, Oracle and/or its affiliates
  43. デバイス・コード フロー概要 アプリケーション ユーザー Entra ID (OAuthクライアント) 接続要求 Oracle Database

    (認可サーバー) 認証リクエスト デバイスエンドポイント 認証を実施 コードを入力 デバイスコード 検証リンクを提示 /oauth2/v2.0/devicecode 検証URI https://login.microsoft.com/device loop トークンリクエスト トークンエンドポイント /oauth2/v2.0/token トークンを返却 トークン提示 トークン検証 51 Copyright © 2026, Oracle and/or its affiliates アクセス許可
  44. On-Behalf-Of (OBO) フロー概要 アプリケーションA アプリケーションB (フロントエンドなど) (バックエンドなど) Entra ID Oracle

    Database (認可サーバー) (前段フロー省略)トークン発行 トークンを提示(aud: アプリケーションB) OBO要求(w/ AT) トークンエンドポイント /oauth2/v2.0/token トークン発行 トークン提示 トークン検証 アクセス許可 52 Copyright © 2026, Oracle and/or its affiliates
  45. OCI IAM を用いた認証 ユーザーやグループをOCI IAM側で集中管理 • ユーザーやグループを OCI IAM で集中管理

    • OCI IAM の資格情報を使用して OCI Database Service へ接続する • OCI IAM ポリシーが追加の認可として機能 • 接続方式は2つ • IAM トークン • IAM DBパスワード • 対応環境 ※ • Autonomous AI Database(Serverless, Dedicated, Cloud@Customer) • Exadata Database Service(Dedicated, Exacales, Cloud@Customer) • Base Database Service 資格情報を発行 OCI IAM ※ OCI 環境のみ 54 Copyright © 2026, Oracle and/or its affiliates アクセス
  46. OCI IAM を用いた認証 併用可能な2つの接続方式 IAM データベース・パスワード IAM トークン • データベースには

    ユーザー名とパスワード を提示 • OCIの資格情報を使用してトークンを取得し、 データベースに提示することで接続 • 既存ツールを大きく変えずに IAM 統合 • 例:APIキー、インスタンスプリンシパルなど • OCI Functions やコンピュート、OKE などOCIサービスは プリンシパル認証を使用することでクレデンシャルなしの DBアクセスが可能 トークンの要求 OCI IAM トークンを発行 ※ 非Default ドメインの場合、ユーザー名は ‘<domain>/<user>’ になります 55 Copyright © 2026, Oracle and/or its affiliates トークンを提示して アクセス
  47. Oracle Database Client からトークンを取得する JDBC Thin ドライバー / ODP.NET •

    一部のDBクライアントではEntra ID / OCI IAM のトークン認証をサポートし、アプリに組み込みやすく • ODP.NET • managed/core バージョン23 よりトークンの自動取得取得および管理をサポート • JDBC Thin + ojdbc-extensions • 拡張機能により、Azure / OCI の config provider・token provider が利用可能 • SQLcl • SDKをインストールすることで、依存関係含めたソフトウェアを簡単に導入 Entra ID 参考: SQL Developer 56 Copyright © 2026, Oracle and/or its affiliates • Release 26 JDBC開発者ガイド – 10 JDBCサービス・プロバイダ拡張機能 • Release 26 Oracle Data Provider for .NET開発者ガイド - 20 Oracle Data Provider for .NETの Microsoft Entra IDクラス • GitHub - oracle/ojdbc-extensions • A-Team Chronicles - Seamless authentication to the Oracle Database with SQLDeveloper, 23ai JDBC drivers and an OCI Identity Domain • Developers Blogs - 23c JDBC seamless authentication with OCI IAM and Azure AD
  48. Oracle Database 認証機能まとめ Oracle Database のサポートする3タイプの認証方式 ✓ パスワード認証 • データベースに作成されたユーザー名とパスワードを使ってログインする、最も基本的な方式

    • 必要に応じて多要素認証を設定し、認証を強化 ✓ 外部認証 • データベース外の仕組みで認証された利用者を Oracle Database が受け入れる方式 • データベース側で個別のパスワード管理を低減 ✓ グローバル認証 • クラウドIDプロバイダなどでユーザー状況を一元管理する方式 • 認証強化及び複数データベースにまたがるユーザー管理を企業の中で統一化しやすい 58 Copyright © 2026, Oracle and/or its affiliates
  49. Oracle Database 26ai FREE でセキュリティ機能を試す 26ai FREE では従来の無償版 XE では使えなかった機能含め、セキュリティの機能の多くが解放されており、

    簡単にお試しいただくことが可能です • Deep Data Security • Data Redaction • Oracle Label Security • Virtual Private Vault • Database Vault • SQL Firewall • ファイングレイン監査 …など その他 FREE で使用できる機能は以下リンクよりご確認いただけます。 https://apex.oracle.com/database-features/ また、簡単試していただくためのデモ手順を以下サイトで公開しています。ご興味がありましたら是非ご覧ください。 https://koin3z.github.io/dbsec-tutorials/ 59 Copyright © 2026, Oracle and/or its affiliates
  50. 事前定義プロファイル Base Database Service 26ai の場合 制限 RESOURCE_TYPE DEFAULT ORA_CIS_PROFILE

    ORA_STIG_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD 10 5 3 PASSWORD_GRACE_TIME PASSWORD 7 5 0 PASSWORD_LIFE_TIME PASSWORD 180 90 35 PASSWORD_LOCK_TIME PASSWORD 1 1 UNLIMITED PASSWORD_REUSE_MAX PASSWORD UNLIMITED 20 5 PASSWORD_REUSE_TIME PASSWORD UNLIMITED 365 175 INACTIVE_ACCOUNT_TIME PASSWORD UNLIMITED 120 35 PASSWORD_VERIFY_FUNCTION PASSWORD NULL ORA12C_VERIFY_FUNCTION ORA12C_STIG_VERIFY_FUNCTION PASSWORD_ROLLOVER_TIME PASSWORD 0 DEFAULT DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT 15 SESSIONS_PER_USER KERNEL UNLIMITED 10 DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT DEFAULT 61 Copyright © 2026, Oracle and/or its affiliates
  51. 事前定義プロファイル Autonomous AI Database 26ai の場合(1/3) 制限 RESOURCE_TYPE DEFAULT ORA_ADMIN_PROFILE

    ORA_PROTECTED_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD 10 UNLIMITED UNLIMITED PASSWORD_GRACE_TIME PASSWORD 30 30 30 PASSWORD_LIFE_TIME PASSWORD 360 360 360 PASSWORD_LOCK_TIME PASSWORD 1 1 1 PASSWORD_REUSE_MAX PASSWORD 4 4 4 PASSWORD_REUSE_TIME PASSWORD 1 1 1 INACTIVE_ACCOUNT_TIME PASSWORD UNLIMITED DEFAULT DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CLOUD_VERIFY_FUNCTION CLOUD_VERIFY_FUNCTION CLOUD_VERIFY_FUNCTION PASSWORD_ROLLOVER_TIME PASSWORD 0 DEFAULT DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT DEFAULT 62 Copyright © 2026, Oracle and/or its affiliates
  52. 事前定義プロファイル Autonomous AI Database 26ai の場合(2/3) 制限 RESOURCE_TYPE ORA_CIS_PROFILE ORA_STIG_PROFILE

    FAILED_LOGIN_ATTEMPTS PASSWORD 5 3 PASSWORD_GRACE_TIME PASSWORD 5 0 PASSWORD_LIFE_TIME PASSWORD 90 35 PASSWORD_LOCK_TIME PASSWORD 1 UNLIMITED PASSWORD_REUSE_MAX PASSWORD 20 5 PASSWORD_REUSE_TIME PASSWORD 365 175 INACTIVE_ACCOUNT_TIME PASSWORD 120 35 PASSWORD_VERIFY_FUNCTION PASSWORD ORA12C_VERIFY_FUNCTION ORA12C_STIG_VERIFY_FUNCTION PASSWORD_ROLLOVER_TIME PASSWORD DEFAULT DEFAULT CONNECT_TIME KERNEL DEFAULT DEFAULT IDLE_TIME KERNEL DEFAULT 15 SESSIONS_PER_USER KERNEL 10 DEFAULT COMPOSITE_LIMIT KERNEL DEFAULT DEFAULT CPU_PER_SESSION KERNEL DEFAULT DEFAULT CPU_PER_CALL KERNEL DEFAULT DEFAULT LOGICAL_READS_PER_SESSION KERNEL DEFAULT DEFAULT LOGICAL_READS_PER_CALL KERNEL DEFAULT DEFAULT PRIVATE_SGA KERNEL DEFAULT DEFAULT 63 Copyright © 2026, Oracle and/or its affiliates
  53. 事前定義プロファイル Autonomous AI Database 26ai の場合(3/3) 制限 RESOURCE_TYPE ORA_EXTAPP_PROFILE ORA_APP_PROFILE

    FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED UNLIMITED PASSWORD_GRACE_TIME PASSWORD 30 60 PASSWORD_LIFE_TIME PASSWORD 360 1 PASSWORD_LOCK_TIME PASSWORD 1 1 PASSWORD_REUSE_MAX PASSWORD 1 UNLIMITED PASSWORD_REUSE_TIME PASSWORD 4 UNLIMITED INACTIVE_ACCOUNT_TIME PASSWORD DEFAULT DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD FROM ROOT FROM ROOT PASSWORD_ROLLOVER_TIME PASSWORD 7 60 CONNECT_TIME KERNEL DEFAULT DEFAULT IDLE_TIME KERNEL DEFAULT DEFAULT SESSIONS_PER_USER KERNEL DEFAULT DEFAULT COMPOSITE_LIMIT KERNEL DEFAULT DEFAULT CPU_PER_SESSION KERNEL DEFAULT DEFAULT CPU_PER_CALL KERNEL DEFAULT DEFAULT LOGICAL_READS_PER_SESSION KERNEL DEFAULT DEFAULT LOGICAL_READS_PER_CALL KERNEL DEFAULT DEFAULT PRIVATE_SGA KERNEL DEFAULT DEFAULT 64 Copyright © 2026, Oracle and/or its affiliates ORA_MANDATORY_PROFILE ORA_MANDATORY_PROFILE_GOV 30 30 FROM ROOT FROM ROOT