CloudTrail userIdentity 요소 - AWS CloudTrail

CloudTrail userIdentity 요소

AWS Identity and Access Management(IAM)는 다양한 유형의 자격 증명을 제공합니다. userIdentity 요소에는 요청이 이루어지고 자격 증명이 사용되는 IAM 자격 증명 유형에 관한 세부 정보가 포함됩니다. 임시 자격 증명이 사용되는 경우 요소는 자격 증명을 획득하는 방법을 보여 줍니다.

예제

IAM 사용자 자격 증명이 있는 userIdentity

다음 예는 Alice라는 IAM 사용자의 자격 증명으로 이루어지는 간단한 요청의 userIdentity 요소를 보여 줍니다.

"userIdentity": { "type": "IAMUser", "principalId": "AIDAJ45Q7YFFAREXAMPLE", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "", "userName": "Alice" }

임시 보안 자격 증명을 사용하는 userIdentity

다음 예는 IAM 역할을 수임하여 얻은 임시 보안 자격 증명으로 이루어지는 요청의 userIdentity 요소를 보여 줍니다. 요소에는 자격 증명을 획득한 것으로 간주하는 역할에 대한 추가 세부 정보가 포함됩니다.

"userIdentity": { "type": "AssumedRole", "principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName", "arn": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName", "accountId": "123456789012", "accessKeyId": "", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "20131102T010628Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIDPPEZS35WEXAMPLE", "arn": "arn:aws:iam::123456789012:role/RoleToBeAssumed", "accountId": "123456789012", "userName": "RoleToBeAssumed" } } }

필드

다음 표가 userIdentity 요소에 나타날 수 있습니다.

type

자격 증명의 유형입니다. 다음과 같은 값이 가능합니다.

  • Root - AWS 계정 자격 증명으로 요청이 이루어집니다. userIdentity 유형이 Root이고 계정에 대한 별칭을 설정한 경우 userName 필드에 계정 별칭이 포함됩니다. 자세한 내용은 AWS 계정 ID 및 별칭을 참조하십시오.

  • IAMUser - IAM 사용자의 자격 증명으로 요청이 이루어집니다.

  • AssumedRole - 요청이 AWS Security Token Service(AWS STS) AssumeRole API를 호출하여 역할과 함께 획득한 임시 보안 자격 증명을 사용하여 이루어졌습니다. 여기에는 Amazon EC2에 대한 역할교차 계정 API 액세스가 포함될 수 있습니다.

  • Role - 요청이 특정 권한을 가진 영구 IAM 자격 증명을 사용하여 이루어졌습니다. 역할 세션의 발행자는 항상 해당 역할입니다. 역할에 대한 자세한 내용은 IAM 사용 설명서역할 용어 및 개념을 참조하세요.

  • FederatedUser - AWS STS GetFederationToken API에 대한 호출을 통해 얻은 임시 보안 자격 증명으로 요청이 이루어집니다. sessionIssuer 요소는 API가 루트 또는 IAM 사용자 자격 증명으로 호출되었는지를 나타냅니다.

    임시 보안 자격 증명에 대한 자세한 내용은 IAM 사용 설명서임시 보안 자격 증명을 참조하세요.

  • Directory - Directory Service에 대한 요청이 이루어지며 유형은 알 수 없습니다. Directory Service에는 Amazon WorkDocs 및 Amazon QuickSight가 포함됩니다.

  • AWSAccount - 다른 AWS 계정에 의해 요청이 이루어집니다.

  • AWSService - AWS 서비스에 속한 AWS 계정에 의해 요청이 이루어집니다. 예를 들어 AWS Elastic Beanstalk는 계정의 IAM 역할을 맡아 사용자를 대신하여 다른 AWS 서비스를 호출합니다.

  • Unknown - CloudTrail이 확인할 수 없는 자격 증명 유형으로 요청이 이루어집니다.

선택 사항: False

AWSAccountAWSService는 사용자가 소유한 IAM 역할을 사용하는 교차 계정 액세스가 있는 경우 로그의 type에 표시됩니다.

예: 다른 AWS 계정에서 시작된 교차 계정 액세스
  1. 사용자가 계정의 IAM 역할을 소유합니다.

  2. 다른 AWS 계정이 해당 역할로 전환하여 계정에 대한 역할을 수임합니다.

  3. 사용자는 IAM 역할을 소유하고 있으므로 다른 계정이 역할을 맡았음을 보여 주는 로그를 수신합니다. typeAWSAccount입니다. 로그 항목 예는 CloudTrail 로그 파일의 AWS STS API 이벤트 단원을 참조하세요.

예: AWS 서비스에서 시작된 교차 계정 액세스
  1. 사용자가 계정의 IAM 역할을 소유합니다.

  2. AWS 서비스에서 소유한 AWS 계정이 해당 역할을 수임합니다.

  3. 사용자는 IAM 역할을 소유하고 있으므로 AWS 서비스가 역할을 맡았음을 보여 주는 로그를 수신합니다. typeAWSService입니다.

userName

호출이 이루어지는 자격 증명의 표시 이름입니다. userName에 표시되는 값은 type의 값을 기반으로 합니다. 다음 표에는 typeuserName 사이의 관계가 나와 있습니다.

type userName 설명
Root(별칭 설정 없음) 없음 AWS 계정에 대한 별칭을 설정하지 않은 경우 userName 필드가 표시되지 않습니다. 계정 별칭에 대한 자세한 내용은 AWS 계정 ID 및 별칭 단원을 참조하세요. 참고로 userName 필드에는 Root가 결코 포함되지 않습니다. Root는 사용자 이름이 아니라 자격 증명 유형이기 때문입니다.
Root(별칭 설정) 계정 별칭 AWS 계정 별칭에 대한 자세한 내용은 AWS 계정 ID 및 별칭 단원을 참조하세요.
IAMUser IAM 사용자의 사용자 이름

AssumedRole

없음 AssumedRole 유형의 경우 sessionIssuer 요소의 일부로 sessionContext에서 userName 필드를 찾을 수 있습니다. 예제 항목은 예제를 참조하십시오.

Role

사용자 정의 sessionContextsessionIssuer 섹션에서는 역할에 대한 세션을 발행한 자격 증명에 관한 정보가 제공됩니다.
FederatedUser 없음 sessionContextsessionIssuer 섹션에는 연합된 사용자에 대한 세션을 발행한 자격 증명에 관한 정보가 포함됩니다.
Directory 있을 수 있음 예를 들어 값은 연결된 AWS 계정 ID계정 별칭 또는 이메일 주소일 수 있습니다.
AWSService 없음
AWSAccount 없음
Unknown 있을 수 있음 예를 들어 값은 연결된 AWS 계정 ID계정 별칭 또는 이메일 주소일 수 있습니다.

선택 사항: True

참고

기록된 이벤트가 잘못된 사용자 이름 입력으로 인한 콘솔 로그인 실패인 경우 userName 필드에는 HIDDEN_DUE_TO_SECURITY_REASONS 문자열이 포함됩니다. 이런 경우 CloudTrail은 다음 예와 같이 텍스트에 민감한 정보가 포함될 수 있으므로 내용을 기록하지 않습니다.

  • 사용자가 우발적으로 사용자 이름 필드에 암호를 입력합니다.

  • 사용자가 AWS 계정의 로그인 페이지 링크를 클릭했지만 다른 계정의 계정 번호를 입력합니다.

  • 사용자가 우발적으로 개인 이메일 계정의 사용자 이름, 금융 서비스 로그인 식별자, 또는 기타 프라이빗 ID를 입력합니다.

principalId

호출이 이루어지는 개체에 대한 고유 식별자입니다. 임시 보안 자격 증명으로 요청이 이루어진 경우 이 값에는 AssumeRole, AssumeRoleWithWebIdentity 또는 GetFederationToken API 호출로 전달된 세션 이름이 포함됩니다.

선택 사항: True

arn

호출이 이루어지는 보안 주체의 Amazon 리소스 이름(ARN)입니다. ARN의 마지막 섹션에는 호출이 이루어지는 사용자 또는 역할이 포함됩니다.

선택 사항: True

accountId

요청에 대한 권한을 허용하는 개체를 소유한 계정입니다. 임시 보안 자격 증명으로 요청이 이루어진 경우 이 필드는 자격 증명을 얻는 데 사용된 IAM 사용자 또는 역할을 소유한 계정입니다.

선택 사항: True

accessKeyId

요청을 서명하는 데 사용된 액세스 키 ID입니다. 임시 보안 자격 증명으로 요청이 이루어진 경우 임시 자격 증명의 액세스 키 ID가 됩니다. 보안상의 이유로 accessKeyId는 없거나 빈 문자열로 표시될 수 있습니다.

선택 사항: True

sessionContext

임시 보안 자격 증명으로 요청이 이루어진 경우 sessionContext는 해당 자격 증명에 대해 생성된 세션에 관한 정보를 제공합니다. 임시 자격 증명을 반환하는 API가 호출될 때 세션이 생성됩니다. 또한 세션은 사용자가 콘솔에서 작업하고 다중 요소 인증을 포함한 API로 요청할 때 세션이 생성됩니다. 이 요소에 대한 속성은 다음과 같습니다.

  • creationDate - 임시 보안 자격 증명이 발급된 날짜 및 시간입니다. ISO 8601 기본 표기법으로 표시됩니다.

  • mfaAuthenticated - 요청에 사용된 자격 증명을 소유한 루트 사용자 또는 IAM 사용자도 MFA 디바이스로 인증을 받은 경우 값이 true가 되고 그러지 않으면 false가 됩니다.

  • sourceIdentity - 이 주제의 AWS STS 소스 자격 증명 단원을 참조하세요. sourceIdentity 필드는 사용자가 작업을 수행하기 위해 IAM 역할을 맡을 때 이벤트에서 발견됩니다. sourceIdentity는 해당 사용자의 자격 증명이 IAM 사용자, IAM 역할, SAML 기반 연동을 사용하여 인증된 사용자 또는 OpenID Connect(OIDC) 호환 웹 자격 증명 연동을 사용하여 인증된 사용자인지 여부와 관계없이 요청을 수행하는 원래 사용자 자격 증명을 식별합니다. AWS STS를 구성하여 소스 자격 증명 정보를 수집하는 방법에 대한 자세한 내용은 IAM 사용 설명서수임된 역할로 수행한 작업 모니터링 및 제어 단원을 참조하세요.

선택 사항: True

invokedBy

요청이 이루어진 AWS 서비스의 이름입니다(예: Amazon EC2 Auto Scaling 또는 AWS Elastic Beanstalk).

선택 사항: True

sessionIssuer

임시 보안 자격 증명으로 요청이 이루어진 경우 요소는 자격 증명을 획득하는 방법에 관한 정보를 제공합니다. 예를 들어, 역할을 가정하여 임시 보안 자격 증명을 획득한 경우 이 요소는 가정한 역할에 관한 정보를 제공합니다. AWS STS GetFederationToken을 호출하기 위해 루트 또는 IAM 사용자 자격 증명을 사용하여 자격 증명을 얻은 경우 이 요소는 루트 계정 또는 IAM 사용자에 관한 정보를 제공합니다. 이 요소에 대한 속성은 다음과 같습니다.

  • type – 임시 보안 자격 증명의 소스입니다(예: Root, IAMUser 또는 Role).

  • userName - 세션을 발급한 사용자 또는 역할의 표시 이름입니다. 표시되는 값은 sessionIssuer 자격 증명 type 유형에 따라 달라집니다. 다음 표에는 sessionIssuer typeuserName 사이의 관계가 나와 있습니다.

    sessionIssuer 유형 userName 설명
    Root(별칭 설정 없음) 없음 계정에 대한 별칭을 설정하지 않은 경우 userName 필드가 표시되지 않습니다. AWS 계정 별칭에 대한 자세한 내용은 AWS 계정 ID 및 별칭 단원을 참조하세요. 참고로 userName 필드에는 Root가 결코 포함되지 않습니다. Root는 사용자 이름이 아니라 자격 증명 유형이기 때문입니다.
    Root(별칭 설정) 계정 별칭 AWS 계정 별칭에 대한 자세한 내용은 AWS 계정 ID 및 별칭 단원을 참조하세요.
    IAMUser IAM 사용자의 사용자 이름 또한 IAMUser가 발행한 세션을 연합된 사용자가 사용하는 경우에도 적용됩니다.
    Role 역할 이름 역할 세션에서 IAM 사용자, AWS 서비스 또는 웹 자격 증명 연동 사용자가 맡은 역할입니다.
  • principalId - 자격 증명을 가져오는 데 사용되는 엔터티의 내부 ID입니다.

  • arn – 임시 보안 자격 증명을 가져오는 데 사용되는 소스(계정, IAM 사용자 또는 역할)의 ARN입니다.

  • accountId - 자격 증명을 가져오는 데 사용되는 엔터티를 소유한 계정입니다.

선택 사항: True

webIdFederationData

웹 자격 증명 연동을 사용하여 획득한 임시 보안 자격 증명으로 요청이 이루어지는 경우 요소는 자격 증명 제공업체에 관한 정보를 나열합니다. 이 요소에 대한 속성은 다음과 같습니다.

  • federatedProvider – 자격 증명 공급자의 보안 주체 이름입니다(예: Login with Amazon의 경우 www.amazon.com 또는 Google의 경우 accounts.google.com).

  • attributes – 공급자가 보고하는 애플리케이션 ID 및 사용자 ID입니다(예: Login with Amazon의 경우 www.amazon.com:app_idwww.amazon.com:user_id). 자세한 내용은 IAM 사용 설명서웹 자격 증명 연동에 사용 가능한 키 단원을 참조하세요.

선택 사항: True

SAML 및 웹 자격 증명 연동을 사용하는 AWS STS API의 값

AWS CloudTrail는 SAML(Security Assertion Markup Language) 및 웹 자격 증명 연동을 통해 수행된 AWS Security Token Service(AWS STS) API 호출 로깅을 지원합니다. AssumeRoleWithSAMLAssumeRoleWithWebIdentity API에 대한 호출이 이루어질 때 CloudTrail은 호출을 기록하고 이벤트를 Amazon S3 버킷에 전달합니다.

이러한 API의 userIdentity 요소에는 다음과 같은 값이 포함됩니다.

type

자격 증명 유형입니다.

  • SAMLUser - SAML 어설션으로 요청이 이루어집니다.

  • WebIdentityUser - 웹 자격 증명 연동 공급자에 의해 요청이 이루어집니다.

principalId

호출이 이루어지는 개체에 대한 고유 식별자입니다.

  • SAMLUser의 경우 saml:namequalifiersaml:sub 키의 조합입니다.

  • WebIdentityUser의 경우 발행자, 애플리케이션 ID 및 사용자 ID의 조합입니다.

userName

호출이 이루어지는 자격 증명의 이름입니다.

identityProvider

외부 자격 증명 제공업체의 보안 주체 이름입니다. 이 필드는 SAMLUser 또는 WebIdentityUser 유형에만 나타납니다.

  • SAMLUser의 경우 SAML 어설션에 대한 saml:namequalifier 키입니다.

  • WebIdentityUser의 경우 웹 자격 증명 연동 제공업체의 발행자 이름입니다. 다음과 같이 구성된 제공업체일 수 있습니다.

    • Amazon Cognito의 경우 cognito-identity.amazon.com

    • Amazon을 사용한 로그인은 www.amazon.com

    • Google은 accounts.google.com

    • Facebook은 graph.facebook.com

다음은 AssumeRoleWithWebIdentity 작업에 대한 예제 userIdentity 요소입니다.

"userIdentity": { "type": "WebIdentityUser", "principalId": "accounts.google.com:application-id.apps.googleusercontent.com:user-id", "userName": "user-id", "identityProvider": "accounts.google.com" }

SAMLUserWebIdentityUser 유형에 userIdentity 요소를 표시하는 방법에 대한 예제 로그는 AWS CloudTrail을 사용하여 IAM 이벤트 로깅을 참조하십시오.

AWS STS 소스 자격 증명

IAM 관리자는 AWS Security Token Service를 구성함으로써 사용자가 임시 자격 증명을 사용하여 역할을 맡을 때 해당 자격 증명을 지정하도록 요구할 수 있습니다. sourceIdentity 필드는 사용자가 IAM 역할을 맡거나 수임된 역할로 작업을 수행할 때 이벤트에서 발견됩니다.

sourceIdentity 필드는 해당 사용자의 자격 증명이 IAM 사용자, IAM 역할, SAML 기반 연동을 사용하여 인증된 사용자 또는 OpenID Connect(OIDC) 호환 웹 자격 증명 연동을 사용하여 인증된 사용자인지 여부와 관계없이 요청을 수행하는 원래 사용자 자격 증명을 식별합니다. IAM 관리자가 AWS STS를 구성하면 CloudTrail은 이벤트 레코드 내의 다음 이벤트 및 위치에 sourceIdentity 정보를 로그합니다.

  • 사용자 자격 증명이 역할을 맡을 때 수행하는 AWS STS AssumeRole, AssumeRoleWithSAML 또는 AssumeRoleWithWebIdentity 호출. sourceIdentity는 AWS STS 호출의 requestParameters 블록에서 찾을 수 있습니다.

  • 사용자 자격 증명이 역할을 사용하여 또 다른 역할을 맡는(역할 함께 묶기라고 함) 경우에 수행하는 AWS STS AssumeRole, AssumeRoleWithSAML 또는 AssumeRoleWithWebIdentity 호출. sourceIdentity는 AWS STS 호출의 requestParameters 블록에서 찾을 수 있습니다.

  • 사용자 자격 증명이 역할을 맡고 AWS STS에서 할당한 임시 자격 증명을 사용하는 동안 수행하는 AWS 서비스 API 호출. 서비스 API 이벤트에서 sourceIdentitysessionContext 블록에서 찾을 수 있습니다. 예를 들어 사용자 자격 증명이 새 S3 버킷을 생성하는 경우 sourceIdentityCreateBucket 이벤트의 sessionContext 블록에서 발견됩니다.

AWS STS를 구성하여 소스 자격 증명 정보를 수집하는 방법에 대한 자세한 내용은 IAM 사용 설명서수임된 역할로 수행한 작업 모니터링 및 제어 단원을 참조하세요. CloudTrail에 로그되는 AWS STS 이벤트에 대한 자세한 내용은 IAM 사용 설명서AWS CloudTrail을 사용하여 IAM 및 AWS STS API 호출 로깅 단원을 참조하세요.

다음은 sourceIdentity 필드를 표시하는 이벤트의 코드 조각 예입니다.

requestParameters 섹션 예

다음 이벤트 코드 조각 예에서 사용자는 AWS STS AssumeRole 요청을 수행하고 여기에서 source-identity-value-set으로 표시되는 소스 자격 증명을 설정합니다. 사용자는 역할 ARN arn:aws:iam::123456789012:role/Assumed_Role로 표시되는 역할을 맡습니다. sourceIdentity 필드는 이벤트의 requestParameters 블록에 있습니다.

"eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AIDAJ45Q7YFFAREXAMPLE", "accountId": "123456789012" }, "eventTime": "2020-04-02T18:20:53Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.64", "userAgent": "aws-cli/1.16.96 Python/3.6.0 Windows/10 botocore/1.12.86", "requestParameters": { "roleArn": "arn:aws:iam::123456789012:role/Assumed_Role", "roleSessionName": "Test1", "sourceIdentity": "source-identity-value-set", },

