※ 本記事はGlen Hawkinsによる”Introducing Oracle Data Guard Redo Decryption for Hybrid Disaster Recovery Configurations“を翻訳したものです。
2023年3月17日
プライマリ・データベースがオンプレミス(Exadataまたは汎用ハードウェア)で稼働し、スタンバイ・データベースがOracle CloudのBaseDBまたはExaCSに存在するハイブリッドディザスタリカバリ(DR)構成は、近年一般的になってきました。 この構成により、遠隔地に自社のデータ・センターを設置・管理することなく、Oracle Cloud Infrastructure(OCI)上でディザスタ・リカバリ・サイトを迅速に構成することができます。また、セブン-イレブン様のようにハイブリッドDR構成をクラウド採用への足がかりとしてうまく活用しているお客様もいらっしゃいます(事例はこちら:クラウド成功のための8つの道)
このことを念頭に置いて、オラクルの開発部門はハイブリッドDRの設定とクラウドへの移行全般を簡素化する方法の開発に常に取り組んでいます。しかし、問題としてオンプレミスのデータベースが暗号化されていない可能性がある場合でも、クラウドでOracle DatabasesがTDEによって自動的に暗号化されることがあげられていました。 暗号化の有無が混在している場合(オンプレミスでは非暗号化、クラウドでは暗号化)、以下に挙げるような課題や問題が発生しやすかったのです。
課題その1:プライマリがオンプレミスの場合
・プライマリで表領域が暗号化されない状態で新しく作成される
・テーブルスペースも暗号化されずにスタンバイで作成
・スタンバイを手動で暗号化
課題2:プライマリがOCIにある場合
・OCIで表領域が暗号化された状態で新しく作成される
・テーブルスペースもスタンバイで作成・暗号化
・これにはAdvanced Security Optionが必要

課題3:プライマリがOCIにある場合
・適用プロセスでのREDO復号化の必要性
・これにはAdvanced Security Optionが必要
これらの課題に対する最も効果的な解決策は、オンプレミスのデータベースとOCI上のデータベースの両方を暗号化することです。 これはクラウドとの間で移動するデータを安全に保護する必要性にも対応し、Oracle MAAがオンプレミスのデータベースを暗号化することを常に推奨している理由です。
また、お客様のさまざまな要件に対応するためのアーキテクチャの柔軟性をオラクルは意識しています。そこで、Oracle Database 19c July RU(19.16)では、暗号化の有無が混在するData Guardの構成に対応するための新しいメカニズムを導入しました。
それは、TABLESPACE_ENCRYPTION(ENCRYPT_NEW_TABLESPACESの代わり)という新しいinit.oraまたはspfileパラメータによって、ハイブリッドDR構成において、「オンプレミスのデータベースは暗号化されていないが、OCI上のデータベース(プライマリまたはスタンバイ)は暗号化されている」という混合構成に柔軟性を与えることができます。
これは、ハイブリッドDRサイト(または本番サイト)をOCIで構成し、もう一方のサイト(本番サイトまたはその他のサイト)をオンプレミスのまま構成しようとする場合に起こりうる問題を減らすことを意図しています。 以下では、新しいプロパティと関連する機能についての詳細を説明します。
TABLESPACE_ENCRYPTION = { AUTO_ENABLE | MANUAL_ENABLE | DECRYPT_ONLY }
| AUTO_ENABLE | 常に新しいデータを暗号化して保存する。(OCIでは必須) |
| DECRYPT_ONLY | 必ずデータを復号化し、暗号化せずに保存する。ASOをご利用でないお客様におすすめします。 |
| MANUAL_ENABLE | 以前の動作に戻す |
- Redoの復号化は、Redo Transport Levelで行われます。
- Advanced Security Optionはもう必要ありません。しかし、ASOは、セキュリティ上の理由から、依然として強く推奨されるベストプラクティスです。TABLESPACE_ENCRYPTIONプロパティは、新しい表領域を暗号化するかどうかを決定することができます。
- ENCRYPT_NEW_TABLESPACES設定で指定された動作とTABLESPACE_ENCRYPTION設定で決定された動作が競合する場合、TABLESPACE_ENCRYPTION動作が優先されます。
- このプロパティはCDBレベルで設定されます。
- クラウド・データベースのデフォルト(必須。値の変更はクラウドでは無視されます)。AUTO_ENABLE
- オンプレミスのデータベースのデフォルトです。MANUAL_ENABLE
例えば、オンプレミスとOCI(必須)の両方を暗号化するというベストプラクティスに従った構成で、以下の構成を使用します。
— オンプレミスのinit.oraまたはspfile:
TABLESPACE_ENCRYPTION = AUTO_ENABLE;
— OCIのinit.oraまたはspfile:
TABLESPACE_ENCRYPTION = AUTO_ENABLE;

逆にBaseDBやExaCSを使ったハイブリッドDRの構成で、オンプレミスのデータベースが暗号化されていない場合、次のように設定することがあります。
— オンプレミスのinit.oraまたはspfile:
TABLESPACE_ENCRYPTION = DECRYPT_ONLY;
— OCIのinit.oraまたはspfile:
TABLESPACE_ENCRYPTION = AUTO_ENABLE;

TDEの前提条件に関する重要な注意:暗号化されていないプライマリ・データベースまたはスタンバイ・データベースは暗号化されているかのように設定する必要があります。したがって、プライマリ・データベースのルートとすべてのPDBにマスターキーが設定されたウォレットが必要です。また、プライマリ・データベースやスタンバイ・データベースが暗号化されているかどうかにかかわらず、キーを設定する操作のたびに、このウォレットをスタンバイ・データベースにコピーする必要があります。
TABLESPACE_ENCRYPTIONプロパティやその他のクラウド最大可用性アーキテクチャ(MAA)機能、ベストプラクティスを活用するための例やユースケースは、MAAガイドラインで紹介していきますのでお楽しみに。
なお、新しいTABLESPACE_ENCRYPTION初期化パラメータとOracle Database 19c July RU (19.16)に関するドキュメントは、以下のリンクから入手できます。
Oracle Database 19c July Release Update (19.16)
Oracle Database 19c Reference Documentation – TABLESPACE_ENCRYPTION Initialization Parameter
Oracle Data Guard Redo Decryption for Hybrid Disaster Recovery Configurations
Encryption of Tablespaces in an Oracle Data Guard Environment
