特定の AWS Identity and Access Management (IAM) アイデンティティのアカウントアクティビティを閲覧およびモニタリングしたいと考えています。
簡単な説明
特定の IAM アイデンティティのアカウントアクティビティを表示およびモニタリングするために、次の AWS サービスと機能のいずれかを使用できます。
解決策
CloudTrail イベント履歴を使用するには
注: CloudTrail を使用して、過去 90 日間のイベント履歴を検索できます。
1. CloudTrail コンソールを開きます。
2. [イベント履歴] を選択します。
3. [フィルター] で、ドロップダウンリストを選択します。その後、[ユーザー名] を選択します。
注: AWS アクセスキーでフィルタリングすることもできます。
4. [ユーザーまたはロール名の入力] テキストボックスに、IAM ユーザーの「わかりやすい名前」または引き受けられたロールセッション名を入力します。
注: 特定のセッションのロールセッション名は、ロールを引き受けるときにセッション名として指定される値です。[ユーザー名] フィールドの値は、IAM ロールを使用して行われた呼び出しのロール名にはなりません。
5. [時間範囲] に、希望する時間範囲を入力します。その後、[適用] を選択します。
6. [イベント時間] で、イベントを展開します。その後、[イベントの表示] を選択します。
userIdentity 要素には、リクエストを実行した IAM アイデンティティのタイプと提供された認証情報に関する詳細が含まれます。
API コールを実行するために使用される IAM ユーザー認証情報を含む userIdentity 要素の例
注: Alice は、検索対象のユーザー名に置き換えてください。IAM ユーザーの「わかりやすい名前」、または引き受けられたロールの「ロールセッション名」を入力します。 特定のセッションのロールセッション名は、ロールを引き受けるときにセッション名として指定される値です。IAM ロールを使用して行われる呼び出しの場合、userName フィールドの値はロール名にはなりません。
"userIdentity": {
"type": "IAMUser",
"principalId": "AIDAJ45Q7YFFAREXAMPLE",
"arn": "arn:aws:iam::123456789012:user/Alice",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "Alice"
}
一時的なセキュリティ認証情報を含む userIdentity 要素の例
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName",
"arn": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/AssumedRoleSessionName",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "20131102T010628Z"
},
"sessionIssuer": {
"type": "Role",
"principalId": "AROAIDPPEZS35WEXAMPLE",
"arn": "arn:aws:iam::123456789012:role/RoleToBeAssumed",
"accountId": "123456789012",
"userName": "RoleToBeAssumed"
}
}
}
**注:**CloudTrail のイベント履歴では、引き受けられたロールセッション名をイベントのフィルタリング用のユーザー名として使用します。
API コールは、IAM ロールを引き受けることで取得される、一時的なセキュリティ認証情報を使用します。この要素には、認証情報を取得するために引き受けられたロールに関する追加の詳細情報が含まれています。
注: ユーザーアクティビティが表示されないときは、CloudTrail によって AWS のサービスがサポートされ、API イベントが記録されているかを確認します。詳細については、「CloudTrail の AWS サービストピック」を参照してください。
CloudWatch Logs Insights を使用するには
注: CloudWatch Logs Insights を使用して、過去 90 日間を超える API 履歴を検索できます。Amazon CloudWatch Logs にログを記録するには、証跡を作成し、設定しておく必要があります。詳細については、「証拠の作成」を参照してください。
1. CloudWatch コンソールを開きます。
2. [ログ] を選択します。
3. [ロググループ] で、ロググループを選択します。
4. [検索ロググループの検索] を選択します。
5. [イベントでフィルター] に、ユーザーの API コールまたは特定の API アクションを検索するクエリを入力します。その後、更新アイコンを選択します。
ログでユーザーの API コールを検索するクエリの例
注: Alice は、検索対象のユーザー名に置き換えてください。IAM ユーザーの「わかりやすい名前」、または引き受けられたロールの「ロールセッション名」を入力します。 特定のセッションのロールセッション名は、ロールを引き受けるときにセッション名として指定される値です。IAM ロールを使用して行われる呼び出しの場合、userName フィールドの値はロール名にはなりません。
{ $.userIdentity.userName = "Alice" }
ログで特定の API アクションを検索するクエリの例
**注:**注: 次のクエリの例では、DescribeInstances API アクションを検索します。
{ ($.eventName = "DescribeInstances") && ($.requestParameters.userName = "Alice" ) }
詳細については、「CloudWatch Logs Insights のクエリ構文」を参照してください。
Athena クエリを使用するには
**注:**Athena を使用して、過去 90 日間の CloudTrail ログをクエリできます。
1. Athena コンソールを開きます。
2. [クエリエディタ] を選択します。
3. ユースケースに基づいて、次のクエリ例のいずれかを入力します。その後、[クエリを実行] を選択します。
特定の IAM ユーザーによって実行されたすべての CloudTrail イベントを返すクエリの例
重要: athena-table は、お使いの Athena テーブル名に置き換えてください。Alice は、アカウントアクティビティを表示したい IAM ユーザーに置き換えてください。
SELECT *
FROM athena-table
WHERE useridentity.type = 'IAMUser'
AND useridentity.username LIKE 'Alice';
IAM ロールによって実行されるすべての API アクティビティをフィルタリングするクエリの例
注: role-name は、自分の IAM ロール名に置き換えてください。
SELECT *
FROM athena-table
WHERE useridentity.sessionContext.sessionissuer.arn LIKE '%role-name%'
AND useridentity.sessionContext.sessionissuer.type = 'Role';
ロール ARN を照合するクエリの例
SELECT *
FROM athena-table
WHERE useridentity.sessionContext.sessionissuer.arn = 'arn:aws:iam::account-id123456789:role/role-name'
AND useridentity.sessionContext.sessionissuer.type = 'Role';
IAM アクセスキー ID を使用してすべてのアクティビティをフィルタリングするクエリの例
SELECT eventTime, eventName, userIdentity.principalId,eventSource
FROM athena-table
WHERE useridentity.accesskeyid like 'AKIAIOSFODNN7EXAMPLE'
関連情報
AWS CloudTrail を使用して Amazon EC2 インスタンスへの API コールを追跡するにはどうすればよいですか?
CloudTrail を使用して AWS アカウントでセキュリティグループまたはリソースが変更されたかどうかを確認するにはどうすればよいですか?