データ削除、本当にできていますか?
発想の転換と AWS KMS を使うことで、実質的にデータを削除したことになります。
本記事では
- 従来のデータ削除の課題
- 暗号化消去(Cryptographic Erasure)の考え方
- AWS KMS を使った暗号化消去の実現方法
をまとめます。
背景と課題
シナリオ1:ユーザー退会時
SaaS サービスを運営しているとして、ユーザーから退会したい依頼があった場合、このユーザーのデータをすべて削除しなきゃならないですよね。
データベースに DELETE 文を実行すれば終わりでは?と思いがちですが、実際にはデータは様々な場所に存在しています。
- 本番データベース ← ここは消せる
- データベースのバックアップ ← 過去30日分ある…
- ログファイル ← S3に保存されている…
- 分析用データウェアハウス ← Redshift にもコピーが…
- 開発・検証環境 ← 本番データをマスキングして使っている…
すべてを漏れなく削除するのは、現実的にはかなり困難です。
シナリオ2:システム閉塞・サービス終了時
SaaS サービスの収益が見込めないので、サービスを終了します!となった場合、これまた扱っているデータをすべて削除しなきゃならないです。
シナリオ1と同様に、データベースやバックアップ、ログなど、データはあちこちに散らばっています。
さらにクラウド環境では、可用性や耐障害性のために自動的にデータが複製されています。
- マルチ AZ 構成の RDS・DynamoDB
- S3 に保存された自動バックアップ・スナップショット
- 別リージョンへのクロスリージョンレプリカ
- CloudWatch Logs や Kinesis 経由で連携先に渡したデータ
オンプレミスならディスクを物理的に破壊するという最終手段がありますが、クラウドでは物理ストレージに手を出すことはできません(共有責任モデル)。
つまり、「全部消した」と言い切ることがさらに難しくなります。
「消したつもり」が招くリスク
データが残っていると、以下のようなリスクがあります。
- 情報漏洩
- 削除したはずのデータがバックアップから復元されて流出
- 法規制違反
- GDPRの「忘れられる権利」に対応できず、制裁金の対象に
- 監査指摘
- 「データ削除の証跡がない」と指摘を受ける
暗号化消去とは
鍵を捨てればデータはゴミになる
暗号化消去(Cryptographic Erasure)は、NIST SP 800-88 が定義するサニタイズ手法の一つです。
要は発想の転換です。
- 従来の考え方
- データを削除する = データそのものを消す
- 暗号化消去の考え方
- データを削除する = データを復号できなくする(鍵を捨てる)
暗号化されたデータは、鍵がなければ意味のないバイト列にすぎません。
つまり、鍵を削除すれば、データが物理的に残っていても、実質的に削除したのと同じ状態 になります。
通常の削除 vs 暗号化消去
| 項目 | 通常の削除 | 暗号化消去 |
|---|---|---|
| DB | 〇 | ↓(復号不能) |
| バックアップ | ×(保持期間中は削除不可) | ↓(復号不能) |
| ログ | ×(他のログと混在) | ↓(復号不能) |
| 分析基盤 | △(手作業が必要) | ↓(復号不能) |
| 復号鍵 | - | 〇 |
- 通常の削除
- 完全な削除は困難
- 暗号化消去
- 鍵を削除することで全てのデータが復号不能
暗号化消去のメリット
- 分散したデータを一括で無効化
- データがどこにあっても、鍵を消せばすべて無効化される
- バックアップからの復元も安心
- バックアップを復元しても、鍵がなければデータは読めない
- 監査に使える証跡が残る
- 「いつ鍵を削除したか」が記録として残る
AWS KMS とは
AWS KMS(Key Management Service)は、AWS が提供する鍵管理サービスです。
暗号化に使う鍵を安全に作成・保管・削除できます。
主な特徴は以下の通りです。
- フルマネージド
- 鍵の保管・保護は AWS にお任せ
- 監査対応
- 鍵の使用履歴が CloudTrail に記録される
- 他の AWS サービスと連携
- S3、RDS、EBS などの暗号化に利用可能
KMS キーの種類
AWS KMS には3種類のキーがあります。
| 種類 | 説明 | 削除可否 |
|---|---|---|
| AWS所有キー | AWS が内部で使用。ユーザーからは見えない | × |
| AWSマネージドキー |
aws/s3、aws/rds など自動作成される |
× |
| カスタマーマネージドキー | ユーザーが自分で作成・管理する | 〇 |
カスタマーマネージドキーは2種類ある
カスタマーマネージドキーは、キーマテリアル(暗号化の実体となる鍵データ)の出所によってさらに2種類に分かれます。
| タイプ | キーマテリアル | 即時削除 | 特徴 |
|---|---|---|---|
| KMS 生成キー | AWS が生成・管理 | ×(7-30 日待機) | 運用が簡単 |
| インポートキー | 外部から持ち込み | 〇 | 即時削除が必要な場合に有効 |
暗号化消去に必要な機能
AWS KMS のカスタマーマネージドキーには、暗号化消去を実現するための機能が揃っています。
- 鍵の作成
- ユーザーやシステム単位で鍵を作成できる
- 鍵の管理
- 鍵にエイリアス(別名)をつけて管理しやすくできる
- 鍵の削除
- 不要になった鍵を削除できる
エンベロープ暗号化
AWS KMS では「エンベロープ暗号化(Envelope Encryption)」という暗号化方式が使われています。
これが暗号化消去を成立させる技術的な仕組みです。
流れはこんな感じです。
- KMS キーを使って「データキー」を生成する
- データの暗号化にはこの「データキー」を使う
- データキー自体も KMS キーで暗号化して保存する
- 平文のデータキーはすぐに破棄する
つまり、保存されるのは「暗号化されたデータキー」と「暗号化されたデータ」の2つだけ。
どちらも、大元の KMS キーがなければ復号できません。
ここがポイント
KMS キーを削除すると、データキーが復号できなくなり、結果としてデータも復号できなくなります。
これが「鍵を消せば全データが無効化される」仕組みの正体です。
具体的な設計
シナリオ1:ユーザー退会時
設計方針:ユーザーごとに KMS キーを発行
- ユーザー登録時
- ユーザーA登録 → KMS キーA を作成
- ユーザーB登録 → KMS キーB を作成
- ユーザーC登録 → KMS キーC を作成
- ユーザーA退会時
- KMS キーA の削除をスケジュール
- 待機期間(7-30日)経過後、鍵が削除される
- ユーザーAのデータは復号不能に
※ ユーザーB、Cのデータには影響なし
この設計のメリット
- 退会したユーザーのデータだけを無効化できる
- 他のユーザーには一切影響がない
- GDPR の「忘れられる権利」に対応しやすい
シナリオ2:システム閉塞・サービス終了時
設計方針:システム(またはテナント)単位で KMS キーを発行
- システム構築時
- システムX用 → KMSキーX を作成
- システムXのすべてのデータは KMSキーX で暗号化
- システム閉塞時
- KMSキーX を削除スケジュール
- 待機期間(7-30日)経過後、鍵が削除される
- システムXの全データが復号不能に
※ バックアップが残っていても、復元してもデータは読めない
この設計のメリット
- システム全体のデータを一括で無効化できる
- テープバックアップやDRサイトのデータも対象になる
- 「完全に削除した」という監査証跡が残る
2つのシナリオの比較
| 項目 | ユーザー退会 | システム閉塞 |
|---|---|---|
| 鍵の粒度 | ユーザー単位 | システム単位 |
| 鍵の数 | 多い(ユーザー数分) | 少ない(システム数分) |
| 削除の影響範囲 | 1ユーザーのみ | システム全体 |
| コスト | 高 | 低 |
導入時の注意点
コスト
AWS KMSは以下の料金が発生します。(2026年2月時点)
| 項目 | 料金 |
|---|---|
| KMSキーの保管 | 約$1/月/キー/リージョン |
| APIリクエスト | 約$0.03/10,000リクエスト |
ユーザー単位で鍵を作成する場合、ユーザー数が増えるとコストも増加します。
例:10万ユーザーの場合
- 鍵保管料だけで月額約$100,000(約1,500万円)
削除は即時ではない(例外あり)
KMS キーの削除には待機期間があります。
- 最短:7日
- 最長:30日
- デフォルト:30日
この期間中は削除をキャンセルできます。
これは誤削除を防ぐための安全機能ですが、「今すぐ完全に消したい」という要件には対応できません。
例外:即時削除が必要な場合はインポートキーを使う
外部からキーマテリアルをインポートした KMS キーの場合は例外です。
以下のコマンドを実行すると、即座にキーマテリアルが削除され、再インポートしない限り、データは永久に復号できなくなります。
# キーマテリアルを即時削除
aws kms delete-imported-key-material --key-id <your-key-id>
注意
インポートキーは、キーマテリアルの生成・管理・インポート作業が必要になり、運用が複雑になります。
即時削除が本当に必要かどうか、要件を慎重に検討しましょう。
設計は最初が肝心
暗号化消去を後から導入するのは困難です。
既存システムに適用する場合は、データの再暗号化が必要になることがあります。
カスタマーマネージドキーを使うこと
S3やRDSの暗号化を有効にすると、デフォルトでAWSマネージドキーが使われることがあります。
AWSマネージドキー(aws/s3、aws/rds など)は削除できません。
削除できないと暗号化消去ができないため、必ずカスタマーマネージドキーを指定してください。
主要サービスのデフォルト設定と、暗号化消去するために必要な対応は以下の通りです。
| サービス | デフォルトの暗号化設定 | 暗号化消去するには |
|---|---|---|
| S3 | SSE-S3 または aws/s3 | カスタマーマネージドキーで SSE-KMS を設定(S3 バケットキーも有効にして KMS API コストを削減) |
| RDS | aws/rds | カスタマーマネージドキーを指定して作成 |
| EBS | aws/ebs | カスタマーマネージドキーを指定して作成 |
まとめ
本記事でまとめた暗号化消去のポイントは以下の通りです。
- データを消すのではなく、鍵を消すという発想の転換
- 分散したデータを一括で無効化できる
- AWS KMSを使えば、フルマネージドで実現可能
- ユーザー退会やシステム閉塞にも適用できる
- ただし、コストと設計は事前に検討が必要
- カスタマーマネージドキーを使わないと暗号化消去はできない
データが残っていると、情報漏洩や法規制違反などのリスクがあります。
暗号化消去でしっかり対応していきましょう!