mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-02 02:54:53 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
|
||||
AWSには**ルートアカウント**があり、これは**組織内のすべてのアカウントの親コンテナ**です。しかし、そのアカウントを使用してリソースをデプロイする必要はなく、**異なるAWS**インフラストラクチャを分離するために**他のアカウントを作成することができます**。
|
||||
|
||||
これは**セキュリティ**の観点から非常に興味深いことであり、**1つのアカウントは他のアカウントのリソースにアクセスできません**(特別にブリッジが作成されていない限り)。このようにして、デプロイメント間に境界を作成できます。
|
||||
これは**セキュリティ**の観点から非常に興味深いことであり、**1つのアカウントは他のアカウントのリソースにアクセスできません**(特別にブリッジが作成されない限り)。このようにして、デプロイメント間に境界を作成できます。
|
||||
|
||||
したがって、**組織内には2種類のアカウントがあります**(AWSアカウントについて話しており、ユーザーアカウントではありません):管理アカウントとして指定された単一のアカウントと、1つ以上のメンバーアカウントです。
|
||||
|
||||
@@ -27,33 +27,33 @@ AWSには**ルートアカウント**があり、これは**組織内のすべ
|
||||
管理アカウントは**支払いアカウントの責任**を持ち、メンバーアカウントによって発生したすべての料金を支払う責任があります。組織の管理アカウントを変更することはできません。
|
||||
|
||||
- **メンバーアカウント**は、組織内の残りのすべてのアカウントを構成します。アカウントは、一度に1つの組織のメンバーであることができます。アカウントにポリシーを添付して、そのアカウントのみに制御を適用することができます。
|
||||
- メンバーアカウントは**有効なメールアドレスを使用する必要があり**、**名前**を持つことができます。一般的に、請求を管理することはできませんが、アクセスが与えられることがあります。
|
||||
- メンバーアカウントは**有効なメールアドレスを使用する必要があり**、**名前**を持つことができます。一般的に、請求を管理することはできませんが、アクセスが与えられる場合があります。
|
||||
```
|
||||
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
|
||||
```
|
||||
### **組織単位**
|
||||
|
||||
アカウントは**組織単位 (OU)**にグループ化できます。このようにして、組織単位に対して**ポリシー**を作成し、それが**すべての子アカウントに適用される**ようにできます。OUは他のOUを子として持つことができることに注意してください。
|
||||
アカウントは**組織単位 (OU)**にグループ化できます。この方法で、組織単位に対して**ポリシー**を作成し、それが**すべての子アカウントに適用される**ようにできます。OUは他のOUを子として持つことができることに注意してください。
|
||||
```bash
|
||||
# You can get the root id from aws organizations list-roots
|
||||
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
|
||||
```
|
||||
### サービスコントロールポリシー (SCP)
|
||||
|
||||
**サービスコントロールポリシー (SCP)** は、SCPが影響を与えるアカウント内でユーザーやロールが使用できるサービスとアクションを指定するポリシーです。SCPは**IAM**権限ポリシーに**似ていますが、権限を付与することはありません**。代わりに、SCPは組織、組織単位 (OU)、またはアカウントの**最大権限**を指定します。SCPを組織のルートまたはOUにアタッチすると、**メンバーアカウント内のエンティティの権限が制限されます**。
|
||||
**サービスコントロールポリシー (SCP)** は、SCPが影響を与えるアカウント内でユーザーやロールが使用できるサービスとアクションを指定するポリシーです。SCPは**IAM**権限ポリシーに似ていますが、**権限を付与することはありません**。代わりに、SCPは組織、組織単位 (OU)、またはアカウントの**最大権限**を指定します。SCPを組織のルートまたはOUにアタッチすると、**メンバーアカウント内のエンティティの権限が制限されます**。
|
||||
|
||||
これは**ルートユーザーでさえ何かを行うのを止める唯一の方法**です。例えば、CloudTrailを無効にしたり、バックアップを削除したりするのをユーザーから止めるために使用できます。\
|
||||
これは、**ルートユーザーでさえ何かを行うのを止める唯一の方法**です。たとえば、CloudTrailを無効にしたり、バックアップを削除したりするのをユーザーから止めるために使用できます。\
|
||||
これを回避する唯一の方法は、SCPを設定する**マスターアカウント**も侵害することです(マスターアカウントはブロックできません)。
|
||||
|
||||
> [!WARNING]
|
||||
> **SCPはアカウント内のプリンシパルのみを制限する**ため、他のアカウントには影響しません。これは、SCPが`s3:GetObject`を拒否しても、あなたのアカウント内の**公開S3バケットにアクセスすることを止めることはない**ことを意味します。
|
||||
> **SCPはアカウント内のプリンシパルのみを制限する**ため、他のアカウントには影響しません。これは、SCPが`s3:GetObject`を拒否しても、あなたのアカウント内の**公開S3バケットにアクセスする人を止めることはない**ことを意味します。
|
||||
|
||||
SCPの例:
|
||||
|
||||
- ルートアカウントを完全に拒否
|
||||
- 特定のリージョンのみを許可
|
||||
- ホワイトリストに登録されたサービスのみを許可
|
||||
- GuardDuty、CloudTrail、およびS3のパブリックブロックアクセスを無効にすることを拒否
|
||||
- GuardDuty、CloudTrail、およびS3パブリックブロックアクセスの無効化を拒否
|
||||
|
||||
- セキュリティ/インシデントレスポンスロールの削除または
|
||||
|
||||
@@ -66,7 +66,7 @@ SCPの例:
|
||||
|
||||
### ARN
|
||||
|
||||
**Amazon Resource Name**は、AWS内のすべてのリソースが持つ**一意の名前**で、次のように構成されています:
|
||||
**Amazonリソース名**は、AWS内のすべてのリソースが持つ**ユニークな名前**で、次のように構成されています:
|
||||
```
|
||||
arn:partition:service:region:account-id:resource-type/resource-id
|
||||
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
@@ -80,10 +80,10 @@ arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
|
||||
## IAM - アイデンティティとアクセス管理
|
||||
|
||||
IAMは、AWSアカウント内で**認証**、**承認**、および**アクセス制御**を管理するためのサービスです。
|
||||
IAMは、AWSアカウント内での**認証**、**承認**、および**アクセス制御**を管理するためのサービスです。
|
||||
|
||||
- **認証** - アイデンティティを定義し、そのアイデンティティを検証するプロセス。このプロセスは、識別と検証に分けることができます。
|
||||
- **承認** - アイデンティティがシステム内でアクセスできるものを決定します。
|
||||
- **承認** - 認証された後に、システム内でアイデンティティがアクセスできるものを決定します。
|
||||
- **アクセス制御** - セキュアなリソースへのアクセスがどのように付与されるかの方法とプロセス
|
||||
|
||||
IAMは、AWSアカウント内のリソースに対するアイデンティティの認証、承認、およびアクセス制御メカニズムを管理、制御、統治する能力によって定義されます。
|
||||
@@ -98,26 +98,26 @@ Amazon Web Services (AWS) アカウントを最初に作成すると、アカウ
|
||||
|
||||
### [IAMユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) <a href="#id_iam-users" id="id_iam-users"></a>
|
||||
|
||||
IAM _ユーザー_ は、AWS内で**それを使用してAWSと対話する人またはアプリケーション**を**表す**ために作成するエンティティです。AWSのユーザーは、名前と資格情報(パスワードと最大2つのアクセスキー)で構成されます。
|
||||
IAM _ユーザー_は、AWS内で**それを使用してAWSと対話する人またはアプリケーション**を**表す**ために作成するエンティティです。AWSのユーザーは、名前と資格情報(パスワードと最大2つのアクセスキー)で構成されます。
|
||||
|
||||
IAMユーザーを作成すると、適切な権限ポリシーが添付された**ユーザーグループのメンバー**にすることで**権限**を付与するか、**ポリシーを直接ユーザーに添付**することができます(推奨)。
|
||||
|
||||
ユーザーは、コンソールを通じて**MFAを有効にしてログイン**できます。MFAが有効なユーザーのAPIトークンはMFAによって保護されていません。ユーザーのAPIキーのアクセスをMFAを使用して**制限したい場合**は、特定のアクションを実行するためにMFAが必要であることをポリシーに示す必要があります(例 [**こちら**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html))。
|
||||
ユーザーは、コンソールを通じて**MFAを有効にしてログイン**できます。MFAが有効なユーザーのAPIトークンはMFAによって保護されていません。ユーザーのAPIキーのアクセスをMFAを使用して**制限したい場合**は、特定のアクションを実行するためにMFAが必要であることをポリシーに示す必要があります(例:[**こちら**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html))。
|
||||
|
||||
#### CLI
|
||||
|
||||
- **アクセスキーID**: 20のランダムな大文字の英数字の文字列(例:AKHDNAPO86BSHKDIRYT)
|
||||
- **シークレットアクセスキーID**: 40のランダムな大文字と小文字の文字列(例:S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU)(失われたシークレットアクセスキーIDを取得することはできません)。
|
||||
- **アクセスキーID**: 20のランダムな大文字アルファベットと数字の組み合わせ(例:AKHDNAPO86BSHKDIRYT)
|
||||
- **シークレットアクセスキーID**: 40のランダムな大文字と小文字の文字(例:S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU)(失われたシークレットアクセスキーIDを取得することはできません)。
|
||||
|
||||
**アクセスキーを変更する必要がある場合**は、次のプロセスに従う必要があります:\
|
||||
_新しいアクセスキーを作成 -> 新しいキーをシステム/アプリケーションに適用 -> 元のキーを非アクティブとしてマーク -> 新しいアクセスキーが機能しているかテストして確認 -> 古いアクセスキーを削除_
|
||||
|
||||
### MFA - 多要素認証
|
||||
|
||||
これは、既存の方法(パスワードなど)に加えて**認証のための追加の要素を作成する**ために使用され、したがって多要素の認証レベルを作成します。\
|
||||
**無料の仮想アプリケーションまたは物理デバイス**を使用できます。Google認証などのアプリを使用して、AWSでMFAを無料で有効にできます。
|
||||
これは、既存の方法(パスワードなど)に加えて**認証のための追加の要素を作成する**ために使用され、マルチファクターレベルの認証を作成します。\
|
||||
無料の仮想アプリケーションや物理デバイスを使用できます。Google認証などのアプリを使用して、AWSでMFAを無料で有効にできます。
|
||||
|
||||
MFA条件を持つポリシーは、次のものに添付できます:
|
||||
MFA条件を持つポリシーは、以下に添付できます:
|
||||
|
||||
- IAMユーザーまたはグループ
|
||||
- Amazon S3バケット、Amazon SQSキュー、またはAmazon SNSトピックなどのリソース
|
||||
@@ -134,7 +134,7 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
|
||||
IAM [ユーザーグループ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)は、**複数のユーザーにポリシーを一度にアタッチする**方法であり、これによりそれらのユーザーの権限を管理しやすくなります。**ロールとグループはグループの一部にはなれません**。
|
||||
|
||||
**ユーザーグループにアイデンティティベースのポリシーをアタッチする**ことで、ユーザーグループ内のすべての**ユーザー**が**ポリシーの権限を受け取ります**。**ユーザーグループ**を**ポリシー**(リソースベースのポリシーなど)内の**`Principal`**として特定することは**できません**。なぜなら、グループは権限に関連し、認証には関連しないため、プリンシパルは認証されたIAMエンティティだからです。
|
||||
**ユーザーグループにアイデンティティベースのポリシーをアタッチ**することで、ユーザーグループ内のすべての**ユーザー**が**ポリシーの権限を受け取ります**。**ユーザーグループ**を**ポリシー**(リソースベースのポリシーなど)内の**`Principal`**として特定することは**できません**。なぜなら、グループは権限に関連し、認証には関連しないため、プリンシパルは認証されたIAMエンティティだからです。
|
||||
|
||||
ユーザーグループの重要な特徴は以下の通りです:
|
||||
|
||||
@@ -145,7 +145,7 @@ IAM [ユーザーグループ](https://docs.aws.amazon.com/IAM/latest/UserGuide/
|
||||
|
||||
### [IAMロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
|
||||
|
||||
IAM **ロール**は**ユーザー**に非常に**似ています**。それは**AWSで何ができるかを決定する権限ポリシーを持つアイデンティティ**です。しかし、ロールには**関連付けられた資格情報**(パスワードやアクセスキー)が**ありません**。ロールは特定の人に一意に関連付けられるのではなく、**必要な人が誰でも引き受けられることを意図しています(十分な権限を持っている場合)**。IAMユーザーは、特定のタスクのために一時的に異なる権限を引き受けるためにロールを**引き受けることができます**。ロールは、IAMではなく外部アイデンティティプロバイダーを使用してサインインする[**フェデレーテッドユーザー**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)に**割り当てることができます**。
|
||||
IAM **ロール**は**ユーザー**に非常に**似ており**、AWS内で**何ができるかを決定する権限ポリシーを持つアイデンティティ**です。しかし、ロールには**関連付けられた資格情報**(パスワードやアクセスキー)が**ありません**。ロールは特定の人に一意に関連付けられるのではなく、**必要な人が誰でも引き受けられることを意図しています(十分な権限がある場合)**。IAMユーザーは、特定のタスクのために一時的に異なる権限を取得するためにロールを**引き受けることができます**。ロールは、IAMではなく外部アイデンティティプロバイダーを使用してサインインする[**フェデレーテッドユーザー**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)に**割り当てることができます**。
|
||||
|
||||
IAMロールは、**2種類のポリシー**で構成されています:**信頼ポリシー**(空であってはならず、**誰がロールを引き受けることができるかを定義**)と、**権限ポリシー**(空であってはならず、**何にアクセスできるかを定義**)。
|
||||
|
||||
@@ -164,7 +164,7 @@ AWSセキュリティトークンサービス(STS)は、**一時的で制限
|
||||
権限を割り当てるために使用されます。2種類あります:
|
||||
|
||||
- AWS管理ポリシー(AWSによって事前設定されたもの)
|
||||
- カスタマー管理ポリシー:あなたが設定したもの。AWS管理ポリシーに基づいてポリシーを作成できます(そのうちの1つを修正して独自のものを作成する)、ポリシージェネレーターを使用する(権限を付与および拒否するのを助けるGUIビュー)または独自に作成することができます。
|
||||
- カスタマー管理ポリシー:あなたが設定したもの。AWS管理ポリシーに基づいてポリシーを作成できます(そのうちの1つを修正して独自のものを作成する)、ポリシージェネレーターを使用する(権限を付与および拒否するのを助けるGUIビュー)または自分で書くことができます。
|
||||
|
||||
**デフォルトのアクセスは** **拒否**され、明示的なロールが指定された場合にのみアクセスが許可されます。\
|
||||
**単一の「拒否」が存在する場合、それは「許可」を上書きします**。ただし、AWSアカウントのルートセキュリティ資格情報を使用するリクエストは(デフォルトで許可されます)。
|
||||
@@ -190,19 +190,19 @@ AWSセキュリティトークンサービス(STS)は、**一時的で制限
|
||||
]
|
||||
}
|
||||
```
|
||||
[グローバルフィールドは、任意のサービスで条件に使用できるものがここに文書化されています](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount)。\
|
||||
[特定のフィールドは、サービスごとに条件に使用できるものがここに文書化されています](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)。
|
||||
[グローバルフィールドは、任意のサービスで条件に使用できることが文書化されています](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount)。\
|
||||
[サービスごとに条件に使用できる特定のフィールドはここに文書化されています](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)。
|
||||
|
||||
#### インラインポリシー
|
||||
|
||||
この種のポリシーは、**ユーザー、グループ、またはロールに直接割り当てられます**。そのため、他の誰も使用できるようにはポリシーリストに表示されません。\
|
||||
インラインポリシーは、**ポリシーと適用されるアイデンティティとの間に厳密な1対1の関係を維持したい場合に便利です**。たとえば、ポリシー内の権限が意図されたアイデンティティ以外に誤って割り当てられないことを確認したい場合です。インラインポリシーを使用すると、ポリシー内の権限が誤って間違ったアイデンティティに添付されることはありません。さらに、AWS Management Consoleを使用してそのアイデンティティを削除すると、アイデンティティに埋め込まれたポリシーも削除されます。これは、それらが主エンティティの一部であるためです。
|
||||
この種のポリシーは**ユーザー、グループ、またはロールに直接割り当てられます**。そのため、他の誰も使用できるようにはポリシーリストに表示されません。\
|
||||
インラインポリシーは、**ポリシーと適用されるアイデンティティとの間に厳密な1対1の関係を維持したい場合**に便利です。たとえば、ポリシー内の権限が意図されたアイデンティティ以外に誤って割り当てられないことを確認したい場合です。インラインポリシーを使用すると、ポリシー内の権限が誤って間違ったアイデンティティに添付されることはありません。さらに、AWS Management Consoleを使用してそのアイデンティティを削除すると、アイデンティティに埋め込まれたポリシーも削除されます。これは、それらが主エンティティの一部であるためです。
|
||||
|
||||
#### リソースバケットポリシー
|
||||
|
||||
これらは**リソース内で定義できるポリシー**です。**すべてのAWSリソースがそれをサポートしているわけではありません**。
|
||||
これらは**リソースに定義できるポリシー**です。**すべてのAWSリソースがそれをサポートしているわけではありません**。
|
||||
|
||||
もしプリンシパルがそれに対して明示的な拒否を持っておらず、リソースポリシーがアクセスを許可している場合、アクセスが許可されます。
|
||||
もしプリンシパルがそれに対して明示的な拒否を持っておらず、リソースポリシーがアクセスを許可している場合、彼らは許可されます。
|
||||
|
||||
### IAMバウンダリー
|
||||
|
||||
@@ -210,11 +210,11 @@ IAMバウンダリーは、**ユーザーまたはロールがアクセスでき
|
||||
|
||||
バウンダリーは、ユーザーに添付されたポリシーであり、**ユーザーまたはロールが持つことができる最大の権限レベルを示します**。したがって、**ユーザーが管理者アクセスを持っていても**、バウンダリーが彼がS·バケットを読むことしかできないと示している場合、それが彼ができる最大のことです。
|
||||
|
||||
**これ**、**SCP**、および**最小特権の原則に従うこと**は、ユーザーが必要以上の権限を持たないように制御する方法です。
|
||||
**これ**、**SCP**および**最小権限の原則に従うこと**は、ユーザーが必要以上の権限を持たないように制御する方法です。
|
||||
|
||||
### セッションポリシー
|
||||
|
||||
セッションポリシーは、**ロールが引き受けられたときに設定されるポリシー**です。これは、そのセッションのための**IAMバウンダリーのようなものです**:これは、セッションポリシーが権限を付与するのではなく、**ポリシーに示された権限に制限することを意味します**(最大権限はロールが持つものです)。
|
||||
セッションポリシーは、**ロールが引き受けられたときに設定されるポリシー**です。これは、そのセッションの**IAMバウンダリーのようなもの**になります:これは、セッションポリシーが権限を付与するのではなく、**ポリシーに示された権限に制限することを意味します**(最大権限はロールが持つものです)。
|
||||
|
||||
これは**セキュリティ対策**に役立ちます:管理者が非常に特権のあるロールを引き受ける場合、セッションが侵害された場合に備えて、セッションポリシーに示された権限のみを制限することができます。
|
||||
```bash
|
||||
@@ -224,9 +224,9 @@ aws sts assume-role \
|
||||
[--policy-arns <arn_custom_policy1> <arn_custom_policy2>]
|
||||
[--policy <file://policy.json>]
|
||||
```
|
||||
注意してください。デフォルトでは、**AWSはセッションの生成に対してセッションポリシーを追加する可能性があります**。例えば、[認証されていないCognitoの仮定ロール](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles)では、デフォルトで(強化された認証を使用して)、AWSは**セッションポリシーを持つセッション資格情報**を生成し、そのセッションがアクセスできるサービスを[**次のリストに制限します**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)。
|
||||
注意してください。デフォルトでは、**AWSはセッションの生成に対してセッションポリシーを追加する可能性があります**。例えば、[認証されていないCognitoの仮定されたロール](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles)では、デフォルトで(強化された認証を使用して)、AWSは**セッションポリシーを持つセッション資格情報**を生成し、そのセッションがアクセスできるサービスを[**次のリストに制限します**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)。
|
||||
|
||||
したがって、ある時点で「...セッションポリシーが許可していないため...」というエラーに直面した場合、ロールがアクションを実行するアクセス権を持っていても、**それを妨げるセッションポリシーが存在するためです**。
|
||||
したがって、ある時点で「...セッションポリシーが許可していないため...」というエラーに直面した場合、ロールがアクションを実行するアクセス権を持っていても、**それを妨げるセッションポリシーが存在する**ということです。
|
||||
|
||||
### アイデンティティフェデレーション
|
||||
|
||||
@@ -253,19 +253,19 @@ AWS IAMアイデンティティセンター(AWSシングルサインオンの
|
||||
|
||||
<figure><img src="../../../images/image (279).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
アイデンティティセンターディレクトリの最も単純なケースでは、**アイデンティティセンターはユーザーとグループのリストを持ち**、それらに**ポリシーを割り当てることができます**。**組織の任意のアカウント**に対して。
|
||||
アイデンティティセンターディレクトリの最も単純なケースでは、**アイデンティティセンターはユーザーとグループのリストを持ち**、それらに**ポリシーを割り当てる**ことができ、**組織の任意のアカウント**に対して行います。
|
||||
|
||||
アイデンティティセンターのユーザー/グループにアカウントへのアクセスを与えるために、**アイデンティティセンターを信頼するSAMLアイデンティティプロバイダーが作成され**、**指定されたポリシーを持つアイデンティティプロバイダーを信頼するロールが宛先アカウントに作成されます**。
|
||||
|
||||
#### AwsSSOInlinePolicy
|
||||
|
||||
**IAMアイデンティティセンターを介して作成されたロールにインラインポリシーを介して権限を与えることが可能です**。AWSアイデンティティセンターで**インラインポリシーを持つアカウントに作成されたロール**は、**`AwsSSOInlinePolicy`**というインラインポリシーでこれらの権限を持ちます。
|
||||
**IAMアイデンティティセンターを介して作成されたロールにインラインポリシーを介して権限を与えることが可能です**。AWSアイデンティティセンターでインラインポリシーを持つアカウントで作成されたロールは、**`AwsSSOInlinePolicy`**というインラインポリシーでこれらの権限を持ちます。
|
||||
|
||||
したがって、**`AwsSSOInlinePolicy`**というインラインポリシーを持つ2つのロールが表示されても、**同じ権限を持っているわけではありません**。
|
||||
|
||||
### クロスアカウントの信頼とロール
|
||||
|
||||
**ユーザー**(信頼する側)は、いくつかのポリシーを持つクロスアカウントロールを作成し、**別のユーザー**(信頼される側)に**自分のアカウントにアクセスを許可することができますが、**新しいロールポリシーで示されたアクセスのみを持つことができます**。これを作成するには、新しいロールを作成し、クロスアカウントロールを選択します。クロスアカウントアクセス用のロールは2つのオプションを提供します。所有するAWSアカウント間でのアクセスを提供することと、所有するアカウントとサードパーティのAWSアカウント間でのアクセスを提供することです。\
|
||||
**ユーザー**(信頼する側)は、いくつかのポリシーを持つクロスアカウントロールを作成し、**別のユーザー**(信頼される側)に**自分のアカウントにアクセスを許可する**が、**新しいロールポリシーで示されたアクセスのみを持つ**ことができます。これを作成するには、新しいロールを作成し、クロスアカウントロールを選択します。クロスアカウントアクセス用のロールは2つのオプションを提供します。所有するAWSアカウント間でのアクセスを提供することと、所有するアカウントとサードパーティのAWSアカウント間でのアクセスを提供することです。\
|
||||
信頼されるユーザーを**特定し、一般的なものを指定しないことをお勧めします**。そうしないと、フェデレーテッドユーザーなどの他の認証されたユーザーもこの信頼を悪用できる可能性があります。
|
||||
|
||||
### AWS Simple AD
|
||||
@@ -282,14 +282,14 @@ AWS IAMアイデンティティセンター(AWSシングルサインオンの
|
||||
|
||||
#### WebフェデレーションまたはOpenID認証
|
||||
|
||||
アプリはAssumeRoleWithWebIdentityを使用して一時的な資格情報を作成します。ただし、これによりAWSコンソールへのアクセスは付与されず、AWS内のリソースへのアクセスのみが許可されます。
|
||||
アプリはAssumeRoleWithWebIdentityを使用して一時的な資格情報を作成します。ただし、これによりAWSコンソールへのアクセスは付与されず、AWS内のリソースへのアクセスのみが付与されます。
|
||||
|
||||
### その他のIAMオプション
|
||||
|
||||
- **パスワードポリシー設定**を設定することができ、最小長やパスワード要件などのオプションがあります。
|
||||
- **"Credential Report"をダウンロード**して、現在の資格情報に関する情報(ユーザー作成時間、パスワードが有効かどうかなど)を取得できます。資格情報レポートは、最長で**4時間ごとに生成**できます。
|
||||
- **"Credential Report"をダウンロード**して、現在の資格情報に関する情報(ユーザー作成時間、パスワードが有効かどうかなど)を取得できます。資格情報レポートは、最長で**4時間ごと**に生成できます。
|
||||
|
||||
AWSアイデンティティおよびアクセス管理(IAM)は、AWS全体での**きめ細かいアクセス制御**を提供します。IAMを使用すると、**誰がどのサービスやリソースにアクセスできるか、どの条件下でアクセスできるかを指定できます**。IAMポリシーを使用して、労働力やシステムへの権限を管理し、**最小権限の権限を確保します**。
|
||||
AWSアイデンティティおよびアクセス管理(IAM)は、AWS全体での**きめ細かいアクセス制御**を提供します。IAMを使用すると、**誰がどのサービスやリソースにアクセスできるか、そしてどの条件下でアクセスできるかを指定できます**。IAMポリシーを使用して、労働力やシステムへの権限を管理し、**最小権限の権限を確保します**。
|
||||
|
||||
### IAM IDプレフィックス
|
||||
|
||||
|
||||
+39
-39
@@ -4,62 +4,62 @@
|
||||
|
||||
## **CloudTrail**
|
||||
|
||||
AWS CloudTrail **は、AWS 環境内のアクティビティを記録および監視します**。それは、誰が何を、いつ、どこから行ったかを含む詳細な **イベントログ** をキャプチャします。これにより、変更やアクションの監査証跡が提供され、セキュリティ分析、コンプライアンス監査、およびリソース変更の追跡に役立ちます。CloudTrail は、ユーザーおよびリソースの動作を理解し、セキュリティ姿勢を強化し、規制遵守を確保するために不可欠です。
|
||||
AWS CloudTrail **は、AWS環境内の活動を記録および監視します**。それは、誰が何を、いつ、どこから行ったかを含む詳細な**イベントログ**をキャプチャします。これにより、変更やアクションの監査証跡が提供され、セキュリティ分析、コンプライアンス監査、およびリソース変更の追跡に役立ちます。CloudTrailは、ユーザーとリソースの動作を理解し、セキュリティ姿勢を強化し、規制遵守を確保するために不可欠です。
|
||||
|
||||
各ログされたイベントには以下が含まれます:
|
||||
|
||||
- 呼び出された API の名前: `eventName`
|
||||
- 呼び出されたAPIの名前: `eventName`
|
||||
- 呼び出されたサービス: `eventSource`
|
||||
- 時間: `eventTime`
|
||||
- IP アドレス: `SourceIPAddress`
|
||||
- IPアドレス: `SourceIPAddress`
|
||||
- エージェントメソッド: `userAgent`。例:
|
||||
- Signing.amazonaws.com - AWS Management Console から
|
||||
- Signing.amazonaws.com - AWS Management Consoleから
|
||||
- console.amazonaws.com - アカウントのルートユーザー
|
||||
- lambda.amazonaws.com - AWS Lambda
|
||||
- リクエストパラメータ: `requestParameters`
|
||||
- レスポンス要素: `responseElements`
|
||||
|
||||
イベントは **約 5 分ごとに JSON ファイルに新しいログファイルとして書き込まれ**、CloudTrail に保持され、最終的にログファイルは **約 15 分後に S3 に配信されます**。\
|
||||
CloudTrail のログは **アカウント間およびリージョン間で集約できます。**\
|
||||
CloudTrail は **ログファイルの整合性を使用して、ログファイルが CloudTrail によって配信されて以来変更されていないことを確認できるようにします**。これは、ダイジェストファイル内のログの SHA-256 ハッシュを作成します。新しいログの SHA-256 ハッシュは毎時作成されます。\
|
||||
トレイルを作成する際、イベントセレクタを使用してログするトレイルを示すことができます:管理、データ、またはインサイトイベント。
|
||||
イベントは**約5分ごとにJSONファイルに新しいログファイルとして書き込まれ**、CloudTrailによって保持され、最終的にログファイルは**約15分後にS3に配信されます**。\
|
||||
CloudTrailのログは**アカウント間およびリージョン間で集約できます**。\
|
||||
CloudTrailは、**ログファイルの整合性を使用して、CloudTrailが提供した後にログファイルが変更されていないことを確認できるようにします**。これは、ダイジェストファイル内のログのSHA-256ハッシュを作成します。新しいログのsha-256ハッシュは毎時作成されます。\
|
||||
トレイルを作成する際、イベントセレクターを使用してログを記録するトレイルを指定できます:管理、データ、またはインサイトイベント。
|
||||
|
||||
ログは S3 バケットに保存されます。デフォルトではサーバーサイド暗号化 (SSE-S3) が使用されるため、AWS はアクセス権を持つ人々のためにコンテンツを復号化しますが、追加のセキュリティのために SSE を KMS と独自のキーで使用することもできます。
|
||||
ログはS3バケットに保存されます。デフォルトではサーバーサイド暗号化(SSE-S3)が使用されるため、AWSはアクセス権を持つ人々のためにコンテンツを復号化しますが、追加のセキュリティのためにSSEをKMSおよび独自のキーと共に使用できます。
|
||||
|
||||
ログは **この名前形式の S3 バケットに保存されます**:
|
||||
ログは**この名前形式のS3バケットに保存されます**:
|
||||
|
||||
- **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`**
|
||||
- バケット名は: **`aws-cloudtrail-logs-<accountid>-<random>`**
|
||||
- 例: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
|
||||
- バケット名は:**`aws-cloudtrail-logs-<accountid>-<random>`**
|
||||
- 例:**`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
|
||||
|
||||
各フォルダ内の各ログは **この形式に従った名前を持ちます**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
|
||||
各フォルダー内の各ログは**この形式に従った名前を持ちます**:**`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
|
||||
|
||||
ログファイル命名規則
|
||||
|
||||
.png>)
|
||||
|
||||
さらに、**ファイル整合性を確認するためのダイジェストファイル**は **同じバケット内にあります**:
|
||||
さらに、**ファイル整合性を確認するためのダイジェストファイル**は、**同じバケット内にあります**:
|
||||
|
||||
.png>)
|
||||
|
||||
### 複数アカウントからのログの集約
|
||||
|
||||
- ログファイルを配信する AWS アカウントでトレイルを作成します
|
||||
- CloudTrail のためにクロスアカウントアクセスを許可するように、宛先 S3 バケットに権限を適用し、アクセスが必要な各 AWS アカウントを許可します
|
||||
- 他の AWS アカウントで新しいトレイルを作成し、ステップ 1 で作成したバケットを使用するように選択します
|
||||
- ログファイルを配信するAWSアカウントにトレイルを作成します
|
||||
- CloudTrailのためにクロスアカウントアクセスを許可するように宛先S3バケットに権限を適用し、アクセスが必要な各AWSアカウントを許可します
|
||||
- 他のAWSアカウントで新しいトレイルを作成し、ステップ1で作成したバケットを使用するように選択します
|
||||
|
||||
ただし、すべてのログを同じ S3 バケットに保存できるとしても、複数のアカウントからの CloudTrail ログを単一の AWS アカウントに属する CloudWatch Logs に集約することはできません。
|
||||
ただし、すべてのログを同じS3バケットに保存できるとしても、複数のアカウントからのCloudTrailログを単一のAWSアカウントに属するCloudWatch Logsに集約することはできません。
|
||||
|
||||
> [!CAUTION]
|
||||
> アカウントには、**異なるトレイル**が CloudTrail **で有効**になっており、異なるバケットに同じ(または異なる)ログを保存できることを忘れないでください。
|
||||
> アカウントには、**異なるトレイル**がCloudTrail **で有効**になっており、異なるバケットに同じ(または異なる)ログを保存できることを忘れないでください。
|
||||
|
||||
### すべての組織アカウントから 1 つの CloudTrail へ
|
||||
### すべての組織アカウントから1つのCloudTrailへ
|
||||
|
||||
CloudTrail を作成する際、組織内のすべてのアカウントに対して CloudTrail を有効にし、ログを 1 つのバケットに集約するように指示することが可能です:
|
||||
CloudTrailを作成する際、組織内のすべてのアカウントに対してCloudTrailを有効にし、ログを1つのバケットに取得するように指示することが可能です:
|
||||
|
||||
<figure><img src="../../../../images/image (200).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
この方法で、すべてのアカウントのすべてのリージョンで CloudTrail を簡単に構成し、1 つのアカウントにログを集中させることができます(そのアカウントは保護する必要があります)。
|
||||
この方法で、すべてのアカウントのすべてのリージョンでCloudTrailを簡単に構成し、1つのアカウントにログを集中させることができます(そのアカウントは保護する必要があります)。
|
||||
|
||||
### ログファイルの確認
|
||||
|
||||
@@ -77,13 +77,13 @@ CloudTrailがCloudWatchにログを送信できるようにするには、その
|
||||
|
||||
### Event History
|
||||
|
||||
CloudTrail Event Historyでは、記録されたログをテーブルで確認できます:
|
||||
CloudTrail Event Historyでは、記録されたログをテーブルで検査できます:
|
||||
|
||||
.png>)
|
||||
|
||||
### Insights
|
||||
|
||||
**CloudTrail Insights**は自動的に**管理イベントの書き込みを分析**し、**異常な活動**を**警告**します。例えば、`TerminateInstance`イベントの増加が確立されたベースラインと異なる場合、それはInsightイベントとして表示されます。これらのイベントは、**異常なAPI活動を見つけて対応することをこれまで以上に容易にします**。
|
||||
**CloudTrail Insights**は自動的に**分析**し、CloudTrailトレイルからの書き込み管理イベントを**警告**し、**異常な活動**を通知します。たとえば、`TerminateInstance`イベントの増加が確立されたベースラインと異なる場合、それはInsightイベントとして表示されます。これらのイベントは、**異常なAPI活動を見つけて対応することをこれまで以上に容易にします**。
|
||||
|
||||
インサイトはCloudTrailログと同じバケットに保存されます:`BucketName/AWSLogs/AccountID/CloudTrail-Insight`
|
||||
|
||||
@@ -125,7 +125,7 @@ aws cloudtrail get-query-results --event-data-store <data-source> --query-id <id
|
||||
### **CSVインジェクション**
|
||||
|
||||
CloudTrail内でCSVインジェクションを実行することが可能で、ログがCSV形式でエクスポートされ、Excelで開かれると任意のコードが実行されます。\
|
||||
次のコードは、ペイロードを含む悪いトレイル名のログエントリを生成します:
|
||||
次のコードは、ペイロードを含む悪いトレイル名のログエントリを生成します:
|
||||
```python
|
||||
import boto3
|
||||
payload = "=cmd|'/C calc'|''"
|
||||
@@ -148,21 +148,21 @@ https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript
|
||||
|
||||
### HoneyTokens **回避**
|
||||
|
||||
Honeytokensは**機密情報の流出を検出するために作成されます**。AWSの場合、これらは**使用が監視されるAWSキー**です。そのキーでアクションがトリガーされると、誰かがそのキーを盗んだことになります。
|
||||
Honeytokensは**機密情報の流出を検出するために作成されます**。AWSの場合、これらは**使用が監視されるAWSキー**です。そのキーでアクションがトリガーされると、誰かがそのキーを盗んだ可能性があります。
|
||||
|
||||
しかし、[**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)によって作成されたHoneytokensは、認識可能なアカウント名を使用するか、すべての顧客に対して同じAWSアカウントIDを使用しています。したがって、Cloudtrailにログを作成させることなくアカウント名やアカウントIDを取得できれば、**そのキーがHoneytokenかどうかを知ることができます**。
|
||||
|
||||
[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57)には、キーが[**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**に属するかどうかを検出するためのいくつかのルールがあります:**
|
||||
|
||||
- **`canarytokens.org`**がロール名に表示される場合、またはエラーメッセージにアカウントID **`534261010715`**が表示される場合。
|
||||
- **`canarytokens.org`**がロール名に表示されるか、エラーメッセージにアカウントID **`534261010715`**が表示される場合。
|
||||
- 最近テストしたところ、彼らはアカウント**`717712589309`**を使用しており、名前に**`canarytokens.com`**の文字列がまだ含まれています。
|
||||
- エラーメッセージのロール名に**`SpaceCrab`**が表示される場合。
|
||||
- エラーメッセージにロール名に**`SpaceCrab`**が表示される場合。
|
||||
- **SpaceSiren**はユーザー名を生成するために**uuids**を使用します:`[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
|
||||
- **名前がランダムに生成されたように見える場合**、それはHoneyTokenである可能性が高いです。
|
||||
|
||||
#### キーIDからアカウントIDを取得する
|
||||
|
||||
**アクセスキー**内の**エンコードされた**情報から**アカウントID**を取得でき、[**ここで説明されているように**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)そのアカウントIDをHoneytokens AWSアカウントのリストと照合できます:
|
||||
**アクセスキー**内に**エンコードされた**アカウントIDを取得することができ、[**ここで説明されているように**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)そのアカウントIDをHoneytokens AWSアカウントのリストと照合してください:
|
||||
```python
|
||||
import base64
|
||||
import binascii
|
||||
@@ -181,34 +181,34 @@ return (e)
|
||||
|
||||
print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56JQ7WML")))
|
||||
```
|
||||
[**元の研究**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)で詳細情報を確認してください。
|
||||
Check more information in the [**orginal research**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489).
|
||||
|
||||
#### ログを生成しない
|
||||
|
||||
このための最も効果的な手法は実際にはシンプルです。見つけたキーを使用して、自分の攻撃者アカウント内のサービスにアクセスします。これにより、**CloudTrailはあなた自身のAWSアカウント内にログを生成し、被害者のアカウント内には生成しません**。
|
||||
最も効果的な技術は実際にはシンプルなものです。見つけたキーを使用して、自分の攻撃者アカウント内のサービスにアクセスします。これにより、**CloudTrailはあなた自身のAWSアカウント内にログを生成し、被害者のアカウント内には生成しません**。
|
||||
|
||||
問題は、出力にアカウントIDとアカウント名を示すエラーが表示されるため、**それがハニートークンであるかどうかを確認できることです**。
|
||||
出力には、アカウントIDとアカウント名を示すエラーが表示されるため、**それがHoneytokenであるかどうかを確認できます**。
|
||||
|
||||
#### ログなしのAWSサービス
|
||||
|
||||
過去には、**CloudTrailにログを送信しないAWSサービスがいくつかありました**([こちらにリストがあります](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。これらのサービスのいくつかは、無許可の者(ハニートークンキー)がアクセスしようとすると、**キー役割のARNを含む**エラーで**応答**します。
|
||||
過去には、**CloudTrailにログを送信しないAWSサービスがいくつかありました**(ここに[リストを見つけてください](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。これらのサービスのいくつかは、無許可の者(ハニートークンキー)がアクセスしようとすると、**キー役割のARNを含む**エラーで**応答**します。
|
||||
|
||||
この方法で、**攻撃者はログをトリガーすることなくキーのARNを取得できます**。ARNには**AWSアカウントIDと名前**が表示されるため、ハニートークンの企業アカウントIDと名前を知るのは簡単です。このようにして、攻撃者はトークンがハニートークンであるかどうかを特定できます。
|
||||
この方法で、**攻撃者はログをトリガーすることなくキーのARNを取得できます**。ARNには**AWSアカウントIDと名前**が表示されるため、HoneyTokenの企業アカウントIDと名前を知るのは簡単で、攻撃者はトークンがHoneyTokenであるかどうかを特定できます。
|
||||
|
||||
.png>)
|
||||
|
||||
> [!CAUTION]
|
||||
> CloudTrailログを生成しないことが発見されたすべての公開APIは現在修正されているため、自分で見つける必要があるかもしれません...
|
||||
> CloudTrailログを生成しないことが発見されたすべての公開APIは現在修正されているため、独自に見つける必要があるかもしれません...
|
||||
>
|
||||
> 詳細情報は[**元の研究**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/)を確認してください。
|
||||
> 詳細については、[**original research**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/)を確認してください。
|
||||
|
||||
### 第三者インフラへのアクセス
|
||||
|
||||
特定のAWSサービスは、**データベース**や**Kubernetes**クラスター(EKS)などの**インフラを生成します**。ユーザーがこれらのサービス(Kubernetes APIなど)に**直接話しかける**場合、**AWS APIを使用しないため**、CloudTrailはこの通信を確認できません。
|
||||
特定のAWSサービスは、**データベース**や**Kubernetes**クラスター(EKS)などの**インフラを生成します**。ユーザーがこれらのサービス(Kubernetes APIなど)に直接話しかける場合、**AWS APIを使用しないため**、CloudTrailはこの通信を確認できません。
|
||||
|
||||
したがって、EKSにアクセスできるユーザーがEKS APIのURLを発見した場合、ローカルでトークンを生成し、**CloudTrailに検出されることなくAPIサービスに直接話しかけることができます**。
|
||||
したがって、EKSにアクセスできるユーザーがEKS APIのURLを発見した場合、ローカルでトークンを生成し、**Cloudtrailに検出されることなくAPIサービスに直接話しかけることができます**。
|
||||
|
||||
詳細情報は以下にあります:
|
||||
詳細は以下を参照してください:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-eks-post-exploitation.md
|
||||
|
||||
+38
-38
@@ -5,7 +5,7 @@
|
||||
## CloudWatch
|
||||
|
||||
**CloudWatch** は、ログ/メトリクス/イベントの形で監視および運用 **データ** を収集し、**AWSリソース**、アプリケーション、サービスの **統一ビュー** を提供します。\
|
||||
CloudWatch Log Event には、**各ログ行のサイズ制限が256KB** があります。\
|
||||
CloudWatch Log Event には **各ログ行のサイズ制限が256KB** あります。\
|
||||
高解像度アラームを設定し、**ログ** と **メトリクス** を並べて視覚化し、自動化されたアクションを実行し、問題をトラブルシュートし、アプリケーションを最適化するための洞察を発見できます。
|
||||
|
||||
例えば、CloudTrail のログを監視できます。監視されるイベント:
|
||||
@@ -21,33 +21,33 @@ CloudWatch Log Event には、**各ログ行のサイズ制限が256KB** があ
|
||||
|
||||
### Namespaces
|
||||
|
||||
名前空間は、CloudWatch メトリクスのコンテナです。メトリクスを分類および分離するのに役立ち、管理および分析を容易にします。
|
||||
Namespace は CloudWatch メトリクスのコンテナです。メトリクスを分類および分離するのに役立ち、管理および分析が容易になります。
|
||||
|
||||
- **例**: EC2 関連メトリクスのための AWS/EC2、RDS メトリクスのための AWS/RDS。
|
||||
|
||||
### Metrics
|
||||
|
||||
メトリクスは、時間の経過とともに収集されたデータポイントで、AWS リソースのパフォーマンスまたは利用状況を表します。メトリクスは、AWS サービス、カスタムアプリケーション、またはサードパーティの統合から収集できます。
|
||||
メトリクスは、AWS リソースのパフォーマンスまたは利用状況を表す時間経過に伴って収集されたデータポイントです。メトリクスは、AWS サービス、カスタムアプリケーション、またはサードパーティの統合から収集できます。
|
||||
|
||||
- **例**: CPUUtilization、NetworkIn、DiskReadOps。
|
||||
|
||||
### Dimensions
|
||||
|
||||
ディメンションは、メトリクスの一部であるキーと値のペアです。メトリクスを一意に識別し、追加のコンテキストを提供するのに役立ち、メトリクスに関連付けられるディメンションの最大数は 30 です。ディメンションは、特定の属性に基づいてメトリクスをフィルタリングおよび集約することも可能です。
|
||||
Dimensions はメトリクスの一部であるキーと値のペアです。メトリクスを一意に識別し、追加のコンテキストを提供するのに役立ち、メトリクスに関連付けられる最大の次元数は 30 です。Dimensions は、特定の属性に基づいてメトリクスをフィルタリングおよび集約することも可能です。
|
||||
|
||||
- **例**: EC2 インスタンスの場合、ディメンションには InstanceId、InstanceType、AvailabilityZone が含まれる場合があります。
|
||||
- **例**: EC2 インスタンスの場合、Dimensions には InstanceId、InstanceType、AvailabilityZone が含まれる場合があります。
|
||||
|
||||
### Statistics
|
||||
|
||||
統計は、メトリクスデータに対して行われる数学的計算で、時間の経過に伴う要約を提供します。一般的な統計には、平均、合計、最小、最大、サンプル数が含まれます。
|
||||
Statistics は、メトリクスデータに対して行われる数学的計算で、時間経過に伴って要約します。一般的な統計には、平均、合計、最小、最大、サンプル数が含まれます。
|
||||
|
||||
- **例**: 1 時間の間の平均 CPU 利用率を計算する。
|
||||
|
||||
### Units
|
||||
|
||||
単位は、メトリクスに関連付けられた測定タイプです。単位は、メトリクスデータにコンテキストと意味を提供するのに役立ちます。一般的な単位には、パーセント、バイト、秒、カウントが含まれます。
|
||||
Units はメトリクスに関連付けられた測定タイプです。Units はメトリクスデータにコンテキストと意味を提供するのに役立ちます。一般的な単位には、パーセント、バイト、秒、カウントが含まれます。
|
||||
|
||||
- **例**: CPUUtilization はパーセントで測定される場合がありますが、NetworkIn はバイトで測定される場合があります。
|
||||
- **例**: CPUUtilization はパーセントで測定される場合があり、NetworkIn はバイトで測定される場合があります。
|
||||
|
||||
## CloudWatch Features
|
||||
|
||||
@@ -57,7 +57,7 @@ CloudWatch Log Event には、**各ログ行のサイズ制限が256KB** があ
|
||||
|
||||
**主な機能**:
|
||||
|
||||
- **ウィジェット**: グラフ、テキスト、アラームなど、ダッシュボードの構成要素。
|
||||
- **ウィジェット**: グラフ、テキスト、アラームなど、ダッシュボードのビルディングブロック。
|
||||
- **カスタマイズ**: レイアウトとコンテンツは、特定の監視ニーズに合わせてカスタマイズできます。
|
||||
|
||||
**例の使用ケース**:
|
||||
@@ -66,29 +66,29 @@ CloudWatch Log Event には、**各ログ行のサイズ制限が256KB** があ
|
||||
|
||||
### Metric Stream and Metric Data
|
||||
|
||||
AWS CloudWatch の **Metric Streams** は、CloudWatch メトリクスを選択した宛先にほぼリアルタイムで継続的にストリーミングすることを可能にします。これは、AWS の外部ツールを使用した高度な監視、分析、およびカスタムダッシュボードに特に便利です。
|
||||
**Metric Streams** は、AWS CloudWatch で CloudWatch メトリクスを選択した宛先にほぼリアルタイムで継続的にストリーミングすることを可能にします。これは、AWS の外部ツールを使用した高度な監視、分析、およびカスタムダッシュボードに特に便利です。
|
||||
|
||||
**Metric Data** は、Metric Streams 内の実際の測定値またはデータポイントを指します。これらのデータポイントは、AWS リソースの CPU 利用率、メモリ使用量など、さまざまなメトリクスを表します。
|
||||
**Metric Data** は、Metric Streams 内でストリーミングされている実際の測定値またはデータポイントを指します。これらのデータポイントは、AWS リソースの CPU 利用率、メモリ使用量など、さまざまなメトリクスを表します。
|
||||
|
||||
**例の使用ケース**:
|
||||
|
||||
- 高度な分析のために、リアルタイムメトリクスをサードパーティの監視サービスに送信する。
|
||||
- 長期保存とコンプライアンスのために、Amazon S3 バケットにメトリクスをアーカイブする。
|
||||
- 長期保存およびコンプライアンスのために、Amazon S3 バケットにメトリクスをアーカイブする。
|
||||
|
||||
### Alarm
|
||||
|
||||
**CloudWatch Alarms** は、メトリクスを監視し、事前に定義された閾値に基づいてアクションを実行します。メトリクスが閾値を超えると、アラームは SNS 経由で通知を送信したり、オートスケーリングポリシーをトリガーしたり、AWS Lambda 関数を実行したりするなど、1 つ以上のアクションを実行できます。
|
||||
**CloudWatch Alarms** は、メトリクスを監視し、事前に定義された閾値に基づいてアクションを実行します。メトリクスが閾値を超えた場合、アラームは SNS 経由で通知を送信したり、オートスケーリングポリシーをトリガーしたり、AWS Lambda 関数を実行したりするなど、1 つ以上のアクションを実行できます。
|
||||
|
||||
**主なコンポーネント**:
|
||||
|
||||
- **閾値**: アラームがトリガーされる値。
|
||||
- **評価期間**: データが評価される期間の数。
|
||||
- **アラームに必要なデータポイント**: アラームをトリガーするために必要な閾値に達した期間の数。
|
||||
- **アラームのためのデータポイント**: アラームをトリガーするために必要な閾値に達した期間の数。
|
||||
- **アクション**: アラーム状態がトリガーされたときに何が起こるか(例:SNS 経由で通知)。
|
||||
|
||||
**例の使用ケース**:
|
||||
|
||||
- EC2 インスタンスの CPU 利用率を監視し、5 分間 80% を超えた場合に SNS 経由で通知を送信する。
|
||||
- EC2 インスタンスの CPU 利用率を監視し、5 分間連続して 80% を超えた場合に SNS 経由で通知を送信する。
|
||||
|
||||
### Anomaly Detectors
|
||||
|
||||
@@ -105,37 +105,37 @@ AWS CloudWatch の **Metric Streams** は、CloudWatch メトリクスを選択
|
||||
|
||||
### Insight Rules and Managed Insight Rules
|
||||
|
||||
**Insight Rules** は、**強力な数学的表現**を使用してメトリクスデータ内のトレンド、スパイク、またはその他の興味深いパターンを特定することを可能にします。これらのルールは、リソースのパフォーマンスと利用状況における異常や異常な動作を特定するのに役立ちます。
|
||||
**Insight Rules** は、**強力な数学的表現** を使用してメトリクスデータ内のトレンド、スパイク、またはその他の興味深いパターンを特定することを可能にします。これらのルールは、リソースのパフォーマンスと利用状況における異常や異常な動作を特定するのに役立ちます。
|
||||
|
||||
**Managed Insight Rules** は、AWS によって提供される事前構成された **インサイトルール** です。特定の AWS サービスや一般的な使用ケースを監視するように設計されており、詳細な構成なしで有効にできます。
|
||||
|
||||
**例の使用ケース**:
|
||||
|
||||
- RDS パフォーマンスの監視: CPU 利用率、メモリ使用量、ディスク I/O などの主要なパフォーマンス指標を監視する Amazon RDS の管理インサイトルールを有効にします。これらのメトリクスのいずれかが安全な運用閾値を超えた場合、ルールはアラートまたは自動緩和アクションをトリガーできます。
|
||||
- RDS パフォーマンスの監視: CPU 利用率、メモリ使用量、ディスク I/O などの主要なパフォーマンス指標を監視する Amazon RDS のための管理されたインサイトルールを有効にします。これらのメトリクスのいずれかが安全な運用閾値を超えた場合、ルールはアラートまたは自動緩和アクションをトリガーできます。
|
||||
|
||||
### CloudWatch Logs <a href="#cloudwatch-logs" id="cloudwatch-logs"></a>
|
||||
|
||||
アプリケーションやシステムからの **ログを集約および監視** することを可能にします。**AWSサービス**(CloudTrail を含む)および **アプリ/システム** からのログ(**CloudWatch Agent** をホストにインストールできます)。ログは **無期限に保存** でき(ロググループの設定に依存)、エクスポートできます。
|
||||
アプリケーションおよびシステムからの **ログを集約および監視** することを可能にし、**AWSサービス**(CloudTrail を含む)および **アプリ/システム** からのログを集約します(**CloudWatch Agent** をホストにインストールできます)。ログは **無期限に保存** でき(ロググループの設定に依存)、エクスポートできます。
|
||||
|
||||
**要素**:
|
||||
| 用語 | 定義 |
|
||||
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **ロググループ** | 同じ保持、監視、およびアクセス制御設定を共有する **ログストリームのコレクション** |
|
||||
| **ログストリーム** | **同じソース**を共有する **ログイベントのシーケンス** |
|
||||
| **ログストリーム** | **同じソース** を共有する **ログイベントのシーケンス** |
|
||||
| **サブスクリプションフィルター** | 特定のロググループ内のイベントに一致する **フィルターパターンを定義し**、それらを Kinesis Data Firehose ストリーム、Kinesis ストリーム、または Lambda 関数に送信します。 |
|
||||
|
||||
### CloudWatch Monitoring & Events
|
||||
|
||||
CloudWatch の **基本** は、データを **5 分ごとに集約** します(**詳細** は **1 分ごとに** 行います)。集約後、アラームの閾値を **チェック** し、トリガーが必要かどうかを確認します。\
|
||||
その場合、CloudWatch はイベントを送信し、自動アクション(AWS Lambda 関数、SNS トピック、SQS キュー、Kinesis ストリーム)を実行する準備ができます。
|
||||
CloudWatch の **基本** は、データを **5 分ごとに集約** します(**詳細** は **1 分ごとに集約** します)。集約後、アラームの閾値を **チェック** し、トリガーする必要があるかどうかを確認します。\
|
||||
その場合、CloudWatch はイベントを送信し、自動アクションを実行する準備ができます(AWS Lambda 関数、SNS トピック、SQS キュー、Kinesis ストリーム)。
|
||||
|
||||
### Agent Installation
|
||||
|
||||
マシン/コンテナ内にエージェントをインストールして、ログを自動的に CloudWatch に送信できます。
|
||||
|
||||
- **ロールを作成**し、**インスタンスに添付**して、CloudWatch がインスタンスからデータを収集し、AWS Systems Manager SSM と対話できるようにする権限を付与します(CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)。
|
||||
- **エージェントをダウンロード**し、**EC2 インスタンスにインストール**します ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip))。EC2 内からダウンロードするか、AWS Systems Manager を使用して自動的にインストールすることができます。パッケージ AWS-ConfigureAWSPackage を選択します。
|
||||
- **CloudWatch Agent を構成**し、**起動**します。
|
||||
- **ロールを作成** し、CloudWatch がインスタンスからデータを収集できるようにするための権限を持つ **インスタンスにアタッチ** します(CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)。
|
||||
- **エージェントをダウンロード** し、EC2 インスタンスに **インストール** します ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip))。EC2 内からダウンロードするか、AWS Systems Manager を使用して自動的にインストールできます。AWS-ConfigureAWSPackage パッケージを選択します。
|
||||
- **CloudWatch Agent を構成** し、**開始** します。
|
||||
|
||||
ロググループには多くのストリームがあります。ストリームには多くのイベントがあります。そして、各ストリーム内のイベントは順序が保証されています。
|
||||
|
||||
@@ -216,18 +216,18 @@ aws events list-event-buses
|
||||
|
||||
### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`**
|
||||
|
||||
この権限を持つ攻撃者は、組織の監視およびアラートインフラストラクチャを大幅に損なう可能性があります。既存のアラームを削除することで、攻撃者は管理者に重要なパフォーマンスの問題、セキュリティ侵害、または運用の失敗を通知する重要なアラートを無効にすることができます。さらに、メトリックアラームを作成または変更することで、攻撃者は誤ったアラートで管理者を誤導したり、正当なアラームを無効にしたりすることができ、悪意のある活動を隠蔽し、実際のインシデントに対する迅速な対応を妨げることができます。
|
||||
この権限を持つ攻撃者は、組織の監視およびアラートインフラストラクチャを大きく損なう可能性があります。既存のアラームを削除することで、攻撃者は管理者に重要なパフォーマンスの問題、セキュリティ侵害、または運用の失敗を通知する重要なアラートを無効にすることができます。さらに、メトリックアラームを作成または変更することで、攻撃者は誤ったアラートで管理者を誤導したり、正当なアラームを無効にしたりすることができ、悪意のある活動を隠蔽し、実際のインシデントに対する迅速な対応を妨げることができます。
|
||||
|
||||
さらに、**`cloudwatch:PutCompositeAlarm`** 権限を持つ攻撃者は、複合アラームAが複合アラームBに依存し、複合アラームBも複合アラームAに依存するような複合アラームのループまたはサイクルを作成することができます。このシナリオでは、サイクルの一部である複合アラームを削除することは不可能です。なぜなら、削除したいアラームに依存する複合アラームが常に存在するからです。
|
||||
さらに、**`cloudwatch:PutCompositeAlarm`** 権限を持つ攻撃者は、合成アラームAが合成アラームBに依存し、合成アラームBも合成アラームAに依存する合成アラームのループまたはサイクルを作成することができます。このシナリオでは、サイクルの一部である合成アラームを削除することは不可能です。なぜなら、削除したいアラームに依存する合成アラームが常に存在するからです。
|
||||
```bash
|
||||
aws cloudwatch put-metric-alarm --cli-input-json <value> | --alarm-name <value> --comparison-operator <value> --evaluation-periods <value> [--datapoints-to-alarm <value>] [--threshold <value>] [--alarm-description <value>] [--alarm-actions <value>] [--metric-name <value>] [--namespace <value>] [--statistic <value>] [--dimensions <value>] [--period <value>]
|
||||
aws cloudwatch delete-alarms --alarm-names <value>
|
||||
aws cloudwatch put-composite-alarm --alarm-name <value> --alarm-rule <value> [--no-actions-enabled | --actions-enabled [--alarm-actions <value>] [--insufficient-data-actions <value>] [--ok-actions <value>] ]
|
||||
```
|
||||
次の例は、メトリックアラームを無効にする方法を示しています:
|
||||
以下の例は、メトリックアラームを無効にする方法を示しています:
|
||||
|
||||
- このメトリックアラームは、特定のEC2インスタンスの平均CPU使用率を監視し、300秒ごとにメトリックを評価し、6つの評価期間(合計30分)を必要とします。平均CPU使用率がこれらの期間のうち少なくとも4つで60%を超えると、アラームがトリガーされ、指定されたSNSトピックに通知が送信されます。
|
||||
- 閾値を99%を超えるように変更し、期間を10秒に設定し、評価期間を8640(8640期間の10秒は1日に相当)に設定し、アラームのデータポイントも8640に設定すると、アラームをトリガーするには、CPU使用率が24時間全体で10秒ごとに99%を超える必要があります。
|
||||
- 閾値を99%を超えるように変更し、期間を10秒に設定し、評価期間を8640に設定すると(8640期間の10秒は1日になります)、アラームをトリガーするには、CPU使用率が24時間全体で10秒ごとに99%を超える必要があります。
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Original Metric Alarm" }}
|
||||
@@ -285,7 +285,7 @@ aws cloudwatch put-composite-alarm --alarm-name <value> --alarm-rule <value> [--
|
||||
|
||||
アラームアクションを削除することで、攻撃者はアラーム状態に達したときに管理者への通知や自動スケーリング活動のトリガーなど、重要な警告や自動応答が発動するのを防ぐことができます。不適切にアラームアクションを有効化または再有効化することも、以前に無効化されたアクションを再活性化したり、どのアクションがトリガーされるかを変更したりすることで、予期しない動作を引き起こし、インシデント対応において混乱や誤方向を招く可能性があります。
|
||||
|
||||
さらに、権限を持つ攻撃者はアラーム状態を操作し、管理者を気を散らせたり混乱させたりするために偽のアラームを作成したり、進行中の悪意のある活動や重大なシステム障害を隠すために正当なアラームを無効にしたりすることができます。
|
||||
さらに、権限を持つ攻撃者はアラーム状態を操作し、管理者を混乱させるために偽のアラームを作成したり、進行中の悪意のある活動や重大なシステム障害を隠すために正当なアラームを無効にしたりすることができます。
|
||||
|
||||
- **`SetAlarmState`** をコンポジットアラームで使用すると、コンポジットアラームが実際の状態に戻ることは保証されません。子アラームのいずれかが状態を変更したときにのみ、実際の状態に戻ります。また、設定を更新すると再評価されます。
|
||||
```bash
|
||||
@@ -293,11 +293,11 @@ aws cloudwatch disable-alarm-actions --alarm-names <value>
|
||||
aws cloudwatch enable-alarm-actions --alarm-names <value>
|
||||
aws cloudwatch set-alarm-state --alarm-name <value> --state-value <OK | ALARM | INSUFFICIENT_DATA> --state-reason <value> [--state-reason-data <value>]
|
||||
```
|
||||
**潜在的な影響**: 重要なイベントに対する通知の欠如、潜在的な未検出の問題、誤警報、正当な警報の抑制、そして実際のインシデントの検出を見逃す可能性。
|
||||
**潜在的な影響**: 重要なイベントに対する通知の欠如、潜在的な未検出の問題、偽のアラート、正当なアラートの抑制、実際のインシデントの検出の見逃しの可能性。
|
||||
|
||||
### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`**
|
||||
|
||||
攻撃者は、メトリックデータの異常パターンや異常を検出し、対応する能力を妨害することができます。既存の異常検出器を削除することで、攻撃者は重要なアラート機構を無効にすることができ、作成または変更することで、監視を混乱させたり圧倒させたりするために誤設定や誤検知を引き起こすことができます。
|
||||
攻撃者は、メトリックデータの異常パターンや異常を検出し、対応する能力を妨害することができます。既存の異常検出器を削除することで、攻撃者は重要なアラート機構を無効にし、作成または変更することで、監視を混乱させたり圧倒させたりするために、誤設定や偽のポジティブを作成することができます。
|
||||
```bash
|
||||
aws cloudwatch delete-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value>]
|
||||
aws cloudwatch put-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value> --configuration <value> --metric-characteristics <value>]
|
||||
@@ -355,7 +355,7 @@ aws cloudwatch put-anomaly-detector [--cli-input-json <value> | --namespace <val
|
||||
|
||||
### **`cloudwatch:DeleteDashboards`, `cloudwatch:PutDashboard`**
|
||||
|
||||
攻撃者は、ダッシュボードを作成、変更、または削除することによって、組織の監視および視覚化機能を妨害することができます。この権限は、システムのパフォーマンスと健康に関する重要な可視性を削除したり、ダッシュボードを変更して不正確なデータを表示させたり、悪意のある活動を隠すために利用される可能性があります。
|
||||
攻撃者は、ダッシュボードを作成、変更、または削除することで、組織の監視および視覚化機能を妨害することができます。この権限は、システムのパフォーマンスと健康に関する重要な可視性を削除したり、ダッシュボードを変更して不正確なデータを表示させたり、悪意のある活動を隠すために利用される可能性があります。
|
||||
```bash
|
||||
aws cloudwatch delete-dashboards --dashboard-names <value>
|
||||
aws cloudwatch put-dashboard --dashboard-name <value> --dashboard-body <value>
|
||||
@@ -370,7 +370,7 @@ aws cloudwatch delete-insight-rules --rule-names <value>
|
||||
aws cloudwatch put-insight-rule --rule-name <value> --rule-definition <value> [--rule-state <value>]
|
||||
aws cloudwatch put-managed-insight-rules --managed-rules <value>
|
||||
```
|
||||
**潜在的な影響**: パフォーマンスの問題や異常を検出し対応するのが難しくなり、誤った意思決定を引き起こし、悪意のある活動やシステムの障害を隠す可能性があります。
|
||||
**潜在的影響**: パフォーマンスの問題や異常を検出し対応するのが難しくなり、誤った意思決定を引き起こし、悪意のある活動やシステムの障害を隠す可能性があります。
|
||||
|
||||
### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`**
|
||||
|
||||
@@ -385,8 +385,8 @@ aws cloudwatch enable-insight-rules --rule-names <value>
|
||||
|
||||
**`cloudwatch:DeleteMetricStream`** 、**`cloudwatch:PutMetricStream`** の権限を持つ攻撃者は、メトリックデータストリームを作成および削除でき、セキュリティ、監視、データの整合性が損なわれる可能性があります:
|
||||
|
||||
- **悪意のあるストリームの作成**: 機密データを不正な宛先に送信するメトリックストリームを作成する。
|
||||
- **リソースの操作**: 過剰なデータを持つ新しいメトリックストリームの作成は、多くのノイズを生じさせ、誤ったアラートを引き起こし、真の問題を隠す可能性があります。
|
||||
- **悪意のあるストリームの作成**: メトリックストリームを作成して、機密データを不正な宛先に送信する。
|
||||
- **リソース操作**: 過剰なデータを持つ新しいメトリックストリームの作成は、多くのノイズを生み出し、誤ったアラートを引き起こし、真の問題を隠す可能性があります。
|
||||
- **監視の中断**: メトリックストリームを削除することで、攻撃者は監視データの継続的な流れを妨害します。このようにして、彼らの悪意のある活動は効果的に隠されます。
|
||||
|
||||
同様に、**`cloudwatch:PutMetricData`** の権限を持つことで、メトリックストリームにデータを追加することが可能になります。これにより、不適切なデータの量が原因でDoSが発生し、完全に無用になる可能性があります。
|
||||
@@ -399,16 +399,16 @@ EC2インスタンスのCPU使用率が70%に相当するデータを追加す
|
||||
```bash
|
||||
aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg"
|
||||
```
|
||||
**潜在的な影響**: 監視データの流れの中断により、異常やインシデントの検出、リソースの操作、過剰なメトリックストリームの作成によるコストの増加に影響を与える。
|
||||
**潜在的影響**: 監視データの流れの中断、異常やインシデントの検出への影響、リソースの操作および過剰なメトリックストリームの作成によるコストの増加。
|
||||
|
||||
### **`cloudwatch:StopMetricStreams`, `cloudwatch:StartMetricStreams`**
|
||||
|
||||
攻撃者は、影響を受けたメトリックデータストリームの流れを制御します(リソース制限がない場合はすべてのデータストリーム)。権限 **`cloudwatch:StopMetricStreams`** を使用することで、攻撃者は重要なメトリックストリームを停止することにより、自らの悪意のある活動を隠すことができます。
|
||||
攻撃者は、影響を受けたメトリックデータストリームの流れを制御します(リソース制限がない場合はすべてのデータストリーム)。権限 **`cloudwatch:StopMetricStreams`** を使用することで、攻撃者は重要なメトリックストリームを停止させることにより、自らの悪意のある活動を隠すことができます。
|
||||
```bash
|
||||
aws cloudwatch stop-metric-streams --names <value>
|
||||
aws cloudwatch start-metric-streams --names <value>
|
||||
```
|
||||
**潜在的な影響**: 監視データの流れの中断により、異常やインシデントの検出に影響を与える可能性があります。
|
||||
**潜在的な影響**: 監視データの流れが中断され、異常やインシデントの検出に影響を与える。
|
||||
|
||||
### **`cloudwatch:TagResource`, `cloudwatch:UntagResource`**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user