Slide 1

Slide 1 text

【基本】Oracle Database データベース・ユーザー・セキュリティ⼊⾨ ⼩⽥ 奈菜⼦ ⽇本オラクル株式会社 2024年6⽉11⽇

Slide 2

Slide 2 text

はじめに Copyright © 2024, Oracle and/or its affiliates 2 近年、データベースにますます⾼い安全性が求められています データベースはセキュアに構成されている必要があります データベースには⾮常に重要な情報が格納されています(クレジットカード情報など) 情報漏洩をはじめとするセキュリティ・インシデントが話題となっています。 データベースでのセキュアな構成例として以下の設定が挙げられます。 • セキュリティ・インシデントに対応できる⾼度なセキュリティ設定 • 悪意のある処理を抑⽌するための監査やログの保存

Slide 3

Slide 3 text

セキュリティを⾼めるための基本的な設定をできるようになる データベース・システムでセキュリティを⾼めるために知っておくべきことを、以下の4つの観点で解説します。 本セッションのゴール Copyright © 2024, Oracle and/or its affiliates 3 1. 2. 3. 4. データベース・ユーザー認証の基本 権限とロール認可 権限分析の実⾏による権限使⽤の特定 データベース・ユーザーのさまざまな認証と認可

Slide 4

Slide 4 text

Copyright © 2024, Oracle and/or its affiliates 4 データベース・ユーザー認証の基本

Slide 5

Slide 5 text

Oracleデータベースへのログインに使⽤できるアカウント セキュリティを⾼めるためにデータベース管理者は、ユーザー・アカウントを適切に作成・管理する必要があります。 データベース・ユーザーとは Copyright © 2024, Oracle and/or its affiliates 5 データベース・ユーザー クライアント SQL>connect <ユーザー名>/<パスワード> データベースに登録された データベース・ユーザーで接続 【参考】 代表的なOracle Databaseインストール時にデフォルト作成されるユーザー例 ユーザ名 詳細 SYS データベースの起動停⽌を含むすべての処理を実⾏でき、 データベースの管理情報(データ・ディクショナリ)を所有するユーザー SYSTEM データベース起動中のほとんどの処理を実⾏できる管理ユーザー SYSBACKUP,SYSDG,SYSKM,SYSRAC データベース管理者の業務の分離を容易化するためのユーザー セキュリティ・ガイド: 2.6 Oracle Databaseから提供される事前定義済のスキーマ・ユーザー・アカウント

Slide 6

Slide 6 text

マルチテナント・アーキテクチャ(MTA)におけるユーザー 共通ユーザー • 各コンテナ(ルートと各 PDB) に同じ名前で存在するユーザー • 共通ユーザーはCDB$ROOTへ接続して作成します。 • 初期化パラメータ common_user_prefix で接頭辞を定義可能 デフォルトは C## ローカル・ユーザー • 特定の PDB のみに存在するユーザー (重複可能) • ローカル・ユーザーはそれぞれのPDBへ接続して作成します。 • PDB個別の管理ユーザも含まれます。 データベース・ユーザー Copyright © 2024, Oracle and/or its affiliates 6 SYS/SYSTEM は 特殊な共通ユーザ ローカル・ユーザー 共通ユーザー 重複 可能 SCOTT SCOTT ※ アプリケーション共通ユーザーについては以下のマニュアル記述をご確認ください Oracle Multitenant管理者ガイド: CDBの共通ユーザーおよびローカル・ユーザーの概要

Slide 7

Slide 7 text

ユーザーがデータベースにログインする時に「ユーザーが誰か」を特定 Oracle Databaseには次の認証⽅法が⽤意されています。 • データベースによるパスワード認証︓ログイン時にパスワードを⼊⼒ • ユーザー作成時にパスワードを指定 • 外部認証︓OSまたはネットワークシステムを利⽤ • グローバル認証︓ディレクトリ・サービスを利⽤ データベース・ユーザーの認証 Copyright © 2024, Oracle and/or its affiliates 7 Who am I? It’s me! 認証 ︖ SQL> CREATE USER psmith IDENTIFIED BY <パスワード>;

Slide 8

Slide 8 text

• ユーザー・アカウント※の ステータス確認 • ユーザー・アカウント※の ロック/ロック解除 • データベース管理者による パスワードの変更 • プロファイルの設定 • パスワードに関する制限設定と ユーザー・アカウントへの割当て • パスワード管理ポリシー設定 • パスワード⻑ • ⽂字種別 データベース管理者によるデータベース・ユーザーの認証管理 Copyright © 2024, Oracle and/or its affiliates 8 不要なユーザーの確認と制限 パスワードの変更 認証に関する制限設定 ※ マニュアルでは、データベース・ユーザーの認証に関する 説明において「データベース・ユーザー」と同じ意味で 「ユーザー・アカウント」という⽤語をつかうことがあります OPEN LOCKED EXPIRED

