Oracle Secure Backupは2026年5月1日よりDe-supportとなった旨がアナウンスされました。
詳細は以下MOSドキュメントをご参照ください。
Oracle Secure Backup De-support Announcement (PNEWS3035)
ランサムウェア対策の一つに、Write Once Read Many (WORM) 特性を備えたストレージにデータを格納して保護する、という考え方があります。
いわゆるイミュータブル機能とも言われるものです。
上記により、一度書き込まれたデータは指定期間を過ぎるまで、改ざんや削除が出来なくなります。
ランサムウェアにアクセスされたとしても、イミュータブル機能で保護されているため、暗号化されて読み取れなくなるような事態を防げます。
またランサムウェアは機密データを窃取することもしますが、ユーザ側が暗号化してWORMストレージに保存すれば、データの中身を読み取られる事態も防げます。
OCI Object Storageはここまでに挙げた2点「WORM/イミュータブル機能」と「ユーザによるデータ暗号化」を兼ね備えたストレージ・サービスです。
そのOCI Object Storageにデータをバックアップする製品の1つとして、Oracle Secure Backup (以下OSB) があります。
OSBは古くからテーブ装置へのバックアップ製品として存在していましたが、2024年5月にGAとなった 19.1 から、OCI Object Storageのイミュータブル機能 (保持ルール) と連携する機能が追加されました。
またOSBはOracle DBのRMANと連携したバックアップに加え、ファイルシステム上のファイルにも対応しています。
そのためアプリケーション関連のファイルや、NFS上に置かれたファイルなどのバックアップ/リストアも管理できます。
加えてOSB 19.1はOCI Marketplaceでイメージが公開されており、OCI上へ簡単にデプロイできます。
今回はそんなMarketplace版OSB 19.1を使ったOSBの構築、バックアップ構成、リストア操作を簡単に検証してみましたので、作業の流れをまとめたいと思います。
Oracle Secure Backupの利用にはライセンスが必要です (Marketplace版も同様)。
ライセンスの単位は「Stream」と呼ばれるものです。
詳細は下記マニュアルをご参照ください。
https://docs.oracle.com/cd/G14235_01/oblic/editions.html#GUID-FC7D3E3B-31D4-4E27-BDD4-0EA529C863F8
Oracle Secure Backupディスク・プールおよびクラウド・デバイスは同時バックアップおよびリストア・ストリームに適応しており、そのため、ディスク・プールとクラウド・デバイスのそれぞれの同時ジョブ(ユーザー定義の同時ジョブ最大数)に対してライセンスが必要です。
金額感は以下をご参照ください。
https://www.oracle.com/jp/a/ocom/docs/jpy-tech-localizablepl.pdf
目次
OSBの構成
OSBは以下3点の要素から構成されます。
- 管理サーバ:バックアップ全体を統括・管理
- メディアサーバ:バックアップ先ストレージへのデータ書き込み
- クライアント:バックアップされる対象サーバ
これらは各々異なるサーバにインストールしても良いですし、1つのサーバに集約する構成も可能です。
本検証では管理サーバとメディアサーバを1つのサーバに集約し、バックアップ対象となる別サーバにクライアントとしてOSBをインストールします。
検証シナリオは以下イメージです。
- バックアップ対象はOracle DBが稼働するDBサーバで、RMANによる1次バックアップをローカルに出力
- OSBでObject Storageに2次バックアップを取得し、保持ルールによりイミュータブルな状態で保護
- 1次バックアップを疑似的に削除
- Object Storage上の2次バックアップから1次バックアップをリストア
以上を踏まえ、今回の構成は以下のようになります。
なお本検証はOCI上で行なっていますが、OSBはもともとオンプレ向けライセンス製品ですので、勿論オンプレのサーバを対象にデータ保護する構成もできます。
例えば管理サーバ兼メディアサーバをOCI側に用意して、オンプレのサーバにOSBクライアントを導入する形態も考えられます。
またオンプレにある一次バックアップ領域をNFS exportし、OCI側の管理サーバにNFS mountして二次バックアップを取ることも可能かもしれません(要検証ですが)。
事前準備
バックアップ対象は何でも良いのですが、今回はOracle DBのRMANバックアップを対象としたため、事前にOracle AI DB 26aiが稼働するDBサーバを用意しました。
DBサーバのOSは Oracle Linux 8 です。
またDBサーバには日曜にフルバックアップ、それ以外は差分増分バックアップを取得するようRMANとcronジョブをセットアップしました。
OSB管理サーバのインストール
OCI Marketplaceから管理サーバとしてOSBをインストールします。
以下の通り、Oracle Secure Backup 19.1 のイメージを選んでOCI Computeを作成します。
作成したComputeにログインするとOSBの自動インストールが走ります。
いくつか入力を求められますが、e-mailアドレスと管理パスワード以外はデフォルトを選択します。
初回ログイン時のインストールログ
Last login: Mon Jun 10 21:07:54 2024 from 148.87.23.10
Welcome to Oracle Secure Backup marketplace deployment.
Press enter to continue setup. If you abort this, you
need to run the setup manually.
Welcome to Oracle's setup program for Oracle Secure Backup. This
program loads Oracle Secure Backup software to a filesystem directory
of your choosing.
This installation contains Oracle Secure Backup version 19.1.0.0.0.
Please wait a moment while I learn about this host... done.
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Choose from one of the following options. The option you choose defines
the software components to be installed.
Configuration of this host is required after installation is complete.
You can install the software on this host in one of the following ways:
(a) administrative server and client
(b) client
If you are not sure which option to choose, please refer to the Oracle
Secure Backup Installation Guide. (a or b) [a]?
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Loading Oracle Secure Backup installation tools... done.
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Loading Oracle Secure Backup software... done.
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Loading of Oracle Secure Backup software is complete.
You should now enter an email address for the Oracle Secure Backup 'admin'
user. Oracle Secure Backup uses this email address to send job summary
reports and to notify the user when a job requires input. If you leave this
blank, you can set it later using the obtool's 'chuser' command.
Please enter the admin email address:
Do you want to change any advanced settings? (y or n) [n]:
The keystore password must be known and safeguarded by
the Oracle Secure Backup Administrator. In the event of
a disaster, the keystore password is required for
recovering your Oracle Secure Backup Administrative
Server. Oracle Secure Backup cannot be prompted to
retrieve the password.
Please enter keystore password:
Re-type password for verification:
Please enter admin password:
Re-type password for verification:
Oracle Secure Backup was installed
無事にインストール出来ると observiced といったプロセスが稼働しています。
$ ps -eaf | grep obs
root 21719 1 2 04:33 ? 00:00:00 /etc/observiced -b
root 21721 21719 0 04:33 ? 00:00:00 /usr/local/oracle/backup/etc/obscheduled
opc 21804 21411 0 04:34 pts/0 00:00:00 grep --color=auto obs
バックアップのスケジュールに影響するため、タイムゾーンを適切に設定します。
timedatectl set-timezone Asia/Tokyo
timedatectl
Webツールへのアクセスを許可するため firewall-cmd にてポート開放します。
※OCI VCNのセキュリティリスト/NSGにも許可設定が必要です。
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
以下リンクよりWebツールへアクセスしてみます。
https://<osb admin server public ip>
正常にインストールされ、NW設定も問題なければログイン画面が表示されます。
ログインできると以下のようなトップ画面が表示されます。
メディアサーバの準備
ここまでセットアップした管理サーバですが、今回はメディアサーバとしても利用します。
そのためメディアサーバのロールを追加します。
ちなみにこれ以降の作業ですが、OSBをコマンドラインで管理する obtool を使っていきます。
obtool のリファレンスは下記をご参照ください。
chhost コマンドを使って管理サーバのホストにロールを追加します。
なお本検証の管理サーバのホスト名は osbtst です。
obtool chhost --addrole mediaserver osbtst
これで osbtst は管理サーバとメディアサーバの両方を担うようになりました。
またメディアサーバにはバックアップの保存先となるストレージ情報を紐づける必要があります。
今回はOCI Object Storageを使うため、対応する設定を行います。
まずOCIの資格証明を作成します。
本作業にあたり、下記を参照して事前にOCIユーザのAPIキー情報をメモしておきます。
資格証明の作成コマンドを実行します。
※以下はKeyファイルを /home/opc/.ssh/oci_api_key.pem に配置する前提のコマンドです。
obtool mkauth --type oci \
--fingerprint <your fingerprint> \
--tenancyocid <your tenancy ocid> \
--keyfile /home/opc/.ssh/oci_api_key.pem \
--url "https://<your-namespace-string>.objectstorage.<your-region>.oci.customer-oci.com" \
--userocid <your user ocid> \
--iddomain "<your identity domain name>" \
myauthobj
これで myauthobj という名前で資格証明が作られました。
Webツールでも以下の通り確認できます。
つぎに2次バックアップを保存するためのOCI Object Storageバケットを作成します。
主要なオプションにはコメントを付けています。
obtool mkdev -t cloudstorage \
--mediaserver osbtst \
--storageclass object \ # ストレージ層は標準
--inservice \
--container osb \ # バケット名はosb
--concurrentjobs 10 \ # 同時実行ジョブ数の最大値は10
--capacity 40GB \ # 容量の消費上限は40GB
--freespacegoal 20 \ # 40GBの上限に対して20%の空き容量を維持
--authobj myauthobj \
--servicetype oci \
--compartment <your compartment ocid> \
myclouddevice
これでOCI Object Storage上に osb という名前のバケットが作成されます。
続いて今回はランサム対策がメインのため、直前に作成したバケット osb に保持ルールと保持ルールに対するロックを掛け、イミュータブル機能を有効化します。
今回はバケットに追加してから7日間そのデータが保護されるように設定してみます。
次のコマンドを実行すると14日間後に保持ルールがロックされ、指定した期間はどうやってもバケット上のデータを削除できなくなります。
その期間は保存した容量分の課金が必ず継続するため、設定する際はくれぐれもご注意ください。
保持ルールの詳細は以下をご確認ください。
https://docs.oracle.com/ja-jp/iaas/Content/Object/Tasks/usingretentionrules.htm
# chdev で先ほど作成した myclouddevice デバイスの設定を変更
obtool chdev -t cloudstorage \
--compliancerule 7days \
--compliancelock yes \
myclouddevice
OCIコンソールにてバケットのポリシーを確認すると、以下のように保持ルールが設定されている様子を確認できます(画面キャプチャは2日間の保持ルールを設定したときのものです)。

