凭据策略是基于资源的策略,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS凭据,KMS实例中的每个凭据必须有且只有一个凭据策略。本文介绍凭据策略的详细信息。
凭据策略与访问控制RAM的权限策略的关系
凭据策略支持将当前阿里云账号(凭据所属的阿里云账号)下的RAM用户、RAM角色设置为管理员或使用者,将其他阿里云账号下的RAM用户、RAM角色设置为使用者。
除了在KMS上设置凭据策略外,您也可以在访问控制RAM上设置基于身份的策略,用于指定阿里云账号、RAM用户、RAM角色可以管理或使用哪些凭据。具体操作,请参见为RAM用户授权、为RAM角色授权、密钥管理服务自定义权限策略参考。
当阿里云账号、RAM身份(RAM用户或RAM角色)通过阿里云控制台、OpenAPI或CLI发起KMS资源访问请求时,都需要执行权限策略的判定流程,根据判定结果决定是否被允许访问。具体请参见如下流程图和说明。
判定结果遵循如下原则:
如果是当前阿里云账号下的RAM用户、RAM角色:判定结果A或者判定结果B中,有一个是允许(Allow)且无Explicit Deny(显式拒绝),即允许管理或使用该凭据。
说明当前阿里云账号,即凭据创建者的阿里云账号。您可以通过如下方式查看凭据创建者:
通过控制台:登录密钥管理服务控制台,在凭据管理页面,进入凭据详情页面,查看创建者。
通过OpenAPI:调用DescribeSecret接口,响应消息中的
Creator
即创建者。
如果是其他阿里云账号下的RAM用户、RAM角色:判定结果A和判定结果B,必须都是允许(Allow),才允许使用该凭据。
通过上述判断流程,您可以了解到:
如果您想允许当前阿里云账号下的RAM用户、RAM角色管理或使用凭据,只需在KMS侧设置凭据策略允许其管理或使用凭据,或者在RAM侧设置权限策略允许其管理或使用凭据。
如果您想允许其他阿里云账号下的RAM用户、RAM角色使用凭据,不仅需要在KMS侧设置凭据策略允许其使用凭据,同时还要在RAM侧设置权限策略允许其使用凭据。
注意事项
凭据策略说明
完整的凭据策略包含如下内容:
Version:凭据策略的版本,目前版本仅支持设置为1。
Statement:凭据策略的语句,每个凭据策略包含一个或多个语句。每个语句包含以下几个参数。
Sid
可选,表示自定义的语句标识符。内容长度小于等于128字符,支持的字符为:大写英文字母(A-Z)、小写英文字母(a-z)、数字(0-9),特殊字符( _/+=.@-)。
Effect
必选,表示是允许还是拒绝该策略语句中的权限。取值为:
Allow
或Deny
。Principal
必选,表示权限策略的授权主体,支持设置为以下主体:
当前阿里云账号,即凭据所属的阿里云账号。
当前阿里云账号下的RAM用户、RAM角色。
其他阿里云账号下的RAM用户、RAM角色。
重要授权给其他阿里云账号下的RAM用户、RAM角色后,您仍需在访问控制RAM侧,使用该RAM用户、RAM角色的阿里云账号为其授权使用该凭据,RAM用户、RAM角色才能使用该凭据。
具体操作,请参见凭据管理服务自定义权限策略参考、为RAM用户授权、为RAM角色授权。
Action
必选,表示要允许或拒绝的API操作,内容必须以"kms:"开头。操作权限列表的范围如下,如果您设置了列表外的操作,设置后也不会生效。
Resource
必选,取值只能是
*
,表示本KMS凭据。Condition
可选,表示授权生效的限制条件。Condition元素也称为条件块(Condition Block),它是由一个或多个条件子句构成。一个条件子句由条件操作类型、条件关键字和条件值组成。详细信息,请参见权限策略基本元素。
格式为
"Condition": {"condition operator": {"condition key": "condition value"}}
。
凭据策略示例
为阿里云账号(119285303511****)下的凭据设置凭据策略。示例表示:
允许当前阿里云账号(119285303511****)对该凭据的完全访问权限,即管理和使用凭据。
允许当前阿里云账号(119285303511****)下的RAM用户(secret_ramuser1)管理凭据。
允许当前阿里云账号(119285303511****)下的RAM用户(secret_ramuser2)、其他阿里云账号(190325303126****)下的RAM用户(secret_ramuser3)使用凭据。
{
"Statement": [
{
"Action": [
"kms:*"
],
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:*"
]
},
"Resource": [
"*"
],
"Sid": "kms default secret policy"
},
{
"Action": [
"kms:List*",
"kms:Describe*",
"kms:PutSecretValue",
"kms:Update*",
"kms:DeleteSecret",
"kms:RestoreSecret",
"kms:RotateSecret",
"kms:TagResource",
"kms:UntagResource"
],
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:user/secret_ramuser1"
]
},
"Resource": [
"*"
]
},
{
"Action": [
"kms:List*",
"kms:Describe*",
"kms:GetSecretValue"
],
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:user/secret_ramuser2",
"acs:ram::190325303126****:user/secret_ramuser3"
]
},
"Resource": [
"*"
]
}
],
"Version": "1"
}