· 

OCIの暗号化サービス

こんにちは。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つのキー・バージョンによって暗号化されるデータの量が制限されますが、ローテーションにより、キーの漏えいが発生した場合のリスクを軽減できます。

また、ローテーション後に古いキー・バージョンを暗号化に使用することはできませんが、

キー・バージョンは、以前に暗号化されたデータを復号化するために使用できます。

ボールト・サービスでは、復号化に必要な情報がキーの暗号文に含まれているため、

 

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

 

 

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

 

各シークレットには、シークレット・バージョンが自動的に割り当てられます。

シークレットをローテーションする際は、新しいシークレット・コンテンツをボールト・サービスに渡し、新しいシークレット・バージョンを生成します。

シークレット・コンテンツを定期的にローテーションすることで、何らかの原因でシークレットが公開された場合のリスクを抑えることができます。

 

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

 

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

さいごに

今回は自分の学習のアウトプットも兼ねて書いてみました。

次もセキュリティサービスについて書いていこうと思います。

最後までお読みいただきありがとうございました。