ハードウェアセキュリティモジュール - AWS CloudHSM による暗号鍵の専有管理
AWS CloudHSM を使った暗号鍵の専有管理を解説。KMS との使い分け、FIPS 140-2 Level 3 準拠、TLS オフロード、Oracle TDE 統合など高度なユースケースを紹介します。
暗号鍵管理の要件と CloudHSM の位置づけ
暗号鍵の管理は情報セキュリティの根幹です。AWS KMS (Key Management Service) はほとんどのユースケースで十分な暗号鍵管理を提供しますが、一部の規制要件やセキュリティポリシーでは、暗号鍵を専有のハードウェアで管理し、AWS を含む第三者がアクセスできない状態を求められます。AWS CloudHSM は FIPS 140-2 Level 3 認証済みの専有 HSM (Hardware Security Module) をクラウド上で提供するサービスです。HSM はユーザーの VPC 内にデプロイされ、暗号鍵の生成・保存・使用がすべて HSM 内部で完結します。AWS は HSM のハードウェア管理 (プロビジョニング、パッチ適用、バックアップ) を担当しますが、HSM 内部の暗号鍵にはアクセスできません。鍵の管理権限はユーザーが完全に保持します。KMS もバックエンドで HSM を使用していますが、マルチテナントの共有 HSM であり、鍵の管理は AWS と共同で行う形です。コンプライアンス要件で「鍵の専有管理」が求められる場合に CloudHSM が必要になります。
クラスター構成と標準 API
CloudHSM はクラスター単位で管理します。クラスターは 1 つ以上の HSM で構成され、高可用性のために 2 つ以上の AZ に HSM を配置することが推奨されます。クラスター内の HSM 間で暗号鍵が自動的に同期されるため、1 台の HSM が障害を起こしても鍵へのアクセスが継続します。CloudHSM は業界標準の暗号 API をサポートします。PKCS#11 は C/C++ アプリケーションや OpenSSL との統合に使用します。JCE (Java Cryptography Extension) は Java アプリケーションとの統合に使用します。CNG/KSP (Cryptography API: Next Generation / Key Storage Provider) は Windows アプリケーションとの統合に使用します。これらの標準 API に対応しているため、既存のアプリケーションコードの変更は最小限で済みます。HSM クライアントソフトウェアを EC2 インスタンスにインストールし、VPC 内のプライベートネットワーク経由で HSM と通信します。
KMS との使い分け
CloudHSM と KMS の選択は、セキュリティ要件とコストのバランスで判断します。 KMS を選ぶべきケースは、 AWS サービス (S3 、 EBS 、 RDS 、 Lambda など) の暗号化、一般的なアプリケーションの暗号化、コストを抑えたい場合です。 KMS は API 呼び出し 1 万件あたり 0.03 USD と低コストで、 AWS サービスとのネイティブ統合が豊富です。 CloudHSM を選ぶべきケースは、 FIPS 140-2 Level 3 の認証が必要な場合 (KMS は Level 2)、暗号鍵の専有管理が規制で求められる場合、 TLS/SSL オフロードで秘密鍵を HSM 内に保持したい場合、 PKCS#11 や JCE などの標準暗号 API が必要な場合、 Oracle TDE や Microsoft SQL Server の暗号化鍵を HSM で管理したい場合です。 KMS のカスタムキーストア機能を使えば、 CloudHSM クラスターを KMS のバックエンドとして使用でき、 KMS の使いやすさと CloudHSM のセキュリティを両立できます。 HSM 暗号化のベストプラクティスを網羅的に学ぶなら、技術書 (Amazon)を参照してください。
TLS オフロードとデータベース暗号化
CloudHSM の代表的なユースケースが TLS/SSL オフロードです。Web サーバー (Nginx、Apache) の TLS 秘密鍵を CloudHSM 内に保持し、TLS ハンドシェイク時の秘密鍵操作を HSM 内で実行します。秘密鍵がサーバーのメモリやディスクに展開されないため、サーバーが侵害されても秘密鍵が漏洩するリスクを排除できます。OpenSSL エンジンとして CloudHSM を設定することで、Nginx や Apache の設定変更のみで TLS オフロードを実現できます。データベース暗号化では、Oracle TDE (Transparent Data Encryption) の暗号化マスターキーを CloudHSM で管理できます。Oracle Database の設定で PKCS#11 ライブラリとして CloudHSM クライアントを指定するだけで、データベースの暗号化鍵が HSM で保護されます。Microsoft SQL Server の EKM (Extensible Key Management) との統合も同様にサポートされています。料金は 1 HSM あたり 1.60 USD/時で、2 台構成の場合は月額約 2,336 USD です。
CloudHSM の料金
CloudHSM は 1 インスタンスあたり約 1.60 ドル/時 (月額約 1,152 ドル) です。高可用性構成で 2 AZ に配置すると月額約 2,304 ドルです。KMS (月額 1 ドル/キー) と比較して大幅に高コストのため、FIPS 140-2 Level 3 の要件や専有 HSM の要件がある場合に限定して使用します。KMS カスタムキーストアで CloudHSM をバックエンドとして使用すると、KMS の API で CloudHSM の鍵を操作できます。
まとめ - CloudHSM の活用指針
AWS CloudHSM は、暗号鍵の専有管理が求められるエンタープライズ向けのサービスです。FIPS 140-2 Level 3 認証、標準暗号 API (PKCS#11、JCE、CNG)、TLS オフロード、データベース暗号化統合が主な強みです。ほとんどのユースケースでは KMS で十分ですが、規制要件で鍵の専有管理が求められる場合や、TLS 秘密鍵を HSM 内に保持したい場合に CloudHSM を検討してください。月額約 2,336 USD〜のコストが発生するため、要件を慎重に評価した上で導入を判断することを推奨します。