当您发现一个RAM角色调用事件时(即userIdentity.type为assumed-role),可以参考本文的指导,快速定位真实用户身份(RAM用户或阿里云账号)。
背景信息
某企业发现阿里云账号159498693826****
中有一个身份类型为assumed-role
的角色扮演事件,需要定位该事件的调用者,事件详情如下:
{
"eventId": "8DC8A000-6E74-59BD-8EB9-DDF64E45****",
"eventVersion": 1,
"eventSource": "ecs-openapi-share.cn-hangzhou.aliyuncs.com",
"requestParameters": {
"stsTokenPrincipalName": "role-for-user-identity/Alice",
"SourceRegionId": "cn-hangzhou",
"AcsProduct": "ECS",
"RegionId": "cn-hangzhou",
"stsTokenPlayerUid": 159498693826****
},
"sourceIpAddress": "42.120.XX.XX",
"userAgent": "AlibabaCloud (darwin; x64) Node.js/v17.1.0 Core/1.7.11",
"eventType": "ApiCall",
"userIdentity": {
"accessKeyId": "STS.NTxwELwTuZr6XtdjqjsbT****",
"sessionContext": {
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2022-06-08T01:58:23Z"
}
},
"accountId": "159498693826****",
"principalId": "35443786793104****:Alice",
"type": "assumed-role",
"userName": "role-for-user-identity:Alice"
},
"serviceName": "Ecs",
"additionalEventData": {
"CallerBid": "26842"
},
"apiVersion": "2014-05-26",
"requestId": "8DC8A000-6E74-59BD-8EB9-DDF64E454B2A",
"eventTime": "2022-06-08T01:58:26Z",
"isGlobal": false,
"acsRegion": "cn-hangzhou",
"eventName": "DescribeInstances"
}
分析事件
您可以根据事件结构定义文档解析事件代码含义。更多信息,请参见管控事件结构定义。
本文代码示例的关键字段含义如下:
userIdentity.accountId
:角色所属的阿里云账号是159498693826****
。userIdentity.type
:调用事件的用户类型是RAM角色(assumed-role
)。userIdentity.userName
:被扮演的RAM角色名称是role-for-user-identity
。userIdentity.accessKeyId
:角色扮演事件生成的临时STS Token(资源)是STS.NTxwELwTuZr6XtdjqjsbT****
。requestParameters.stsTokenPlayerUid
:扮演者所属的阿里云账号是159498693826****
。
经过分析,stsTokenPlayerUid与accountId相同,表示扮演者和角色属于同一个阿里云账号。
如果stsTokenPlayerUid与accountId不同,表示扮演者和角色不属于同一个阿里云账号。
后续您可以登录stsTokenPlayerUid账号(159498693826****
),进入操作审计控制台,使用事件查询功能定位扮演者身份。
定位事件
您可以使用事件查询功能搜索资源名称(STS.NTxwELwTuZr6XtdjqjsbT****),查找AssumeRole事件。
资源名称(STS.NTxwELwTuZr6XtdjqjsbT****)为上述事件中的临时STS Token,即userIdentity.accessKeyId
。
使用stsTokenPlayerUid账号登录操作审计控制台。
在左侧菜单栏,选择
。在事件查询页面,先选择关联资源名称,输入资源名称(STS.NTxwELwTuZr6XtdjqjsbT****),然后单击搜索图标。
单击目标事件对应操作列的查看事件详情。
{ "eventId": "961F78D5-0F8F-52B9-851D-000C5199****", "eventVersion": 1, "responseElements": { "RequestId": "961F78D5-0F8F-52B9-851D-000C51996F0C", "AssumedRoleUser": { "Arn": "acs:ram::159498693826****:role/role-for-user-identity/Alice", "AssumedRoleId": "35443786793104****:Alice" }, "Credentials": { "AccessKeyId": "STS.NTxwELwTuZr6XtdjqjsbT****", "AccessKeySecret": "dylEiakiwLFB1CufDyxyCwlCxZ****", "Expiration": "2022-06-08T02:58:25Z" } }, "eventSource": "sts.cn-hangzhou.aliyuncs.com", "requestParameters": { "AcsProduct": "Sts", "RoleSessionName": "Alice", "Region": "cn-hangzhou", "DurationSeconds": 3600, "RoleArn": "acs:ram::159498693826****:role/role-for-user-identity" }, "sourceIpAddress": "42.120.XX.XX", "userAgent": "AlibabaCloud (darwin; x64) Node.js/v17.1.0 Core/1.7.11", "eventType": "ApiCall", "referencedResources": { "ACS::RAM::AccessKey": [ "STS.NTxwELwTuZr6XtdjqjsbT****" ] }, "userIdentity": { "accessKeyId": "LTAI5tPvdUTowp2tDHsg****", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2022-06-08T01:58:22Z" } }, "accountId": "159498693826****", "principalId": "29577185456911****", "type": "ram-user", "userName": "Alice" }, "serviceName": "Sts", "additionalEventData": { "CallerBid": "26842" }, "apiVersion": "2015-04-01", "requestId": "961F78D5-0F8F-52B9-851D-000C51996F0C", "eventTime": "2022-06-08T01:58:25Z", "isGlobal": false, "acsRegion": "cn-hangzhou", "eventName": "AssumeRole" }
分析事件。
事件代码中关键字段含义如下:
eventName
:角色扮演事件(AssumeRole
)。userIdentity.responseElements.CredentialsAccessKeyId
:进行角色扮演后得到的临时AccessKey ID为STS.NTxwELwTuZr6XtdjqjsbT****
。userIdentity.type
:进行角色扮演的用户类型是RAM用户(ram-user
)。userIdentity.userName
:进行角色扮演的用户名是Alice
。userIdentity.accessKeyId
:进行角色扮演的AccessKey ID是LTAI5tPvdUTowp2tDHsg****
。
因此可以得出结论:RAM用户
Alice
(29577185456911****)扮演了RAM角色role-for-user-identity
,且使用该角色调用了事件DescribeInstances。