正常に作成できると lsd でデバイス情報を確認できます。
$ obtool lsd -l
myclouddevice:
Device type: cloud storage
Enable checksum: (system default)
In service: yes
Debug mode: no
Capacity: 40.0 GB
Consumption: 29.8 GB (74%)
Free space goal: 20%
Concurrent jobs: 10
Blocking factor: (default)
Max blocking factor: (default)
UUID: e8a13238-0fb7-103f-8a47-02001702d505
Attachment 1:
Host: osbtst
Staging: no
Container: osb
Storage class: object
Identity domain: <your identity domain name>
Segment size: (system default)
Streams per job: (system default)
Service type: oci
Auth object: myauthobj
Client direct: no
Immutable: yes
Webツールでも以下の通り確認できます。
クライアントの準備
OSBによりバックアップ取得するサーバに対して、OSB Clientインストールの準備をします。
まず iptables にてOSB管理サーバが属するサブネットからの通信を許可します。
sudo su -
iptables -I INPUT 1 -p tcp -s 10.0.0.0/24 -j ACCEPT
iptables -I OUTPUT 1 -p tcp -s 10.0.0.0/24 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
firewall-cmd にてOSB管理サーバ、メディアサーバとの通信に必要なポートを許可します。
OB_LOW=50000
OB_HIGH=51000
sudo firewall-cmd --add-port=400/tcp --permanent
sudo firewall-cmd --add-port=10000/tcp --permanent
sudo firewall-cmd --add-port=${OB_LOW}-${OB_HIGH}/tcp --permanent
sudo firewall-cmd --reload
OSBが使用するポート番号を /etc/services に追記します。
echo "ob-daemon-low ${OB_LOW}/tcp # OSB low port" | sudo tee -a /etc/services
echo "ob-daemon-high ${OB_HIGH}/tcp # OSB high port" | sudo tee -a /etc/services
OSB管理サーバとSSH等価設定をします。
まずはSSHキーをクライアント側、OSB管理サーバ側で作成します。
ssh-keygen
一方の公開鍵の情報を、もう一方の /home/opc/.ssh/authorized_keys に追記します。
vim ~/.ssh/authorized_keys
opc ユーザでパスワードレスSSHログインできるか、双方のサーバから確認します。
ssh -i .ssh/id_rsa opc@<対向のホスト名>
OSBクライアントをインストールするDBサーバに追加パッケージをインストールします。
下記2つのパッケージはLinuxへのOSBインストールに必要となります。
sudo dnf install csh libnsl -y
AnsibleによるOSBクライアントのインストール
Marketplace版OSB管理サーバには、クライアントインストール用のAnsible Playbookがデフォルトでついてきます。
そちらを使いたいので、OSB管理サーバにログインしてAnsibleを実行します。
まずは ~/osb_playbooks に格納されているインベントリファイル hosts を編集します。
vim hosts
今回は以下のような内容になりました。
# OSB Ansible inventory template
# Variable Section
[all:vars]
# Mandatory
ob_lin_temp=/home/opc/osb_home
ob_lin_shiphomepath=/home/opc/osb_home/osb_19.1.0.0.0_linux.x64_cdrom240520.zip
ob_lin_shiphome=osb_19.1.0.0.0_linux.x64_cdrom240520
ob_adminhost=osbtst
# Optional
ob_lin_instpath=/usr/local/oracle/backup
up_var=18.1.0.2.0
# Ansible related parameters(Mandatory).
ansible_ssh_private_key_file=/home/opc/.ssh/id_rsa
ansible_ssh_user=opc
[Linuxclient]
db261
[Linuxmediaserver]
[Linuxclient:vars]
ob_role=client
[Linuxmediaserver:vars]
ob_role=mediaserver
Ansible Playbookを実行してDBサーバ db261 にOSBクライアントを導入します。
ansible-playbook osb_install_linux.yml --limit "Linuxclient" -i hosts
エラーなく実行完了したらDBサーバにログインし、observiced プロセスが稼働しているか確認します。
$ ps -eaf | grep obs
root 278791 1 0 Apr03 ? 00:00:03 /etc/observiced -b
opc 1325432 1325377 0 15:22 pts/0 00:00:00 grep --color=auto obs
Webツールでも以下の通り表示され、DBサーバ db261 がOSB管理サーバと連携された状態であると確認できます。
バックアップの構成
インストールが終わりましたので、いよいよバックアップを構成していきます。
これ以降の作業はOSB管理サーバで行います。
バックアップの構成には主に以下3つを定義します。
- データセット:バックアップ対象のホスト、パス、ファイルを定義したもの
- メディアファミリ:バックアップの保持期間などを定義したもの
- スケジュール:バックアップの取得時間、取得先、フル/増分の設定、暗号化の有無などを定義したもの
まずデータセットを作成するため、バックアップ対象を定義した dataset ファイルを作成します。
vim db261.ds
今回は db261 サーバ上の /u01/app/oracle/product/23.26.0/dbhome_1/dbs/backup にRMANバックアップを取得しており、そちらをObject Storageへバックアップします。
また一時キャッシュファイルなどは対象から除外したいので、以下の内容となりました。
include host db261 {
exclude name core
exclude name *.bak
exclude name *~
include path /u01/app/oracle/product/23.26.0/dbhome_1/dbs/backup
}
こちらの定義ファイルをもとに dataset を登録します。
obtool mkds --nq --input db261.ds
Webツールでも以下の通り作成されたデータセットを確認できます。
なお見て頂くと分かりますが、実はデフォルトで OSB-CATALOG-DS というデータセットが存在します。
こちらはOSBのカタログ情報をバックアップするためのものです。
カタログ情報のバックアップはOSB管理サーバに障害が起きた際に必要となります。
OSB管理サーバ障害が起きた際の復旧は下記マニュアルをご参照ください。
Oracle Secure Backupの管理データの障害回復
続いてメディアファミリを作成します。
今回は「バックアップ保持期間は7日間」という内容だけ登録します。
obtool mkmf --vidunique --retain 7days dbmf
Webツールでも以下の通り作成されたメディアファミリを確認できます。
ちなみに日にちの入力フォーマットなどは以下マニュアルより確認できます。
obtoolのプレースホルダ
最後にスケジュールを作成します。
obtool mksched \
--dataset db261.ds \ # 先ほど作成したデータセットを指定
--day daily \ # 日次で実行
--time 23:00 \ # 23時に実行
--restrict myclouddevice \ # mkdevで登録した取得先を指定
--level incr \ # 増分で取得
--family dbmf \ # 先ほど作成したメディアファミリを指定
--encryption yes \ # 暗号化する設定
db261.sch # 任意のスケジュール名を指定
Webツールでも以下の通り作成されたスケジュールを確認できます。
スケジュールされたジョブを確認します。
$ obtool lsjob
Job ID Sched time Contents State
---------------- ----------- ------------------------------ ---------------------------------------
1 04/15.23:00 dataset db261.ds future work
Webツールからは以下のように予定されたジョブとして確認できます。
これにより、指定した時刻に自動でOCI Object Storageへイミュータブルなバックアップを取得してくれます。
尚且つ暗号化の設定を入れているため、OSBによる暗号化も施された状態で格納されます。
ちなみにバックアップは次のような形でバケットに保存されます。
バックアップ本体とメタデータ情報が保存されています。
オブジェクトの形式からして、OSBを通してでないと読み取れないファイルになっているようです。
もちろん保持ルール期間内のバックアップを削除しようとしてもエラーで弾かれます。
リストア
取得されたバックアップを使ってリストアを試してみます。
DBサーバ上のRMANバックアップが格納されているディレクトリをリネームし、疑似障害を起こします。
cd /u01/app/oracle/product/23.26.0/dbhome_1/dbs/
mv backup backup_bk
Webツールからリストアを行ってみます。
「Search Options」に復旧したいホスト名、対象パス、ファイル名などを入力して「Search」を押下します。
するとバックアップ済みファイル一覧が表示されるので、復旧したいファイルを選択して「Add」を押下します。
「Restore Items」に選択したファイルが追加されるので、問題なければ「Go」を選択してリストアジョブをキューに追加します。
以下のように全リストアジョブが完了していればOKです。
DBサーバにてディレクトリとファイルが戻っていることを確認します。
$ cd /u01/app/oracle/product/23.26.0/dbhome_1/dbs/
$ ls -l backup
total 10909972
-rw-r----- 1 oracle oinstall 2442387456 Apr 5 12:00 ORCL_20260405_0rj1kni3_27_1_1.bkp
-rw-r----- 1 oracle oinstall 1874239488 Apr 5 12:00 ORCL_20260405_0sj1kni3_28_1_1.bkp
-rw-r----- 1 oracle oinstall 954351616 Apr 5 12:01 ORCL_20260405_0ta3knjq_29_1_1.bkp
-rw-r----- 1 oracle oinstall 1051844608 Apr 5 12:01 ORCL_20260405_0ul3knk3_30_1_1.bkp
-rw-r----- 1 oracle oinstall 316923904 Apr 5 12:01 ORCL_20260405_0v64knkm_31_1_1.bkp
-rw-r----- 1 oracle oinstall 340262912 Apr 5 12:01 ORCL_20260405_10l4knl5_32_1_1.bkp
...(略)...
以上、Oracle Secure Backup 19.1で追加されたOCI Object Storageイミュータブル機能との連携でした。
様々なファイルを対象にランサムウェアから保護したい、というユースケースで是非ご検討ください。
















