IAM授权是指授权范围在具体资源池或全局的授权关系。可以在授权管理、用户组或用户中查看IAM授权关系。
企业项目授权是指在企业项目上,设置用户组和设置策略后形成的授权关系。只能在企业项目下,通过查看用户组的关联策略,查看企业项目授权关系。
IAM授权与企业项目授权的区别
支持的服务
IAM授权支持的服务,可以参考使用IAM授权的云服务。
企业项目授权支持的云服务及对应资源类型请以控制台界面显示为准。
进入“企业项目管理”页面,在企业项目列表中单击任一企业项目操作列的“查看资源”,系统进入企业项目详情页面,在“资源”页签下可查看企业项目支持的服务及其对应资源类型等信息。此处展示的服务代表支持进行企业项目授权。
资源隔离
- IAM授权时,支持通过资源池隔离授权(对于作用范围时资源池级别的策略)和资源路径实现资源隔离(对于支持策略中使用资源路径“Resource”字段进行资源隔离的云服务)
- 企业项目授权时,支持通过创建企业项目,隔离企业不同项目之间的资源,企业项目的资源隔离效果不受物理资源池的限制,可以实现子用户仅能看到不同资源池上部分资源的效果。
授权覆盖
相同Action时,IAM授权的优先级高于企业项目授权,会表现出授权覆盖的鉴权结果。例如,用户组1在IAM中授权了允许创建云主机,在企业项目A上授权了拒绝创建云主机,那么对于一台华东1的云主机,如果这台云主机位于企业项目A下,此时用户组1的用户进行创建云主机的操作时,鉴权结果为Allow,因为IAM授权在相同Action下优先级高于企业项目授权。
用户组1在华东1资源池上的IAM授权策略中包含以下Action:
用户组1在华东1资源池上的IAM授权策略中包含以下Action:
{
"Action": [
"ecs:cloudServers:create"
],
"Effect": "Allow"
}
用户组1在企业项目A的授权策略中包含以下Action:
{
"Action": [
"ecs:cloudServers:create"
],
"Effect": "Deny"
}
同理,将IAM和企业项目中的策略更换为以下的形式,在相同情境下,鉴权结果为Deny。
用户组1在华东1资源池上的IAM授权策略中包含以下Action:
{
"Action": [
"ecs:cloudServers:create"
],
"Effect": "Deny"
}
用户组1在企业项目A的授权策略中包含以下Action:
{
"Action": [
"ecs:cloudServers:create"
],
"Effect": "Allow"
}
此外,对于相同Action,IAM授权的范围也会覆盖企业项目的授权范围。例如,华东1资源池上有云主机a和云主机b,云主机资源a属于企业项目A,云主机资源b属于企业项目B。此时,如果用户组仅存在下列授权,没有在企业项目B上进行授权,用户组1下的子用户仍让可以看见企业项目B下的云主机b,这是因为华东1资源池上存在相同Action的读取权限,鉴权时优先判断该用户能够查看华东1上的所有资源(云主机a和云主机b),覆盖了企业项目的资源隔离效果。
用户组1在华东1资源池上的IAM授权策略中包含以下Action:
{
"Action": [
" ecs:cloudServers:list"
],
"Effect": "Allow"
}
用户组1在企业项目A的授权策略中包含以下Action:
{
"Action": [
" ecs:cloudServers:list"
],
"Effect": "Allow"
}
而如果策略中包含不同的Action,则IAM和企业项目的授权都生效,以下示例表示用户可以在企业项目A上创建云主机,也可以在华东1资源池上查看云主机安全组列表。
用户组1在华东1资源池上的IAM授权策略中包含以下Action:
{
"Action": [
" ecs:ServersGroups:list"
],
"Effect": "Allow"
}
用户组1在企业项目A的授权策略中包含以下Action:
{
"Action": [
"ecs:cloudServers:create"
],
"Effect": "Allow"
}