Identity Center で他の AWS アカウントにログインしたとき CloudTrail に出力されるログ

# はじめに

IAM Identity Center (旧 AWS SSO) を利用して複数の AWS アカウントに対するシングルサインオン機能を提供できます。IAM Identity Center のシングルサインオン環境を運用していくうえで、「誰が」「いつ」「ログインが成功したのか」「どの AWS アカウントにアクセスしたか」というようなログを知りたくなるときがあります。ユースケースとしては、社内の監査だったり、アクセスログの確認などです。

IAM Identity Center を使ったログインは、CloudTrail にログが出力されます。今回は、どんなログが出力されるか見てみましょう。

より詳細で網羅的な情報を知りたい方は、次の AWS Document も一緒に確認してみてください。

https://docs.aws.amazon.com/singlesignon/latest/userguide/understanding-sign-in-events.html





# Identity Center を使ったログイン

まず、CloudTrail 上のログを生み出すために、Identity Center を使ってログインをします。ユーザー名を指定します。

![image-20230329215519597.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/46bf2c41-51d1-3ddc-4313-7e4735253ed7.png)



パスワードを指定します。

![image-20230329215542342.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/80799aaa-9fc2-0e7f-db2f-e8d9bb55d6ae.png)



Identity Center のアクセスポータルが開かれました。この記事の環境はいろいろ連携しているんですが、管理している 他 AWS アカウントの Management Console を開きます。

![image-20230329215639795.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7a268de5-e12c-3d88-e727-a53997943020.png)



別 AWS アカウントのコンソールが開けました。

![image-20230329215703054.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b23b3611-e0ed-31dc-cf7d-6cd10cc1c5a9.png)



# 親側 : CloudTrail

Identity Center を管理している側の AWS Account の CloudTrail を確認します。

Event history を開き、`Event name` が `UserAuthentication` のものを検索します。`UserAuthentication` は、Identity Center として正常に認証が完了したことを示すイベントです。

![image-20230329220656628.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4ddb3b8d-1591-8a4f-92ed-fd26e20ece50.png)



クリックすると詳細な JSON ログを確認できます。次のようなログとなっています。

- userName : どのユーザーを使ったログインなのか
- sourceIPAddress : 操作元の IP アドレス
- このログでは、どの 子供 AWS アカウントにアクセスしたのかはわからない

```json
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "Unknown",
        "principalId": "sampleaccountid1",
        "arn": "",
        "accountId": "sampleaccountid1",
        "accessKeyId": "",
        "userName": "ssouser01"
    },
    "eventTime": "2023-03-29T12:55:53Z",
    "eventSource": "signin.amazonaws.com",
    "eventName": "UserAuthentication",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "1.1.1.1",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData": {
        "AuthWorkflowID": "e92f6047-a95d-468f-b0b2-ba63da94161e",
        "LoginTo": "https://masked.awsapps.com/start/",
        "CredentialType": "PASSWORD"
    },
    "requestID": "7fbb0736-5394-4a0d-a4f6-7ce2fdc56038",
    "eventID": "84aafc81-fd91-464b-8624-03bb4b45ef39",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "sampleaccountid1",
    "serviceEventDetails": {
        "UserAuthentication": "Success"
    },
    "eventCategory": "Management"
}
```



どの子供 AWS アカウントにログインしたのかを示すログがこちらです。Event source `sso.amazonaws.com` で検索して、`Federate` を見つけると良いでしょう。

![image-20230329222336215.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/29c1abea-f1b3-0749-a45b-7d1d83bed4d6.png)



詳細はこのようなログになっています。

- UserAuthentication.account_id : 子供の AWS アカウントの ID がわかる
- UserAuthentication.role_name : Identity Center 上の、どの権限セットを利用したかわかる

```json
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "Unknown",
        "principalId": "95671c316d-7a6a2ff4-4eb0-414a-9447-a1decc0c7c1e",
        "accountId": "sampleaccountid1",
        "userName": "ssouser01"
    },
    "eventTime": "2023-03-29T12:56:43Z",
    "eventSource": "sso.amazonaws.com",
    "eventName": "Federate",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "1.1.1.1",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
    "requestParameters": null,
    "responseElements": null,
    "requestID": "6712e76a-fa40-41b9-82c5-6e34c0647f38",
    "eventID": "5cb8dfd3-a781-44a2-880e-83423ae040ce",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "sampleaccountid1",
    "serviceEventDetails": {
        "role_name": "AdministratorAccess",
        "account_id": "sampleaccountid2"
    },
    "eventCategory": "Management"
}
```



# 子側 : CloudTrail

親側の CloudTrail でもだいぶ情報が取れますが、子供の AWS アカウント側でも CloudTrail を見てみましょう。

AWS Management Console のログインは、`ConcoleLogin` で検索するとわかります。

![image-20230329224546273.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7001558e-dab5-c0af-7de9-6561c69db61c.png)



詳細な JSON ログです。

```json
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA5WQZQQJKC3BYISIHSKAIYB:ssouser01",
        "arn": "arn:aws:sts::sampleaccountid2:assumed-role/AWSReservedSSO_AdministratorAccess_5422dd0faed3c601/ssouser01",
        "accountId": "sampleaccountid2",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA5WQZQQJKC3BYISIHSKAIYB",
                "arn": "arn:aws:iam::sampleaccountid2:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_5422dd0faed3c601",
                "accountId": "sampleaccountid2",
                "userName": "AWSReservedSSO_AdministratorAccess_5422dd0faed3c601"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-03-29T12:56:43Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-03-29T12:56:44Z",
    "eventSource": "signin.amazonaws.com",
    "eventName": "ConsoleLogin",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "1.1.1.1",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
    "requestParameters": null,
    "responseElements": {
        "ConsoleLogin": "Success"
    },
    "additionalEventData": {
        "MobileVersion": "No",
        "MFAUsed": "No"
    },
    "eventID": "60c1d7fa-615c-4c70-bb83-6b44b39941c7",
    "readOnly": false,
    "eventType": "AwsConsoleSignIn",
    "managementEvent": true,
    "recipientAccountId": "sampleaccountid2",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.2",
        "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
        "clientProvidedHostHeader": "ap-northeast-1.signin.aws.amazon.com"
    }
}
```



# 参考 URL

https://docs.aws.amazon.com/singlesignon/latest/userguide/understanding-sign-in-events.html