SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

CloudHSM vs KMS — ハードウェアセキュリティモジュールの選択基準

AWS CloudHSMとKMSの根本的な違い、FIPS 140-2 Level 3準拠、シングルテナントHSM、KMSカスタムキーストアとしてのCloudHSM利用、コストと運用負荷の比較を解説。

一言結論

ほとんどの規制要件はKMSのFIPS 140-2 Level 2で満たせるため、CloudHSMはAWSも鍵にアクセスできない完全制御やFIPS Level 3が法的に求められる限定的なユースケースに絞って採用すべきだ。

KMS と CloudHSM の根本的違い

KMS(AWS Key Management Service):
  → AWSマルチテナントHSMを使用
  → FIPS 140-2 Level 2 準拠(一部 Level 3)
  → キーの管理はAWSと共有(AWS側がHSWを管理)
  → 完全マネージド(ユーザーは鍵の使い方のみ管理)
  → AWS各サービスとネイティブ統合

CloudHSM:
  → シングルテナントHSM(専用ハードウェア)
  → FIPS 140-2 Level 3 準拠
  → キーの完全制御はユーザー側(AWSもアクセス不可)
  → VPC内に配置、ユーザーが管理責任を持つ
  → AWS Managed Keyはない(カスタムキーのみ)

コンプライアンス要件での使い分け

FIPS 140-2 Level 2(KMS)で十分なケース:
  → ほとんどの規制要件(SOC 2, ISO 27001, PCI DSS等)
  → AWS サービス暗号化(S3, RDS, EBS等)
  → コスト効率を重視する場合

FIPS 140-2 Level 3(CloudHSM)が必要なケース:
  → 金融機関の規制(一部のPCI DSS要件)
  → 政府・防衛関連の規制
  → 鍵の完全制御(AWSも含めて誰もアクセスできない)を要求される場合
  → 独自の暗号化アルゴリズムを使いたい場合

CloudHSM の構成

CloudHSMはVPC内のHSMデバイスとして動作する。

推奨構成(高可用性):
  VPC
  ├── AZ-a: CloudHSM インスタンス 1
  └── AZ-b: CloudHSM インスタンス 2
  
  → 2台以上のHSMでクラスターを構成
  → HSM間でキーが自動同期される
  → 1台が故障しても継続稼働
  
接続方式:
  → VPC内のEC2/コンテナからクライアントライブラリ経由でアクセス
  → VPCエンドポイントは不要(VPN内直接通信)

CloudHSM のセットアップ

# CloudHSMクラスターの作成
aws cloudhsmv2 create-cluster \
  --hsm-type hsm1.medium \
  --subnet-ids subnet-aaa subnet-bbb

# HSMの追加
aws cloudhsmv2 create-hsm \
  --cluster-id cluster-xxx \
  --availability-zone ap-northeast-1a

# 初期化(自己署名CA証明書の生成とクラスター証明書の発行)
# → 詳細なセットアップはCloudHSMクライアントを使って実施

KMS カスタムキーストア(CloudHSM連携)

KMSの使い勝手をそのままに、CloudHSMでキーを保管する。

# カスタムキーストアの作成
aws kms create-custom-key-store \
  --custom-key-store-name my-cloudhsm-store \
  --cloud-hsm-cluster-id cluster-xxx \
  --trust-anchor-certificate file://customerCA.crt \
  --key-store-password password123

# カスタムキーストアに接続
aws kms connect-custom-key-store \
  --custom-key-store-id cks-xxx

# カスタムキーストアにKMSキーを作成
aws kms create-key \
  --custom-key-store-id cks-xxx \
  --description "CloudHSM backed key"
KMS カスタムキーストア(CloudHSM)の特徴:
  → KMSのAPI/SDK/統合をそのまま使える
  → キーの暗号化マテリアルはCloudHSMに保管
  → S3, EBS, RDS等のKMS統合サービスと組み合わせ可能
  → CloudHSMへの接続が切れるとキーが使用不可になる(注意)

コスト比較

KMS:
  AWS管理キー: 無料
  CMK(カスタマー管理キー): $1/月/キー
  API呼び出し: $0.03/10,000回

CloudHSM:
  クラスター作成: 無料
  HSMインスタンス: $1.60/時間(約$1,168/月)
  2台構成(推奨): 約$2,336/月
  
→ CloudHSMは月数千ドルのコストが発生
→ コスト的にKMSが優位だが、規制要件がある場合はCloudHSMを選択

試験頻出ポイント

シナリオ回答
FIPS 140-2 Level 3 の証明が必要CloudHSM
AWSも含めて誰もキーにアクセスできないCloudHSM
KMSのAPI互換でCloudHSMにキーを保管KMSカスタムキーストア
一般的なAWSサービス暗号化(S3等)KMS CMK で十分
CloudHSMの最小推奨台数2台(高可用性のため)

まとめ

KMSはほとんどのユースケースで十分な暗号化を提供するが、FIPS 140-2 Level 3準拠やキーの完全制御が必要な規制環境ではCloudHSMを選択する。KMSカスタムキーストアを使えばKMSのAPIを維持しながらCloudHSMにキーを保管できる。コストはCloudHSMが大幅に高いため、要件を慎重に評価する。