OCIの暗号化サービス

 2021.02.21  株式会社テリロジー 技術統括部

こんにちは。Tachanです。
前回セキュリティサービスをまとめましたが、今回はその中のVault(ボールト)サービスについて 書いていきます。

OCIのストレージサービスはデフォルトで暗号化されています。
Valutサービスを利用することにより、Oracle管理の暗号鍵を利用するのではなく、 ユーザ自身で暗号鍵の管理が行えるようになります。

Vaultサービスとは

Vaultサービスでは、OCIの暗号化サービスであり、データを保護する暗号化キーを集中管理できます。
このサービスを使用すると、「ボールト」、「キー」、「シークレット」のリソースを作成・管理できます。

ボールト(Vault):作成したキーおよびシークレットを格納するもの
キー:データを保護する暗号化キー
シークレット:パスワード、証明書、SSHキー、OCIサービスで使用する認証トークンなどの資格証明

■Vaultとは

作成したキーおよびシークレットを格納するのがVaultです。
Vaultには「仮想Vault」と「仮想プライベート・ボールト」の2種類あり、
デフォルトは仮想ボールトが使用されます。
仮想ボールトでは、共有パーティションで提供され、無料で利用できますが、
キーのローテーションが20回以上になると課金が発生します。

一方で仮想プライベート・ボールトでは、HSM(補足用語参照)上の分離されたパーティションを使い、 ボールトに格納される暗号化キー、シークレットのセキュリティを強化、整合性を保持します。
(※仮想ボールトの場合は、HSM上のパーティションを他のボールトと共有)

また、仮想ボールトではデフォルトで100個、仮想プライベート・ボールトではデフォルトで1000個のキー制限が適用され、キー・バージョンもキー制限数にカウントされます。
キー、シークレットの保存に関して、分離の程度を高くする必要がない場合は、仮想ボールトを使用し、必要に応じて個々にキー・バージョンを使うことでコストを抑えられます。

またボールト・サービスを使用するとキーはFIPS(連邦情報処理標準) 140-2 Lever 3のセキュリティ証明を満たす、可用性の高いHSMに格納され、安全にキーを管理することができます。

■キー

キーは、データの暗号化と復号化に使用されるキー・バージョンを指し、格納されているデータの保護に使われます。 暗号化アルゴリズムの一部として処理される場合は、平文→暗号文に変換する方法と、暗号文→平文に変換する方法があり、それぞれをキーで指定します。
ボールト・サービスは、3つのタイプの暗号化キー(マスター暗号化キー、ラッピング・キー、データ暗号化キー)を認識します。

・マスター暗号化キー
マスター暗号化キーはデータキーを暗号化するための鍵であり、
コンソール、CLIまたはAPIを使用して作成できます。
マスター暗号化キーは内部的に生成することも、外部ソースからインポートすることもできます。
作成されたマスター暗号化キーはボールトに格納されます。

・ラッピング・キー
ラッピングとは、鍵を別の鍵で暗号化する処理のことで、
鍵を安全に保管する際や、信頼できないチャネルで送信する場合に、使われます。

OCIのラッピング・キーは各ボールトにデフォルトで含まれている暗号化キーのタイプであり、
RSAアルゴリズムに基づく4096ビットの非対称暗号化キー・ペアになります。
公開鍵と秘密鍵は2つのキー・バージョンとしてサービス制限の対象個数に加算されますが、
コストには加算されません。
ラッピング・キーを作成、削除またはローテーションすることはできません。

■シークレット

シークレットとは、パスワード、証明書、SSHキー、OCIサービスで使用する認証トークンなどの資格証明です。コンソール、CLIまたはAPIを使用して作成できます。
シークレットをボールトに格納することで、他の場所に格納するよりも優れたセキュリティを実現できます。リソースや他のサービスへのアクセスに必要な場合、ボールト・サービスからシークレットを取得できます。

シークレットのシークレット・コンテンツは、外部ソースからサービスにインポートされます。
ボールト・サービスによってシークレットがボールトに格納されます。

ボールト・サービスを使用するメリット

