AWS IAM ログを収集する
パーサーのバージョン: 1.0
このドキュメントでは、サードパーティ API フィードを使用して AWS Identity and Access Management(IAM)構成データを Google Security Operations に取り込む方法について説明します。
AWS IAM パーサーは、IAM エンティティ データ(ユーザー、グループ、ロール、ポリシー)を構造化された統合データモデル(UDM)に変換し、ユーザーの詳細、ロール情報、権限、タイムスタンプなどのフィールドを抽出して、一貫したセキュリティ分析を行います。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- AWS コンソールへの特権アクセス
- IAM ユーザーとポリシーを作成する権限
Google SecOps の IP 範囲を取得する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- ページの上部に表示されている IP 範囲をメモします。
- または、Feed Management API を使用して IP 範囲をプログラムで取得します。
必要な権限を持つ IAM ユーザーを作成する
重要: Google SecOps が API を使用して AWS IAM データを取得できるようにするには、適切な読み取り権限を持つ IAM ユーザーを作成する必要があります。
オプション A: AWS マネージド ポリシーを使用する(推奨)
- IAM ユーザーの作成のガイドの手順に沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで、[アクセスキーを作成] をクリックします。
- [ユースケース] として [サードパーティ サービス] を選択します。
- [Next] をクリックします。
- (省略可)説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [.csv ファイルをダウンロード] をクリックし、[アクセスキー ID] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションで、[権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- IAMReadOnlyAccess(AWS マネージド ポリシー)を検索します。
- ポリシーを選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
重要: IAMReadOnlyAccess ポリシーには、必要な権限がすべて含まれています。
iam:GetUseriam:ListUsersiam:GetGroupiam:ListGroupsiam:GetPolicyiam:ListPoliciesiam:GetRoleiam:ListRolesiam:ListAttachedUserPoliciesiam:ListAttachedGroupPoliciesiam:ListAttachedRolePoliciesiam:GetAccountSummary
オプション B: カスタム ポリシーを作成する(最小権限)
セキュリティ ポリシーでマネージド ポリシーではなく最小権限が必要な場合:
- AWS コンソールで、[IAM] > [ポリシー] > [ポリシーを作成] > [JSON] タブに移動します。
次のポリシーを貼り付けます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetUser", "iam:ListUsers", "iam:GetGroup", "iam:ListGroups", "iam:GetPolicy", "iam:ListPolicies", "iam:GetRole", "iam:ListRoles", "iam:ListAttachedUserPolicies", "iam:ListAttachedGroupPolicies", "iam:ListAttachedRolePolicies", "iam:GetAccountSummary" ], "Resource": "*" } ] }[次へ] をクリックします。
ポリシーに
chronicle-iam-api-read-policyという名前を付けます。[ポリシーを作成] をクリックします。
このガイド(IAM ユーザーの作成)の手順に沿って、ユーザーを作成します。
作成したユーザーを選択します。
[セキュリティ認証情報] タブを選択します。
[アクセスキー] セクションで、[アクセスキーを作成] をクリックします。
[ユースケース] として [サードパーティのサービス] を選択します。
[次へ] をクリックします。
- 省略可: 説明タグを追加します。
[アクセスキーを作成] をクリックします。
[.csv ファイルをダウンロード] をクリックし、[アクセスキー ID] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
[完了] をクリックします。
[権限] タブを選択します。
[権限ポリシー] セクションで、[権限を追加] をクリックします。
[権限を追加] を選択します。
[ポリシーを直接アタッチする] を選択します。
chronicle-iam-api-read-policyを検索して選択します。[次へ] をクリックします。
[権限を追加] をクリックします。
IAM 構成データを取り込むように Google SecOps でフィードを構成する
AWS IAM フィードは、[API タイプ] フィールド([ユーザー]、[ロール]、[グループ])で選択された IAM エンティティ リストをフィードごとに 1 つ収集します。すべての IAM エンティティを収集するには、API タイプごとに 1 つのフィードを作成します。すべてのフィードで AWS IAM ログタイプを使用します。
コンテンツ ハブを使用する(推奨)
- [コンテンツ ハブ] > [コンテンツ パック] > [開始] に移動します。
- [Amazon Cloud Platform] パックをクリックします。
- リストで AWS IAM ログタイプを見つけます。
- [ソースタイプ] プルダウンから [サードパーティ API] を選択します。
- 次の構成情報を指定します。
- ユーザー名: 前の手順で作成した IAM ユーザーのアクセスキー ID。
- Secret: 前の手順で作成した IAM ユーザーのシークレット アクセスキー。
- API タイプ: 収集する IAM エンティティ リスト(ユーザー、ロール、グループ)を選択します。
- Feed Name: フィードを識別する事前入力された値(例:
AWS IAM Users)。 - アセットの名前空間: フィードに関連付けられた名前空間。
- 取り込みラベル: このフィードのすべてのイベントに適用されるラベル。
- [フィードを作成] をクリックします。
このプロダクト ファミリー内の異なるログタイプに複数のフィードを構成する方法については、プロダクト別にフィードを構成するをご覧ください。
SIEM 設定の使用
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一のフィードを構成する] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
AWS IAM API Configuration)。 - [ソースタイプ] として [サードパーティ API] を選択します。
- [Log type] で [AWS IAM] を選択します。
- [次へ] をクリックします。
- 次の入力パラメータの値を指定します。
- ユーザー名: 前の手順で作成した IAM ユーザーのアクセスキー ID。
- Secret: 前の手順で作成した IAM ユーザーのシークレット アクセスキー。
- API タイプ: 収集する IAM エンティティのリスト(ユーザー、ロール、グループ)を選択します。
- Asset namespace: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- [次へ] をクリックします。
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
Group.CreateDate |
entity.group.attribute.creation_time |
ISO8601 として解析済み |
Group.Path |
entity.group.attribute.labels.value |
直接マッピングされます。 |
IsTruncated |
entity.group.attribute.labels.value |
直接マッピングされます。 |
Marker |
entity.group.attribute.labels.value |
直接マッピングされます。 |
Group.GroupName |
entity.group.email_addresses |
統合済み |
Group.GroupName |
entity.group.group_display_name |
直接マッピングされます。 |
Group.GroupID |
entity.group.product_object_id |
直接マッピングされます。 |
RoleLastUsed.Region |
entity.location.name |
直接マッピングされます。 |
CreateDate |
entity.resource.attribute.creation_time |
ISO8601 として解析済み |
MaxSessionDuration |
entity.resource.attribute.labels.value |
直接マッピングされます。 |
Path |
entity.resource.attribute.labels.value |
直接マッピングされます。 |
RoleLastUsed.LastUsedDate |
entity.resource.attribute.labels.value |
直接マッピングされます。 |
AssumeRolePolicyDocument |
entity.resource.attribute.permissions.name |
直接マッピングされます。 |
Description |
entity.resource.attribute.roles.description |
直接マッピングされます。 |
RoleName |
entity.resource.attribute.roles.name |
直接マッピングされます。 |
Arn |
entity.resource.name |
直接マッピングされます。 |
Group.Arn |
entity.resource.name |
直接マッピングされます。 |
RoleID |
entity.resource.product_object_id |
直接マッピングされます。 |
CreateDate |
entity.user.attribute.creation_time |
ISO8601 として解析済み |
PasswordLastUsed |
entity.user.last_login_time |
ISO8601 として解析 |
UserID |
entity.user.product_object_id |
直接マッピングされます。 |
UserName |
entity.user.userid |
直接マッピングされます。 |
PermissionsBoundary.PermissionsBoundaryArn |
relations.entity.resource.attribute.labels.value |
直接マッピングされます。 |
PermissionsBoundary.PermissionsBoundaryType |
relations.entity.resource.attribute.labels.value |
直接マッピングされます。 |
user.PermissionsBoundary.PermissionsBoundaryArn |
relations.entity.resource.attribute.labels.value |
直接マッピングされます。 |
user.PermissionsBoundary.PermissionsBoundaryType |
relations.entity.resource.attribute.labels.value |
直接マッピングされます。 |
user.Arn |
relations.entity.resource.name |
直接マッピングされます。 |
user.CreateDate |
relations.entity.user.attribute.creation_time |
ISO8601 として解析済み |
tag.Key |
relations.entity.user.attribute.labels.key |
直接マッピングされます。 |
Path |
relations.entity.user.attribute.labels.value |
直接マッピングされます。 |
tag.Value |
relations.entity.user.attribute.labels.value |
直接マッピングされます。 |
user.Path |
relations.entity.user.attribute.labels.value |
直接マッピングされます。 |
user.PasswordLastUsed |
relations.entity.user.last_login_time |
ISO8601 として解析済み |
user.UserID |
relations.entity.user.product_object_id |
直接マッピングされます。 |
user.UserName |
relations.entity.user.userid |
直接マッピングされます。 |
| なし | entity.group.attribute.labels.key |
定数: is_truncated |
| なし | entity.resource.attribute.cloud.environment |
定数: AMAZON_WEB_SERVICES |
| なし | entity.resource.attribute.labels.key |
定数: max_session_duration |
| なし | entity.resource.resource_subtype |
定数: User |
| なし | entity.resource.resource_type |
定数: ACCESS_POLICY |
| なし | metadata.entity_type |
定数: USER |
| なし | metadata.product_name |
定数: AWS IAM |
| なし | metadata.vendor_name |
定数: AWS |
| なし | relations.direction |
定数: UNIDIRECTIONAL |
| なし | relations.entity.resource.attribute.labels.key |
定数: permissions_boundary_arn |
| なし | relations.entity.resource.resource_subtype |
定数: User |
| なし | relations.entity.user.attribute.labels.key |
定数: path |
| なし | relations.entity_type |
定数: USER |
| なし | relations.relationship |
定数: MEMBER |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。