目的
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