ボールト・サービスを使用すると、「ボールト」、「キー」、「シークレット」の ライフサイクル管理機能を実行できるため、以下のようなリソースの制御やアクセスが簡単になります。

  • 暗号化マテリアルをマスター暗号化キーとして作成、インポート
  • シークレット資格証明を格納するシークレットを作成
  • 暗号操作で使用するマスター暗号化キーを有効化または無効化
  • キーをローテーションして新しい暗号化データを生成する
  • 新しいシークレット・コンテンツでシークレットを更新する
  • プロモーションを介して現在使用中のシークレット・バージョンを指定する
  • シークレットの管理および使用を制御するルールを構成する
  • ボールト、マスター暗号化キーまたはシークレットにタグを付けて、リソースにメタデータを追加する
  • 不要になったボールト、キーまたはシークレットの削除

など

補足用語

■HSM(ハードウェア・セキュリティ・モジュール)とは

HSMはハードウェア・セキュリティ・モジュールの略称で、暗号化キーを管理するハードウェアを指します。OCIのボールト・サービスでは、連邦情報処理標準(FIPS) 140-2セキュリティ・レベル3のセキュリティ証明を満たすHSMが使用されます。
これは、

  • HSMハードウェアが開封明示されて、改ざんの防止のための物理的な保護手段を持っていること
  • アイデンティティ・ベースの認証が必要であること
  • 改ざんが検出されたときにデバイスからキーを削除すること

を意味しています。

マスター暗号化キー(データキーを暗号化するための鍵)を作成すると、
ボールト・サービスはHSM内にキーのバージョンを格納します。
これにより、OCIは物理セキュリティを提供します。
※シークレットを作成した場合、シークレット・バージョンはマスター暗号化キーによってエンコード・暗号化されますが、HSM内には格納されません。

キー・バージョン、シークレット・バージョンは、作成後にハードウェア障害から保護する手段として
サービスのインフラストラクチャ内にレプリケートされます。
それ以外の場合、キー・バージョンは他の場所に格納されず、HSMからエクスポートできない仕様になっています。

■キーのバージョン

各マスター暗号化キーには、キー・バージョンが自動的に割り当てられます。
キーをローテーションすると、ボールト・サービスにより新しいキー・バージョンが生成されます。

定期的にキーをローテーションすると、1つのキー・バージョンによって暗号化されるデータの量が制限されますが、ローテーションにより、キーの漏えいが発生した場合のリスクを軽減できます。
また、ローテーション後に古いキー・バージョンを暗号化に使用することはできませんが、
キー・バージョンは、以前に暗号化されたデータを復号化するために使用できます。
ボールト・サービスでは、復号化に必要な情報がキーの暗号文に含まれているため、

どのキー・バージョンがどのデータの暗号化に使用されたかを追跡する必要がなくなります。

■シークレット・バージョン

各シークレットには、シークレット・バージョンが自動的に割り当てられます。
シークレットをローテーションする際は、新しいシークレット・コンテンツをボールト・サービスに渡し、新しいシークレット・バージョンを生成します。
シークレット・コンテンツを定期的にローテーションすることで、何らかの原因でシークレットが公開された場合のリスクを抑えることができます。

シークレットを再利用できないように構成されたルールがある場合、ローテーション後に古いシークレット・バージョンのコンテンツは使用できませんが、

シークレット・バージョンは引き続き使用可能であり、「現在」以外のローテーション状態を示すマークが付きます。

さいごに

今回は自分の学習のアウトプットも兼ねて書いてみました。
次もセキュリティサービスについて書いていこうと思います。
最後までお読みいただきありがとうございました。


RECENT POST「OCIサービス紹介」の最新記事


OCIサービス紹介

テリロジーが提供しているOCIの4つのサービス

OCIサービス紹介

Oracle FunctionsのスクリプトをAPIGW経由で確認 Part1

OCIサービス紹介

Oracle FunctionsのスクリプトをAPIGW経由で確認 Part2

OCIサービス紹介

OCIのDNSサービス

OCIの暗号化サービス