文档

凭据管理快速入门

更新时间:

您可以使用Key Management Service创建凭据,在应用程序中集成您的凭据信息,实现对敏感数据的统一管理。本文介绍如何创建凭据以及如何在应用程序中集成凭据信息。

背景信息

KMS提供凭据的创建、更新、删除等全生命周期的管理服务,应用程序通过SDK来获取凭据,解决您在应用程序中硬编码凭据带来的敏感数据泄露问题。

KMS支持托管通用凭据、RAM凭据、RDS凭据和ECS凭据。关于凭据的更多信息,请参见凭据管理概述

注意事项

KMS使用您指定的密钥来加密凭据值,该密钥和凭据需要属于同一个KMS实例,且密钥必须为对称密钥。关于KMS支持哪些对称密钥,请参见密钥管理类型

前提条件

步骤一:创建凭据

创建凭据时支持设置轮转信息,KMS将定期为您更新凭据值,保护您的凭据安全。

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

  2. 凭据管理页面单击您要创建的凭据页签,选择实例ID后,单击创建凭据,完成各项配置后单击确定

    凭据管家快速入门

    • 通用凭据

      配置项

      说明

      凭据名称

      自定义的凭据名称。

      设置凭据值

      根据您要托管的敏感数据类型,选择凭据键/值纯文本

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

      初始版本号

      凭据的初始版本号。默认为v1,也支持自定义版本号。

      加密主密钥

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

      重要

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

      标签

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

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

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

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

      描述信息

      凭据的描述信息。

      高级设置

      凭据的策略配置。

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

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

        • 实例已共享给其他账号:以主账号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凭据

      配置项

      说明

      选择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",
                      ]
                  }
              ]
          }
    • RDS凭据

      配置项

      说明

      凭据名称

      自定义的凭据名称。

      选择RDS实例

      选择阿里云账号下已有的RDS实例。

      设置凭据值

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

      • 双账号托管(推荐):适用于程序化访问数据库场景。托管两个相同权限的账号,保证口令重置切换的瞬间,程序访问数据库不被中断。

        • 单击一键创建和授权页签,配置账号名、选择数据库并指定权限。

          说明

          一键创建和授权不会立即为您配置新的账号,而是在您审核确认凭据信息之后进行配置。

        • 单击导入已有账号页签,选择用户名、配置口令。

          说明

          建议您将口令配置为创建RDS实例用户账号时对应的密码。如果导入的账号和口令不匹配,您可以在凭据首次轮转之后,获取正确的账号和口令。

      • 单账号托管:适用于高权限账号或者人工运维账号托管场景。口令重置切换的瞬间,凭据的当前版本可能暂时无法使用。

        • 单击一键创建和授权页签,配置账号名、选择账号类型。

          您可以选择普通账号高权限账号两种账号类型。当您选择普通账号时,还需选择数据库并指定权限。

        • 单击导入已有账号页签,选择用户名、配置口令。

      加密主密钥

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

      重要

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

      标签

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

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

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

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

      自动轮转

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

      轮转周期

      仅当开启自动轮转时需要设置。支持设置为6小时~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",
                      ]
                  }
              ]
          }
    • ECS凭据

      配置项

      说明

      凭据名称

      自定义的凭据名称。

      托管实例

      选择阿里云账号下已有的ECS实例。

      托管用户

      填写ECS实例上已有的用户名称,例如:root(Linux系统)或Administrator(Windows系统)。

      初始凭据值

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

      • 口令:用户登录ECS实例的密码。

      • 密钥对:用户登录ECS实例的SSH密钥对。

        获取SSH密钥对

        • 您是在ECS创建的SSH密钥对

          • 私钥:创建SSH密钥对后,浏览器自动下载私钥文件(密钥对名称.pem)到本地电脑。详细内容,请参见创建SSH密钥对

          • 公钥:如何查看公钥信息,请参见查看公钥信息

        • 您是自行生成的SSH密钥对

          请在生成密钥对的同时保存私钥和公钥。以使用ssh-keygen命令生成并保存3072位RSA密钥对为例。

          ssh-keygen -t RSA -b 3072 -m PEM -f ~/.ssh/sshKey_demo -N ""

          执行完成后,会生成两个文件:

          • ~/.ssh/sshKey_demo:其中保存的是私钥。

          • ~/.ssh/sshKey_demo.pub:其中保存的是公钥。

      说明

      请您输入正确的凭据值。如果输入的凭据值不正确,在ECS凭据首次轮转前,您从KMS获取到的口令或密钥对将不能正常登录ECS实例。

      加密主密钥

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

      重要

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

      标签

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

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

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

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

      自动轮转

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

      轮转周期

      仅当开启自动轮转时需要设置。支持设置为1小时~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",
                      ]
                  }
              ]
          }

步骤二:应用程序获取凭据

您可以通过阿里云SDK、KMS实例SDK、凭据SDK(凭据客户端、凭据JDBC客户端、RAM凭据插件)来获取凭据值。详细介绍,请参见SDK参考。本文以凭据客户端Java版为例进行介绍,更多信息,请参见凭据客户端

说明
  • 凭据客户端支持所有凭据类型,针对特定凭据,KMS还提供了凭据JDBC客户端、RAM凭据插件,在创建客户端时即可自动获取凭据,更便于您集成。更多信息,请参见RAM凭据插件凭据JDBC客户端

  • 如果您使用阿里云SDK、KMS实例SDK,请您做好凭据缓存等业务逻辑,避免网络抖动获取凭据值失败。

  • 获取凭据值时,无论您使用哪种SDK,在获取失败时做好错误重试的业务逻辑。

准备工作

  1. 安装凭据客户端(Java)。

    通过Maven在项目中添加依赖,安装凭据客户端。示例代码:

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibabacloud-secretsmanager-client</artifactId>
        <version>x.x.x</version>
    </dependency>
    说明

    请确保凭据客户端版本为1.3.2及以上版本。

  2. 通过配置文件(secretsmanager.properties)来配置凭据客户端运行参数。

    以通过环境变量提供client key文件的口令为例,示例代码:

    cache_client_dkms_config_info=[{"regionId":"<your KMS instance region>","endpoint":"<your KMS instance  endpoint>","passwordFromEnvVariable":"<your_password_env_variable>","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your KMS instanceCA certificate file path>"}]
    说明

    您还需要在运行应用程序的服务器中设置环境变量,环境变量名称即您在passwordFromEnvVariable中指定的名称,环境变量的值为ClientKey文件的凭证口令。

获取凭据

在您的应用程序中构建凭据客户端后,使用构建好的客户端获取凭据信息。示例代码如下:

import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;

public class SecretCacheClientSample {

    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newClient();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}

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