目次

AWS CloudHSM 完全ガイド v2.0

初心者から実務者向けの包括的解説

AWS CloudHSM は、FIPS 140-2/140-3 Level 3 認証 ハードウェアセキュリティモジュール(HSM)をマネージドサービスとして提供し、暗号鍵の生成・保管・使用を 顧客が完全に制御 できるセキュリティサービスです。KMS とは異なり、鍵マテリアルは AWS が一切アクセスできない物理 HSM 内に保護され、PKCS#11・JCE・KSP・OpenSSL Engine を通じて暗号化・復号・署名操作を実行。金融機関・医療機関・規制業界における 高度な鍵管理・コンプライアンス を実現します。本ドキュメントは、CloudHSM の仕組み・クラスタ管理・統合方式・運用設定・BYOK パターンを体系的に解説する完全ガイドです。

ドキュメントの目的

本ガイドは以下を対象としています:

  • コンプライアンス担当者:FIPS 140-3・PCI-DSS・医療機関向けセキュリティ要件対応
  • セキュリティアーキテクト:HSM クラスタ設計・High Availability・Backup 戦略
  • DevOps・運用者:CloudHSM クラスタ初期化・キー管理・トラブルシューティング
  • 開発者向け:PKCS#11・JCE・OpenSSL による統合実装
  • 意思決定者向け:KMS vs CloudHSM vs オンプレミス HSM(Thales/Entrust)

2025-2026 年の CloudHSM エコシステム

  • KMS XKS(External Key Store)統合深化: オンプレミス・マルチクラウド HSM 連携
  • Post-Quantum Cryptography 準備: 量子耐性暗号キー生成サポート
  • Cluster Auto-Scaling:マネージド HA の簡素化
  • FIPS 140-3 Level 3 継続対応:最新標準コンプライアンス
  • Multi-Region Key Sync:グローバル HSM クラスタ管理

定義

AWS 公式による定義:

“AWS CloudHSM is a cloud-based hardware security module (HSM) that enables you to generate and use your own encryption keys on AWS Cloud.”

顧客が鍵の完全な制御・所有権を保持し、AWS も物理的にアクセス不可なセキュリティ境界を提供。


目次

  1. 概要
  2. CloudHSM が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. HSM Cluster・HA
  6. ユーザータイプ(CryptoUser/CryptoOfficer)
  7. PKCS#11・JCE・KSP・OpenSSL
  8. キー生成・管理・ローテーション
  9. KMS XKS(External Key Store)統合
  10. Backup・Restore・DR
  11. 主要ユースケース
  12. 設定・操作の具体例
  13. セキュリティ・監査
  14. 類似サービス比較
  15. ベストプラクティス
  16. トラブルシューティング
  17. 2025-2026 最新動向
  18. 学習リソース
  19. 実装例・ロードマップ
  20. 実装チェックリスト
  21. コスト・プライシング
  22. まとめ

概要

初心者向けメモ: CloudHSM は「顧客完全制御の暗号鍵 金庫」です。KMS は AWS がキー管理を担当(一定レベルのセキュリティ)だが、CloudHSM では顧客が鍵マテリアルを生成・所有し、物理 HSM 内に閉じ込める。AWS 管理者も KMS 管理者も、その鍵を見ることができません。金融・医療・政府機関など、キー管理の完全な所有権・制御が必須な環境向け。

CloudHSM は、以下を実現する高度なキー管理プラットフォームです:

特性 説明
FIPS 140-3 Level 3 物理セキュリティ・改ざん検出・リモートアクセス制限
顧客完全制御 鍵の生成・使用・削除をすべて顧客が実行
Hardware-Based 暗号化は専用チップで実行、ソフトウェア脆弱性無関係
Multi-Tenancy なし 専有 HSM、他顧客と共有なし
Protocol 多様 PKCS#11・JCE・KSP・OpenSSL Engine対応

