Pages

Monday, October 3, 2022

【AWS グラレコ解説】データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン - amazon.com


KMS の特徴

暗号化とは、機密データを第三者に読み取られないようにするために、解読不可能な状態に加工することです。暗号化処理には、暗号化用の固有の鍵を使用します。暗号化されたデータを元のデータに復号するには適切な鍵が必要になります。この固有の鍵を厳密に管理することで、不適切なアクセスに対してデータが開示されてしまうことを防ぎます。

暗号化においては、暗号化キーがどこで管理され、どこで使われ、誰が使用でき、どのようにセキュリティが確保されているかが重要です。KMS では、堅牢なシステムに複数の暗号化キーを一元管理し、権限を持ったユーザー以外のアクセスを制限します。さらに、多くの AWS サービスと統合しているため、複雑な操作をすることなく AWS サービス上のデータを保護する暗号化キーを簡単に作成、管理できる利便性の高さもサービスの特徴の一つです。

2022 年 9 月現在、KMS で提供している主な機能は以下のとおりです。

  • KMS キーの生成と安全な保管
  • KMS キー利用の権限管理
  • KMS キー利用の監査
  • 最大 4KB のデータ暗号化
  • AWS サービスとの統合
  • KMS キーのインポート


本記事では、KMS が提供する機能と特徴を以下の順で説明します。

  1. KMS キー
  2. ユーザー所有のキーのインポート
  3. 自動キーローテーションと操作ログの監査
  4. AWS サービス統合
  5. エンベロープ暗号化
  6. KMS の利用料金

KMS キー

KMS は、暗号化キーを作成、所有、管理するサービスです。ここでは KMS キーの種類と作成方法について説明します。

KMS キーの種類

KMS キーは以下の 3 種類があります。

ユーザーが KMS を使って作成、所有、管理できる KMS キーはカスタマーマネージドキーで、AWS マネージドキーはキー ID や、キーのタイプ (対称キーあるいは非対称キー)、キーの仕様など、キーのメタデータの表示のみ可能です。AWS 所有のキーは、一部の AWS サービスが暗黙的にデータ暗号化に利用する KMS キーで、ユーザーが特に意識するものではありません。

KMS キーについて詳しくは、「カスタマーキーと AWS キー」をご覧ください。

KMS キーの作成

KMS キーは、マネジメントコンソール、AWS CLI および AWS SDK を使っていつでも任意のタイミングで作成できます。

キーの作成方法について詳しくは、「キーの作成」をご覧ください。

キーマテリアルオリジンのタイプ

KMS キーを作成する際には、キーマテリアルオリジンのタイプを選択する必要があります。KMS がサポートしているキーマテリアルオリジンは以下の 3 種類です。

通常は、KMS 上でキーマテルアルを含む KMS キーを作成・管理するキーマテリアルオリジン「KMS」を選択します。KMS 以外で生成したキーを使いたい場合、ユーザー所有のキーのインポートを前提とした「外部」、または AWS CloudHSM で管理しているキーを利用する「カスタムキーストア」を選択します。

AWS CloudHSM は、クラウドベースのハードウェアセキュリティモジュール (HSM) です。主に FIPS 140-2 Level 3 と呼ばれるコンプライアンス要件を満たすために利用されます。「カスタムキーストア」として AWS Cloud HSM を利用することで、このコンプライアンス要件を満たしながら、KMS を利用できます。

キーマテリアルオリジンについて詳しくは、「キーマテリアルのオリジン」をご覧ください。


ユーザー所有のキーのインポート

KMS では、ユーザーが独自に作成した暗号化キーを KMS キーとしてインポートできます。この機能は、ユーザー所有のキーを KMS に持ち込むという意味で、Bring Your Own Key (BYOK) と呼ばれます。

KMS キーのインポート

