AWS - KMS Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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: 柔軟性、ローテーション、構成可能なアクセスおよびキー ポリシー。キーを有効または無効にします。
エンベロープ暗号化 は、キー管理サービス (KMS) の文脈において: データキーでデータを暗号化し、次にマスターキーでデータキーを暗号化するための二層階層システムです。
これにより、KMS でキーを使用およびアクセスできる人を定義します。
デフォルトでは:
KMS キーを所有する AWS アカウントの IAM にアクセスを管理する 権限を与えます。
他の AWS リソースポリシーとは異なり、AWS KMS キーポリシーはアカウントの任意のプリンシパルに自動的に権限を与えません。アカウント管理者に権限を与えるには、キーポリシーにこの権限を提供する明示的なステートメントを含める必要があります。
アカウントを許可しない限り ("AWS": "arn:aws:iam::111122223333:root"
) IAM 権限は機能しません。
キーポリシーに加えて、KMS キーへのアクセスを許可するために IAM ポリシーを使用することをアカウントに許可します。
この権限がないと、キーへのアクセスを許可する IAM ポリシーは無効になりますが、キーへのアクセスを拒否する IAM ポリシーは依然として有効です。
アカウント管理者、削除できないアカウントのルートユーザーを含むアカウント管理者にアクセス制御権限を与えることにより、キーが管理不能になるリスクを軽減します。
デフォルトポリシーの例:
もしアカウントが許可されている("arn:aws:iam::111122223333:root"
)場合、アカウントのプリンシパルはKMSキーを使用するためにIAM権限が必要です。しかし、例えば役割のARNがキー ポリシーで特に許可されている場合、その役割はIAM権限が不要です。
デフォルトのキー管理者:
KMSを管理するアクセス権を持っていますが、データを暗号化または復号化することはできません
キー管理者リストにはIAMユーザーとロールのみが追加できます(グループは不可)
外部CMKが使用される場合、キー管理者はキー素材をインポートする権限を持っています
同じキーが長く使用されるほど、そのキーで暗号化されるデータが増え、そのキーが侵害されると、リスクのあるデータの範囲が広がります。さらに、キーがアクティブである期間が長くなるほど、侵害される可能性が高まります。
KMSは顧客キーを365日ごとにローテーションします(または、いつでも手動でプロセスを実行できます)し、AWSが管理するキーは3年ごとにローテーションされ、この期間は変更できません。
古いキーは保持され、ローテーション前に暗号化されたデータを復号化するために使用されます。
侵害が発生した場合、キーをローテーションしても脅威は除去されず、侵害されたキーで暗号化されたすべてのデータを復号化することが可能です。しかし、新しいデータは新しいキーで暗号化されます。
CMKが無効または削除保留中の状態にある場合、KMSはCMKが再有効化されるか削除がキャンセルされるまでキーのローテーションを実行しません。
新しいCMKを作成する必要があります。その後、新しいCMK-IDが作成されるため、アプリケーションを新しいCMK-IDを参照するように更新する必要があります。
このプロセスを簡単にするために、エイリアスを使用してキーIDを参照し、エイリアスが指しているキーを更新するだけで済みます。
古いファイルを復号化するために古いキーを保持する必要があります。
オンプレミスのキーインフラストラクチャからキーをインポートできます。
KMSは、すべてのサービスから受け取った暗号化/復号化リクエストの数に基づいて価格が設定されます。
KMSは完全な監査およびコンプライアンスCloudTrailとの統合を提供しています。ここでKMSに対して行われたすべての変更を監査できます。
KMSポリシーを使用して次のことができます:
データキーを作成できる人と、これらのキーを使用するサービスを制限する
システムのアクセスを暗号化のみ、復号化のみ、または両方に制限する
システムがリージョンを超えてキーにアクセスできるように定義する(ただし、KMSをホストしているリージョンでの障害が他のリージョンのシステムの可用性に影響を与えるため、推奨されません)。
リージョン間でキーを同期または移動/コピーすることはできません。リージョン間でのアクセスを許可するルールを定義することのみが可能です。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)