CloudHSM が解決する課題 {#課題}

1. キー管理の完全な所有権・コンプライアンス

課題:金融機関・医療機関は「顧客が生成した鍵を AWS も見てはいけない」という規制要件 CloudHSM の解決:顧客が鍵生成・AWS は物理アクセス不可

2. FIPS 140-3 Level 3 コンプライアンス

課題:高度なセキュリティ認証が必要(医療・金融・軍事) CloudHSM の解決:FIPS 140-3 Level 3 認証、改ざん検出・環境監視組み込み

3. オンプレミス HSM → クラウド への移行

課題:既存 HSM インフラをクラウドに置き換えたい CloudHSM の解決:Thales・Entrust HSM と同等のセキュリティ、AWS 統合


主な特徴 {#特徴}

1. FIPS 140-2/140-3 Level 3 認証

  • Level 2:暗号化・デジタル署名レベル
  • Level 3:物理セキュリティ・改ざん検出・リモートアクセス制限
  • CloudHSM は Level 3 で、最高レベル

2. Multi-HSM Cluster(High Availability)

【HA 構成】
Primary HSM ────→ レプリケーション
Secondary HSM 1 → 自動フェイルオーバー
Secondary HSM 2 → 冗長性確保

3. 顧客完全制御・AWS の一切のアクセス不可

鍵マテリアル: HSM 内に保護
  ├─ 生成: 顧客(CloudHSM クライアント)
  ├─ 使用: 顧客アプリケーション
  └─ 削除: 顧客のコマンド
  
AWS の権限:
  ├─ ✓ インフラ管理(ハードウェア交換等)
  └─ ✗ 鍵の参照・使用・コピー

4. Protocol 多様性

  • PKCS#11: 標準インターフェース(OpenSSL・Java 互換)
  • JCE: Java Cryptography Extension
  • KSP: Windows Cryptographic Service Provider
  • OpenSSL Engine: OpenSSL コマンドライン互換

アーキテクチャ {#アーキテクチャ}

【図1】CloudHSM Cluster アーキテクチャ

graph TB
    subgraph "AWS VPC"
        App["アプリケーション<br/>EC2/Lambda"]
        Client["CloudHSM Client<br/>PKCS#11"]
        ENI1["ENI 1<br/>HSM 1"]
        ENI2["ENI 2<br/>HSM 2"]
        ENI3["ENI 3<br/>HSM 3"]
    end

    subgraph "CloudHSM Cluster"
        HSM1["HSM 1<br/>Primary"]
        HSM2["HSM 2<br/>Secondary"]
        HSM3["HSM 3<br/>Secondary"]
    end

    App -->|Connect| Client
    Client -->|PKCS#11| ENI1
    Client -->|Replicate| ENI2
    Client -->|Replicate| ENI3

    ENI1 --> HSM1
    ENI2 --> HSM2
    ENI3 --> HSM3

    HSM1 <-->|Sync| HSM2
    HSM1 <-->|Sync| HSM3

【図2】キー操作パイプライン

sequenceDiagram
    participant App as Application
    participant Client as CloudHSM Client
    participant HSM as HSM Device

    App->>Client: 1. Init Session
    Client->>HSM: Establish TLS Connection

    App->>Client: 2. Generate Key
    Client->>HSM: Generate Keypair
    HSM-->>Client: Key Handle(鍵参照)

    App->>Client: 3. Encrypt Data
    Client->>HSM: Encrypt(暗号化実行)
    HSM-->>Client: Ciphertext(暗号文)

    App->>Client: 4. Decrypt Data
    Client->>HSM: Decrypt(復号実行)
    HSM-->>Client: Plaintext(平文)

    App->>Client: 5. Delete Key
    Client->>HSM: Delete Keypair
    HSM-->>Client: OK

HSM Cluster・HA {#cluster}

クラスタ構成

3 HSM(Primary × 1 + Secondary × 2)で High Availability を実現。

【単一 HSM】
├─ 単一障害点あり
└─ 保守・アップデート時にダウン

【3-HSM Cluster】
├─ Primary HSM が故障 → Secondary に自動フェイルオーバー
├─ 保守中も他の HSM で継続動作
├─ 同期レプリケーション → 整合性保証
└─ 推奨構成(本番環境)

クラスタ初期化

# クラスタ作成
aws cloudhsm create-cluster \
  --subnet-ids subnet-12345678 \
  --security-group-ids sg-12345678 \
  --region us-east-1

# HSM 追加
aws cloudhsm create-hsm \
  --cluster-id cluster-abc123 \
  --availability-zone us-east-1a

# クラスタ初期化(Cluster Officer パスワード設定)
aws cloudhsm initialize-cluster \
  --cluster-id cluster-abc123 \
  --signed-cert path/to/signed-cert.pem

ユーザータイプ(CryptoUser/CryptoOfficer) {#usertype}

Precrypto Officer

HSM ファームウェア・パーティション初期化など、クラスタレベル管理。

Crypto Officer

ユーザー・ロール管理、キーの作成・削除許可。

Crypto User

キー操作(暗号化・復号・署名)のみ実行。

ロールベースアクセス制御

Partition Policy
  ├── Crypto Officer
  │   ├─ ✓ ユーザー管理
  │   ├─ ✓ キー管理ポリシー設定
  │   └─ ✓ 監査ログ確認
  │
  └── Crypto User
      ├─ ✓ キー暗号化・復号
      ├─ ✓ 署名生成
      └─ ✗ キー削除・ユーザー管理

PKCS#11・JCE・KSP・OpenSSL {#protocols}

PKCS#11(標準インターフェース)

// PKCS#11 による鍵生成・暗号化例
#include <pkcs11.h>

CK_SESSION_HANDLE hSession;
CK_MECHANISM mechanism = { CKM_RSA_PKCS_KEY_PAIR_GEN, NULL, 0 };

// キーペア生成
CK_RV rv = C_GenerateKeyPair(hSession, &mechanism,
                             publicKeyTemplate, publicKeyCount,
                             privateKeyTemplate, privateKeyCount,
                             &hPublicKey, &hPrivateKey);

// 暗号化
CK_MECHANISM encMechanism = { CKM_RSA_PKCS, NULL, 0 };
C_EncryptInit(hSession, &encMechanism, hPublicKey);
C_Encrypt(hSession, plaintext, plaintextLen,
          ciphertext, &ciphertextLen);

JCE(Java Cryptography Extension)

// JCE による鍵生成・署名例
import com.cavium.provider.CaviumProvider;
import java.security.KeyPairGenerator;
import java.security.Signature;

Security.addProvider(new CaviumProvider());

// 鍵ペア生成
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "Cavium");
kpg.initialize(2048);
KeyPair keyPair = kpg.generateKeyPair();

// 署名生成
Signature sig = Signature.getInstance("SHA256withRSA", "Cavium");
sig.initSign(keyPair.getPrivate());
sig.update(data);
byte[] signature = sig.sign();

OpenSSL Engine

# OpenSSL で CloudHSM キーを使用
openssl engine -t cloudshm

# 証明書署名要求(CSR)生成
openssl req -new -engine cloudhsm \
  -keyform engine -key slotId:keyLabel \
  -out request.csr

キー生成・管理・ローテーション {#keymanagement}

キー生成パターン

パターン 1:CloudHSM で生成

最も安全: 鍵が HSM を離れない
  └─ CloudHSM クライアント → HSM で生成 → 暗号化

パターン 2:外部で生成 → CloudHSM にインポート

BYOK(Bring Your Own Key)
  └─ 顧客が生成したキー → CloudHSM にインポート
     ただし、インポート時は TLS で暗号化

キーローテーション戦略

【キー有効期限管理】
キー作成日: 2026-04-26
有効期限: 2027-04-25
  ├─ 1 年前警告(2026-04-25)
  ├─ 新キー生成開始
  └─ 段階的切り替え

【オンライン ローテーション】
1. 新キー生成
2. 新キーを使用開始(段階的)
3. 旧キー使用禁止
4. 旧キー削除

KMS XKS(External Key Store)統合 {#xks}

KMS XKS の仕組み

KMS が CloudHSM に外部委譲:

アプリケーション
  │
  ├─ KMS API: GenerateDataKey
  │   └─ KMS: CloudHSM に委譲
  │       └─ CloudHSM: 実際の暗号化実行
  │
  └─ Plaintext Data Key 取得(アプリが暗号化実行)

セットアップ

# KMS Custom Key Store 作成(CloudHSM バックアップ)
aws kms create-custom-key-store \
  --custom-key-store-name my-hsm-store \
  --cloud-hsm-cluster-id cluster-abc123 \
  --key-store-password <password> \
  --region us-east-1

# カスタムキー作成
aws kms create-key \
  --origin CUSTOM_KEY_STORE \
  --custom-key-store-id cks-abc123 \
  --region us-east-1

メリット

  • ✓ KMS API の利便性 × CloudHSM のセキュリティ
  • ✓ 既存 AWS サービス(S3・RDS)統合
  • ✓ オンプレミス HSM への段階的移行パス

Backup・Restore・DR {#backup}

クラスタバックアップ

# バックアップ作成
aws cloudhsm create-backup \
  --cluster-id cluster-abc123 \
  --region us-east-1

# バックアップ一覧
aws cloudhsm describe-backups \
  --region us-east-1

ディザスターリカバリ

シナリオ 1:クラスタ全体喪失

元クラスタ(3 HSM)
  ├─ 1 つの HSM に障害
  ├─ Backup 作成(最新)
  └─ 新クラスタから復元

シナリオ 2:キー紛失

キーは Backup に保持
  └─ 新クラスタ復元 → 鍵復活

マルチリージョン DR

【Primary Region】
├─ CloudHSM Cluster(Active)
└─ Backup 転送 → Secondary Region

【Secondary Region】
└─ Backup から復元可能
   (フェイルオーバー時)

主要ユースケース {#usecases}

  1. 金融機関向けキー管理:PCI-DSS コンプライアンス、顧客が鍵完全制御
  2. 医療機関向け HIPAA 対応:FIPS 140-3、改ざん検出保証
  3. データセンター間の証明書・キー同期:マルチリージョン HA
  4. オンプレミス HSM からのクラウド移行:互換 API(PKCS#11)で段階的移行
  5. エンタープライズ PKI:階層的 CA・証明書署名
  6. API キー・認証情報の安全な保管:顧客完全制御

設定・操作の具体例 {#cli}

1. クラスタ作成・初期化

# VPC・Subnet 準備
VPC_ID="vpc-12345678"
SUBNET_ID="subnet-12345678"
SG_ID="sg-12345678"

# クラスタ作成
CLUSTER_ID=$(aws cloudhsm create-cluster \
  --subnet-ids $SUBNET_ID \
  --security-group-ids $SG_ID \
  --region us-east-1 \
  --query 'Cluster.ClusterId' \
  --output text)

# HSM 追加(3 台)
for i in {1..3}; do
  aws cloudhsm create-hsm \
    --cluster-id $CLUSTER_ID \
    --availability-zone us-east-1a \
    --region us-east-1
done

# クラスタ初期化
aws cloudhsm initialize-cluster \
  --cluster-id $CLUSTER_ID \
  --signed-cert file://path/to/cert.pem \
  --region us-east-1

2. CloudHSM クライアント インストール・設定

# Amazon Linux 2
sudo yum install -y cloudhsm-client cloudhsm-client-pkcs11

# HSM ホスト情報設定
sudo vim /opt/cloudhsm/etc/cloudhsm_client.cfg
# 出力: SERVER host-ip-address PORT 7002

# クライアント開始
sudo systemctl start cloudhsm-client
sudo systemctl status cloudhsm-client

3. PKCS#11 での鍵操作

# キーペア生成テスト
pkcs11-tool --module /opt/cloudhsm/lib/libcloudhsm_pkcs11.so \
  -l -c slot0user -p password \
  --keypairgen --key-type rsa:2048 \
  --label my-rsa-key

# 鍵リスト表示
pkcs11-tool --module /opt/cloudhsm/lib/libcloudhsm_pkcs11.so \
  -l -c slot0user -p password \
  --list-objects

4. Terraform IaC(クラスタ作成)

resource "aws_cloudhsm_cluster" "main" {
  subnet_ids = [aws_subnet.main.id]
  security_group_ids = [aws_security_group.cloudhsm.id]
}

resource "aws_cloudhsm_v2_cluster" "main" {
  hsm_type   = "hsm1.medium"
  subnet_ids = [aws_subnet.main.id, aws_subnet.secondary.id]
}

resource "aws_cloudhsm_v2_hsm" "hsm1" {
  cluster_id  = aws_cloudhsm_v2_cluster.main.id
  subnet_id   = aws_subnet.main.id
  az          = "us-east-1a"
}

resource "aws_cloudhsm_v2_hsm" "hsm2" {
  cluster_id  = aws_cloudhsm_v2_cluster.main.id
  subnet_id   = aws_subnet.secondary.id
  az          = "us-east-1b"
}

セキュリティ・監査 {#security}

ロギング・監査証跡

CloudHSM イベント:
├── ユーザー認証(成功・失敗)
├── キー操作(生成・削除・暗号化)
├── パーティション管理
└── HSM ファームウェア更新

ログ出力先:
├── CloudWatch Logs
├── CloudTrail(AWS API 呼び出し)
└── HSM 内部ログ(保護・改ざん不可)

FIPS 140-3 コンプライアンス検証

【認証内容】
✓ 暗号アルゴリズム(AES・RSA・ECDSA)
✓ 物理セキュリティ(改ざん検出・環境監視)
✓ キー管理プロセス
✓ リモートアクセス制限
✓ 運用セキュリティ

【検証方法】
aws cloudhsm describe-clusters --query 'Clusters[0].CertificateInformation'

類似サービス比較 {#comparison}

特性 CloudHSM KMS Thales Luna Entrust nShield
形態 マネージド HSM マネージド鍵管理 エンタープライズ HSM エンタープライズ HSM
FIPS 140-3 Level 3 140-2 Level 2 140-3 Level 3 140-3 Level 3
顧客制御 ◎ 完全制御 △ 委譲 ◎ 完全制御 ◎ 完全制御
AWS 統合 ◎ KMS XKS ◎ 組み込み △ 連携 △ 連携
マルチテナント ✗ 専有 ✓ 共有 ✗ 専有 ✗ 専有
初期投資 中程度

ベストプラクティス {#bestpractices}

✅ 推奨

✓ クラスタは最低 3 HSM(HA 構成)
✓ 定期バックアップ(毎日)
✓ マルチリージョン DR 計画
✓ キーローテーション ポリシー実装
✓ CloudWatch・CloudTrail ロギング有効化
✓ 定期的なセキュリティ監査

❌ アンチパターン

× 単一 HSM 構成(本番環境)
× バックアップなし
× キー管理ポリシー不定義
× ロギング無効化
× コスト削減名目での削減(セキュリティ機能)

トラブルシューティング {#troubleshooting}

症状 原因 解決策
クラスタ接続不可 ネットワーク・セキュリティグループ ENI・ SG 設定確認
HSM 初期化失敗 クラスタ officer パスワード誤り パスワードリセット
キー操作タイムアウト HSM 過負荷 HSM リソース監視、複数 HSM 添加
バックアップ失敗 ストレージ不足 CloudWatch ディスク使用率監視

2025-2026 最新動向 {#latest}

  1. KMS XKS 統合深化:より多くの AWS サービスが External Key Store サポート
  2. Post-Quantum Cryptography:量子耐性暗号キー生成サポート検討
  3. Multi-Region Cluster:グローバルクラスタ同期・自動フェイルオーバー
  4. Managed Backup:自動バックアップ・保持ポリシー
  5. Enhanced Monitoring:AWS Native メトリクス・ダッシュボード

学習リソース・参考文献 {#resources}

公式ドキュメント

  1. AWS CloudHSM User Guide
  2. CloudHSM API Reference
  3. FIPS 140-2/140-3 標準
  4. PKCS#11 Specification
  5. AWS CloudHSM Best Practices
  6. KMS Custom Key Store
  7. CloudHSM vs KMS
  8. Thales Luna HSM

実装例・ロードマップ {#roadmap}

Week 1-2:設計・セットアップ

  • Day 1-3: VPC・ネットワーク設計
  • Day 4-7: クラスタ作成・初期化
  • Day 8-10: CloudHSM クライアント インストール
  • Day 11-14: パイロット運用(単一キー)

Week 3-4:本番化

  • Day 15-17: キーローテーション ポリシー策定
  • Day 18-21: バックアップ・DR テスト
  • Day 22-28: セキュリティ監査・ペネトレーションテスト

実装チェックリスト {#checklist}

【設計フェーズ】
☐ キー管理ポリシー定義
☐ ネットワーク設計(VPC・Subnet・SG)
☐ HA・DR 戦略検討
☐ コンプライアンス要件整理

【セットアップ】
☐ VPC・HSM Subnet 作成
☐ CloudHSM クラスタ作成(3 HSM)
☐ Cluster Officer パスワード設定
☐ CloudHSM クライアント インストール

【運用準備】
☐ キー生成テスト
☐ PKCS#11 統合テスト
☐ バックアップ・復元テスト
☐ CloudWatch・CloudTrail ロギング

【本番運用】
☐ ローテーション スケジュール
☐ セキュリティ監査実施
☐ インシデント対応計画
☐ スタッフトレーニング

コスト・プライシング {#pricing}

【クラスタ構成費】
HSM 1 台: $1,500-2,000/月
最低構成(3 HSM): $4,500-6,000/月

【転送料金】
Data Transfer: 通常の AWS 料金

【初期セットアップ】
初期構成・テスト: 含まれず(人的コスト)

まとめ {#summary}

AWS CloudHSM は、顧客が暗号鍵の完全な所有権・制御を持つ エンタープライズグレードのキー管理ソリューションです。FIPS 140-3 Level 3 認証・Hardware-Based セキュリティ・Protocol 多様性により、金融・医療・規制業界のコンプライアンス要件を満たしながら、AWS のスケーラビリティ・可用性を享受できます。

核心ポイント

  1. 顧客完全制御:鍵生成から削除まで、すべて顧客が実行
  2. FIPS 140-3 Level 3:物理セキュリティ・改ざん検出保証
  3. HA・マルチリージョン対応:3-HSM Cluster で高可用性
  4. Protocol 多様性:PKCS#11・JCE・OpenSSL 互換
  5. KMS XKS 統合:AWS サービス標準インターフェース活用

最終更新:2026-04-26
バージョン:v2.0