SetKeyPolicy

为KMS实例中的密钥设置密钥策略。

关于密钥策略的详细介绍,请参见密钥策略概述

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称

类型

是否必选

示例值

描述

Action String SetKeyPolicy

要执行的操作。取值:SetKeyPolicy

KeyId String key-hzz630494463ejqjx****

密钥ID或密钥资源名称(ARN)。

说明 访问其他阿里云账号下的密钥时,必须输入密钥ARN。密钥ARN的格式为acs:kms:${region}:${account}:key/${keyid}
PolicyName String default

密钥策略名称。仅支持固定取值default。

Policy String {"Statement":[{"Action":["kms:*"],"Effect":"Allow","Principal":{"RAM":["acs:ram::119285303511****:*"]},"Resource":["*"],"Sid":"kms default key policy"},{"Action":["kms:List*","kms:Describe*","kms:Create*","kms:Enable*","kms:Disable*","kms:Get*","kms:Set*","kms:Update*","kms:Delete*","kms:Cancel*","kms:TagResource","kms:UntagResource","kms:ImportKeyMaterial","kms:ScheduleKeyDeletion"],"Effect":"Allow","Principal":{"RAM":["acs:ram::119285303511****:user/for_test_policy"]},"Resource":["*"]}],"Version":"1"}

密钥策略的具体内容,JSON格式。最大长度为32768个字节。

密钥策略内容包含:

  • Version:密钥策略的版本,目前版本仅支持设置为1。
  • Statement:密钥策略的语句,每个密钥策略包含一个或多个语句。

密钥策略格式为:

{
    "Version": "1",
    "Statement": [
        {
            "Sid": "Enable RAM User Permissions",
            "Effect": "Allow",
            "Principal": {
              "RAM": ["acs:ram::112890462****:*"]
            },
            "Action": [
                "kms:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Statement详细介绍:

  • Sid:可选,表示自定义的语句标识符。内容长度小于等于128字符,支持的字符为:大写英文字母(A-Z)、小写英文字母(a-z)、数字(0-9),特殊字符( _/+=.@-)。
  • Effect:必选,表示是允许还是拒绝该策略语句中的权限。取值为:Allow或Deny。
  • Principal:必选,表示权限策略的授权主体,支持设置为当前阿里云账号(即密钥所属的阿里云账号),当前阿里云账号下的RAM用户、RAM角色,其他阿里云账号下的RAM用户、RAM角色。
  • Action:必选,表示要允许或拒绝的API操作,内容必须以"kms:"开头。操作权限列表的范围,请参见密钥策略概述。如果您设置了列表外的操作,设置后也不会生效。
  • Resource:必选,取值只能是*,表示本KMS密钥。
  • Condition:可选,表示授权生效的限制条件。通过使用条件可以评估API请求的上下文,以确定策略语句是否适用。格式为"Condition": {"condition operator": {"condition key": "condition value"}}。详细介绍,请参见密钥策略概述
说明 授权给其他阿里云账号下的RAM用户、RAM角色后,您仍需在访问控制RAM侧,使用该RAM用户、RAM角色的阿里云账号为其授权使用该密钥,RAM用户、RAM角色才能使用该密钥。具体操作,请参见密钥管理服务自定义权限策略参考为RAM用户授权为RAM角色授权

返回数据

名称

类型

示例值

描述

RequestId String 381D5D33-BB8F-395F-8EE4-AE3BB4B523C8

本次调用请求的ID,是由阿里云为该请求生成的唯一标识符,可用于排查和定位问题。

示例

请求示例

http(s)://[Endpoint]/?Action=SetKeyPolicy
&KeyId=key-hzz630494463ejqjx****
&PolicyName=default
&Policy={"Statement":[{"Action":["kms:*"],"Effect":"Allow","Principal":{"RAM":["acs:ram::119285303511****:*"]},"Resource":["*"],"Sid":"kms default key policy"},{"Action":["kms:List*","kms:Describe*","kms:Create*","kms:Enable*","kms:Disable*","kms:Get*","kms:Set*","kms:Update*","kms:Delete*","kms:Cancel*","kms:TagResource","kms:UntagResource","kms:ImportKeyMaterial","kms:ScheduleKeyDeletion"],"Effect":"Allow","Principal":{"RAM":["acs:ram::119285303511****:user/for_test_policy"]},"Resource":["*"]}],"Version":"1"}
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<SetKeyPolicyResponse>
    <RequestId>381D5D33-BB8F-395F-8EE4-AE3BB4B523C8</RequestId>
</SetKeyPolicyResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "381D5D33-BB8F-395F-8EE4-AE3BB4B523C8"
}

错误码

HttpCode

错误码

错误信息

描述

400 MissingParameter The parameter needed but no provided. 需要的参数未提供
400 InvalidParameter The specified parameter is not valid. 参数非法。
400 Forbidden.NoPermission This operation is forbidden by permission system. 该操作无权限
400 Forbidden.KeyPolicyUnSupported The specified key does not support key policy. 指定的密钥不支持密钥策略。
400 Rejected.ShareQuotaExceedLimit Instance Share Quota Exceed Limit. 实例份额配额超过限制。
403 Forbidden.DKMSInstanceStateInvalid The DKMS instance state is invalid. 您的专属KMS状态为无效状态。
404 Forbidden.KeyNotFound The specified Key is not found. 指定的密钥不存在。
404 Forbidden.ResourceNotFound Policy not found. 策略找不到。
500 InternalFailure Internal Failure 内部错误

访问错误中心查看更多错误码。