Slide 9

Slide 9 text

sqlplus / AS SYSDBA [oracle@dbase ~] sqlplus / AS SYSDBA SQL*Plus: Release 19.0.0.0.0 – Production on Tue Mar 5 03:36:34 2024 Version 19.22.0.0.0 Copyright (c) 1982, 2023, Oracle. All right reserved. Connected to: Oracle Database 19c EE High Perf Release 19.0.0.0.0 – Production Version 19.22.0.0.0 ユーザーの管理を⾏う際は、管理者権限を持つユーザーでログインする必要があります 管理者権限でのログイン Copyright © 2024, Oracle and/or its affiliates 9 • SQL*Plusでデータベースに接続。 • SYSDBA権限をOS認証で利⽤する場合、 ユーザー名とパスワードを省略できます。 • SYSでログインします。 • 現在データベースに接続しているユーザーを表⽰します。 SQL> SHOW USER; USER is "SYS" SHOW USER; 【参考】 通常のSQL*Plusの利⽤ sqlplus <ユーザー名>/<パスワード>@<サービス名>

Slide 10

Slide 10 text

SQL> DESC DBA_USERS; Name Null Type --------------------------- -------- ------------------------- USERNAME NOT NULL VARCHAR2(128) USER_ID NOT NULL NUMBER PASSWORD VARCHAR2(4000) ACCOUNT_STATUS NOT NULL VARCHAR2(32) LOCK_DATE DATE … … … DBA_USERSビューはデータベースのすべてのデータベース・ユーザーの情報を提供 データベース・ユーザー情報 Copyright © 2024, Oracle and/or its affiliates 10 DBA_USERSビューによって、ユーザー名(USER_NAME)、 ユーザーID(USER_ID)、アカウントのステータス (ACCOUNT_STATUS)など、ユーザーの詳細情報を確認 することができます。 OPEN アカウントはロックされていません。 ACCOUNT_STATUS LOCKED アカウントはロックされています。 EXPIRED パスワードが期限切れです。 DBA_USERSビュー SQL> SELECT USER_NAME, ACCOUNT_STATUS FROM DBA_USERS; USERNAME ACCOUNT_STATUS --------------------------- --------------------------- SYS OPEN SYSTEM OPEN XS$NULL EXPIRED & LOCKED LBACSYS LOCKED … …

Slide 11

Slide 11 text

不要なユーザーはロックしログインできないようにすることで、セキュリティが向上します • Oracle Databaseの作成時には、Oracle Databaseシステム管理権限アカウントという内部的作業をするユーザーや サンプル⽤のユーザーが作成されますが、多くのOracleシステム管理権限アカウントは不正アクセスを防ぐためにロックさ れています。 • セキュリティを向上させるために、必要性の無いユーザーはログインできないようにロックしておきましょう。 不要なユーザーを利⽤可能な状態にしない Copyright © 2024, Oracle and/or its affiliates 11 LOCKED 不要なユーザー 必要なユーザー セキュリティを向上 不正アクセスを防⽌ OPEN データベース・インストレーション・ガイド 19c for Linux: Oracle Databaseシステム権限アカウントおよびパスワード

Slide 12

Slide 12 text

SQL> ALTER USER TEST_USER ACCOUNT LOCK; User altered. SQL> SELECT USER_NAME, ACCOUNT_STATUS FROM DBA_USERS 2 WHERE USER_NAME = TEST_USER; USERNAME ACCOUNT_STATUS --------------------------- --------------------------- TEST_USER LOCKED ALTER USER <ユーザー名> ACCOUNT LOCK; / ALTER USER <ユーザー名> ACCOUNT UNLOCK; アカウントのロック / ロック解除 Copyright © 2024, Oracle and/or its affiliates 12 • ユーザーをロックしてログインできないようにします。 • ここではTEST_USERユーザーをロックしています。 SQL> ALTER USER TEST_USER ACCOUNT UNLOCK; User altered. SQL> SELECT USER_NAME, ACCOUNT_STATUS FROM DBA_USERS 2 WHERE USER_NAME = TEST_USER; USERNAME ACCOUNT_STATUS --------------------------- --------------------------- TEST_USER OPEN • ユーザーのロックを解除してログインできるようにします。 • ここではTEST_USERユーザーをロック解除しています。 ALTER USER <ユーザー名> ACCOUNT LOCK; ALTER USER <ユーザー名> ACCOUNT UNLOCK;

Slide 13

Slide 13 text

