Translated ['src/pentesting-cloud/aws-security/aws-services/aws-kms-enum

This commit is contained in:
Translator
2025-07-03 14:54:19 +00:00
parent cad0cacbb6
commit 70b8dc89c1

View File

@@ -2,46 +2,46 @@
{{#include ../../../banners/hacktricks-training.md}}
## KMS - キー管理サービス
## KMS - Key Management Service
AWSキー管理サービスAWS KMSは、顧客マスターキーCMK**作成および管理する**プロセスを簡素化するマネージドサービスとして提供されています。これらのCMKは、ユーザーデータの暗号化に不可欠です。AWS KMSの注目すべき機能は、CMKが主に**ハードウェアセキュリティモジュール**HSMによって**保護されている**ことです。これにより、暗号化キーの保護が強化されます。
AWS Key Management Service (AWS KMS) は、ユーザーが **顧客マスターキー** (CMK) を **作成および管理する** プロセスを簡素化するマネージドサービスとして提供されています。これらのCMKは、ユーザーデータの暗号化に不可欠です。AWS KMSの注目すべき機能は、CMKが主に **ハードウェアセキュリティモジュール** (HSM) によって **保護されている** ことです。これにより、暗号化キーの保護が強化されます。
KMSは**対称暗号化**を使用します。これは**情報を静止状態で暗号化する**ために使用されます例えば、S3内。**情報を転送中に暗号化する**必要がある場合は、**TLS**のようなものを使用する必要があります。
KMSは **対称暗号化** を使用します。これは **情報を静止状態で暗号化する** ために使用されます例えば、S3内)。**情報を転送中に暗号化する** 必要がある場合は、**TLS** のようなものを使用する必要があります。
KMSは**リージョン固有のサービス**です。
KMSは **リージョン固有のサービス** です。
**Amazonの管理者はあなたのキーにアクセスできません**。彼らはあなたのキーを復することができず、あなたのキーの暗号化を手伝うこともありません。AWSは単にオペレーティングシステムとその基盤となるアプリケーションを管理しており、私たちが暗号化キーを管理し、それらのキーがどのように使用されるかを管理する責任があります。
**Amazonの管理者はあなたのキーにアクセスできません**。彼らはあなたのキーを復することができず、あなたのキーの暗号化を手伝うこともありません。AWSは単にオペレーティングシステムとその基盤となるアプリケーションを管理しており、私たちが暗号化キーを管理し、それらのキーがどのように使用されるかを管理する必要があります。
**顧客マスターキー**CMK最大4KBのサイズのデータを暗号化できます。通常、DEKデータ暗号化キーを作成、暗号化、復号化するために使用されます。その後、DEKを使用してデータを暗号化ます。
**顧客マスターキー** (CMK): 最大4KBのサイズのデータを暗号化できます。通常、DEKデータ暗号化キーを作成、暗号化、復号化するために使用されます。その後、DEKデータを暗号化するために使用されます。
顧客マスターキーCMKは、AWS KMSにおけるマスターキーの論理的表現です。マスターキーの識別子や作成日、説明、キーの状態などのメタデータに加えて、**CMKにはデータを暗号化および復号化するために使用されるキー素材が含まれています**。CMKを作成すると、デフォルトでAWS KMSはそのCMKのためのキー素材を生成します。ただし、キー素材なしでCMKを作成し、そのCMKに自分のキー素材をインポートすることも選択できます。
顧客マスターキー (CMK) は、AWS KMSにおけるマスターキーの論理的表現です。マスターキーの識別子や作成日、説明、キーの状態などの他のメタデータに加えて、**CMKにはデータを暗号化および復号化するために使用されるキー素材が含まれています**。CMKを作成すると、デフォルトでAWS KMSはそのCMKのためのキー素材を生成します。ただし、キー素材なしでCMKを作成し、そのCMKに自分のキー素材をインポートすることも選択できます。
マスターキーには2種類あります
- **AWS管理CMK他のサービスによってデータを暗号化するために使用されます**。れは、リージョン内でそれを作成したサービスによって使用されます。暗号化をそのサービスで初めて実装したときに作成されます。3年ごとにローテーションされ、変更することはできません。
- **顧客管理CMK**柔軟性、ローテーション、構成可能なアクセスおよびキー方針。キーを有効または無効にします。
- **AWS管理CMK: 他のサービスによってデータを暗号化するために使用されます**。れは、そのリージョン作成したサービスによって使用されます。暗号化をそのサービスで初めて実装したときに作成されます。3年ごとにローテーションされ、変更することはできません。
- **顧客管理CMK**: 柔軟性、ローテーション、構成可能なアクセスおよびキー方針。キーを有効化および無効化できます。
**エンベロープ暗号化**は、キー管理サービスKMSの文脈において**データキーでデータを暗号化し、次にマスターキーでデータキーを暗号化する**ための二層階層システムです。
**エンベロープ暗号化**は、キー管理サービス (KMS) の文脈においてデータキーでデータを **暗号化し、次にマスターキーでデータキーを暗号化する** 二層階層システムです。
### キーポリシー
これにより、**KMS内のキーを使用およびアクセスできる人を定義します**。
これにより、**KMSキーを使用およびアクセスできる人を定義します**。
**デフォルトでは:**
- KMSキーを所有する**AWSアカウントのIAMにアクセスを管理する**権限を与えます。
- **KMSキーを所有するAWSアカウントのIAMにアクセスを管理する** 権限を与えます。
他のAWSリソースポリシーとは異なり、AWS**KMSキーのポリシーはアカウントの任意のプリンシパルに自動的に権限を与えません**。アカウント管理者に権限を与えるには、**キーのポリシーにこの権限を提供する明示的なステートメントを含める必要があります**。
他のAWSリソースポリシーとは異なり、AWS **KMSキーのポリシーはアカウントのいずれかのプリンシパルに自動的に権限を与えません**。アカウント管理者に権限を与えるには、**キーのポリシーにこの権限を提供する明示的なステートメントを含める必要があります**。
- アカウントを許可しない限り(`"AWS": "arn:aws:iam::111122223333:root"`IAM権限は機能しません。
- アカウントを許可しない限り(`"AWS": "arn:aws:iam::111122223333:root"`IAM権限は機能しません。
- これは、**キーのポリシーに加えて、KMSキーへのアクセスを許可するためにIAMポリシーを使用することを**許可します。
- これは、**キーのポリシーに加えて、KMSキーへのアクセスを許可するためにIAMポリシーを使用することを** アカウントに許可します。
**この権限がないと、キーへのアクセスを許可するIAMポリシーは無効になります**が、キーへのアクセスを拒否するIAMポリシーは依然として有効です。
- これは、**アカウント管理者、削除できないアカウントのルートユーザーを含む**アカウント管理者にアクセス制御権限を与えることにより、キーが管理不能になるリスクを軽減します。
- これは、**キーが管理不能になるリスクを軽減します**。アカウント管理者、特に削除できないアカウントのルートユーザーにアクセス制御権限を与えることによってです。
**デフォルトポリシー**の例
**デフォルトポリシー**の例:
```json
{
"Sid": "Enable IAM policies",
@@ -54,7 +54,7 @@ KMSは**リージョン固有のサービス**です。
}
```
> [!WARNING]
> **アカウントが許可されている** (`"arn:aws:iam::111122223333:root"`) 場合、アカウントの **プリンシパル** は **KMSキーを使用するためにIAM権限が必要** です。ただし、例えば **ロールのARN** が **キー ポリシー** に **特に許可されている** 場合、そのロールは **IAM権限が不要** です
> **アカウントが許可されている** (`"arn:aws:iam::111122223333:root"`) 場合、アカウントの **プリンシパル** は KMS キーを使用するために **IAM 権限** が必要です。ただし、例えば役割の **ARN** が **キー ポリシー** に **特に許可されている** 場合、その役割は **IAM 権限を必要としません**
<details>
@@ -62,22 +62,22 @@ KMSは**リージョン固有のサービス**です。
ポリシーのプロパティ:
- JSONベースのドキュメント
- JSON ベースのドキュメント
- リソース --> 影響を受けるリソース ("\*" も可)
- アクション --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (権限)
- 効果 --> Allow/Deny
- プリンシパル --> 影響を受けるarn
- プリンシパル --> 影響を受ける arn
- 条件 (オプション) --> 権限を与える条件
グラント:
- AWSアカウント内の別のAWSプリンシパルに権限を委任することを許可します。AWS KMS APIを使用して作成する必要があります。CMK識別子、グラントプリンシパル、および必要な操作レベル (Decrypt, Encrypt, GenerateDataKey...) を指定できます。
- グラントが作成されると、GrantTokenGrantIDが発行されます。
- AWS アカウント内の別の AWS プリンシパルに権限を委任することを許可します。AWS KMS API を使用して作成する必要があります。CMK 識別子、グラントを受けるプリンシパル、および必要な操作レベル (Decrypt, Encrypt, GenerateDataKey...) を指定できます。
- グラントが作成されると、GrantTokenGrantID が発行されます。
**アクセス**:
- **キー ポリシー** を介して -- これが存在する場合、IAMポリシーよりも **優先されます**
- **IAMポリシー** を介して
- **キー ポリシー** を介して -- これが存在する場合、IAM ポリシーよりも **優先されます**
- **IAM ポリシー** を介して
- **グラント** を介して
</details>
@@ -86,39 +86,39 @@ KMSは**リージョン固有のサービス**です。
デフォルトのキー管理者:
- KMSを管理するアクセス権を持っていますが、データを暗号化または復号化することはできません
- キー管理者リストにはIAMユーザーとロールのみ追加できます (グループは不可)
- 外部CMKが使用される場合、キー管理者はキー材料をインポートする権限を持っています
- KMS を管理するアクセス権を持っていますが、データを暗号化または復号化することはできません
- キー管理者リストには IAM ユーザーとロールのみ追加できます (グループは不可)
- 外部 CMK が使用される場合、キー管理者はキー マテリアルをインポートする権限を持っています
### CMKのローテーション
### CMK のローテーション
- 同じキーが長く使用されるほど、そのキーで暗号化されるデータが増え、そのキーが侵害されると、リスクのあるデータの範囲が広がります。さらに、キーがアクティブである間が長くなるほど、侵害される可能性が高くなります。
- **KMSは顧客キーを365日ごとにローテーションします** (または、いつでも手動でプロセスを実行できます) そして **AWSが管理するキーは3年ごとにローテーションされ、これは変更できません**
- 同じキーが長く使用されるほど、そのキーで暗号化されるデータが増え、そのキーが侵害されると、リスクのあるデータの範囲が広がります。さらに、キーがアクティブである間が長くなるほど、侵害される可能性が高くなります。
- **KMS は顧客キーを 365 日ごとにローテーションします** (または、いつでも手動でプロセスを実行できます) そして **AWS によって管理されるキーは 3 年ごとにローテーションされ、これは変更できません**
- **古いキーは保持され**、ローテーション前に暗号化されたデータを復号化するために使用されます。
- 侵害が発生した場合、キーをローテーションしても脅威は除去されず、侵害されたキーで暗号化されたすべてのデータを復号化することが可能です。ただし、**新しいデータは新しいキーで暗号化されます**。
- **CMK** が **無効** または **削除保留中** の状態にある場合、KMSはCMKが再有効化されるか削除がキャンセルされるまで **キーのローテーションを実行しません**
- **CMK** が **無効** または **削除保留中** の状態にある場合、CMK が再有効化されるか削除がキャンセルされるまで、KMS は **キーのローテーションを実行しません**
#### 手動ローテーション
- **新しいCMKを作成する必要があります**。その後、新しいCMK-IDが作成されるため、**アプリケーション** を **新しいCMK-IDを参照するように更新** する必要があります。
- このプロセスを簡単にするために、**キーIDを参照するためにエイリアスを使用** し、その後エイリアスが参照しているキーを更新することができます。
- **新しい CMK を作成する必要があります**。その後、新しい CMK-ID が作成されるため、**アプリケーション** を **新しい CMK-ID を参照するように更新**する必要があります。
- このプロセスを簡単にするために、**キー-ID を参照するためにエイリアスを使用**し、その後エイリアスが参照しているキーを更新することができます。
- **古いファイルを復号化するために古いキーを保持する必要があります**。
オンプレミスのキーインフラストラクチャからキーをインポートできます。
### その他の関連KMS情報
### その他の関連 KMS 情報
KMSは、すべてのサービスから受け取った暗号化/復号化リクエストの数に基づいて価格が設定されます。
KMS は、すべてのサービスから受け取った暗号化/復号化リクエストの数に基づいて月ごとに料金が発生します。
KMSは完全な監査およびコンプライアンス **CloudTrailとの統合** を提供しています。ここでKMSに対して行われたすべての変更を監査できます。
KMS は完全な監査およびコンプライアンス **CloudTrail との統合** を提供します。ここで KMS に対して行われたすべての変更を監査できます。
KMSポリシーを使用して、次のことができます:
KMS ポリシーを使用して、次のことができます:
- データキーを作成できる人と、これらのキーを使用できるサービスを制限する
- システムのアクセスを暗号化のみ、復号化のみ、または両方に制限する
- システムがリージョンをまたいでキーにアクセスできるように定義する (ただし、KMSをホストしているリージョンでの障害が他のリージョンのシステムの可用性に影響を与えるため、推奨されません)。
- システムのアクセスを暗号化専用、復号化専用、または両方に制限する
- システムがリージョンをまたいでキーにアクセスできるように定義する (ただし、KMS をホストしているリージョンでの障害が他のリージョンのシステムの可用性に影響を与えるため、推奨されません)。
リージョン間でキーを同期または移動/コピーすることはできません。リージョン間でのアクセスを許可するルールを定義することのみが可能です。
リージョン間でキーを同期または移動/コピーすることはできません; アクセスを許可するためのルールを定義することのみが可能です。
### 列挙
```bash
@@ -128,8 +128,13 @@ aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores
# This script enumerates AWS KMS keys across all available regions.
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
echo -e "\n### Region: $region ###"; aws kms list-keys --region $region --query "Keys[].KeyId" --output text | tr '\t' '\n';
done
```
### プライバシー昇格
### プリベスカ
{{#ref}}
../aws-privilege-escalation/aws-kms-privesc.md
@@ -141,7 +146,7 @@ aws kms describe-custom-key-stores
../aws-post-exploitation/aws-kms-post-exploitation.md
{{#endref}}
### 永続性
### パーシステンス
{{#ref}}
../aws-persistence/aws-kms-persistence.md