多账号共享KMS实例

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

在企业环境中,各账号分别独立管理密钥会导致管理成本增加,并且安全策略难以统一。KMS 实例的多账号共享功能允许企业将单一 KMS 实例在组织范围内安全地分配给多个成员账号,实现统一的密钥管理和成本优化。

工作流程

KMS实例共享功能基于云服务商的资源目录资源共享服务构建。具体流程如下:

  1. 组织构建:通过资源目录服务,将企业内的所有相关云账号作为成员,统一管理在一个组织中。

  2. 资源共享:实例拥有者通过资源共享服务创建“共享单元”,将KMS实例作为“共享资源”加入,并指定资源目录中的其他成员为“资源使用者”。

  3. 权限授予

    • 权限策略:实例拥有者在创建共享时,配置预定义的权限策略(AliyunRSDefaultPermissionKMSInstance),资源共享服务将此策略应用于指定的资源使用者。

    • 共享模式:支持“独立所有权”和“联合所有权”两种方式,用于划分KMS实例内资源(密钥和凭据)的使用权限。

    • RAM用户:资源使用者需对其 RAM 身份(RAM 用户或角色)配置具备特定操作权限的 RAM 策略(如 kms:Encryptkms:Decrypt 等)。

业务场景示例:企业的部门A购买了KMS实例,如果部门B也希望使用KMS实例,企业可以通过资源目录集中管理阿里云账号,然后通过资源共享服务实现KMS实例的共享。架构图如下所示:

image

适用范围

  • 实例要求

    已启用的软件密钥管理实例、硬件密钥管理实例。

  • 账号与组织要求

    • 实例拥有者和实例使用者必须在同一企业实名认证下。

    • 实例拥有者和实例使用者必须属于同一个资源目录

共享模式选择指南

特性

独立所有权

联合所有权

适用场景

存在跨账号同名凭据,或需要进行权限隔离。

需要由中心化团队(如IT、安全部门)对所有密钥和凭据进行统一管理和审计的内部协作场景。

核心特性

数据主权独立:实例拥有者无权管理或使用实例使用者创建的密钥和凭据。

数据主权共享:实例拥有者可以管理和使用实例使用者创建的密钥和凭据。

跨账号同名

允许。实例使用者和实例拥有者可以在实例内创建同名的凭据。

不允许。实例内所有密钥/凭据名称必须唯一。

模式变更

无法变更为联合所有权

可变更为独立所有权

如需了解两种模式下详细的权限差异,请参见附录:共享模式功能权限详情

操作指南

配置共享(实例拥有者)

步骤一:准备资源目录并开通组织内共享

  1. 启用资源目录

    1. 登录控制台

      使用管理账号登录资源管理控制台

    2. 开通资源目录

      在左侧导航栏,选择资源目录 > 目录开通单击开通资源目录具体操作,请参见开通资源目录

    3. 创建资源夹

      目录管理页面右上角单击资源组织视图。在左侧的资源目录树中,单击目标资源夹,然后在成员页签单击创建资源夹填写资源夹名称,然后单击确定具体操作,请参见创建资源夹

    4. 配置成员

      成员页签单击创建成员邀请成员,并参照创建成员邀请阿里云账号加入资源目录移动成员完成账号名称、账号UID、结算账号等信息的配置。

      邀请成员

      参数

      描述

      邀请的账号UID或账号登录邮箱

      • 账号UID:获取方式,请参见如何查看阿里云账号ID?

      • 账号登录邮箱:该邮箱为注册账号时填写的登录邮箱。没有登录邮箱的,请填写账号UID。

      支持一次性输入多个进行批量邀请,多个账号之间用英文逗号(,)分隔。

      备注

      填写邀请备注,方便被邀请方确认邀请行为的可信性,从而使流程快速完成。

      标签

      为成员绑定标签,方便基于标签的成员管理。

      归属资源夹

      默认邀请的账号归属在Root资源夹下,您可以单击修改,按需将成员归属到目标资源夹下。该项在成员邀请成功后也支持调整。

      创建成员

      参数

      描述

      阿里云账号名称

      • 阿里云账号名称是成员的唯一标识,在资源目录内必须唯一。

      • 阿里云账号名称长度为2~50个字符,允许输入英文字母、数字和特殊字符_.-,必须以英文字母或数字开头和结尾,且不能输入连续的特殊字符_.-

      显示名

      显示名称长度为2~50个字符或汉字,允许输入汉字、英文字母、数字和特殊字符_.-

      结算账号

      设置新创建成员的费用承担者。

      • 使用管理账号为新成员付款:指定资源目录的管理账号作为托管结算账号。

      • 使用已有成员为新成员付款:指定资源目录的已有成员作为托管结算账号。您需要在指定一个成员面板中,从资源目录的目录树中选择一个成员。

        说明

        若成员不具备付款能力则无法被选中。关于如何判断成员是否具备付款能力,请参见财务托管业务须知

      • 新成员自主付款:指定当前成员作为结算账号。

      标签

      为成员绑定标签,方便基于标签的成员管理。

      归属资源夹

      默认邀请的账号归属在Root资源夹下,您可以单击修改,按需将成员归属到目标资源夹下。该项在成员邀请成功后也支持调整。

  2. 开通资源共享

    开通后,资源所有者(管理账号或成员)可以在资源目录内,将资源共享给整个资源目录及其下的资源夹或成员。更多信息,可参见启用资源目录组织共享

    1. 使用资源目录的管理账号登录资源共享控制台,在左侧导航栏,选择资源共享 > 设置

    2. 单击启用,然后在资源共享服务关联角色对话框,单击确定

      说明

      系统会自动创建一个名为AliyunServiceRoleForResourceSharing的服务关联角色,用于获取资源目录的组织信息。更多信息,可参见资源共享服务关联角色

