访问控制RAM(Resource Access Management)是阿里云提供的一项服务,可以帮助您集中管理用户身份与资源访问权限。企业内有多名员工或应用程序需要访问KMS的资源时,可以使用RAM服务做统一的权限管理,按需为他们分配不同的访问权限。在使用RAM管理阿里云产品的访问权限前,您需要了解云产品能与RAM的哪些功能结合使用,从而更好地设计满足业务需要的访问控制。本文介绍KMS支持的RAM功能以及这些功能与RAM协同工作的原理。
KMS支持的RAM功能
KMS支持的RAM功能及支持程度如下表所示:
RAM功能 | KMS是否支持 |
RAM用户访问 | 支持 |
安全令牌(STS Token)访问 | 支持 |
基于身份的策略(账号级) | 支持 |
基于身份的策略(资源组级) | 支持 |
操作级授权 | 支持 |
资源级授权 | 支持 |
服务级条件关键字 | 支持 |
标签鉴权 | 支持 |
普通服务角色 | 支持 |
服务关联角色 | 支持 |
RAM用户访问
KMS支持RAM用户访问。
RAM用户是RAM的一种实体身份类型,有唯一的身份ID。RAM用户通常与某个特定的人或应用程序一一对应。RAM用户使用其身份凭证访问KMS时,KMS会校验该用户对相关资源的访问权限。
身份凭证在创建RAM用户时设置。创建RAM用户只能由管理员账号操作。通过控制台访问云资源的RAM用户需要的身份凭证是登录名称和登录密码,通过OpenAPI调用访问云资源需要的身份凭证是访问密钥AK(AccessKey)。建议您定期更换RAM用户的密码,不要将AK信息明文写入工程代码,提高RAM用户身份凭证的安全性。更多信息,请参见身份管理。
说明管理员账号是指阿里云账号(主账号)或者拥有管理员权限的RAM用户或RAM角色。
RAM用户默认没有任何权限。创建完成后,您必须使用管理员账号为RAM用户授予权限策略才能使其拥有云资源访问或操作权限。基于身份的权限策略包括密钥管理服务系统权限策略参考和密钥管理服务自定义策略参考。系统权限策略由阿里云创建,自定义权限策略由您自行创建。
操作文档
安全令牌(STS Token)访问
KMS支持安全令牌(STS Token)访问。
安全令牌 (STS Token)是RAM角色访问云资源时使用的身份凭证,由RAM提供的STS(Security Token Service)服务为扮演RAM角色的可信实体颁发。RAM角色是RAM的一种虚拟身份类型,没有长期身份凭证,需要被一个可信实体扮演。
对比使用访问密钥AK(AccessKey)等长期凭证而言,使用 STS Token 这样的临时身份凭证可减少风险暴露时长,提升您云上资产的安全。您可以访问RAM角色概览了解可信实体的含义以及使用RAM角色和STS Token的典型场景。
RAM角色默认没有任何权限,您必须使用管理员账号为RAM角色授予权限策略才能使其拥有云资源访问或操作权限。基于身份的权限策略包括密钥管理服务系统权限策略参考和密钥管理服务系统策略参考。系统权限策略由阿里云创建,自定义权限策略由您自行创建。
操作文档
基于身份的策略
KMS支持基于身份的权限策略。
基于身份的权限策略可以授予RAM身份,如RAM用户、RAM用户组或RAM角色,用于定义上述身份可以在什么条件下对哪些资源执行什么操作。
从管理的角度看,基于身份的权限策略分为系统权限策略和自定义权限策略。系统权限策略由阿里云创建和维护,您只能使用但不能修改或删除此类权限策略。自定义权限策略由您自行创建和维护。您可以通过控制台或OpenAPI创建自定义权限策略。
从授权范围看,基于身份的策略可以分为账号级和资源组级。账号级的授权范围是云账号内的所有资源。资源组级的授权范围是该资源组内的所有资源。账号级授权的优先级高于资源组级授权,关于二者的定义和范围请参见权限策略模型。您可以在为RAM身份授权时指定授权范围。
参考文档
操作级授权
KMS支持操作级的授权。
在权限策略语法中,操作(Action)元素用于描述权限允许或拒绝的特定操作,一般情况下与其关联的云产品API同名。Action元素的格式为<ram-code>:<action-name>
。
KMS支持操作级的授权粒度,意味着您可以在权限策略中,为某一具体操作设置访问权限。
KMS的RAM代码(ram-code)为
kms
。关于KMS支持的所有操作的列表,请参见密钥管理服务自定义权限策略参考。
KMS权限策略中的Action元素示例
"Action": [
"kms:List*",
"kms:Describe*"
]
资源级授权
KMS支持资源级的授权。
在权限策略语法中,资源(Resource)元素用于描述权限允许或拒绝执行操作的一个或多个资源对象。资源是云产品呈现给用户与之交互的对象实体的一种抽象,例如:OSS存储空间或ECS实例等。Resource元素通过云产品定义的资源ARN(Aliyun Resource Name)来统一标识,具体格式为 acs:<ram-code>:<region>:<account-id>:<relative-id>。对于不支持资源级授权的操作,使用通配符(*)描述该操作应用于所有资源。
KMS支持资源级的授权粒度,意味着您可以在权限策略中指定某一具体资源对象的访问权限。关于KMS的所有资源列表,请参见密钥管理服务自定义权限策略参考。
KMS权限策略中的Resource元素示例
"Resource": [
"acs:kms:${region}:${account}:key",
"acs:kms:${region}:${account}:key/*"
]
服务级条件关键字
KMS支持服务级条件关键字。
支持服务级条件关键字,意味着可以在授权具体操作和资源对象时,额外指定授权生效的限制条件。关于适用于KMS的服务级条件关键字列表,请参见密钥管理服务自定义权限策略参考。
KMS权限策略中的服务级条件关键字示例
"Condition": {
"StringEqualsIgnoreCase": {
"kms:tag/Project": [
"Apollo"
]
}
}
标签鉴权
KMS支持标签鉴权。
普通服务角色
KMS支持普通服务角色。
普通服务角色(Service Role)是一种可信实体为阿里云服务的RAM角色,旨在解决跨云服务的授权访问问题。使用KMS的特定功能时,会触发用户授权自动创建普通服务角色并为角色授予对应的资源访问权限。创建完成后,KMS即可扮演此服务角色,代表您访问其他云服务。
您也可以在 RAM 中手动创建、修改和删除普通服务角色,并修改普通服务角色的权限。修改角色或角色权限会对KMS提供的功能造成影响,请谨慎操作。更多信息,请参见普通服务角色。
服务关联角色
KMS支持服务关联角色。
服务关联角色SLR(Service-linked role)是一种可信实体为阿里云服务的RAM角色,旨在解决跨云服务的授权访问问题。使用KMS的特定功能时,会触发用户授权自动创建服务关联角色并为角色授予对应的资源访问权限。创建完成后,KMS即可扮演此服务角色,代表您访问其他云服务。
服务关联角色是与KMS某项具体服务关联的角色,角色的权限由该项服务定义、更新与使用。您可以在 RAM 中查看服务关联角色的权限策略,但不能修改或删除权限策略,也不能为服务关联角色添加或移除权限。更多信息请参见服务关联角色。