更新时间:2025-09-25 GMT+08:00
分享

监控临时安全凭证

在华为云中执行操作时,有关调用日志可以记录到CTS中供账号管理员监控。管理员可以在配置信任委托时,要求调用AssumeAgency API时传递一个自定义字符串来标识在华为云中执行操作的人员或应用程序。这个字符串作为源身份(Source Identity)信息存储在CTS中。当管理员查看CTS中的活动时,可以通过源身份信息确定是谁切换了信任委托来执行了操作。

源身份信息设置后,会在该信任委托会话期间执行的任何华为云操作请求中存在。通过AssumeAgency API使用一个信任委托切换到另一个信任委托(称为委托链)时,源身份信息在第一次设置后便不可更改,该值会持续传递。管理员可以根据源身份的存在或值配置身份策略,以进一步控制使用信任委托执行的华为云操作。您可以决定是否必须使用该属性以及可以使用什么值。

设置源身份信息所需要的权限

要想设置源身份信息,除了需要与AssumeAgency API相匹配的sts:agencies:assume授权项外,您的策略中还必须具有以下授权项:
sts::setSourceIdentity
  • 在IAM用户切换信任委托的场景中,要指定源身份信息,IAM用户的身份策略和信任委托的信任策略都必须包含sts::setSourceIdentity权限。
  • 在信任委托切换信任委托的场景中,要指定源身份信息,发起切换的信任委托的身份策略和目标信任委托的信任策略都必须包含sts::setSourceIdentity权限。
作为账号管理员,假设您希望允许账号内的IAM用户A切换到同一账号中的TrustAgencyA信任委托,但仅在该用户将源身份设置为其IAM用户名时才允许此操作。您可以将以下身份策略附加到该IAM用户:
{
	"Version": "5.0",
	"Statement": [{
		"Effect": "Allow",
		"Action": [
			"sts:agencies:assume",
			"sts::setSourceIdentity"
		],
		"Condition": {
			"StringEquals": {
				"sts:SourceIdentity": [
					"${g:UserName}"
				]
			}
		}
	}]
}
要想主体切换信任委托时必须传递源身份信息,您可以在创建信任委托A时配置如下的信任策略,例如只允许IAM用户A将自己的用户名作为源身份信息传入时才能切换该信任委托:
{
	"Version": "5.0",
	"Statement": [{
		"Effect": "Allow",
		"Action": [
			"sts:agencies:assume",
			"sts::setSourceIdentity"
		],
		"Condition": {
			"StringEquals": {
				"sts:SourceIdentity": [
					"${g:UserName}"
				]
			}
		}
	}]
}

调用AssumeAgency API时传递源身份信息,参见通过委托或者信任委托获取临时安全凭证中的source_identity参数。

在CTS中查看源身份信息

如果IAM用户A使用切换后的信任委托会话执行华为云操作,那么这些操作的CTS日志将会在user字段中记录source_identity相关信息。
{
	"api_version": "v5",
	"code": "204",
	"account_id": "xxxxxx",
	"event_type": "global",
	"message": "xxxxxx",
	"operation_id": "DeleteUserV5",
	"project_id": "xxxxxx",
	"read_only": false,
	"request_id": "xxxxxx",
	"resource_account_id": "xxxxxx",
	"resource_id": "xxxxxx",
	"resource_name": "xxxxxx",
	"resource_type": "user",
	"service_type": "IAM",
	"source_ip": "xxx.xxx.xxx.xxx",
	"trace_id": "xxxxxx",
	"trace_name": "deleteUserV5",
	"trace_rating": "normal",
	"trace_type": "ApiCall",
	"tracker_name": "system",
	"user_agent": "xxxxxx",
	"is_consistent": true,
	"user": {
		"access_key_id": "xxxxxx",
		"account_id": "xxxxxx",
		"domain": {
			"id": "xxxxxx",
			"name": "xxxxxx"
		},
		"name": "xxxxxx/test",
		"principal_id": "xxxxxx:name",
		"principal_urn": "sts::xxxxxx:assumed-agency:test/name",
		"session_context": {
			"assumed_by": {
				"principal_id": "xxxxxx"
			},
			"attributes": {
				"created_at": "xxxxxx",
				"mfa_authenticated": "false"
			},
			"source_identity": "IAM User A"
		},
		"type": "AssumedAgency"
	},
	"response": "null",
	"time": xxxxxx,
	"record_time": xxxxxx
}

相关文档