目的
IAM Identity Center (AWS SSO) 利用時にAWSアカウントへのログインを記録する
- AWS SSO利用時に認証やAWSマネジメントコンソールのアクセスを記録する
- 強い権限でAWSマネジメントコンソールにアクセスした場合、アラーム通知する
実装例
-
EventBridgeのルールで"aws.sso"のイベント発生時にCloudWatch Logsへ記録する - ログ検索や通知したい:
CloudWatch Logs / Insightで検索 / アラームで通知- 例)
CloudWatch Logsのメトリクスフィルタで権限毎にメトリクスを設定- 管理権限でログイン時に、
CloudWatchアラームで通知する
- 管理権限でログイン時に、
- 例)
設定
-
EventBridgeのルールを作成する- 例)ルール名:
aws-sso-logging
- 例)ルール名:
-
イベントパターン: (JSON)
イベントパターン{ "source": ["aws.sso"], "detail-type": ["AWS Service Event via CloudTrail"], "detail": { "eventSource": ["sso.amazonaws.com"] } } -
特定イベント (アクション) に限定する場合、
detailの"eventName"で絞る- 例)
"eventName": ["Authenticate","Federate"]-
Authenticate: AWS SSOへのサインイン (認証) -
Federate: AWSマネジメントコンソールへのアクセスなど
-
- 例)
- ターゲット:
CloudWatch Logs- ロググループを指定: 例)
/aws/events/aws-sso-logging
- ロググループを指定: 例)
ログ
-
CloudWatch LogsにJSON形式でログが記録される-
detail.serviceEventDetailsにアクセスしたロールとAWSアカウントIDが記録されるCloudWatch Logs... "serviceEventDetails": { "role_name": "AWSAdministratorAccess", "account_id": "123456789012" }, ...
-
特定のAWSアカウントで管理権限でログインしたときに通知する
- CloudWatch ロググループで
メトリクスフィルターを作成し、CloudWatchアラームで監視通知する- AWSアカウントIDやロールで集計したい場合:メトリクスフィルターの
ディメンションを設定
- AWSアカウントIDやロールで集計したい場合:メトリクスフィルターの
メトリクスフィルターの設定例
- フィルターパターン:
{$.detail.eventName= "Federate"} - メトリクス名前空間: 任意名称 例)
aws-sso - メトリクス名: 任意名称 例)
Federate - メトリクス値:
1 - ディメンション: 例) AWSアカウントIDとロール名で集計
- account_id:
$.detail.serviceEventDetails.account_id - role_name:
$.detail.serviceEventDetails.role_name
- account_id:
CloudWatchメトリクスからアラームを設定
- CloudWatchメトリクスで、AWSアカウントIDとロール単位にアラームを設定できる
- 例) CloudWatch > Metrics >
aws-sso>account_id,role_name- ※アクセスしてAWS SSOのログが記録されないとメトリクスは表示されない
- 例) CloudWatch > Metrics >
参考
- IAM Identity Center でのログ記録とモニタリング
- re:Post > Question > AWS IAM Identity Center - EventBridge Rules