SQL> ALTER USER TEST_USER IDENTIFIED BY WelCome123#123#; User altered. ALTER USER <ユーザー名> IDENTIFIED BY <パスワード>; アカウントのパスワード変更 Copyright © 2024, Oracle and/or its affiliates 13 • ユーザーのパスワードを変更しています。 • ここではTEST_USERユーザーのパスワードを 「WelCome123#123#」に変更しています。 ALTER USER <ユーザー名> IDENTIFIED BY <パスワード>; 【参考】データベース管理者のパスワード データベース管理者はOracle Databaseインスタンスが起動していない場合でも管理操作をおこないます そのため、Oracle Databaseインスタンスの外部にパスワードを保持します SQL> SELECT * FROM V$PASSWORDFILE_INFO; FILE_NAME ------------------------------------------------------------ FORMAT IS_AS CON_ID ------ ----- ---------- /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwee1922 12 FALSE 0 セキュリティ・ガイド: 3.3 データベース管理者の認証 データベース・リファレンス: 8.111 V$PASSWORDFILE_INFO セキュリティ・ガイド: 2.3.4 SYSユーザー・パスワードの変更 セキュリティ・ガイド: 2.3.3 SYS以外のユーザー・パスワードの変更

Slide 14

Slide 14 text

ユーザーのデータベース・リソース制限とパスワード・パラメータをセットにしたもの プロファイルで以下を管理可能です。 • リソース使⽤量の制限 ※ • アカウント・ステータス及びパスワードの管理 プロファイルをユーザーに割り当てた場合、そのユーザーはプロファイルの制限を超えることはできません。 プロファイルとは Copyright © 2024, Oracle and/or its affiliates 14 データベースには「DEFAULT」という事前定義された プロファイルがあります。 ユーザー作成時にプロファイルを指定しなかった場合、 「DEFAULT」プロファイルが割り当てられます。 セキュリティ・ガイド: 2.4.4 プロファイルによるリソースの管理 SQL⾔語リファレンス: CREATE PROFILE ※ リソース制限はデータベース・リソース・マネージャ を使⽤をお勧めします 管理者ガイド: 27.1 Oracle Database Resource Managerについて

Slide 15

Slide 15 text

プロファイルによるアカウント・ステータスの変更およびパスワードの有効期限の管理 Copyright © 2024, Oracle and/or its affiliates 15 アカウント・ステータスの変更 • 特定のユーザーが、ある回数以上データベースの接続に失敗した 場合、そのユーザーをロックする設定ができます。 LOCKED 3回ログイン失敗! パスワードの有効期限の管理 • パスワードに有効期限を付けて、同じパスワードを使い続けないよう に設定できます。 Connect scott/tiger@xxx Connect scott/tiger@xxx

Slide 16

Slide 16 text

SQL> CREATE PROFILE TEST_PROF1 LIMIT FAILED_LOGIN_ATTEMPTS 3 -- ユーザー・アカウントがロックされる前に -- そのアカウントへのログインに連続して失敗できる回数 PASSWORD_LIFE_TIME 60 -- パスワードの存続⽇数 PASSWORD_REUSE_TIME 365 -- パスワードの使⽤期限切れ後、再利⽤可能になるまでの⽇数制限 PASSWORD_REUSE_MAX 5 -- パスワードの再使⽤に必要なパスワード変更回数 PASSWORD_LOCK_TIME 1 -- パスワードが指定回数連続失敗した際のアカウントがロックされる⽇数 PASSWORD_GRACE_TIME 7 -- パスワードの変更可能⽇数 INACTIVE_ACCOUNT_TIME 15 -- ユーザー・アカウントがロックされるまでの連続⾮ログイン⽇数の許容値 PASSWORD_ROLLOVER_TIME 1 -- 段階的なパスワード・ロールオーバー期間を設定 PASSWORD_VERIFY_FUNCTION ORA12C_STRONG_VERIFY_FUNCTION -- パスワード・ポリシー関数 ; Profile created. CREATE PROFILE⽂を使⽤すると、プロファイルを作成できます プロファイルの作成 Copyright © 2024, Oracle and/or its affiliates 16 • ユーザーのプロファイルを作成します。 • リソース使⽤量の制限やアカウント・ステータス およびパスワードの有効期限の管理が可能。 • ⼀部パラメータを抜粋して左に記載しています。 CREATE PROFILE <プロファイル名> LIMIT <制限名> <設定値> ...; SQL> ALTER USER TEST_USER PROFILE TEST_PROF1; User altered. • ユーザーにプロファイルを割り当てています。 • ここではTEST_PROF1というプロファイルを TEST_USERユーザーに割り当てています。 ALTER USER <ユーザー名> PROFILE <プロファイル名>; SQL⾔語リファレンス: CREATE PROFILE

Slide 17

Slide 17 text

