この記事の目次
AWS KMSとは?
AWS KMSはKey Management Serviceの略で、データ暗号化に使用されるカスタマーキーを作成、管理できるマネージド型サービスです。 AWS KMSは、AWSサービスほとんどをデータ暗号化で利用することができます。
AWS CloudTrailとも連携して暗号化利用の監査ログを記録することができます。 キーの作成やストレージはもちろん、期限を管理して自動ローテーションする仕組みもあります。また、手元の暗号化マテリアルをインポートして使用することも可能です。
AWS KMSの利用料金
AWS KMSでユーザーが作成したCMK(マスターキー)はカスタムキーストアで作成したもの、またはインポートしたものを問わず、月々1USDのストレージ利用料がかかります。
また、GenerateDataKeyPair、GenerateDataKeyPairWithoutPlaintext APIリクエストで作成されたデータキーペアの場合は、APIリクエストの量によって料金がかかります。 また、APIリクエストには無料枠が設けられており、その範囲内であれば料金はかかりません。
AWS KMSと統合するAWSサービスのリソースを暗号化する場合は、自動的にキーが作成されますが、このキーの作成料金とストレージ料金はかかりません。
KMSの設定方法
AWS KMSの使用を開始するにはまず、AWS KMS CMK(カスタマーマスタキー)を作成します。 この記事ではCMKの作成、表示方法と有効化のやり方を解説していきます。AWS KMSの操作はAWSマネジメントコンソールで実施することができます。
CMKを作成する
AWS KMSでCMKを作成するにはまず、AWSマネジメントコンソールにログインしてサービス一覧のセキュリティ、ID、およびコンプライアンス欄からAWS Key Management Serviceを開きます。 ナビゲーションペインで[カスタマー管理型のキー]-[キーの作成]を選択します。キーのタイプは対称/非対称を選択します。
対称は暗号化オペレーションと復号オペレーションの両方に使用される単一の暗号化キーです。非対称は暗号化と復号化、署名と検証オペレーションに使用できるパブリックキーとプライベートのキーペアです。
キーのタイプを選択したら任意のエイリアスを入力します。ただし先頭に/awsを用いることは出来ません。タグを付けて管理したい場合はこの画面で任意のタグを追加して[次へ]を選択します。
CMKのアクセスユーザーおよびロールの選択を行う
次に、CMKにアクセスするIAMユーザー/ロールを選択していきます。
まず、CMKの管理者となるIAMユーザー/ロールを選択します。このとき、キーの管理者ユーザーがこのキーを削除出来ないようするには、[キーの管理者がこのキーを削除できるようにします。]にチェックを入れて[次へ]を選択します。
次に、CMKを使用アクセスするIAMユーザー/ロールを選択して[次へ]を選択します。
最後に確認画面でこれまで選択した内容がキーポリシードキュメントで表示されますので、内容を確認して[完了]ボタンを選択します。これでCMKの作成は完了です。
キーの表示や編集を行う方法
AWS KMSで作成したCMKは[カスタマー管理型のキー]に一覧として表示されます。
キーの有効/無効化や編集、削除などはキーにチェックを入れて[キーのアクション]から行うことができます。
AWS KMSでのアクセスコントロール方法
AWS KMSへアクセスする際は、AWS KMSカスタマーマスターキーなどのリクエストの認証情報が必要になります。
AWS KMSとIAMを利用することで、AWSリソースへのアクセスコントロールを行うことができます。アクセスコントールを行う主な方法はポリシーを使うことです。ポリシーは誰が何にアクセスできるかを定義したドキュメントです。
ポリシーを使ったアクセスコントロールの方法は3パターンあります。ひとつめはキーポリシーを単独で使用する方法、ふたつめはキーポリシーとIAMポリシーを合わせた方法、最後に許可とキーポリシーを組み合わせた方法になります。
IAMユーザーにポリシーをアタッチすることで、細かいアクセスコントロールを行うことが可能です。
キーポリシーを使用する
キーポリシーは、AWS KMSカスタマーマスターキーへのアクセスコントロールを行うためのものです。
他の方法とも組み合わせることは可能ですが、カスタマーマスタキーへのアクセスコントールを行うためには、キーポリシーは必ず使用する必要があります。
キーポリシーは、JSON形式で記載されたアクセスコントロールに関するドキュメントです。このJSONドキュメントを直接編集するか、AWSマネジメントコンソールからGUIで編集することもできます。
各AWSサービスでKMSを使用する方法
ほとんどのAWSサービスでは、AWS KMSを使ったデータ暗号化をサポートしています。AWSサービスとAWS KMSを統合することで、カスタマーマスターキーをAWSアカウントで利用することができ、データの保護が可能となります。
また、デフォルトでAWS所有のカスタマーキーを使用しているサービスもあるため、適切なセキュリティ対応をできるように、KMSの機能について把握しておくことが重要になります。
AWS CloudTrailでAWS KMSを使用する方法
AWS CloudTrailでAWS KMSを使用する方法を紹介します。
AWS CloudTrailは、AWSのAPI呼び出しやAWSアカウントのアクティビティを記録して、Amazon S3バケット内にログファイルとして保存することができます。
デフォルトでは、CloudTrailによってS3バケットに保存されるログファイルは、Amazon S3で管理された暗号化キーでサーバー側の暗号化 (SSE-S3) を使用していますが、AWS KMSで管理するサーバー側の暗号化(SSE-KMS)を使用することも可能です。
詳しい方法の手順は「AWS CloudTrail User Guide」の「AWS KMS– 管理キー (SSE-KMS) によるCloudTrailログファイルの暗号化」を参照しましょう。
Amazon DynamoDBでAWS KMSを使用する方法
Amazon DynamoDBでAWS KMSを使用する方法を紹介します。
Amazon DynamoDBは、完全マネージド型のNoSQLデータベースを提供するサービスです。DynamoDBはAWS KMSを統合することで、サーバー側におけるデータ保管時の暗号化をサポートします。
AWS KMSを利用することでDynamoDBはDynamoDBテーブルをディスク保存するたびに、プライマリキーやローカル、グローバルのセカンダリインデックスなどを含む、すべてのカスタマーデータを透過的に暗号化することができます。
DynamoDBのテーブルは、デフォルトですべてAWS CMKを使って暗号化されており、無効にすることはできません。ただし、顧客管理CMKまたはAWS管理CMK for DynamoDBアカウントの下にあるテーブルの一部、またはすべてを暗号化するオプションを選択できます。
AWS KMSについてのまとめ
今回はAWS KMSについての概要や使用方法を紹介しました。
AWS KMSを使うことでAWSサービスのデータ暗号化を簡単に行うことができ、また、カスタマーキーのローテーションや、キーのインポートなどのカスタマイズも可能で、幅広いニーズに対応したセキュリティ管理が可能です。
AWSサービスの中にはデフォルトでAWS KMSを使っているものもあるため、その仕組みについて知っておき、適切な管理を行なっていくことが重要になるでしょう。]]>