
# 使用URN标识华为云资源
#### URN定义
URN(Uniform Resource Name)，统一资源名称，用于唯一标识云服务资源。当您需要在华为云明确指定某一项资源时，例如IAM身份策略或者API调用中，我们要求使用资源URN。您应该谨慎使用和共享资源URN，但不应将其视为保密信息。
#### URN格式
\<service-name\>:\<region\>:\<account-id\>:\<type-name\>:\<resource-path\>
- service-name：云服务简称，例如：ecs。
- region：资源所在的区域，例如：cn-north-1。如果是全局服务的资源，region可以为星号（\*）或者为空。
- account-id：租户的账号ID。如果是系统公共资源，则用"system"表示，例如系统身份策略。
- type-name：资源类型，例如ecs实例：instance。
- resource-path：资源路径，具体含义云服务定义，可能是资源名称、ID、路径等。资源路径中可能会包含英文冒号":"。
 
#### URN示例
IAM用户
iam::{account_id}:user:{user_name}
用户组
iam::{account_id}:group:{group_name}
委托或信任委托
iam::{account_id}:agency:{agency_name}
服务关联委托
iam::{account_id}:agency:service-linked-agency/{service_principal}/{agency_name}
自定义身份策略
iam::{account_id}:policy:{policy_name}
系统身份策略
iam::system:policy:{XXXPolicy}
委托或信任委托会话
sts::{account_id}::assumed-agency:{agency_name}/{agency_session_name}
SAML身份提供商
iam::{account_id}:samlProvider:{provider_name}
OIDC身份提供商
iam::{account_id}:oidcProvider:{provider_name}
![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/note_3.0-zh-cn.png)
- 通过POST /v5/agencies/assume接口获取的委托或信任委托会话的URN中的agency_session_name为该接口请求体中的agency_session_name参数值。
- 通过POST /v3.0/OS-CREDENTIAL/securitytokens接口获取的委托会话的URN中的agency_session_name固定为null。
- 通过控制台切换委托或信任委托后的会话URN中的agency_session_name固定为null。
 
#### 查找资源URN格式
URN的具体格式取决于云服务和资源类型。某些资源URN可以包含路径、变量或通配符。如需查找特定华为云资源的URN 格式，请参见[身份策略授权参考](https://support.huaweicloud.com/usermanual-permissions/iam_01_0003.html)，然后打开指定云服务的章节，并导航至"资源类型"小节。
#### 在身份策略中使用资源路径通配符
您可以在身份策略的[Resource](https://support.huaweicloud.com/usermanual-iam5/iam_01_1289.html#iam_01_1289__section77391834161811)元素中对URN使用通配符星号（\*）来进行匹配。有关更多信息，请参见[JSON元素参考](https://support.huaweicloud.com/usermanual-iam5/iam_01_1289.html)。例如：
您可以指定agency:\*来表示账号中的所有委托，例如给IAM身份附加下面的身份策略可以实现查询本账号中的所有信任委托：
```
{
"Version": "5.0",
"Statement": [{
"Effect": "Allow",
"Action": [
"iam:agencies:listV5"
],
"Resource": [
"iam:*:8c1eef3a241945f69c3d3a6b0252e783:agency:*"
]
}]
}
```
您还可以在URN的不同部分使用通配符，例如给IAM身份附加下面的身份策略可以实现切换任意其他账号的任意信任委托（注意：同时需要其他账号中信任委托的信任主体指定为您的账号）：
```
{
"Version": "5.0",
"Statement": [{
"Effect": "Allow",
"Action": [
"sts:agencies:assume"
],
"Resource": [
"iam:*:*:agency:*"
]
}]
}
```