パスワード管理ポリシー Copyright © 2024, Oracle and/or its affiliates 17 パスワードの複雑度をチェックするパスワード検証関数 • 上記のポリシー以外に、カスタム・パスワード・ポリシーを作成することができます。 • カスタム・パスワード・ポリシーでは、パスワード⻑、⽂字種別、前回のパスワードとの違いを、ユーザー独⾃に設定可能です。 • セキュリティを⾼めるためには、推測困難な複雑なパスワードを使⽤しましょう。 パスワード・ポリシー関数 パスワード⻑ ⽂字種別 前回のパスワードとの違い verify_function_11G 8 ⽂字以上 数字と英字をそれぞれ1つ以上 3 ⽂字以上 ora12c_verify_function 8 ⽂字以上 数字と英字と特殊⽂字をそれぞれ1つ以上 3 ⽂字以上 ora12c_strong_verify_function 9 ⽂字以上 数字と英⼤⽂字と英⼩⽂字と特殊⽂字を それぞれ2つ以上 4 ⽂字以上 ora12c_stig_verify_function 15 ⽂字以上 数字と英⼤⽂字と英⼩⽂字と特殊⽂字を それぞれ1つ以上 8 ⽂字以上 セキュリティ・ガイド: 3.2.6 パスワードの複雑度の管理

Slide 18

Slide 18 text

Copyright © 2024, Oracle and/or its affiliates 18 権限とロール認可

Slide 19

Slide 19 text

権限とロールによってユーザーのデータへのアクセスおよび実⾏可能なSQL⽂のタイプを制御 データベースで処理を⾏うための「権利」。 システム権限とオブジェクト権限の2つに分類されます。 権限とロール Copyright © 2024, Oracle and/or its affiliates 19 権限や他のロールをセットにして名前をつけたもの。 MTA構成の場合、共通ロールとローカル・ロールの2種類が存在します。 データベース内で特定の操作をするための権限 特定のオブジェクトへのアクセスを制御 権限 システム権限 オブジェクト権限 ロール CDBルートとCDB内の全PDBに存在 特定のPDBのみに存在 共通ロール ローカル・ロール CREATE TABLE権限 CREATE SESSION権限 SELECT権限 CREATE TABLE権限 CREATE SESSION権限 SELECT権限 独⾃のロール システム権限 オブジェクト権限 セキュリティ・ガイド: 4 権限とロール認可の構成

Slide 20

Slide 20 text

権限の付与 Copyright © 2024, Oracle and/or its affiliates 20 CREATE TABLE権限 1. ユーザーに対して権限を付与 2. 権限をロールに付与、そのロールをユーザーに付与 ロールを利⽤すると、⼀括して権限の管理を⾏えるため効率的です。 付与したい権限をユーザーに直接付与します。 CREATE TABLE権限 CREATE SESSION権限 SELECT権限 独⾃のロール

Slide 21

Slide 21 text

-- ローカル・ユーザーTEST_USERにCREATE VIEW権限を付与します。 SQL> GRANT CREATE VIEW TO TEST_USER CONTAINER=CURRENT; Grant succeeded. 権限とロールのGRANT⽂による付与とREVOKE⽂による取り消し 権限とロールの付与 / 取り消し Copyright © 2024, Oracle and/or its affiliates 21 • ユーザーに権限を割り当てています。 • オブジェクト権限を付与する場合はon <オブジェクト>句でオブジェクトを指定 する必要があります。 • 権限・ロールを全コンテナに共通で付与する場合、CONTAINER=ALL句を 指定します。CDBルートで共通ユーザーに対してのみ実⾏可能です。 • 権限・ロールを特定のPDBにローカルで付与する場合、 CONTAINER=CURRENT句を指定します。PDBではローカルにのみ付与可 能です。 • CONTAINER句を省略した場合、デフォルトで権限・ロールはローカルに付与 されます。 GRANT <権限> (on <オブジェクト> ) to <ユーザー名>; -- ローカル・ユーザーTEST_USERからCREATE VIEW権限を取り消します。 SQL> REVOKE CREATE VIEW FROM TEST_USER CONTAINER=CURRENT; Revoke succeeded. • ユーザーに付与された権限を取り消ししています。 • オブジェクト権限を取り消しする場合はon <オブジェクト>句でオブジェクトを指定 する必要があります。 • CONTAINER句について、権限・ロールを付与するGRANT⽂と同様の特徴を 持ちます。 REVOKE <権限> (on <オブジェクト> ) from <ユーザー名>; -- 共通ユーザーC##TEST_USERにCREATE VIEW権限を付与します。 SQL> GRANT CREATE SESSION TO C##TEST_USER CONTAINER=ALL; Grant succeeded. -- 共通ユーザーC##TEST_USERからCREATE VIEW権限を取り消します。 SQL> REVOKE CREATE SESSION FROM C##TEST_USER CONTAINER=ALL; Revoke succeeded.

Slide 22

Slide 22 text

