文档

管理及使用RAM凭据

更新时间:
重要

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

RAM凭据是指RAM用户的访问密钥(AccessKey),包括AccessKey ID和AccessKey Secret,用于RAM用户在调用阿里云API时完成身份验证,避免硬编码AccessKey导致泄露。本文介绍如何管理及使用RAM凭据。

功能介绍

在KMS托管RAM凭据后,您无需在应用程序中配置AccessKey,只需配置凭据名称,通过凭据名称获取有效的AccessKey用于调用阿里云API。同时RAM凭据也支持轮转,以降低AccessKey泄露的风险。

image.png

使用限制

只支持托管RAM用户(子账号)的AccessKey,不支持托管阿里云账号(主账号)的AccessKey。

RAM凭据轮转

轮转时访问控制RAM会先创建一个新的AccessKey,然后删除旧的AccessKey。同时KMS将新的AccessKey写入凭据值,并删除旧的AccessKey对应的凭据值。轮转支持如下两种方式:

轮转方式

轮转时长

使用场景

周期性自动轮转

约2天

使用该AccessKey的应用,均已将RAM凭据集成到了应用中,且应用会周期性的读取RAM凭据。

建议您设置自动轮转周期时,不超过3个月,以降低AccessKey被泄露的风险。

立即轮转

由您设置,可设置为10分钟~2天。

RAM凭据泄露时,建议您设置为30分钟,其他场景建议您设置为2天。

  • 当您发现RAM凭据泄露时,可以通过立即轮转凭据进行应急处理。

  • 应用程序接入RAM凭据时,通过手动触发轮转进行测试。

重要
  • RAM凭据处于轮转状态时,请勿删除凭据关联的RAM用户,避免凭据轮转失败。

  • RAM凭据处于轮转状态时,不支持设置周期性轮转策略以及进行立即轮转。

前提条件

  • 已购买和启用KMS实例。具体操作,请参见购买和启用KMS实例

  • 已在KMS实例中创建用于加密凭据的对称密钥。具体操作,请参见密钥管理快速入门

  • 如果您使用RAM用户(子账号)或RAM角色管理RAM凭据,请确保阿里云账号(主账号)已将系统策略AliyunKMSSecretAdminAccessAliyunRAMFullAccess授予RAM用户或RAM角色。具体操作,请参见为RAM用户授权为RAM角色授权

步骤一:授予KMS管理RAM用户AccessKey的权限

1.创建自定义权限策略

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择权限管理 > 权限策略

  3. 权限策略页面,单击创建权限策略

  4. 选择脚本编辑并输入以下脚本。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ram:ListAccessKeys",
            "ram:CreateAccessKey",
            "ram:DeleteAccessKey",
            "ram:UpdateAccessKey"
          ],
          "Resource": "*"
        }
      ]
    }
  5. 单击继续编辑基本信息,设置名称和备注。其中名称设置为AliyunKMSManagedRAMCrendentialsRolePolicy

  6. 单击确定

2.创建RAM角色并授权

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 角色

  3. 角色页面,单击创建角色

  4. 创建角色页面,选择可信实体类型为阿里云服务,然后单击下一步

  5. 选择角色类型为普通服务角色

  6. 输入角色名称备注。其中角色名称AliyunKMSManagedRAMCrendentialsRole

  7. 选择受信服务为密钥管理服务,单击完成

  8. 单击为角色授权,被授权主体会自动填入。

  9. 新增授权面板,选择自定义策略,然后选中权限策略AliyunKMSManagedRAMCrendentialsRolePolicy,单击确定,然后单击完成

步骤二:创建RAM用户的AccessKey

访问密钥AccessKey(简称AK)是阿里云提供给用户的永久访问凭据,一组由AccessKey ID和AccessKey Secret组成的密钥对。

  • AccessKey ID:用于标识用户。

  • AccessKey Secret:是一个用于验证您拥有该AccessKey ID的密码。

  1. 登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 用户

  3. 用户页面,单击目标RAM用户名称。

  4. AccessKey区域,单击创建AccessKey

  5. 根据界面提示完成安全验证。

  6. 创建AccessKey对话框,查看AccessKey ID和AccessKey Secret。

    您可以单击下载CSV文件,下载AccessKey信息。单击复制,复制AccessKey信息。