步骤二:配置共享KMS实例

本步骤指导实例拥有者如何将KMS实例共享给一个或多个使用者。

  1. 登录控制台

    使用实例拥有者登录密钥管理服务控制台,在顶部菜单栏选择地域信息后,在左侧导航栏单击实例管理

  2. 选择共享模式

    实例管理页面,定位到目标KMS实例,单击操作列的资源共享RD多账号共享设置面板,首先根据共享模式选择指南选择共享模式

  3. 配置共享单元

    添加到共享单元区域,选择或新增共享单元。

    对比项

    新增共享单元(推荐)

    从已有中选择

    适用场景

    首次共享或需要权限隔离时。

    需要将当前实例添入已有共享单元,并复用其使用者和权限时。

    特点

    • 权限隔离:只包含当前 KMS 实例,权限独立。

    • 控制范围:仅新添加的账号可使用共享实例。

    • 权限共享

      • 原共享单元的所有使用者将自动获得新实例的访问权,消耗实例的访问管理配额。

      • 对该共享单元的任何权限变动,将同时影响该单元内所有已加入的资源。

    • 控制范围:原共享单元的资源使用者以及新添加的账号均可使用共享实例。

    警告

    可能导致非预期的权限提升和配额消耗,请谨慎操作。

  4. 配置共享参数

    根据所选方式,完成以下配置后,单击确定

    新增共享单元(推荐)

    • 共享单元名称

      支持中文字符、英文大小写字符、数字及特殊字符(“.”、“_”或“-”),最长不超过50个字符。

    • 资源使用者(实例使用者)

      指定可以使用此KMS实例的账号。

      重要
      • 建议按“资源夹”或“云账号”添加,以实现精细化控制。每次添加都会消耗实例的“访问管理数量”配额。

      • 若在已有的共享单元中增加或删除使用者,该变更将对单元内所有资源生效。

      支持添加以下三种类型:

      • 阿里云账号:资源仅共享给指定的阿里云账号(UID)。

      • 资源目录组织:将资源共享给整个资源目录下的所有成员账号,包括后续新增的成员。

      • 资源夹(组织单元):输入资源夹 ID,将资源共享给该资源夹下的所有成员,包括后续新增的成员。资源夹ID格式:fd-字符串,如何查看资源夹信息,请参见查看资源夹基本信息

    • 关联权限

      配置资源使用者(实例使用者)的权限。具体的权限详情,请在资源共享控制台上的权限库中查看。

      • AliyunRSDefaultPermissionKMSInstance(推荐):有两个版本(v1、v2),新创建的权限默认为v2。关于如何查看权限版本,可参见查看权限详情

      • AliyunRSPermissionKMSInstanceReadWrite(已废弃):若之前使用该权限,可以继续正常使用。

    从已有中选择

    • 选择共享单元

      系统会同步当前账号下的所有共享单元。更多内容参见创建共享单元

    • 共享资源列表

      此列表自动展示所选共享单元中已有的资源(不可修改)。本次操作完成后,当前KMS实例将被添加至该共享单元。

    • 资源使用者(实例使用者)

      指定可以使用此KMS实例的账号.

      重要
      • 建议按“资源夹”或“云账号”添加,以实现精细化控制。每次添加都会消耗实例的“访问管理数量”配额。

      • 若在已有的共享单元中增加或删除使用者,该变更将对单元内所有资源生效。

      支持添加以下三种类型:

      • 阿里云账号:资源仅共享给指定的阿里云账号(UID)。

      • 资源目录组织:将资源共享给整个资源目录下的所有成员账号,包括后续新增的成员。

      • 资源夹(组织单元):输入资源夹 ID,将资源共享给该资源夹下的所有成员,包括后续新增的成员。资源夹ID格式:fd-字符串,如何查看资源夹信息,请参见查看资源夹基本信息

    • 关联权限

      配置资源使用者(实例使用者)的权限。具体的权限详情,请在资源共享控制台上的权限库中查看。

      • AliyunRSDefaultPermissionKMSInstance(推荐):有两个版本(v1、v2),新创建的权限默认为v2。关于如何查看权限版本,可参见查看权限详情

      • AliyunRSPermissionKMSInstanceReadWrite(已废弃):若之前使用该权限,可以继续正常使用。