KMS キーのインポートの手順は以下のとおりです。

  1. キーマテリアルオリジンを「外部」に選択し、空の KMS キーを作成する。
  2. ラップキーインポートキーをダウンロードする。
  3. ラップキーを使ってユーザーが作成したキーを暗号化する。
  4. 手順 3 で暗号化したキーと手順 2 でダウンロードしたインポートキーを KMS にアップロードする。

上記の手順でユーザー所有のキーを KMS キーとしてインポートできます。

BYOK の制約事項
BYOK で KMS キーを作成した場合、以下の制約事項があります。

  • インポート可能なキーマテリアルは 256bit の対称キーのみ。 
  • 自動キーローテーションは不可。キーローテーションは手動で行う必要がある。 
  • リージョン障害などで KMS キーに障害があった際に自動復旧されないため、ユーザー側でバックアップをしておく必要がある。

自動キーローテーションと操作ログの監査

KMSは、悪意のある第三者による KMS キーへのアクセスを防止・監視するための機能や堅牢なシステムを備えています。
KMS で保存している KMS キーはエクスポートできないため、KMS がその耐久性の責任を負います。KMS では、KMS キーを 99.9999999% (イレブンナイン) の高耐久性を持つストレージで安全に保管します。また、キーポリシー や、IAM ポリシーグラント などによるアクセス制御で不正アクセスを防ぐことができます。

ここでは、KMS キーを自動で更新する自動キーローテーションと、AWS CloudTrail による監査機能について説明します。

自動キーローテーション

AWS マネージドキーの場合は、1 年間に 1 度自動でキーローテーションが行われます。ユーザーは、自動キーローテーションを無効にしたり、手動でローテーションを行うことはできません。

一方、カスタマーマネージドキーの場合は、1 年間に 1 度実行される自動キーローテーションの有効化・無効化を選択できます。また、キーローテーションを任意のタイミングで手動で行うことができるため、独自のキーローテーションスケジュールを設定できます。

KMS のキーローテーションについて詳しくは、「AWS KMS keys ローテーション」をご覧ください。

クリックすると拡大します

操作ログの監査

KMS は AWS CloudTrail と完全に統合しており、KMS へのすべての API コールのログを記録して Amazon S3 バケットに送信します。記録されるログ情報には、ユーザーの詳細、時間、日付、API アクション、関連する場合には使用されるキーが含まれます。誰がどのキーを、どのリソースで、いつ使用したかを監査できるため、KMS キーへの不適切な操作がないか確認できます。

AWS CloudTrail による操作ログの記録について詳しくは、「AWS KMS による AWS CloudTrail API 呼び出しのログ記録」をご覧ください。


AWS サービス統合

KMS は、データを扱うさまざまな AWS サービスと統合しています。Amazon S3Amazon EFSAmazon EBS などのデータストレージサービスはもちろん、2022 年 9 月現在、100 を超える AWS サービスと統合しており、それら AWS サービス上で扱うデータの暗号化やデジタル署名に利用できます。

現在、KMS が統合されている AWS サービスの一覧については、「AWS のサービスの統合」をご覧ください。なお、KMS がサポートしていない AWS サービスであっても、サービスが扱うデータは AWS 所有のキーで暗黙的に暗号化されます。


エンベロープ暗号化

KMSでは、KMS キーとカスタマーデータキー (CDK) の 2 種類の暗号化キーを使ってデータの暗号化・復号を行うエンベロープ暗号化という仕組みをサポートしています。

エンベロープ暗号化には、以下のような利点があります。

AWS サービス側でデータ暗号化処理を行うサーバーサイド暗号化の場合、自動でエンベロープ暗号化のプロセスが実行されます。一方、ユーザーのアプリケーション側でデータ暗号化処理を行うクライアントサイド暗号化の場合は、ユーザー自身が AWS Lambda などでエンベロープ暗号化のプロセスをアプリケーションに組み込む必要があります。

エンベロープ暗号化のプロセス

