AWS - KMS Enum
KMS - Key Management Service
AWS Key Management Service (AWS KMS) は、ユーザーがカスタマーマスターキー(CMK)を作成および管理するプロセスを簡素化するマネージドサービスとして提供されています。これらのCMKはユーザーデータの暗号化に不可欠です。AWS KMSの注目すべき特徴は、CMKが主にハードウェアセキュリティモジュール(HSM)によって保護されていることです。これにより、暗号化キーの保護が強化されます。
KMSは対称暗号を使用します。これは、静止状態の情報を暗号化するために使用されます(例えば、S3内)。転送中の情報を暗号化する必要がある場合は、TLSのようなものを使用する必要があります。
KMSはリージョン固有のサービスです。
Amazonの管理者はあなたのキーにアクセスできません。彼らはあなたのキーを回復することも、キーの暗号化を助けることもできません。AWSはオペレーティングシステムと基盤となるアプリケーションを管理するだけであり、暗号化キーの管理とその使用方法の管理は私たちに委ねられています。
カスタマーマスターキー(CMK):最大4KBのデータを暗号化できます。通常、DEK(データ暗号化キー)を作成、暗号化、および復号化するために使用されます。その後、DEKがデータを暗号化するために使用されます。
カスタマーマスターキー(CMK)は、AWS KMSにおけるマスターキーの論理的な表現です。マスターキーの識別子やその他のメタデータ(作成日、説明、キーの状態など)に加えて、CMKにはデータを暗号化および復号化するために使用されるキー素材が含まれています。CMKを作成すると、デフォルトでAWS KMSがそのCMKのキー素材を生成します。ただし、キー素材なしでCMKを作成し、自分のキー素材をそのCMKにインポートすることも選択できます。
マスターキーには2種類あります:
AWS管理CMK:他のサービスがデータを暗号化するために使用。リージョン内でそれを作成したサービスによって使用されます。サービスで暗号化を初めて実装したときに作成されます。3年ごとにローテーションされ、変更することはできません。
カスタマーマネージャーCMK:柔軟性、ローテーション、アクセスとキーのポリシーの設定が可能。キーの有効化と無効化が可能。
エンベロープ暗号化:データキーでデータを暗号化し、その後マスターキーでデータキーを暗号化する二層階層システム。
Key Policies
これらは、KMSでキーを使用およびアクセスできる人を定義します。
デフォルトでは:
KMSキーを所有するAWSアカウントにKMSキーへのフルアクセスを許可します。
他のAWSリソースポリシーとは異なり、AWS KMSキーのポリシーはアカウントやそのユーザーに自動的に権限を付与しません。アカウント管理者に権限を付与するには、キーのポリシーにこの権限を提供する明示的なステートメントを含める必要があります。
アカウント(
"AWS": "arn:aws:iam::111122223333:root"
)のIAM権限を許可しないと機能しません。キーのポリシーに加えて、IAMポリシーを使用してKMSキーへのアクセスを許可します。
この権限がないと、キーへのアクセスを許可するIAMポリシーは無効ですが、キーへのアクセスを拒否するIAMポリシーは依然として有効です。
アカウント管理者(削除できないアカウントルートユーザーを含む)にアクセス制御権限を与えることで、キーが管理不能になるリスクを軽減します。
デフォルトポリシーの例:
アカウントが許可されている場合("arn:aws:iam::111122223333:root"
)、アカウントのプリンシパルはKMSキーを使用するためにIAM権限が必要です。しかし、例えばロールのARNがキー・ポリシーで特に許可されている場合、そのロールはIAM権限を必要としません。
キー管理者
デフォルトのキー管理者:
KMSを管理するアクセス権を持つが、データの暗号化や復号化はできない
キー管理者リストに追加できるのはIAMユーザーとロールのみ(グループは不可)
外部CMKが使用されている場合、キー管理者はキー素材をインポートする権限を持つ
CMKのローテーション
同じキーが長期間使用されると、そのキーで暗号化されるデータが増え、そのキーが侵害された場合、リスクにさらされるデータの範囲が広がります。さらに、キーがアクティブである期間が長くなるほど、侵害される確率も高くなります。
KMSは顧客キーを365日ごとにローテーション(または任意のタイミングで手動で実行可能)し、AWSが管理するキーは3年ごとにローテーションされ、この期間は変更できません。
古いキーは保持され、ローテーション前に暗号化されたデータを復号化するために使用されます。
侵害が発生した場合、キーをローテーションしても脅威は取り除かれません。侵害されたキーで暗号化されたすべてのデータを復号化できるためです。しかし、新しいデータは新しいキーで暗号化されます。
CMKが無効または削除保留状態の場合、KMSはキーのローテーションを実行しません。CMKが再有効化されるか、削除がキャンセルされるまで待ちます。
手動ローテーション
新しいCMKを作成する必要があります。これにより新しいCMK-IDが作成されるため、アプリケーションを更新して新しいCMK-IDを参照する必要があります。
このプロセスを簡単にするために、エイリアスを使用してキーIDを参照し、エイリアスが参照するキーを更新するだけで済みます。
古いファイルを復号化するために古いキーを保持する必要があります。
オンプレミスのキーインフラストラクチャからキーをインポートできます。
その他の関連KMS情報
KMSは月ごとのすべてのサービスから受信した暗号化/復号化リクエストの数に基づいて料金が発生します。
KMSはCloudTrailとの完全な監査およびコンプライアンス統合を持っています。これにより、KMSで実行されたすべての変更を監査できます。
KMSポリシーで以下のことが可能です:
データキーを作成できるユーザーと、これらのキーを使用できるサービスを制限する
システムアクセスを暗号化のみ、復号化のみ、またはその両方に制限する
システムがリージョンを超えてキーにアクセスできるように定義する(ただし、KMSをホストするリージョンでの障害が他のリージョンのシステムの可用性に影響を与えるため、推奨されません)。
リージョン間でキーを同期または移動/コピーすることはできません。リージョンを超えたアクセスを許可するルールを定義することのみが可能です。
列挙
Privesc
AWS - KMS PrivescPost Exploitation
AWS - KMS Post ExploitationPersistence
AWS - KMS PersistenceReferences
Last updated