Facebook Twitter
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > Oracle Cloud > 【Oracle Cloud】バケットの暗号化キーとキーのローテーションについて【Vault】

【Oracle Cloud】バケットの暗号化キーとキーのローテーションについて【Vault】

ブログ
Oracle Cloud
2025.04.04

 こんにちは! m.uriuです。
 

 今回はOCIのVaultサービスとオブジェクトストレージサービスのバケットの暗号化キーについてのお話です。

 
 バケットの暗号化には、デフォルトだとOracle管理キーが使用されますが、Vaultで作成したマスター暗号化キーをオプションで指定できます。

 
 このマスター暗号化キーですが、ローテーションという操作で新しいバージョンにキーを更新でき、最初の20バージョンまでは無料で保存できます。ローテーションを定期的に実施することで、キーの不正使用のリスクを低減できます。
 

 今回は、バケットの暗号化キーにマスター暗号化キーを使用したままキーのローテーションを実行した場合、古いバージョンのキーで暗号化していたバケットはどうなってしまうのか、というケースについて検証してみました。
 
 今回の記事では、その検証結果についてご紹介したいと思います。

検証内容

 バケットにVaultのマスター暗号化キーを設定し、キーのローテーションを実施した後、バケットの中身を確認する。(バケットの中身の参照とバケットに保存したオブジェクトをダウンロードできるか確認)

準備

 検証に使用する以下のリソースを作成します。
(検証で使用したリソースは投稿時点で削除済み)
 

  • Vault
  • マスター暗号化キー
  • IAMポリシー(オブジェクトストレージでマスター暗号化キーを使用する許可ポリシー)
  • バケット
  • オブジェクト(テスト用のテキストファイル)

 

Vaultを作成

 Vaultを作成します。
 今回の検証の動作には関係ないので、高価なオプションの「仮想プライベート・ボールト」は外します。 

Vault作成
Vault詳細画面

 

キーを作成

 バケットに設定するマスター暗号化キーを作成します。
 こちらもどれを選択しても検証には関係ないので、デフォルト設定で作成。
 

  • 保護モード:HSM(デフォルト)
  • キーシェイプ、アルゴリズム:AES(デフォルト)
  • キーシェイプ、長さ:256ビット(デフォルト)

 

マスター暗号化キー作成
マスター暗号化キー詳細画面

 

IAMポリシーの作成

 検証用のコンパートメントで、オブジェクトストレージのバケットの暗号化キーに、マスター暗号化キーの使用を許可するポリシーを作成。

ステートメント:
Allow service objectstorage-(バケットのあるリージョン) to use keys in compartment (バケットのあるコンパートメント)
Allow any-user to use keys where target.key.id = (キーOCID)

 

バケットの作成

 基本はデフォルトの設定にし、暗号化のオプションをOracle管理キーから顧客管理キーに変更。
 先ほど作成したVaultとマスター暗号化キーを指定してバケットを作成。
(Oracle管理キーを指定して作成後も、詳細画面の編集からマスター暗号化キーを指定可能。)

バケット作成
バケット詳細画面
暗号化キー編集画面

 

テスト用オブジェクト配置

 テスト用のテキストファイルをバケットにアップロード。

テスト用テキストファイル

検証

 リソースの準備ができたので、実際にローテーションを実施してバケットがどうなるかを確認します。
  

キーのローテーション

 マスター暗号化キーの詳細画面から「キーのローテーション」を選択してローテーションを実施。

マスター暗号化キー詳細画面
ローテーション確認画面
ローテーション成功

 ローテーションが成功し、キーのバージョンが更新されました。

ローテーション成功後

 

バケットの確認

 ローテーション後のバケット内のオブジェクトの状態を確認します。

 OCIコンソールから、ローテーション前にバケットに保存したテスト用テキストファイルの中身を確認できました。
 マスターキーをローテーションした後もバケットの暗号化設定には影響がない、という事が分かりました。

