はじめに
第三の暗号化タイミング
セキュリティ設計や監査にて、通信経路上の暗号化とデータ保管時の暗号化を意識することは多いと思います。
実際、ほとんどの要件はこれでカバーできますが、これらだけでは暗号化されていないタイミングも発生します。
データの使用中です。
秘匿性の高いデータを取り扱うシステムにおいて、データの使用中までをカバーした機密性の維持の実現をするのが、「Confidential Computing」です。
Confidential Computing とは?
Confidential Computing とは、Google Cloud が Trusted Execution Environment (TEE) を用いて提供する使用中のデータ保護機能です。
Confidential Computing には、以下の3つのプロダクトがあります。
- Confidential VM
- Confidential Space
- Split-trust encryption tool
Confidential VM は、GCE や GKE などで、オプションボタンひとつで簡単に利用できます。
ただ、論理的に考えて、パフォーマンスに影響を及ぼしてしまいそうに思えます。
公式サイトではこの性能劣化について、以下のように記されていました。
AMD SEV は、要求の厳しい計算タスクに高いパフォーマンスを提供します。 SEV Confidential VM と標準の Compute Engine VM のパフォーマンスの違いは、ワークロードに応じて、まったくない場合もあれば、最小限の場合もあります。
本当だろうか。。。
そこで、実際にできる限りスペックを揃えた環境を準備して、Confidential Computing が性能に与える影響を検証してみたいと思います。
検証
環境構築
ほぼデフォルトのままで、Confidential VM service だけ有効にしてみました。
そのインスタンスに合わせて変更した箇所は以下のあたり。
測定方法
sysbench を使って行いました。
$ sysbench --version sysbench 1.0.20
測定に使った具体的なコマンドは以下になります。
CPU
$ sysbench cpu run --max-requests=10000 --num-threads=4
Memory
$ sysbench memory run
File I/O
$ sysbench fileio --file-total-size=5G --file-test-mode=rndrw --time=300 --max-requests=0 prepare $ sysbench fileio --file-total-size=5G --file-test-mode=rndrw --time=300 --max-requests=0 run $ sysbench fileio --file-total-size=5G --file-test-mode=rndrw --time=300 --max-requests=0 cleanup
Thread
$ sysbench threads --threads=500 --thread-yields=100 --thread-locks=4 run
Mutex
$ sysbench mutex --threads=100 --mutex-num=1000 --mutex-locks=100000 --mutex-loops=10000 run
結果
sysbench の各コマンドは、様々なメトリクスを返してくれますが、視認性のため比較表では、total time [s] のみを抜粋しています。
Test case | Metrics | non Confidential | Confidential | 劣化割合 |
CPU | total time [s] | 2.4145 | 2.5066 | 3.81% |
Memory | total time [s] | 10.0001 | 10.0001 | 0.00% |
File I/O | total time [s] | 300.0567 | 300.1126 | 0.02% |
Thread | total time [s] | 10.059 | 10.065 | 0.06% |
Mutex | total time [s] | 31.3859 | 41.6316 | 32.64% |
計測は数回行いましたが、いずれも大きな差は発生しませんでした。
この結果から、Mutex 排他制御には 30% ほどの影響が出るようです。
しかし、それ以外の項目では CPU で若干の影響、それ以外の項目では、ほとんど影響がないと言えそうなレベルでした。
Cloud Monitoring 上でも、若干 Confidential VM の方が CPU 消費が多いくらいで、大きな差異は見受けられませんでした。
まとめ
テストケースを変えたり、インスタンスタイプや OS を変えたりはしていないので、検証としては十分とは言えませんが、ある程度実測値を元にした確認をすることができました。
とくにプログラムの変更もなく、性能や費用面への影響も少ない、Confidential VM は機密性の高いワークロードにおいて検討の機会が増えてきそうに思いました。
参考
https://cloud.google.com/confidential-computing/docs/confidential-computing-overview
https://cloud.google.com/confidential-computing/confidential-vm/docs/confidential-vm-overview
https://www.cloudskillsboost.google/paths/15/course_templates/87