使用共享实例(实例使用者)

验证共享是否成功,并在共享实例中创建和使用密钥/凭据。

  1. 登录控制台

    实例使用者登录密钥管理服务控制台,在实例管理页面,将看到一个带有共享中标签的 KMS 实例。

  2. 创建密钥和凭据

    密钥管理凭据管理页签,单击创建密钥创建凭据。其中KMS实例选择共享实例,其余配置信息可参见创建密钥创建凭据

  3. RAM用户赋权

    资源使用者需要为其 RAM 身份(用户或角色)配置 RAM 策略,授予调用具体 KMS API 的权限(例如 kms:Encrypt, kms:Decrypt),具体操作参考使用RAM进行访问控制

  4. 使用密钥和凭据

    成功创建密钥和凭据后,即可在云产品或自建应用中使用它们。具体方法请参考以下文档:

管理与维护

修改共享单元的资源使用者实例使用者

  • 在密钥管理服务控制台操作

    1. 实例拥有者登录密钥管理服务控制台,在顶部菜单栏选择地域信息后,在左侧导航栏单击实例管理

    2. 实例管理页面,根据KMS实例类型,单击软件密钥管理页签或硬件密钥管理页签。

    3. 定位到目标KMS实例,单击操作资源共享

    4. 添加到共享单元面板选择共享单元,单击资源使用者编辑添加或移除资源使用者,然后单击确定

  • 在资源共享控制台操作

    具体操作,可参见修改共享单元

解除KMS实例的共享关系

重要
  • 撤销共享前,实例使用者必须主动删除自己创建的所有密钥和凭据,否则将导致撤销失败。请确保关联资源已不再使用,避免业务中断。

  • 仅支持在资源共享控制台操作。

  1. 使用管理账号登录资源共享控制台

  2. 在左侧导航栏,选择资源共享 > 我的共享在共享单元列表中,单击目标共享单元ID。

  3. 在页面右上角,单击删除共享单元删除共享单元对话框,单击确定

应用于生产环境

在生产环境中部署和使用共享实例时,请遵循以下内容,以确保系统的稳定性、安全性和合规性。

  • 网络连通性

    如果实例使用者的自建应用部署在VPC内,且需要通过私网网关访问KMS,实例拥有者需将实例使用者所属的 VPC 绑定至共享 KMS实例,以实现私网访问。具体操作,可参见同地域多VPC访问KMS实例

  • 审计与合规

    • 实例拥有者:必须在其账号下开启操作审计,以记录对共享实例的所有管理操作以及使用者执行的关键操作。

    • 实例使用者:建议开启操作审计,以记录自身账号内的所有API调用活动。

  • 变更管理

    • 撤销共享:在撤销共享关系或删除共享单元前,实例使用者需删除其在共享实例中创建的所有密钥和凭据。若有资源残留,撤销操作将失败。请确保关联资源已不再使用,避免业务中断。如何撤销可参见解除KMS实例的共享关系

    • 修改实例使用者:在共享单元中增删使用者会影响该单元内的所有共享资源。为避免权限混乱,建议为不同业务场景或团队创建独立的共享单元。如何修改可参见修改共享单元的资源使用者(实例使用者)