オブジェクト詳細画面

追加検証

 続いて、マスター暗号化キーのローテーションを実施後に、古いバージョンのキーを削除した場合バケットはどうなるのかについて、追加で検証していきます。
 

 通常はバケットに設定している暗号化キーを変更(ローテーション含む)した場合、新しい暗号化キーによる暗号化を反映するために再暗号化をする必要があります。


 検証するのは以下の2パターン

  1. バケットの再暗号化を実施せずに、古いバージョンのキーを削除
  2. バケットの再暗号化を実施し、古いバージョンのキーを削除

 

再暗号化を実施せずキーを削除

 「バケットの確認」を実施した直後、バケットが古いバージョンで暗号化されたままの状態で、Vaultのキーの詳細画面から古いバージョンのキーを削除します。

マスターキー詳細画面


 削除の確認画面で削除日のスケジュールを選択します。マスターキーのバージョンを即時削除はできないので、最短の1週間後でスケジュールします。

削除確認画面


 キーの状態が「削除のスケジュール中」と表示されているのを確認。 

削除のスケジュール後

 この状態でバケットを確認すると、エラー文が表示されバケットが操作できなくなっています。
 古いバージョンのマスター暗号化キーをバケットの暗号化に使用していると、バケットが使えなくなるようです。

 公式ドキュメントによると、マスターキーの削除を行うと、そのキーで暗号化されたリソースはすべてアクセス不可能な状態になるそうです。
 古いバージョンのマスターキーの削除スケジュールを取り消せば、再度使用できるようになり復旧が可能になりますが、スケジュールした日付を過ぎて古いバー所ジョンのマスターキーが完全に削除されると、バケットの復旧は不可能になります。

 
 削除スケジュール前なら、マスターキーの詳細画面からいつでも削除を取り消すことができます。

削除の取り消し前
削除の取り消し中
削除の取り消し後

 
 マスターキーのバージョンの削除を取り消し、バケットにアクセスできるようになりました。

削除取り消し後のバケット


再暗号化を実施してキーを削除

 今度はバケットの再暗号化を実施してから、古いバージョンのキーを削除します。
バケットの詳細画面から再暗号化を実施できます。

再暗号化画面
再暗号化確認画面
削除の作業リクエスト完了画面

 「再暗号化を実施せずキーを削除」で実施した手順で、マスターキーの古いバージョンの削除スケジュールを設定。

古いバージョン削除

 今度は古いバージョンの削除スケジュールを設定後もバケットにアクセスができています。
新しいバージョンのマスターキーへの引き継ぎがうまくいったようです。

再暗号化実施後のバケット

 

まとめ

 バケットの暗号化キーに指定した、マスター暗号化キーのローテーションの検証でした。
 検証結果を以下に纏めました。


1.バケットの暗号化にマスター暗号化キーを指定し、その後ローテーションした後もバケットはそのまま使用できる。

2.古いバージョンのマスター暗号化キーを削除すると、そのバージョンのマスター暗号化キーを使用しているバケットは使えなくなる。(削除を取り消せばまた使用できる。)

3.キーのローテーションを実行した後、バケットの再暗号化を実施すれば、古いバージョンのマスター暗号化キーを削除してもバケットは使える。


 キーのバージョン削除は、ケースによってはバケット(他のキーを使用しているリソース含めて)が使用できなくなります。
 マスター暗号化キーを使用してバケットの暗号化を管理する際は、どのバージョンのキーを使用しているか管理して複数のバージョンを管理し、またはキーの削除を行う際は削除スケジュールを長めに(最長30日)取っておくことをお勧めします。
 データの再暗号化も、大量のストレージを暗号化している場合は更新の手間がかかることや、再暗号化に失敗して復元できなくなるリスクもあるそうなので、(要件にもよりますが)再暗号化はデータ流出などがあった場合などに留めておく運用も良いかと思います。


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。