あるシステム権限が付与されているユーザーは、他のユーザーにそのシステム権限を付与可能。 OPTIONが指定されている権限について Copyright © 2024, Oracle and/or its affiliates 22 DBA USER1 USER2 CREATE TABLE権限 GRANT CREATE TABLE TO USER1 WITH ADMIN OPTION; GRANT CREATE TABLE TO USER2; WITH ADMIN OPTION句 WITH GRANT OPTION句 あるオブジェクト権限が付与されているユーザーは、他のユーザーにオブジェクト権限を付与可能。 CREATE TABLE権限 WITH ADMIN OPTION句を 持つので、他のユーザーへ CREATE TABLE権限が 付与可能

Slide 23

Slide 23 text

CREATE ROLE <ロール名>; SQL> CREATE ROLE TEST_ROLE1; Role created. CREATE ROLE⽂を使⽤することでロールを作成 ロールの作成と権限の割り当て、ユーザーへの付与 Copyright © 2024, Oracle and/or its affiliates 23 • ロールを作成します。 • ここでは、test_role1というロールを作成しています。 • ユーザー作成の共通ロールの場合、共通ロールの名前の先頭に「C##」を 追加します。 SQL> GRANT CREATE SESSION to TEST_ROLE1; Grant succeeded. SQL> GRANT TEST_ROLE1 TO TEST_USER; Grant succeeded. • 権限をロールに付与します。 • ここでは、test_role1というロールにCREATE SESSION権限を付与しています。 • ロールをユーザーに付与します。 • ここでは、test_role1というロールをTEST_USERユーザーへ付与しています。 GRANT <権限>もしくは<ロール> to <ロール名>; GRANT <ロール名> to <ユーザー名>;

Slide 24

Slide 24 text

• PUBLICロールへの権限付与は、全てのユーザーへ影響を与えるので⼗分に注意を払い、必要最低限の権限とすべきです。 • 権限を取り消す場合、PUBLICロールから取り消す必要があります。 【参考】USER_TABLEビュー • USER_TABLESビューはPUBLICロールに対して参照権限が付与されています • USER_TABLESビューと同じ名前のパブリック・シノニムが作成されています。パブリック・シノニムにはすべてのユーザーが USER_TABLESのオーナがSYSであることを意識せずに⾃⾝のオブジェクトであるかのようにアクセスできます。 • すべてのユーザーはパブリック・シノニム経由でUSER_TABLESビューにアクセスし、PUBLICロールに付与された権限により 参照できるようになっています。 PUBLICロールに権限を付与することですべてのユーザーがその権限を使⽤可能 PUBLICロールに付与された権限、ロールについて Copyright © 2024, Oracle and/or its affiliates 24 USER_TABLES (パブリック・シノニム) すべてのユーザー PUBLIC (ロール) SYS USER_TABLES (ビュー) PUBLIC (ロール) 参照権限 シノニム(別名) 【条件絞り込み】 ログイン・セッションのユーザー情報で ⾃⾝がオーナーの表の情報のみ参照 セキュリティ・ガイド: 4.5.5 ANY権限とPUBLICロールについて

Slide 25

Slide 25 text

Copyright © 2024, Oracle and/or its affiliates 25 権限分析の実⾏による権限使⽤の特定

Slide 26

Slide 26 text

不要な権限がユーザーに付与されていないか確認 権限分析とは Copyright © 2024, Oracle and/or its affiliates 26 データベース全体 権限分析の対象 ロール 指定されたロールが付与されたユーザー コンテキスト コンテキストで作成した評価式が TRUEに評価された場合 ロールとコンテキスト 指定されたロールが付与されており、 かつ、コンテキストで作成した評価式が TRUEに評価された場合 使⽤済み/未使⽤の権限の特定 データ・ディクショナリー・ビューへの書き込み 使⽤済み権限 未使⽤権限 SYSユーザー以外の全ユーザー DBAは権限分析の結果より、不必要な権限を削除 未使⽤権限 コンテキストで作成した評価式: ここではSYS_CONTEXTで取得する、現⾏のインスタンスのコンテキストに関連付けられたパラメータの値を評価しま す 例) SYS_CONTEXT ('USERENV', 'OS_USER') IN ('psmith', 'jrawlins') セキュリティ・ガイド: 5 権限分析の実⾏による権限使⽤の特定

Slide 27

Slide 27 text

権限分析の実⾏⼿順 SQL> begin #権限分析ポリシーの作成 DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE ( name => 'test_capture', #権限ポリシーの任意の名前 description => 'Test Capture', #ポリシーの説明(省略可能) type => DBMS_PRIVILEGE_CAPTURE.G_DATABASE #権限ポリシーのタイプ ); end; / SQL> begin #権限分析ポリシーの有効化 DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE( name => 'test_capture', #権限ポリシーの任意の名前 run_name => 'RUN_FOR_TEST', #権限分析の任意の実⾏名 ); end; / • DBMS_PRIVILEGE_CAPTURE. CREATE_CAPTUREプロシージャを実⾏し、 権限分析ポリシーを作成します。 DBMS_PRIVILEGE_CAPTURE. CREATE_CAPTURE • DBMS_PRIVILEGE_CAPTURE. ENABLE_CAPTUREプロシージャを実⾏し、 作成したポリシーを有効化します。 • キャプチャが開始します。 DBMS_PRIVILEGE_CAPTURE. ENABLE_CAPTURE 1 2 Copyright © 2024, Oracle and/or its affiliates 27

