🀄

AWS認定セキュリティ データ保護

2021/05/22に公開

こんにちは!
現在AWS認定セキュリティ試験の勉強中です。
今回は試験範囲の1つである データ保護 で出題される可能性があるサービスの特徴などをまとめていきたいと思います。
基本的にはNRIネットコム株式会社の「要点整理から攻略する『AWS認定 セキュリティ-専門知識』」という本を使って勉強しております。とてもわかりやすいのでおすすめです。

目次

  • KMS
  • CloudHSM
  • EBS

KMS

データ暗号化に使用される暗号化キーの作成と管理を行うサービスです。KMSの暗号化キーの操作履歴は全てCloudTrailに保存されるので、監査などがあった際はCloudTrailを確認すると良いです。

CloudTrailって??

AWSアカウントに対する操作のイベントログを記録するサービスです。どのユーザーがどういうことをしたのか確認することができます。

KMSではEnvelope Encryptionという仕組みで暗号化されます。

Envelope Encryptionとは??

日本語で書くとエンベロープ暗号化です。CustomerMasterKeyとCustomerDataKeyという2種類のキーを使って暗号化させる方法です

CustomerDataKey
データを暗号化するためのキー。略してCDKと呼ばれる
CustomerMasterKey
CDKを暗号化するためのキー。略してCMKと呼ばれる

CDKでデータを暗号化し、CMKでデータ暗号化に使用したキーであるCDKを暗号化します。さらに暗号化前のデータとCDKは破棄する。そうするとCMKを使って暗号化済のCDKを複合し、複合したCDKを使って暗号化済のデータを複合するという手順を踏まないと元のデータが見れなくなります。厳重ですね。

データを暗号化してもその暗号化に使用したキーが盗まれたら意味ないよねってことからこのような仕組みができたそうです。

でもCMKが盗まれたら一緒じゃない??

明確な回答は見つかりませんでした。。
CDKはデータを暗号化するためにアプリケーションまで行くけど、CMKはKMSの中にとどまるからCDKと比べると盗まれるリスクが低いのかな?(分かる方教えてください)

ちなみにAWSのよくある質問を見ると、パフォーマンス面でメリットがあると書いてありました。

Q: なぜエンベロープ暗号化を使用するのですか? なぜ単に AWS KMS に直接データを送信して暗号化しないのですか?
AWS KMS は最大 4 KB のデータを直接暗号化して送信することをサポートしていますが、エンベロープ暗号化にはパフォーマンス面で多大なメリットがあります。AWS KMS で直接データを暗号化する場合、データをネットワーク経由で送信する必要があります。エンベロープ暗号化は、非常に小さいデータキーのリクエストと配信がネットワークを行き交うのみなので、ネットワークの負荷が軽減します。データキーは、アプリケーション内または暗号化を行う AWS のサービスでローカルに使用されるため、データブロック全体を AWS KMS に送信する必要がなく、ネットワークレイテンシーが発生しません。

ネットワーク負荷が軽減され、遅延も少なくなるみたいですね

CMKには以下の3種類があります

カスタマー管理CMK

AWS利用者が作成、所有、管理するCMK。
ユーザーが開発したアプリケーションでデータを暗号化する際に使用される。
1年ごとの自動ローテーションの有効・無効を設定することができます。
途中でキーを無効化したり、無効化後に再有効化したりできる。CMKを削除してよいか不安ならまずは無効化してエラーが発生しないことを確認してから削除すると良い

AWS管理CMK

AWSサービスが利用者に代わって作成、管理、使用するCMK。
3年ごとにAWS側で自動ローテーションされる。
キーを無効化することはできない

AWS管理CMK

アカウントに関係なくAWSが所有し管理しているサービス
AWSサービスが裏側で暗号化のために使用するものと理解してよい

カスタマー管理CMKは削除することができます。ただ削除してしまうと元のデータが復元不可能になってしまうので、即削除はできないようになっています。7〜30日の待機期間が設けられてこの期間は削除されないようになっています。

CloudHSM

KMSと同じく暗号化に使用される暗号化キーの作成と管理を行うサービスです。KMSよりも厳重なキーの管理をしてくれます。

以下のような特徴があります。

  • 暗号化キーの保存に専用ハードウェアが使用される
  • VPC内で実行される
  • AWSはキーにアクセスできない
  • 対称キーと非対称キーの両方に対応している
  • 耐障害性や可用性はユーザー側で設定して担保する
  • KMSよりも高い
    etc

基本的にはKMSを使えば良いが以下のような場合はCloudHSMの利用を考える。

  • 暗号化キーの保存に専用のハードウェアが必要など高いコンプライアンス要件がある場合
  • キーの管理を自分で行い、AWSや他社に見せたくない場合
  • キーをVPC内に配置してアクセス制御をしたい場合

KMSとCloudHSMの比較
(ほぼ「要点整理から攻略する『AWS認定 セキュリティ-専門知識』」という本からの引用です。)

CloudHSM KMS
キーの保存場所 VPC内専用ハードウェア AWS
パフォーマンスや可用性管理 利用者 AWS
コスト 高い 安い
AWSサービスでの利用 RedshiftやRDS等一部 ほぼ全てのサービス

EBS

EC2で使用されるストレージボリュームです。KMSのCMKを使用してEBSを暗号化することができます。
暗号化されたEBSが接続されているEC2の操作を行う場合、KMS APIを呼び出す権限がいくつか必要です。

今使っているEBSは暗号化していないのですが、これを暗号化することは可能ですか?

暗号化されていないEBSを直接暗号化することはできなません。あとから暗号化したくなった場合はスナップショットをコピーしたときに暗号化を有効にし、そのスナップショットからEBSボリュームを作成すれば暗号化できます。

暗号化を解除することは??

暗号化されたEBSの暗号化解除はできないです。暗号化されてない空のEBSを用意しrsyncなどで手動でデータをコピーすることは可能です。

rsyncって??

ローカルサーバーからリモートサーバーにファイル転送したりするときに使うコマンドです。
[参考記事](https://qiita.com/bezeklik/items/22e791df7187958d76c1)


これで今回の記事は以上となります。最後までお読みいただきありがとうございました。

Discussion