步骤三:创建RAM凭据

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

  2. 单击RAM凭据页签,选择实例ID后,单击创建凭据,完成各项配置后单击确定

    配置项

    说明

    选择RAM用户

    选择您要托管凭据的RAM用户,所选RAM用户需要至少有一个AccessKey。

    设置凭据值

    输入对应的AccessKey Secret。

    长度不超过30720字节(30KB)。

    加密主密钥

    选择用于加密凭据值的密钥。

    重要

    密钥和凭据需要属于同一个KMS实例,且密钥必须为对称密钥。关于KMS支持哪些对称密钥,请参见密钥管理类型和密钥规格

    标签

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

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

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

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

    自动轮转

    选择开启或关闭凭据的周期性自动轮转。

    天数(7天~365天):

    仅当开启自动轮转时需要设置。

    表示轮转的周期,设置后KMS将定期为您更新凭据值。

    描述信息

    凭据的描述信息。

    高级设置

    凭据的策略配置。

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

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

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

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

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

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

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

      • 使用凭据时,还需要授予使用对应密钥进行解密(Decrypt)的权限。

      • 管理员:对凭据进行管控类操作,不支持使用凭据(即获取凭据值)。支持选择当前账号下的RAM用户和RAM角色。

        管理员支持的权限列表

        {
        	"Statement": [
        		{
        			"Action": [
        				"kms:List*",
        				"kms:Describe*",
        				"kms:PutSecretValue",
        				"kms:Update*",
        				"kms:DeleteSecret",
        				"kms:RestoreSecret",
        				"kms:RotateSecret",
        				"kms:TagResource",    
        				"kms:UntagResource" 
        			]
        		}
        	]
        }
      • 使用者:支持使用凭据,即获取凭据值。支持选择当前账号下的RAM用户和RAM角色。

        使用者支持的权限列表

        {
            "Statement": [
                {
                    "Action": [
                        "kms:List*",
        								"kms:Describe*",
        								"kms:GetSecretValue",
                    ]
                }
            ]
        }
      • 其他账号使用者:仅支持使用凭据,即获取凭据值。可以是其他阿里云账号的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用户授权为RAM角色授权

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

        {
            "Statement": [
                {
                    "Action": [
                        "kms:List*",
        								"kms:Describe*",
        								"kms:GetSecretValue",
                    ]
                }
            ]
        }

步骤四:应用程序集成RAM凭据

KMS提供了多种SDK,建议您按照如下优先级顺序选择SDK:

说明

KMS提供了多种认证方式,为了更高的安全性,推荐您优先使用应用接入点(AAP)的ClientKey、ECS实例RAM角色或RAM角色。

优先级

业务应用需满足的条件

支持的认证方式

接入点(Endpoint)

优先级1:RAM凭据插件

应用开发语言需要为Java(Java 8及以上版本)、Go或者Python,且业务应用使用RAM凭据插件中支持的阿里云SDK。

应用接入点(AAP)的ClientKey

根据Endpoint不同,调用的API不同:

  • (推荐)KMS实例Endpoint:调用实例API。格式为{实例ID}.cryptoservice.kms.aliyuncs.com

    说明

    实例管理页面查看实例详情,获取实例VPC地址,去掉https://后即Endpoint。

  • KMS服务Endpoint:调用OpenAPI。具体接入点,请参见接入点说明

ECS实例RAM角色

KMS服务Endpoint,调用OpenAPI,具体接入点,请参见接入点说明

优先级2:凭据管家客户端

应用开发语言需要为Java(Java 8及以上版本)、Go或者Python。

应用接入点(AAP)的ClientKey

根据Endpoint不同,调用的API不同:

  • (推荐)KMS实例Endpoint:调用实例API。格式为{实例ID}.cryptoservice.kms.aliyuncs.com

  • KMS服务Endpoint:调用OpenAPI。更多信息,请参见接入点说明

  • RAM角色

  • ECS实例RAM角色

  • AccessKey

  • STS Token