Slide 28

Slide 28 text

権限分析の実⾏⼿順 Copyright © 2024, Oracle and/or its affiliates 28 SQL>begin #権限分析ポリシーの無効化 DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ( name => 'test_capture', #権限ポリシーの任意の名前 ); end; / • DBMS_PRIVILEGE_CAPTURE.DISA BLE_CAPTUREプロシージャを実⾏し、 権限分析ポリシーを無効化します。 • キャプチャが終了します。 DBMS_PRIVILEGE_CAPTURE. DISABLE_CAPTURE 権限分析の対象となる アプリケーションの実⾏ 3 4

Slide 29

Slide 29 text

権限分析の実⾏⼿順 SQL>SELECT SYS_PRIV, #システム権限 OBJ_PRIV, #オブジェクト権限 OBJECT_NAME #オブジェクト権限で使⽤されたオブジェクト名 FROM DBA_USED_PRIVS #使⽤済み権限が格納されたディクショナリー・ビュー WHERE USERNAME = 'TEST_USER' AND CAPTURE = 'test_capture' AND RUN_NAME = 'RUN_FOR_TEST' ; SYS_PRIV OBJ_PRIV OBJECT_NAME --------------- --------------- --------------- CREATE ANY TABLE SELECT EMP SELECT DEPT SQL> SELECT SYS_PRIV , #システム権限 OBJ_PRIV , #オブジェクト権限 OBJECT_NAME #オブジェクト権限で使⽤されたオブジェクト名 FROM DBA_ UNUSED_PRIVS #未使⽤権限が格納されたディクショナリー・ビュー WHERE USERNAME = 'TEST_USER' AND CAPTURE = 'test_capture' AND RUN_NAME = 'RUN_FOR_TEST' ; SYS_PRIV OBJ_PRIV OBJECT_NAME --------------- --------------- --------------- CREATE ANY VIEW SELECT HR • 使⽤中の権限は、ディクショナリー・ビューの DBA_USED_PRIVSより確認することができま す。 • 格納されたレポートはポリシーの削除を⾏うま で格納されます。 • DBAはレポート結果を⾒て、不要な権限を削 除します。 DBA_USED_PRIVS • 未使⽤権限は、ディクショナリー・ビューの DBA_UNUSED_PRIVSより確認する ことができます。 • 格納されたレポートはポリシーの削除を⾏ うまで格納されます。 • DBAはレポート結果を⾒て、不要な権限 を削除します。 DBA_UNUSED_PRIVS 5 6 Copyright © 2024, Oracle and/or its affiliates 29 セキュリティ・ガイド: 5.6 権限分析ポリシーおよびレポート・データ・ディクショナリ・ビュー

Slide 30

Slide 30 text

Copyright © 2024, Oracle and/or its affiliates 30 データベース・ユーザーのさまざまな認証と認可

Slide 31

Slide 31 text

業務で必要なスキーマ・オブジェクトの管理を複数の担当者が管理します。 • 複数の担当者によるパスワードの共⽤はセキュリティ上のリスク スキーマ・オブジェクトの運⽤管理とセキュリティ Copyright © 2024, Oracle and/or its affiliates 31 sales_user sales_role 担当者A 担当者B 部外者 パスワード パスワード 漏 洩

Slide 32

Slide 32 text

プロキシ・ユーザー・アカウント経由での接続 • 担当者⾃⾝の管理するユーザー・アカウント経由で接続 • パスワードは担当者⾃⾝で個別管理 プロキシ・ユーザー・アカウントおよびプロキシ・ユーザー・アカウントを介した接続の認可 Copyright © 2024, Oracle and/or its affiliates 32 sales_user sales_role 担当者A (psmith) 担当者B(susan) psmith susan psmith_role susan_role ※ 担当者毎に特定のロールのみを利⽤させるように 設定可能 ※

Slide 33

Slide 33 text