配额与限制

  • 功能限制

    • 不支持共享默认密钥(例如 alias/acs/oss 的密钥)。

    • 实例使用者无法跨地域使用共享的KMS实例。

    • 联合所有权模式中,实例内所有密钥和凭据的名称必须全局唯一。

  • 访问管理数量限制

    共享KMS实例会消耗实例拥有者的访问管理数量。如果数量不足,请及时升配KMS实例

    重要
    • 配额计算:已消耗配额 = 共享的账号数量 + 绑定的VPC数量

      例如,将一个实例共享给3个账号,并绑定了2VPC,共消耗5个配额。

    • 配额变更生效说明:若因配额不足导致添加资源使用者失败,在您提升实例配额后,系统不会自动重试该失败操作。您需要手动将该使用者(账号或资源夹)从共享单元中移除,然后重新添加。

常见问题

  • 配置完成后,若实例使用者调用 API 返回 “AccessDenied” 或 “Forbidden”错误,应如何进行排查?

    建议依次排查以下四项权限配置:

    1. 资源共享权限:在资源共享控制台,确认使用者账号已成功加入共享单元,且共享状态正常。

    2. KMS实例权限:检查共享单元关联的权限是否为AliyunRSDefaultPermissionKMSInstance

    3. RAM调用权限:确认调用APIRAM用户或RAM角色,已被授予访问KMSRAM策略。例如kms:Encryptkms:Decrypt 等操作权限。

    4. 资源归属:在独立所有权模式下,确认操作的密钥或凭据是由当前实例使用者创建。

  • 在联合所有权模式下创建凭据时,为什么提示名称冲突?

    联合所有权模式中,整个KMS实例内的所有密钥和凭据名称必须唯一,不允许实例所有者和使用者创建同名资源。

    • 解决方案一:更换凭据名称。

    • 解决方案二:如业务场景确需支持跨账号同名密钥或凭据,可将共享模式切换为“独立所有权”模式。

      警告

      此变更仅支持从“联合所有权”变更为“独立所有权”,且变更后无法撤销。请在操作前仔细评估其影响。

附录:共享模式功能权限详情

下表详细列出了在两种共享模式中,实例拥有者和实例使用者对各项功能的操作权限。

说明

支持表示支持该功能项,不支持表示不支持该功能项。

联合所有权

功能项

子项

实例拥有者

实例使用者

实例管理

查看KMS实例详情

支持

不支持

配置多VPC访问KMS实例

升级实例

续费实例

解除共享关联

密钥管理

创建密钥

支持

支持

查看密钥元数据

支持

说明

支持所有密钥,包含实例使用者创建的密钥。

支持

说明

仅支持实例使用者创建的密钥。

设置密钥轮转

设置计划删除密钥

开启删除保护

创建并管理密钥别名

添加并管理密钥标签

密码运算

凭据管理

创建凭据

支持

支持

查看凭据元数据

支持

说明

支持所有凭据,包含实例使用者创建的凭据。

支持

说明

仅支持实例使用者创建的凭据。

删除凭据

设置凭据轮转

添加并管理凭据标签

获取凭据值

备份管理

支持

说明

支持备份所有密钥和凭据,包含实例使用者创建的密钥和凭据。

不支持

应用接入

创建应用接入点

支持

支持

独立所有权

功能项

子项

实例拥有者

实例使用者

实例管理

查看KMS实例详情

支持

不支持

配置多VPC访问KMS实例

升级实例

续费实例

解除共享关联

密钥管理

创建密钥

支持

支持

查看密钥元数据

支持

说明

仅支持实例拥有者创建的密钥。

支持

说明

仅支持实例使用者创建的密钥。

设置密钥轮转

设置计划删除密钥

开启删除保护

创建并管理密钥别名

添加并管理密钥标签

密码运算

凭据管理

创建凭据

支持

支持

查看凭据元数据

支持

说明

仅支持实例拥有者创建的密钥。

支持

说明

仅支持实例使用者创建的凭据。

删除凭据

设置凭据轮转

添加并管理凭据标签

获取凭据值

备份管理

支持

说明

仅支持备份实例拥有者创建的密钥。

不支持

应用接入

创建应用接入点

支持

支持