管理外部密钥

KMS外部密钥管理实例支持将KMS密钥与您云外密钥管理设施中的密钥进行关联,云产品或应用通过引用KMS实例中的密钥ID完成加解密操作,且加解密操作时云外密钥管理设施中的密钥不会离开密钥管理设施边界,该功能也称为持有自己的密钥(Hold Your Own Key,HYOK)。本文介绍如何在KMS外部密钥管理实例中创建外部密钥。

说明

由于外部密钥管理设施需要您自行维护,保障其安全性、可用性和稳定性,并承担相关成本,对多数用户而言,如果KMS软件密钥管理实例、硬件密钥管理实例可以满足您的安全、控制与监管要求,推荐您优先使用软件密钥管理实例或硬件密钥管理实例。

KMS实例如何与外部密钥管理设施通信

KMS实例通过外部密钥代理服务(XKI Proxy代理服务)连接云外密钥管理设施,该代理将所有请求从KMS实例传输到密钥管理设施,并将来自密钥管理设施的响应回传到KMS实例。XKI Proxy代理服务的详细介绍,请参见XKI Proxy服务器

KMS实例支持通过公网或VPC终端节点服务与XKI Proxy代理服务连接。

  • 公网连接:KMS实例使用公网通过Internet连接到XKI Proxy代理服务,XKI Proxy代理服必须可以通过公网访问。

  • VPC终端节点服务连接:通过PrivateLink,KMS实例使用VPC终端节点服务与XKI Proxy外部代理连接。

注意事项

  • 外部密钥仅支持对称密钥,不支持非对称密钥。

  • 如果密钥管理设施中的密钥丢失或删除,则通过对应KMS外部密钥加密的密文将无法恢复。

  • 外部密钥管理实例不支持导入密钥材料、密钥轮转、备份管理、跨地域同步。

  • KMS外部密钥管理实例的密钥在外部,KMS实例中只有密钥的元数据,因此密钥的版本管理也是在外部,您无法在KMS调用与密钥版本相关的接口:

  • 通过外部密钥管理实例进行密码运算需要符合以下条件:

    • KMS外部密钥管理实例中密钥状态必须是 Enabled

    • 外部密钥代理服务(XKI Proxy代理服务)运行正确、配置正确,且状态为已启用(Connected)。

    • 外部密钥代理服务(XKI Proxy代理服务)中的密钥状态必须是ENABLED

前提条件

  • 请确保已购买并启用KMS外部密钥管理实例。具体操作,请参见购买和启用KMS实例

  • 请提前通过XKI Proxy代理服务,在密钥管理设施中创建密钥,并记录密钥ID。具体操作,请参见密钥管理设施相关文档。

创建外部密钥

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 密钥管理

  2. 密钥管理页面,单击用户主密钥页签,实例ID选择外部密钥管理实例,单击创建密钥

  3. 创建密钥面板,完成配置项设置,然后单击确定

    配置项

    说明

    外部密钥ID

    通过XKI管理服务生成的密钥的密钥ID。

    说明

    支持使用同一个外部密钥ID创建一个或多个KMS密钥。

    密钥规格

    密钥的规格。关于密钥规格遵循的标准、密钥算法等详细介绍,请参见密钥管理类型和密钥规格

    Aliyun_AES_256、Aliyun_SM4

    密钥用途

    密钥的用途。

    Encrypt/Decrypt:数据加密和解密。

    密钥别名

    密钥的别名标识符。支持英文字母、数字、下划线(_)、短划线(-)和正斜线(/)。

    标签

    密钥的标签,方便您对密钥进行分类管理。每个标签由一个键值对(Key:Value)组成,包含标签键(Key)、标签值(Value)。

    说明
    • 标签键和标签值的格式:最多支持128个字符,可以包含英文大小写字母、数字、正斜线(/)、反斜线(\)、下划线(_)、短划线(-)、半角句号(.)、加号(+)、等于号(=)、半角冒号(:)、字符at(@)。

    • 标签键不能以aliyun或acs:开头。

    • 每个密钥最多可以设置20个标签键值对。

    描述信息

    密钥的说明信息。

    高级选项

    • 默认策略:如果密钥由当前主账号使用,或者资源共享单元中的主账号使用,请选择默认策略。

      • 实例未共享给其他账号:仅当前主账号能管理及使用密钥。

      • 实例已共享给其他账号:以主账号1将KMS实例A共享给主账号2为例介绍。

        • 主账号1创建的密钥:仅主账号1能管理及使用密钥。

        • 主账号2创建的密钥:主账号1和主账号2,都能管理及使用密钥。

    • 自定义策略:如果密钥需要授权给RAM用户、RAM角色,或授权给其他账号使用,请选择自定义策略。

      重要

      选择管理员、使用者时不消耗访问管理数量配额。选择其他账号使用者时,会消耗KMS实例的访问管理数量配额,按主账号个数计算消耗的配额,如果您取消了授权,请等待约5分钟,再查看配额,配额会返还。

      • 管理员:对密钥进行管控类操作,不支持密码运算操作。支持选择当前主账号下的RAM用户和RAM角色。

        管理员支持的权限列表

        {
        	"Statement": [
        		{
        			"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"
        			]
        		}
        	]
        }
      • 使用者:仅支持使用密钥进行密码运算操作。支持选择当前主账号下的RAM用户和RAM角色。

        使用者支持的权限列表

         {
            "Statement": [
                {
                    "Action": [
                        "kms:Encrypt",
                        "kms:Decrypt",
        								"kms:GenerateDataKey",
        								"kms:GenerateAndExportDataKey",
                        "kms:AsymmetricEncrypt",
                        "kms:AsymmetricDecrypt",
                        "kms:DescribeKey",
                        "kms:DescribeKeyVersion",
                        "kms:ListKeyVersions",
                        "kms:ListAliasesByKeyId",
        							  "kms:TagResource"
                    ]
                }
            ]
        }
      • 其他账号使用者:使用密钥进行加解密,可以是其他阿里云账号的RAM用户或RAM角色。

        • RAM用户:格式为acs:ram::<userId>:user/<ramuser>,例如acs:ram::119285303511****:user/testpolicyuser

        • RAM角色:格式为acs:ram::<userId>:role/<ramrole>,例如acs:ram::119285303511****:role/testpolicyrole

          说明

          授权给RAM用户、RAM角色后,您仍需在访问控制RAM侧,使用该RAM用户、RAM角色的主账号为其授权使用该密钥,RAM用户、RAM角色才能使用该密钥。

          具体操作,请参见密钥管理服务自定义权限策略参考为RAM用户授权为RAM角色授权

        其他账号使用者支持的权限列表

         {
            "Statement": [
                {
                    "Action": [
                        "kms:Encrypt",
                        "kms:Decrypt",
        								"kms:GenerateDataKey",
        								"kms:GenerateAndExportDataKey",
                        "kms:AsymmetricEncrypt",
                        "kms:AsymmetricDecrypt",
                        "kms:DescribeKey",
                        "kms:DescribeKeyVersion",
                        "kms:ListKeyVersions",
                        "kms:ListAliasesByKeyId",
        							  "kms:TagResource"
                    ]
                }
            ]
        }

相关操作

禁用密钥、开启删除保护、计划删除密钥、密钥关联检测、设置外部密钥的别名、设置外部密钥的标签等操作,请参见管理密钥