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キー管理サービス(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)