Oracle Database Technology Night
~
集え!オラクルの力(チカラ)
~
Oracle Database 18c テクノロジーシリーズ 3
「Cluster Health Advisor と Security の機能強化」
~ DB Security ~
日本オラクル株式会社
ソリューション・エンジニアリング統括
クラウド・プラットフォーム本部
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
•
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明する
ものです。また、情報提供を唯一の目的とするものであり、いかなる契約
にも組み込むことはできません。以下の事項は、マテリアルやコード、機
能を提供することをコミットメント(確約)するものではないため、購買決定
を行う際の判断材料になさらないで下さい。オラクル製品に関して記載さ
れている機能の開発、リリースおよび時期については、弊社の裁量により
決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。アジェンダ
Oracle Databaseの変更点
Advanced Securityの変更点
Database Vaultの変更点
1 2 3Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Oracle Databaseの変更点
1.
スキーマ限定アカウント
2.
Active Directory Serviceとの連携
3.
統合監査証跡のSYSLOG、Windowsイベントビューアーへの出力
4.
Data Pumpを利用した統合監査証跡のエクスポート/インポート
4
1. スキーマ限定アカウント
•
オブジェクトを所有するだけのログインできないアカウント
•
オブジェクト所有者はオブジェクト自体の削除など強い権限を持つため、
利用時に接続ユーザーとして利用すべきではない
•
ログインできないのはロックをと同じだが、ログイン試行時の戻るエラーが
違う
–
スキーマ限定アカウント:
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
–
ロックされたユーザー:
ORA-28000: アカウントがロックされています。
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
•
利用方法
SQL> create user app1 no authentication; または
SQL> alter user app1 no authentication;
•
確認方法
SQL> select username, account_status, authentication_type, password_versions 2 from dba_users where username like 'APP%';
USERNAME ACCOUNT_STATUS AUTHENTICATION_TYPE PASSWORD_VERSIONS --- --- -- ---APP1 OPEN NONE
APP2 OPEN PASSWORD 11G 12C
2. Active Directoryとの連携
•
Active Directory(AD)にデータベースへの認証を移譲
•
3つの認証方式をサポート
–
パスワード認証
–
Kerberos認証
–
PKI(証明書)認証
$ sqlplus "18ctest¥user1"/Welcome1@orclpdbSQL*Plus: Release 18.0.0.0.0 Production on Thu Jun 21 15:07:30 2018 Version 18.1.0.0.0
Copyright (c) 1982, 2017, Oracle. All rights reserved.
Last Successful login time: Wed Jun 20 2018 13:25:56 +09:00 Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.1.0.0.0
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 8 Active Directory Oracle Database 1. データベースにADの認証情報で接続 2. ローカルユーザーでないことを 確認後、ADに認証情報が 正しいかを確認 3. 認証情報が正しいことを確認し、 ユーザーのDNと所属しているグループのDNを伝播 ※ DN: distinguish name、LDAPで利用するフォーマットの識別名 4. 戻ってきたDNに対応する DBユーザー (グローバルユーザー)で データベースに接続 ADのグループに対応する DBロール (グローバルロール)の 権限を付与 5. ログイン完了 $ sqlplus "18ctest¥user1"/Welcome1@orclpdb
SQL*Plus: Release 18.0.0.0.0 Production on Thu Jun 21 15:07:30 2018 Version 18.1.0.0.0
Copyright (c) 1982, 2017, Oracle. All rights reserved.
Last Successful login time: Wed Jun 20 2018 13:25:56 +09:00 Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.1.0.0.0
•
用語集
–
グローバルユーザー
• AD上のユーザーやグループにマッピングされる、Oracle Database上に作成されるユーザー • ADで認証されたユーザーがデータベースにログインするとこのユーザーでログインされる • グローバルユーザーがADのグループにマッピングされた場合、そのADのグループに所属するユー ザーはすべて同じグローバルユーザーとしてデータベースに接続される–
グローバルロール
• AD上のグループにマッピングされる、Oracle Database上に作成されるロール • グローバルロールには、通常のロールと同様にシステム権限、オブジェクト権限、ほかのロールを 含める(GRANTする)ことができる • グローバルロールがマッピングされたADのグループのメンバーがデータベースにログインした場合、 グローバルロールに含まれる権限が利用可能となる • ADで所属しているグループが異なれば、同じグローバルユーザーとしてデータベースにログインし てもことなるグローバルロールが付与され、結果実行できる操作が異なることもあるCopyright © 2018, Oracle and/or its affiliates. All rights reserved. | 10 Active Directory Oracle Database グローバルユーザー user1 adshared グローバルロール addba adresource dba resource
SELECT ANY TABLE 既存の権限やロール GRANT ユーザー グループ Users orclpdb_dba orclpdb_resource user1 user2 user3 MEMBER ADユーザーと グローバルユーザーの マッピング ADグループとグローバルユーザーの マッピング ADグループと グローバルロールの マッピング user1 user2 user3 user1 adshared adshared dba
SELECT ANY TABLE ログインユーザー ログインしたスキーマ 付与される権限
resource
•
AD接続の設定
1.
連携時の各種操作を実施するユーザーをAD上に作成
2.
パスワードフィルターのインストールとADのスキーマ拡張
3.
設定ファイル(dsi.ora)の作成
4.
SSL認証用の証明書の取得
5.
接続用キーストア(Wallet)の作成
6.
初期化パラメータの変更
•
接続用ユーザーの設定
1.
AD側の設定
2.
DB側の設定
「セキュリティガイド」マニュアルの該当項目は、日本語と英語で記載内容が異なります 日本語マニュアルの内容には誤りがあるので、詳しい手順は英語マニュアルを参照してくださいCopyright © 2018, Oracle and/or its affiliates. All rights reserved. |
AD接続の設定
1.
連携時の各種操作を実施するユーザーをAD上に作成
–
データベースに接続するユーザーに対する「読み取り(Read)」権限と「lockoutTimeの
書き込み(Write Lockout Time)」権限が必要
2.
パスワードフィルターのインストールとADのスキーマ拡張
–
$ORACLE_HOME/binの下にあるopwdintg.exeコマンドをADサーバーにコピーし実行
※ 現在、Windowsを英語環境にしないとコマンドが実行できない不具合があります
BUG 28174817 - EXTENDING AD SCHEMA BY OPWDINTG.EXE REQUIRES OS LANGUAGE SETTING BE ENGLISH
–
スキーマの拡張後にADの再起動が必要
3.
設定ファイル(dsi.ora)の作成
–
作成場所
• 非CDB環境及びCDBレベルで適用する場合には、以下の優先順位で検索(ldap.oraと同じ) 1. $LDAP_ADMIN環境変数で指定したディレクトリ 2. $ORACLE_HOME/ldap/adminディレクトリ 3. $TNS_ADMIN環境変数で指定したディレクトリ 4. $ORACLE_HOME/network/adminディレクトリ • PDB単位で指定する場合には、$ORACLE_BASE/admin/db_unique_name/pdb_guid/wallet–
記載内容
• DSI_DIRECTORY_SERVERS: 接続するADサーバー名とポートを記載 • DSI_DEFAULT_ADMIN_CONTEXT: ユーザーを検索するベースDNを指定• DSI_DIRECTORY_SERVER_TYPE: 「AD」を指定 DSI_DIRECTORY_SERVERS = (dve.18ctest.local:389:636)
DSI_DEFAULT_ADMIN_CONTEXT = "dc=18ctest,dc=local" DSI_DIRECTORY_SERVER_TYPE = AD
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
4.
SSL認証用の証明書の取得
–
ADと通信する際にSSL認証をおこなうため、ADの証明書を作成した認証局の証明書
(Active Directoryの認証局のルート証明書)を取得
• 今回の環境では、「CN=18ctest-DVE-CA,DC=18ctest,DC=local」というDNの証明書 ADの証明書(今回の環境では「CN=DVE,OU=Domain Controllers,DC=18ctest,DC=local」というDNの 証明書)ではないことに注意 145.
AD接続用キーストア(Wallet)の作成
–
作成場所
• 非CDB環境及びCDBレベルで適用する場合には、以下の優先順位で検索 1. sqlnet.oraファイルにWALLET_LOCATIONを指定している場合には、その場所 2. $ORACLE_BASE/admin/db_unique_name/wallet 3. $ORACLE_HOME/admin/db_unique_name/wallet • PDB単位で指定する場合には、$ORACLE_BASE/admin/db_unique_name/pdb_guid/wallet 以降の処理は上記ディレクトリに移動して実施します–
キーストアの作成
orapki wallet create -wallet . -auto_login
–
AD接続ユーザーの設定
mkstore -wrl . -createEntry ORACLE.SECURITY.USERNAME oracle 手順1.で作成したADのユーザー情報を指定します
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
–
AD接続ユーザーのDNの設定
mkstore -wrl . -createEntry ORACLE.SEUCIRY.DN cn=oracle,cn=Users,dc=18ctest,dc=local 手順1.で作成したADのユーザー情報を指定します
–
AD接続ユーザーのパスワードの設定
mkstore -wrl . -createEntry ORACLE.SECURITY.PASSWORD ※ コマンド実行中にパスワードを入力します
–
信頼できる証明書のインポート
orapki wallet add -wallet . -cert dve-cert.cer -trusted_cert -certには手順4.で取得した証明書のファイルを指定します
–
設定の確認
orapki wallet display -wallet . mkstore -wrl . -viewEntry ORACLE.SECURITY.USERNAME
$ orapki wallet display -wallet .
Oracle PKI Tool Release 18.0.0.0.0 - Production Version 18.1.0.0.0
Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved. Requested Certificates:
User Certificates:
Oracle Secret Store entries:
ORACLE.SECURITY.DN
ORACLE.SECURITY.PASSWORD ORACLE.SECURITY.USERNAME
Trusted Certificates:
Subject: CN=18ctest-DVE-CA,DC=18ctest,DC=local
$ mkstore -wrl . -viewEntry ORACLE.SECURITY.USERNAME
Oracle Secret Store Tool Release 18.0.0.0.0 - Production Version 18.1.0.0.0
Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved. Enter wallet password:
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
6.
初期化パラメータの変更
–
LDAP_DIRECTORY_ACCESS:
ディレクトリ接続時の認証方式を指定 (デフォルト値:NONE) AD連携時にはPASSWORDを指定 稼働中に変更可能 PDBごとに指定可能 (マニュアルではできないと誤記載) alter system set ldap_directory_access='password';–
LDAP_DIRECTORY_SYSAUTH:
LDAPで認証されるユーザーにSYSDBA、SYSOPER、SYSASM、SYSBACKUP、SYSDG、SYSKMなどの管理権 限が付与されているとき、管理者として接続させるかどうかを指定 (デフォルト値:no) ADで認証するユーザーに管理者として接続を許可する場合はyesに変更 変更には再起動(PDBのCLOSE/OPEN)が必要 PDBごとに指定可能 (マニュアルではできないと誤記載) alter system set ldap_directory_sysauth='yes' scope=spfile;接続用ユーザーの設定
1.
AD側の設定
–
Oracle Databaseの認証方式に対応するために以下のグループにユーザーを追加
• ORA_VFR_12C:12cのパスワードベリファイア(SHA-512)を保持します • ORA_VFR_11G: 11gのパスワードベリファイア(SHA-1)を保持します • ORA_VFR_MD5: WebDAVクライアントのパスワードベリファイア(MD5)を保持します–
パスワードベリファイアを作成するために、ユーザーパスワードを変更(リセット)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
2.
DB側の設定
–
グローバルユーザーの作成
• ユーザーに紐づくグローバルユーザーの作成例
create user user1 identified globally as 'cn=user1,cn=Users,dc=18ctest,dc=local’; grant create session to user1;
• グループに紐づくグローバルユーザーの作成例
create user adshared identified globally as 'cn=Users,dc=18ctest,dc=local’;
–
(オプション) グローバルロールの作成
create role adresource identified globally as 'CN=orclpdb_resource,CN=Users,DC=18ctest,DC=local’; grant create session to adresource;
grant resource to adresource;
3. 統合監査証跡のSYSLOG、
Windowsイベントビューアーへの出力
•
統合監査証跡(の一部)を、SYSLOGやイベントビューアにも出力
•
統合監査証跡表への出力がなくなるわけではない
•
UNIFIED_AUDIT_SYSTEMLOG初期化パラメータ
–
Linux、UNIX:‘facility_clause.priority_clause' (デフォルトは未設定)
• facility_clause::={ USER | LOCAL[0 | 1 | 2 | 3 | 4 | 5 | 6 | 7] }
• priority_clause::={NOTICE | INFO | DEBUG | WARNING | ERR | CRIT | ALERT | EMERG }
• 設定例:'USER.INFO'
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
•
出力例
22
Jun 20 10:59:05 ekam Oracle Unified
Audit[29622]: LENGTH: '163' TYPE:"4"
DBID:"3323024416" SESID:"1096821448"
CLIENTID:"" ENTRYID:"1" STMTID:"1"
DBUSER:"SYSTEM" CURUSER:"SYSTEM"
ACTION:"100" RETCODE:"1017" SCHEMA:""
OBJNAME:""
4. Data Pumpを利用した統合監査証跡の
エクスポート/インポート
•
データベース全体、もしくは一部のData Pumpエクスポート/インポート時に
関連する統合監査証跡もダンプファイルに追加
•
UNIFIED_AUDIT_TRAILビューをエクスポート/インポートできるわけではな
い
•
コマンド実行例
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Advanced Securityの変更点
1.
PDBごとのキーストア
2.
ユーザー定義マスター鍵
24 2Advanced Security:
透過的データ暗号化 (TDE:Transparent Data Encryption)
• NISTの標準共通鍵暗号方式 AES(28/192/256bit) に対応した強力な暗号アルゴリズムを利用した 暗号化を実現します。 • アプリケーションからは透過的にデータの暗号化 /復号化を行いますので、既存のアプリケーション (SQL)を改修する必要はありません。 • プロセッサの暗号化アクセラレーション (例:Xeon AES-NI)を併用することが可能です。 データベース暗号化による性能劣化を極小化す ることが可能ですので、結果として投資対効果を 高めることが可能となります。
ストレージに保存されるデータ(Data at Rest)をアプリケーションから透過的に暗号化
アプリケーションSELECT name, cardnumber FROM credit; ヤマダタロウ 12345678123456 78 &he%@_0432 aG5#g&3f_g0R1 Blg 暗号化 データファイル バックアップ ダンプファイル 強力な暗号アルゴリズムを利用して暗号化を行うことが可能です。データベースのみならず、バックアップや ダンプファイルなどあらゆる物理ファイルを暗号化することで、機密性の高い情報を保護します。
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
1. PDBごとのキーストア
•
PDBの独立性、PDB間の分離性を担保するために、各PDBごとにキースト
アを保持可能
–
統一モード
• ひとつのキーストアですべてのCDB、PDBのマスター鍵を管理(デフォルト、下位互換)–
分離モード
• PDBごとに異なるキーストアを利用 • PDB数が増えても鍵更新のパフォーマンスが落ちない 26 PDB1 PDB2 OEDE V OEDE V PDB3 PDB1 PDB2 OEDE V OEDE V PDB3 統一モード 分離モード分離モードの利用のためのパラメータ
•
WALLET_ROOT初期化パラメータ
–
CDBで設定する静的パラメータ
–
キーストアを格納するディレクトリツリーのルートを指定
–
指定したディレクトリの下のtdeディレクトリに非CDB/CDB用のキーストアを作成
–
指定したディレクトリの下のpdb-guid/tdeディレクトリのPDB用のキーストアを作成
–
非ASM環境での設定例
• WALLET_ROOT=/opt/oracle/admin/orcl/wallet–
ASM/OMF/非CDB環境での設定例
• WALLET_ROOT=+disk-group-name/OMF–
ASM/OMF/CDB環境での設定例
• WALLET_ROOT=+disk-group-name/db-unique-nameCopyright © 2018, Oracle and/or its affiliates. All rights reserved. |
–
WALLET_ROOTの変更方法の注意点
• pfileを編集してspfileを作成
• ALTER SYSTEM SET ~ SCOPE=SPFILEでは変更できない(?)
28 SQL> alter system set wallet_root=/opt/oracle/admin/orcl/wallet scope=spfile;
alter system set wallet_root=/opt/oracle/admin/orcl/wallet scope=spfile *
ERROR at line 1:
•
TDE_CONFIGURATION初期化パラメータ
–
キーストアの場所を指定するCDBおよび各PDBごとに指定する動的パラメータ
–
設定方法
• TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" • keystore_typeの値 – FILE: ソフトウェアキーストアを利用– OKV:Oracle Key Vaultを利用
– HSM:ハードウェアキーストア(HSM:Hardware Security Module)を利用
– FILE|OKV:プライマリとセカンダリ。OKVからソフトウェアキーストアへの逆マイグレーション時に指定
– FILE|HSM:プライマリとセカンダリ。 HSMからソフトウェアキーストアへの逆マイグレーション時に指定
– OKV|FILE:プライマリとセカンダリ。 ソフトウェアキーストアからOKVへのマイグレーション時に指定
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
DBCS環境での分離モード利用手順
•
キーストアを保存するディレクトリの作成と既存のキーストアのコピー
–
$ mkdir -p /u01/app/oracle/admin/ORCL/wallet/tde
–
$ cp /u01/app/oracle/admin/ORCL/tde_wallet/*
/u01/app/oracle/admin/ORCL/wallet/tde
•
CDBに対して初期化パラメータの設定
–
SQL> shutdown immediate
–
SQL> create pfile from spfile;
–
$ vi /u01/app/oracle/product/18.0.0/dbhome_1/dbs/initORCL.ora
• wallet_root=/u01/app/oracle/admin/ORCL/wallet
• tde_configuration="keystore_configuration=file"
–
SQL> create spfile from pfile;
–
SQL> startup
•
PDBでの初期化パラメータの設定
–
SQL> alter session set container=pdb1;
–
SQL> alter system set tde_configuration="keystore_configuration=file";
•
PDB用のキーストアの作成と現在の鍵のコピー
–
SQL> administer key management isolate keystore identified by Welcome1# from
root keystore force keystore identified by Welcome1# with backup;
•
自動ログインキーストアの作成
–
SQL> administer key management create auto_login keystore from keystore identified
by Welcome1#;
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
2. ユーザー定義のマスター鍵
•
格納データ暗号化のためのマスター鍵を、ADMINISTER KEY
MANAGEMENTコマンドでデータベース内部で生成するのではなく、ユー
ザーが作成した鍵をマスター鍵として設定することが可能(BYOK:Bring
Your Own Key)
•
鍵作成コマンド
–
ADMINISTER KEY MANAGEMENT SET KEY
['[mkid:mk | mk]’]
USING TAG 'tag名'
IDENTIFIED BY "oracle12c" WITH BACKUP;
• 12cまでの鍵作成コマンドに鍵ID(16バイト16進数)および鍵(利用する暗号化アルゴリズムにより32 バイト(256bit)もしくは16バイト(128bit)の16進数)を指定する句が追加
• 鍵IDや鍵を省略した場合には12cまでどおり自動作成
32 SQL> administer key management set key
'20203040506070801112131415161718:5D432109DF88967A541967062A6F4E460E892318E307F017BA048707B402493C' identified by welcome1 with backup;
Database Vaultの変更点
1.
シミュレーションモードの機能拡張
2.
Data Pumpを実行する権限(ロール)
3.
Database Replay対応
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Database Vault
• データベースの特権ユーザやDBAロール、SELECT ANY TABLE権限からのアクセスを強制的に制御し、 特権ユーザといえども自由なアクセスやコマンドの 実行を制限します。 • 特権ロールを細かく分割定義し、付与することで、 特権ユーザの職務分掌を実現します。 例:DB管理は可能だが、業務データアクセスは不可能 • いかなる経路からのアクセスに対しても、データ ベース側で一律にデータを保護することが可能です。 • ユーザ、IPアドレスなどのセッション情報、曜日・時 間などを組み合わせたルールに基づいてアクセス ポリシーの作成が可能です。 34データベース管理者などの特権ユーザの職務を分掌すると共に、アクセス制御を強化
顧客レルム 表 - Customer - Order 索引 プロシージャ Database Vaultのポリシー ユーザ:ユーザA IP Address: 192.168.1.XXX Time: 9:00 – 17:00 ユーザA 運用管理者 ✔ ポリシーに 合致するので アクセス許可 ✖ Database Vaultの ポリシーにより アクセス不可 DBサーバ 権限:DBAロール権限:SELECT ANY TABLE権限
DB管理者やその成りすましによる不正閲覧・改竄、監査証跡削除を抑止し、情報漏洩リスクを最小化します。 Database Vaultはアプリケーションからは透過的であり、アプリーケーションの改修は必須ではありません。
1. シミュレーションモードの機能拡張
•
Database Vaultで作成したポリシーの確認のために、ポリシー違反を遮断
するのではなく、レポートだけしてSQL実行自体は継続するシミュレーショ
ンモードに以下の拡張が追加
–
すべての必須レルム違反の報告
• ひとつのSQL文で複数の必須レルム違反があった場合、以前は最初のレルム違反しか報告しませ んでしたが、すべてのレルム違反を報告するように変更–
すべてのコールスタック情報の報告
• SQL内で呼び出されたスタックで違反があった場合、コールスタック情報を保持するようになったた め、違反を起こしたもとのSQL文を特定可能Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
2. Data Pumpを実行する権限(ロール)
•
以前のリリースではユーザーにしかできなかったData Pumpを実行する権
限が、18cではロールにも付与可能
•
Data Pumpを実行する権限の管理がより柔軟に
363. Database Replay対応
•
Oracle Database Vault環境でDatabase Replayの利用が可能に
–
Data Pumpの利用と同じように専用の権限をPL/SQLパッケージで付与
• DBMS_MACADM.AUTHORIZE_DBCAPTURE • DBMS_MACADM.AUTHORIZE_DBREPLAY–
専用データディクショナリビューから付与状況を確認
• DBA_DV_DBCAPTURE_AUTH • DBA_DV_DBREPLAY_AUTH ※ 権限が付与できるのはユーザーだけでロールに対して付与はできませんCopyright © 2018, Oracle and/or its affiliates. All rights reserved. |
今さら?今こそ!データベースセキュリティ
http://www.atmarkit.co.jp/ait/series/6445/
データベースセキュリティナビ
https://blogs.oracle.com/sec/
38参考情報
テック・ナイトアーカイブ資料と お役立ち情報
各回テック・ナイトセッション資料
ダウンロードサイト
oracle technight
技術コラム 津島 博士の パフォーマンス 講座 技術コラム しば ちょう先生の 試して納得! DBAへの道 もしも みなみんが DBをクラウドで 動かしてみたら〜 みなさまの投稿をお待ちしております 〜
#OracleTechNight
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 42
Oracle Digitalは、オラクル製品の導入をご検討いただく際の総合窓口。
電話とインターネットによるダイレクトなコニュニケーションで、どんなお問い合わせにもすばやく対応します。 もちろん、無償。どんなことでも、ご相談ください。