クラウド環境での暗号化/鍵管理 - Salesforce.comのアプローチ

日本クラウドセキュリティアライアンス
業務執行理事 諸角昌宏

クラウド環境では、データの転送時、データの保存時にデータを暗号化することがクラウドセキュリティのための推奨事項になっていて、CSAのガイダンスでも推奨されている。暗号化せずにクラウドに置かれているデータは、公開されているデータと見做される場合もある。また、暗号化と対になるのが暗号鍵の管理になる。暗号鍵を適切に管理/保管することも非常に重要になる。クラウド環境における鍵の管理について、CSAのガイダンスではユーザ側で管理することを強く推奨している。これは、プロバイダが鍵管理を行った場合に、鍵が漏れてしまうことによるデータ漏洩や、プロバイダの管理者が鍵を不正使用することによるデータ漏洩の危険を避けるためである。しかしながら、IaaSではユーザが鍵管理を行うことができる可能性が高いが、PaaS/SaaSにおいてはユーザが鍵管理を行うことは難しくなる。クラウド上のアプリケーションがデータを処理するためには、暗号化されたデータを復号する必要があり、そのための鍵が必要になるからである。このような状況では、プロバイダ側の鍵管理の状況を明確に把握し、必要に応じて強固な鍵管理を要請することが必要になってくる。

このような状況の中で、この問題を解決する可能性のある方法をSalesForce.comがリリースしたので、これについて紹介する。

SalesForce.comは、SalesForce Shieldという名前で、提供するクラウド環境のセキュリティを強化したソリューションを出してきている。SalesForce Shieldは、以下の3つの機能からなっている:

  • Event Monitoring
  • Field Audit Trail
  • Platform Encryption

この中で、暗号化/鍵管理にあたるところが、Platform Encryptionになる。なお、Platform Encryptionの特徴は以下になるようである:

  • データ保存時の暗号化(encrypted at rest)
  • 法律/コンプライアンスへの対応
  • 追加のハードウエア不要
  • 鍵のライフサイクル全般に渡っての管理
  • 鍵管理を完全にユーザがコントロール可能

さて、Platform Encryptionでは、どのようにして鍵をユーザがコントロールできるようになっているのだろうか?詳細は、ホワイトペーパーが以下のURLで公開されているので、一読いただければと思う(ダウンロードするには、登録が必要になる)。

https://www.salesforce.com/assets/pdf/misc/Platform_Encryption_Architecture_White_Paper.pdf

ここでは、その概要について記述する。

SalesForce.comでは、いわゆるSplit KeyあるいはKey Segmentationという方法を用いて実現している。これは、暗号鍵をどこかに保存しておく代わりに、論理的あるいは物理的に分離されたHSM (Hardware Security Module)からオンデマンドで引き出す形をとっている。ここでは、SalesFormce.com側が管理する鍵(master secret)とユーザ側が管理する(tenant secret)という2つの鍵を用いる。master secretは、SalesForce.com固有のHSMから作成され、SalesForce.comの内部システムに安全に保管される。また、ユーザ用に作成されるtenant secretは、ユーザがオンデマンドで作成し、ユーザのデータベースに保管する。これらの2つの鍵を用いて、初めて暗号鍵を引き出して使用できるようになる。したがって、暗号鍵がどこかに保存されるという必要もなくなるし、ユーザ側でtenant secretを完全にコントロールし、作成、削除等が行えるようになる。これにより、SaaS環境でのユーザ側での鍵管理を、実質的に実現できるようになっている。

鍵管理は、CCM(Cloud Control Matrix)のEKM-04において「鍵は(当該クラウドプロバイダの)クラウド内に保管するのではなく、クラウドの利用者または信頼できる鍵管理プロバイダが保管しなければならない。」と言っており、プロバイダではなく利用者あるいは信頼できる鍵管理プロバイダが保管することを推奨している。このような状況の中で、特定の鍵の保管なしに利用者が管理できることを実現していることは、今後注視していきたい。

以上

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*