プロキシ・ユーザー・アカウントおよびプロキシ・ユーザー・アカウントを介した接続の認可 Copyright © 2024, Oracle and/or its affiliates 33 CREATE USER psmith IDENTIFIED BY WelCome1234__; GRANT CREATE SESSION TO psmith; ALTER USER sales_user GRANT CONNECT THROUGH psmith; ALTER USER sales_user GRANT CONNECT THROUGH psmith WITH ROLE sales_role; • プロキシ・ユーザー・アカウントは 通常のユーザー・アカウントと同様。 • 最⼩限(CREATE SESSIONのみ)の権限 を付与します。 CREATE ROLE sales_role; GRANT CONNECT,RESOURCE TO sales_role; CREATE USER sales_user NO AUTHENTICATION; GRANT sales_role TO sales_user; • 業務で使う表を保持するユーザ (業務ユーザー)とロール(業務ロール)を 作成します。 • スキーマ限定アカウント(オブジェクトを所 有するだけのログインできないアカウント)と して作成します。(18c以降) • 業務ユーザーに対し、プロキシ・ユーザー・ アカウント経由での接続を許可 (デフォルトはWITH ROLE ALL) • 業務ユーザーに対し、プロキシ・ユーザー・ アカウント経由での接続を許可 (業務ロール権限のみに制限) セキュリティ・ガイド: 3.5 スキーマ限定アカウント 3.13.1.5 プロキシ・ユーザー・アカウントの作成と、作成したプロキシ・ユーザー・アカウントを介したユーザー接続の認可

Slide 34

Slide 34 text

Oracle上のユーザーのパスワード管理とユーザー認証を外部サービスにて実施する認証 外部認証: データベースによるパスワード認証以外の認証(1) Copyright © 2024, Oracle and/or its affiliates 34 • 既にOSやドメインで認証されている必要があります。 • マルチテナント環境において基本的には利⽤しません。 ネットワーク認証 • ネットワーク・サービスとして、RADIUS、 SSL、Kerberos、 Windowsネイティブ認証などが挙げられます。 • sqlnet.oraのSQLNET.AUTHENTICATION_SERVICES パラメータで認証⽅法を指定します。 DBログイン 認証を委託 外部認証では、ユーザー名/パスワードを指定せずにデータベースに接続することができます。 OS認証 OSログイン DBログイン My Oracle Supportドキュメント: How To Connect to PDB By OS Authentication In 19c Container Database Environment (Doc ID 2729416.1) SQL> CREATE USER psmith IDENTIFIED EXTERNALLY;

Slide 35

Slide 35 text

ユーザー関連情報をディレクトリ・サービスにて⼀元管理 ユーザーと権限を全社規模で集中管理します。 個別のユーザーごとに各データベースにデータベース・アカウントを作成する必要がありません。 グローバル認証: データベースによるパスワード認証以外の認証(2) Copyright © 2024, Oracle and/or its affiliates 35 DB接続 ユーザーと権限の集中管理 Oracle Internet Directory、 Microsoft Active Directory、 Entra ID(Azure AD)、OCI IAM • ユーザーおよび管理者はデータベース 内でグローバル・ユーザーとして識別 SQL> CREATE USER psmith IDENTIFIED GLOBALLY AS '認証⽅式';

Slide 36

Slide 36 text

グローバル・ユーザー • ディレクトリ・サービス上のユーザーやグループにマッピング される、Oracle Database上に作成されるユーザー • ディレクトリ・サービスで認証されたユーザーがデータベースに ログインすると、このユーザーでログインすることになります。 • グローバル・ユーザーがディレクトリ・サービスのグループに マッピングされた場合、そのグループに所属するユーザーはすべて 同じグローバル・ユーザーとしてデータベースに接続します。 グローバル・ロール • ディレクトリ・サービス上のグループにマッピングされる、 Oracle Database上に作成されるロール • グローバル・ロールは通常のロールと同様、システム権限、 オブジェクト権限、他のロールを含む(GRANT)ことができます。 • グローバル・ロールがマッピングされたディレクトリ・サービスのグ ループのメンバーがデータベースにログインした場合、グローバル・ ロールに含まれる権限が利⽤可能となります。 • 同じグローバル・ユーザーに割り当てられても、利⽤者ごとに権限が 異なります。 グローバル・ユーザーとグローバル・ロール Copyright © 2024, Oracle and/or its affiliates 36 CREATE USER widget_sales IDENTIFIED GLOBALLY AS 'CN=widget_sales_group, OU=sales,DC=production, DC=examplecorp,DC=com'; CREATE ROLE widget_sales_role IDENTIFIED GLOBALLY AS 'CN=widget_sales_group, OU=sales,DC=production, DC=examplecorp,DC=com'; user1 user1 user2 user3 group1 user2 ディレクトリ・サービス Oracle Database グローバル・ユーザー ユーザー グループ user2 user3 group1 user2 ディレクトリ・サービス Oracle Database グローバル・ ユーザー ユーザー グループ role1 role2 group2 group3 グローバル・ ロール

Slide 37

Slide 37 text

