

# AWS CloudTrail에서 권한 있는 태스크 추적
<a name="cloudtrail-track-privileged-tasks"></a>

IAM의 AWS Organizations 관리 계정 또는 위임된 관리자 계정은 단기 루트 액세스를 사용하여 멤버 계정에서 일부 루트 사용자 태스크를 수행할 수 있습니다. 단기 권한 있는 세션은 조직의 멤버 계정에서 [권한 있는 작업을 수행](id_root-user-privileged-task.md)하도록 범위를 지정할 수 있는 임시 자격 증명을 제공합니다. 다음 단계를 사용하여 [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) 세션 중 관리 계정 또는 위임된 관리자가 수행한 작업을 식별할 수 있습니다.

**참고**  
`sts:AssumeRoot`에는 글로벌 엔드포인트가 지원되지 않습니다. CloudTrail은 엔드포인트에 대해 지정된 리전의 `ConsoleLogin` 이벤트를 기록합니다.

**CloudTrail 로그에서 권한 있는 세션에서 수행한 작업을 추적하려면 다음을 수행하세요.**

1. CloudTrail 로그에서 `AssumeRoot` 이벤트를 찾습니다. 이 이벤트는 IAM의 관리 계정이나 위임된 관리자가 `sts:AssumeRoot`에서 단기 자격 증명 세트를 가져올 때 생성됩니다.

   다음 예에서는 AssumeRoot에 대한 CloudTrail 이벤트가 `eventName` 필드에 기록됩니다.

   ```
   {
       "eventVersion": "1.08",
       "userIdentity": {
           "type": "AssumedRole",
           "principalId": "AIDACKCEVSQ6C2EXAMPLE:JohnRole1",
           "arn": "arn:aws:sts::111111111111:assumed-role/John/JohnRole1",
           "accountId": "111111111111",
           "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
           "sessionContext": {
               "sessionIssuer": {
                   "type": "Role",
                   "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                   "arn": "arn:aws:iam::111111111111:role/John",
                   "accountId": "111111111111",
                   "userName": "Admin2"
               },
               "webIdFederationData": {},
               "attributes": {
                   "creationDate": "2024-10-25T20:45:28Z",
                   "mfaAuthenticated": "false"
               },
               "assumedRoot": "true"
           }
       },
       "eventTime": "2024-10-25T20:52:11Z",
       "eventSource": "sts.amazonaws.com",
       "eventName": "AssumeRoot",
       "awsRegion": "us-west-2",
       "sourceIPAddress": "192.0.2.1",    
       "requestParameters": {
           "targetPrincipal": "222222222222",
           "taskPolicyArn": {
               "arn": "arn:aws:iam::aws:policy/root-task/S3UnlockBucketPolicy"
           }
       },
       "responseElements": {
           "credentials": {
               "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
               "sessionToken": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
               "expiration": "Oct 25, 2024, 9:07:11 PM"
           }
       }
   }
   ```

   CloudTrail 로그에 액세스하는 단계는 *AWS CloudTrail 사용자 설명서*의 [Getting and viewing your CloudTrail log files](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

1. CloudTrail 이벤트 로그에서 작업이 수행된 멤버 계정을 지정하는 `targetPrincipal`과 `AssumeRoot` 세션에 고유한 `accessKeyId`를 찾습니다.

   다음 예에서 `targetPrincipal`은 222222222222이고 `accessKeyId`는 ASIAIOSFODNN7EXAMPLE입니다.

   ```
   "eventTime": "2024-10-25T20:52:11Z",
       "eventSource": "sts.amazonaws.com",
       "eventName": "AssumeRoot",
       "awsRegion": "us-west-2",
       "sourceIPAddress": "192.0.2.1",    
       "requestParameters": {
           "targetPrincipal": "{{222222222222}}",
           "taskPolicyArn": {
               "arn": "arn:aws:iam::aws:policy/root-task/S3UnlockBucketPolicy"
           }
       },
       "responseElements": {
           "credentials": {
               "accessKeyId": "{{ASIAIOSFODNN7EXAMPLE}}",
               "sessionToken": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
               "expiration": "Oct 25, 2024, 9:07:11 PM"
       }
   }
   ```

1. 대상 위탁자에 대한 CloudTrail 로그에서 `AssumeRoot` 이벤트의 `accessKeyId` 값에 해당하는 액세스 키 ID를 검색합니다. `eventName` 필드 값을 사용하여 `AssumeRoot` 세션 중 수행되는 권한 있는 태스크를 결정합니다. 단일 세션에서 여러 권한 있는 태스크가 수행될 수 있습니다. `AssumeRoot`의 최대 세션 지속 기간은 900초(15분)입니다.

   다음 예에서는 관리 계정 또는 위임된 관리자가 Amazon S3 버킷에 대한 리소스 기반 정책을 삭제했습니다.

   ```
   {
       "eventVersion": "1.10",
       "userIdentity": {
           "type": "Root",
           "principalId": "{{222222222222}}",
           "arn": "arn:aws:iam::222222222222:root",
           "accountId": "222222222222",
           "accessKeyId": "{{ASIAIOSFODNN7EXAMPLE}}",
           "sessionContext": {
               "attributes": {
                   "creationDate": "2024-10-25T20:52:11Z",
                   "mfaAuthenticated": "false"
               }
           }
       },
       "eventTime": "2024-10-25T20:53:47Z",
       "eventSource": "s3.amazonaws.com",
       "eventName": "DeleteBucketPolicy",
       "awsRegion": "us-west-2",
       "sourceIPAddress": "192.0.2.1",
       "requestParameters": {
           "bucketName": "resource-policy-John",
           "Host": "resource-policy-John.s3.amazonaws.com",
           "policy": ""
       },
       "responseElements": null,
       "requestID": "1234567890abcdef0",
       "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
       "readOnly": false,
       "resources": [
           {
               "accountId": "222222222222",
               "type": "AWS::S3::Bucket",
               "ARN": "arn:aws:s3:::resource-policy-John"
           }
       ],
       "eventType": "AwsApiCall",
       "managementEvent": true,
       "recipientAccountId": "222222222222",
       "eventCategory": "Management",
       "tlsDetails": {
           "tlsVersion": "TLSv1.3",
           "cipherSuite": "TLS_AES_128_GCM_SHA256",
           "clientProvidedHostHeader": "resource-policy-John.s3.amazonaws.com"
       }
   }
   ```