エンベロープ暗号化を使った暗号化プロセスは以下のとおりです。

  1. アプリケーションから AWS SDK の GenerateDataKey オペレーションを使って CDK を生成する。
  2. KMS で保管している暗号化 KMS キーが復号され、プレーン (暗号化されていない平文の) KMS キーを使って手順 1. で生成した CDK を暗号化する。
  3. KMS からアプリケーションに、暗号化 CDK とプレーン CDK が返される。
  4. プレーン CDK を使って対象のデータを暗号化する。
  5. プレーン CDK と暗号化前のデータを削除する。
  6. 暗号化データと暗号化 CDK をデータベースなどに保管する。

上記の手順で、エンベロープ暗号化のプロセスに従ったデータの暗号化処理が実行されます。

暗号化されたデータを復号する際は、上記の手順で保管した暗号化データおよび暗号化 CDK と、KMS 上の暗号化 KMS キー を使います。エンベロープ暗号化について詳しくは、「エンベロープ暗号化」をご覧ください。


KMS の利用料金

KMS は、管理している KMS キーの個数や API リクエストの頻度に合わせて自動的にスケールします。複数の暗号化キーの管理を KMS に一元化できるため、スケーラブルなキー管理インフラストラクチャを必要としている場合は、ライセンスコストと運用の負担を軽減できます。

KMS では、KMS キーのストレージ使用量と、KMS への API リクエストに対して従量課金で料金が発生します。

キーストレージ

KMS で作成した KMS キーには、対称キー、非対称キー、HMAC キー、各マルチリージョンキー、キーマテリアルをインポートしたキー、カスタムキーストアのキーなど種類に関わらず、一律で 1 USD / 月の料金が発生します。詳しくは、「キーストレージ」をご覧ください。

なお KMS キーを無効化しても、KMS 内に KMS キーがある限りストレージ料金は継続して発生します。ストレージ料金を止めるには、該当の KMS キーを削除する必要があります。ただし、一度削除したキーは復元できないためご注意ください。

KMS では、今後本当に使用されないキーか確認するために、削除する前に待機期間を設定することができます。詳しくは、「AWS KMS keys を削除する」をご覧ください。

キーの使用量

無料利用枠 (20,000 件のリクエスト/月) を超えた API リクエストに対して料金が発生します。

10,000 件のリクエストごとに 0.03 USD の利用料金がかかります。ただし、ECC GenerateDataKeyPair など一部の API リクエストには、10,000 件 / 月を超えるリクエストに 0.03 USD 以上のコストがかかることにご注意ください。詳しくは、「キーの使用量」をご覧ください。

KMS の利用料金について詳しくは、「AWS Key Management Service の料金」をご覧ください。


まとめ

それでは最後に、本記事で紹介した機能の全体図を見てみましょう。

機密データを扱うシステムでは、データを安全に保護するために、暗号化の仕組みを導入することがセキュリティ管理上のベストプラクティスです。暗号化の仕組みを導入する際は、鍵の厳密な管理が必要になります。KMS は、煩雑な鍵管理を、簡易な操作で低コストに提供する AWS サービスです。さまざまなセキュリティ要件を満たしつつ、大切なデータをリスクや脅威から守るためにも、KMS の特徴や機能をよく理解して導入することをお勧めします。

KMS をまだ利用したことがない方や、さらに詳しく知りたい方は、ぜひ製品ページの「AWS Key Management Service (KMS)」も合わせてご覧ください。

この連載記事のその他の記事はこちら


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

米倉 裕基
アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター・イラストレーター

日英テクニカルライター・イラストレーター・ドキュメントエンジニアとして、各種エンジニア向け技術文書の制作を行ってきました。
趣味は娘に隠れてホラーゲームをプレイすることと、暗号通貨自動取引ボットの開発です。
現在、AWS や機械学習、ブロックチェーン関連の資格取得に向け勉強中です。

AWS のベストプラクティスを毎月無料でお試しいただけます

Adblock test (Why?)


からの記事と詳細 ( 【AWS グラレコ解説】データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン - amazon.com )
https://ift.tt/Y7OtZzS

No comments:

Post a Comment