エンタープライズ・ユーザー・セキュリティとMicrosoft Active Directoryによる集中管理ユーザー エンタープライズ・ユーザー・セキュリティ(EUS) • Oracle8i〜 • Enterprise Edition機能 • 認証⽅式 • パスワード、Kerberos、PKI証明書 • Oracle Identity Management Directory Services Plusライセンスが別途必要 • Oracle Internet Directory(OID)を別途構築 Microsoft Active Directoryによる集中管理ユーザー (Centrally Managed Users: CMU) • Oracle Database 18.1〜 • Enterprise Edition機能 • 認証⽅式 • パスワード、Kerberos、PKI証明書 • Microsoft Active Directory(AD)に、 データベース・ユーザーの認証と認可を統合 • EUSにくらべてシンプルな構成 グローバル・ユーザーとして利⽤可能な仕組み(1) Copyright © 2024, Oracle and/or its affiliates 37 エンタープライズ・ユーザー・セキュリティ・ガイド: 5.5 エンタープライズ・ドメインの管理 セキュリティ・ガイド: 6 Microsoft Active Directoryによる集中管理ユーザーの構成 user2 user1 role_a role2 Oracle Internet Directory Oracle Database エンタープライズ・ ユーザー user1 role1 グローバル・ ロール グローバル・ ユーザー エンタープライズ・ ロール Domain エンタープライズ・ ドメイン user1 group1 Active Directory Oracle Database ユーザー グループ user2 user3 group2 user1 role1 グローバル・ ロール グローバル・ ユーザー user2 排他マッピング(1:1) 共有マッピング(n:1)

Slide 38

Slide 38 text

OAuth2トークンによるOracle Databaseの認証と認可 OCI IAM Identity DomainsおよびEntra ID(Azure AD) による統合的なユーザー管理 • Oracle Databaseのグローバル・ユーザおよびグローバル・ ロールとのマッピングの考え⽅は、CMUと同様。 • 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のみ) OAuth2トークンによるOracle Databaseの認証と認可 グローバル・ユーザーとして利⽤可能な仕組み(2) Copyright © 2024, Oracle and/or its affiliates 38 セキュリティ・ガイド: 7 Oracle DBaaSデータベースに対するIAMユーザーの認証と認可 8 Oracle DatabaseのMicrosoft Azure Active Directoryユーザーの認証および認可 user1 group1 OCI IAM / Entra ID Oracle Database ユーザー グループ user2 user3 group2 user1 role1 グローバル・ ロール グローバル・ ユーザー user2 排他マッピング(1:1) 共有マッピング(n:1) OAuth2 token token ユーザー情報に アクセスするための アクセス権のリクエスト アクセストークンからユーザー情報 を取得してログイン OCI、Entra IDユーザー Oracle Databaseと IAM/Entra ID間の 通信はTLSにより 暗号化されセキュアに トークンを受け渡す Request Send OCI IAM / Entra ID(Azure AD) Blog記事: Oracle Databaseの外部認証 Oracle DatabaseのTLS暗号化を設定する OCI IAMとBaseDBのトークン・ベースの認証連携① OCI IAMとBaseDBのトークン・ベースの認証連携② OCI IAMとAutonomous Databaseのトークン・ベースの認証連携

Slide 39

Slide 39 text

Copyright © 2024, Oracle and/or its affiliates 39 まとめ

Slide 40

Slide 40 text

以下の4点によって、データベースへの悪意のあるアクセスや操作を防⽌し、セキュアに利⽤可能です。 まとめ Copyright © 2024, Oracle and/or its affiliates 40 1. 2. 3. 4. データベース・ユーザー認証の基本 権限とロール認可 権限分析の実⾏による権限使⽤の特定 データベース・ユーザーのさまざまな認証と認可 アカウント・ロックやプロファイルなどを利⽤し、セキュアなユーザー認証 権限やロールを利⽤して、ユーザーのデータのアクセスや操作を制御 権限分析によって、使われていない権限を明らかにするための仕組みを提供 多様な認証⽅法によって、皆さんのセキュリティ要件に最適化

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

中間層サーバを経由した接続においてプロキシ認証を利⽤できます。 • Oracle Call Interface(OCI)、JDBC/OCIまたはJDBC-thinドライバを利⽤することで利⽤可能です。 • プロキシ認証を使⽤すると、中間層アプリケーションのすべての層を通じてクライアント識別情報と権限が保持され、 クライアントのアクションが監査されます。 【参考】中間層サーバーにおけるプロキシ認証 Copyright © 2024, Oracle and/or its affiliates 42 user1 group1 ディレクトリ・サービス Oracle Database ユーザー グループ user2 user3 group2 proxy_user role1 グローバル・ ロール グローバル・ ユーザー sales_user 業務⽤ ユーザー APサーバー Wallet Wallet Wallet user1 接続プール セキュリティ・ガイド: 3.11 複数層の認証と認可 JDBC開発者ガイド: 10 プロキシ認証