AWS CloudTrail에서 권한 있는 작업 추적

AWS CloudTrail에서 권한 있는 작업 추적

AWS Organizations의 관리 계정 또는 IAM의 위임 관리자 계정은 단기 루트 접근을 사용해 멤버 계정에서 일부 루트 사용자 작업을 수행할 수 있어요. 단기 권한 있는 세션은 조직의 멤버 계정에서 권한 있는 작업을 수행할 수 있도록 범위를 지정한 임시 자격 증명을 제공합니다. 다음 단계로 관리 계정이나 위임 관리자가 수행한 작업을 식별할 수 있습니다.

출처: 문서

본문

참고 — 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 사용자 가이드의 CloudTrail 로그 파일 가져오기·보기를 참고하세요.
  2. 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"
        }
    }
    
  3. 대상 주체의 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"
        }
    }
    

더 알아보기 (Learn more)