KMS服务Endpoint,调用OpenAPI,具体接入点,请参见接入点说明

优先级3:KMS实例SDK

应用开发语言需要为Java(Java 8及以上版本)、PHP、Go、Python、.NET(仅C#)。

应用接入点(AAP)的ClientKey

KMS实例Endpoint:调用实例API。格式为{实例ID}.cryptoservice.kms.aliyuncs.com

优先级4:阿里云SDK

应用开发语言需要为Java(Java 6及以上版本)、PHP、Go、Python、.NET(仅C#)、C++、Node.js。

  • ECS实例RAM角色

  • AccessKey

KMS服务Endpoint,调用OpenAPI,具体接入点,请参见接入点说明

更多操作

轮转RAM凭据

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

  2. 单击RAM凭据页签,选择实例ID后,定位到要立即轮转的凭据名称,单击操作列的详情

  3. 在凭据详情页面配置凭据轮转策略。

    • 周期性自动轮转:在页面右上角单击设置轮转策略,开启或关闭周期性自动轮转,然后单击确定

    • 立即轮转:在页面右上角单击立即轮转,在设置轮转策略对话框中设置轮转窗口(10分钟~2天),然后单击确定

删除RAM凭据

您可以选择计划删除凭据和立即删除凭据两种方式,删除不需要的凭据。删除RAM凭据仅在凭据管家中删除RAM凭据,不会在RAM中删除RAM用户的AccessKey。

警告

删除凭据前,请确认该凭据已不再使用,否则可能导致您的业务失败。

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

  2. 单击RAM凭据页签,选择实例ID后,定位到要删除的凭据名称,单击操作列的计划删除凭据

  3. 计划删除凭据对话框中,选择凭据删除方式,并单击确定

    • 计划删除凭据:设置预删除周期(7~30天),系统将在预删除周期结束后删除凭据。

    • 立即删除凭据:系统将立即删除凭据。

    在预删除周期内,您可以单击目标凭据操作列的还原凭据,取消删除操作。

为凭据配置标签

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

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

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

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

为单个凭据配置标签

方式

操作

方式一:在凭据管理页面配置标签

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

  2. 单击相应的凭据类型页签,选择实例ID后,定位到目标凭据,单击标签列的image.png图标。

  3. 单击绑定,在编辑标签对话框中输入多个标签键标签值后,单击确定,然后在变更提示对话框中单击关闭

    您也可以在编辑标签对话框中修改标签值、批量解绑标签。

方式二:在凭据详情页面配置标签

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

  2. 单击相应的凭据类型页签,选择实例ID后,定位到目标凭据,单击操作列的详情

  3. 在凭据详情页面,单击标签后的image.png图标。

  4. 编辑标签对话框中输入多个标签键标签值后,单击确定,然后在变更提示对话框中单击关闭

    您也可以在编辑标签对话框中修改标签值、批量解绑标签。

为多个凭据批量配置标签

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

  2. 单击相应的凭据类型页签,选择实例ID后,在凭据列表中勾选要操作的凭据。

    • 增加标签:在凭据列表的最下方,单击增加标签,输入多个标签键标签值后,单击确认,然后在变更提示对话框中单击关闭

    • 删除标签:在凭据列表的最下方,单击删除标签,在批量解绑标签对话框勾选要解绑的标签,单击解绑标签,然后在变更提示对话框中单击关闭

检测账号

检测账号功能可为您检测RAM凭据中的RAM用户在RAM中是否存在,以及RAM用户的AccessKey ID与凭据中内容是否一致。

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

  2. 单击RAM凭据页签,选择实例ID后,定位到目标凭据,单击操作列的详情

  3. 版本列表区域,单击检测账号,验证完成后,查看验证结果。

常见问题

设置轮转策略或立即轮转时,提示“您的凭据在轮转中,请稍后再试”

  • 本页导读 (1)
文档反馈