導入
「データを暗号化しましょう」とはよく言われますが、暗号化には”保存されているとき”と”通信しているとき”の2つの場面があり、それぞれ守り方のサービスが違います。
説明
データの暗号化には、次の2つの観点があります。
- 保管時の暗号化(Encryption at Rest) … ディスクやデータベースに保存されているデータを暗号化する。ディスクを物理的に抜き取られても中身が読めないようにする。
- 転送時の暗号化(Encryption in Transit) … ネットワークを通信中のデータを暗号化する。代表的な方式はTLS/SSL。通信を盗聴されても内容が読めないようにする。
暗号化・鍵管理まわりの主要サービスは次の通りです。
| サービス | 役割 |
|---|---|
| AWS KMS(Key Management Service) | データを暗号化・復号するための鍵を作成・管理するサービス。S3やEBS、RDSなど多くのサービスと統合されている |
| AWS CloudHSM | 専用の物理的なハードウェア(HSM)で鍵を管理するサービス。より厳格な規制要件(鍵を専有ハードウェアで管理したい場合など)に対応 |
| AWS Secrets Manager | データベースのパスワードやAPIキーなどの機密情報を安全に保管し、**自動でローテーション(定期的な更新)**もできるサービス |
| AWS Certificate Manager(ACM) | Webサイトの通信を暗号化するSSL/TLS証明書を作成・管理し、自動更新するサービス |
flowchart LR
D["平文データ"] -->|KMSの鍵で暗号化| S["S3 / EBS / RDSに保存"]
C["クライアント"] -->|TLSで暗号化された通信| A["AWSのサービス"]
App["アプリのコード"] -.パスワードを直書きしない.-> SM["Secrets Manager"]
SM -->|安全に取得・自動ローテーション| App
KMSとCloudHSMの違いは頻出です。KMSはAWSが鍵をマネージド(共有基盤)で管理するのに対し、CloudHSMは利用者専用の物理ハードウェアで鍵を管理します。ほとんどの用途はKMSで十分ですが、規制上「専有ハードウェアが必須」という場合にCloudHSMを選びます。
読んでみよう
「鍵の管理=KMS(専有HWならCloudHSM)」「パスワード等の機密情報=Secrets Manager」「証明書=ACM」という役割分担を混同しないようにしましょう。