responseElements 섹션 예

다음 이벤트 코드 조각 예에서 사용자는 AWS STS AssumeRole 요청을 수행하여 Developer_Role이라는 역할을 맡고 소스 자격 증명인 Admin을 설정합니다. 사용자는 역할 ARN arn:aws:iam::111122223333:role/Developer_Role로 표시되는 역할을 맡습니다. sourceIdentity 필드는 이벤트의 requestParametersresponseElements 블록 모두에 나와 있습니다. 역할을 맡는 데 사용되는 임시 자격 증명, 세션 토큰 문자열 그리고 수임된 역할 ID, 세션 이름 및 세션 ARN은 소스 자격 증명과 함께 responseElements 블록에 나와 있습니다.

"requestParameters": { "roleArn": "arn:aws:iam::111122223333:role/Developer_Role", "roleSessionName": "Session_Name", "sourceIdentity": "Admin" }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "expiration": "Jan 22, 2021 12:46:28 AM", "sessionToken": "XXYYaz... EXAMPLE_SESSION_TOKEN XXyYaZAz" }, "assumedRoleUser": { "assumedRoleId": "AROACKCEVSQ6C2EXAMPLE:Session_Name", "arn": "arn:aws:sts::111122223333:assumed-role/Developer_Role/Session_Name" }, "sourceIdentity": "Admin" } ...

sessionContext 섹션 예

다음 이벤트 코드 조각 예에서 사용자는 DevRole이라는 역할을 맡아서 AWS 서비스 API를 호출합니다. 사용자는 여기에서 source-identity-value-set으로 표시되는 소스 자격 증명을 설정합니다. sourceIdentity 필드는 이벤트의 userIdentity 블록 내 sessionContext 블록에 있습니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAJ45Q7YFFAREXAMPLE: Dev1", "arn": "arn: aws: sts: : 123456789012: assumed-role/DevRole/Dev1", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAJ45Q7YFFAREXAMPLE", "arn": "arn: aws: iam: : 123456789012: role/DevRole", "accountId": "123456789012", "userName": "DevRole" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-02-21T23: 46: 28Z" }, "sourceIdentity": "source-identity-value-set" } } }