凭据管理概述

当业务应用中需要使用账号口令、访问密钥等凭据信息时,您可以使用KMS的凭据管理功能,将凭据信息保存在KMS的凭据中,业务应用通过集成阿里云SDK、KMS实例SDK或凭据SDK向KMS动态获取凭据信息,以避免明文存储凭据信息导致的信息泄露或系统被恶意操作风险。本文介绍凭据的应用场景、组成、轮转等基本信息。

为什么使用凭据管理

数据库账号口令、服务器账号口令、SSH Key、访问密钥等凭据的泄露,是当今数据安全面临的主要威胁之一。为了降低数据泄露的安全风险,执行有效的凭据保护和周期性轮转非常关键。使用KMS的凭据管理功能可以为您带来以下安全优势:

  • KMS对凭据值使用高安全强度的加密算法加密存储,防止凭据硬编码带来的凭据泄露以及高价值资产泄露,提升数据安全性。

  • 提供安全便捷的客户端接入方式,应用程序以无代码或者低代码的方式,动态使用凭据。

  • 具备应急处置能力,当您通过立即轮转的方式更新凭据时,应用程序和业务不受影响。

    说明

    仅对RAM凭据、RDS凭据(双账号托管)、ECS凭据,并通过凭据SDK集成时有效。

  • 支持高频次轮转的全动态凭据,缩小凭据的有效时间窗口,降低凭据被破解的风险。

  • 支持通过API、阿里云ROS或Terraform等运维编排工具,满足中心化、规模化的安全管理需求。

应用场景

以托管您自建数据库的用户名和口令为例,为您介绍基本的凭据托管和使用场景。

说明

如果您使用的是RDS数据库,更推荐您使用RDS凭据,具体请参考管理及使用RDS凭据

基本场景

  1. 安全管理员在目标数据库配置MyApp访问数据库所需的用户名和口令。

  2. 安全管理员在KMS创建一个通用凭据,凭据名为“MyDbCreds”,用来托管上述用户名和口令。

  3. 当MyApp需要访问数据库时,通过凭据客户端SDK向KMS请求凭据MyDbCreds。

  4. KMS读取到存储的凭据密文,解密后将明文通过HTTPS返回给MyApp。

  5. MyApp读取并解析KMS返回的凭据明文,获取到用户名和口令,使用该账号可以访问目标数据库。

对应用MyApp而言,通过调用KMS的API来获取访问数据库的用户名和口令,避免了在程序中硬编码凭据带来的信息泄露风险。硬编码凭据和使用KMS的应用程序之间的差异,如下图所示。

凭据差异

凭据的组成

凭据由元数据、一或多个凭据版本组成。您可以登录密钥管理服务控制台,在凭据管理页面查看凭据详情。

  • 元数据

    包含凭据名称、ARN、创建时间、凭据类型、加密密钥、标签等信息。

    重要

    加密密钥仅用于加密凭据值,不加密凭据的元数据信息。密钥和凭据需要属于同一个KMS实例,且密钥必须为对称密钥。

    image.png

  • 凭据版本

    一个凭据可以有多个凭据版本。每个凭据版本包含版本号、版本状态、凭据值。

    image.png

    • 版本号:只能在存入凭据值时被写入,在凭据内唯一且不支持修改。一个版本号可以关联多个版本状态,但每个版本状态只能关联一个版本号。

    • 版本状态:在凭据内唯一,包含内置版本状态、自定义版本状态。

      • 内置版本状态:

        • ACSCurrent:凭据的当前版本,即最新存入的凭据值的状态。

        • ACSPrevious:凭据的上一个版本。

        • ACSPendding待处理版本,轮转过程中会产生该版本,轮转完成后不会出现该状态。

          说明
          • 通过接口获取凭据值时读取ACSCurrent对应的凭据值。

          • 内置版本状态类似指针。例如,第一次存入一个凭据版本,版本号设置为v1,存入后内置版本状态为ACSCurrent,此时继续存入一个凭据版本,版本号设置为v2,则v2对应的内置版本状态为ACSCurrent,v1对应的版本状态会自动改为ACSPrevious

      • 自定义版本状态:每个凭据版本可以自定义多个版本状态。

    • 凭据值:您存入的凭据信息,可以是字符串或二进制值。

    说明

    当凭据的版本数超过上限时,最早的可回收版本(没有关联版本状态的版本)会被删除。

凭据轮转

凭据轮转即基于凭据支持多个版本的特征,通过存入新的凭据版本来更新凭据,以提升凭据的安全性。新存入的凭据版本其状态会设置为ACSCurrent,业务应用会动态读取ACSCurrent对应的凭据值。

轮转过程

image

轮转方式

  • 周期性自动轮转:设置轮转周期后,您无需关注轮转的过程以及时间,到期后KMS自动完成轮转。RAM凭据、RDS凭据、ECS凭据支持您在KMS配置轮转周期,通用凭据不支持在KMS配置轮转周期,但您可以通过函数计算编码的方式设置轮转周期。

  • 立即轮转:当您的凭据泄露时,可以通过立即轮转进行应急处理。RAM凭据、RDS凭据、ECS凭据,支持立即轮转,通用凭据仅支持通过手动存入凭据值进行立即轮转。

支持的凭据类型

KMS支持四种凭据类型:通用凭据、RAM凭据、RDS凭据、ECS凭据,不同类型凭据的详细说明见下表。

说明
  • RAM凭据、RDS凭据和ECS凭据为全托管式的凭据管理模式。您在KMS托管这三类凭据后,您应仅在KMS对凭据进行轮转,不能在对应产品中对凭据进行状态、删除等操作,否则KMS将无法对凭据进行轮转,您应用程序从KMS获取的凭据也无法正常使用。

  • 如果您需要亲自管理凭据的轮转(版本及状态),可使用通用凭据。

凭据类型

说明

凭据轮转方式

参考文档

通用凭据

通用凭据(Generic Secret)是KMS支持的基础类型凭据。您可以使用通用凭据存储账号口令、访问密钥、OAuth密钥和Token、API Key等任意的敏感数据。

  • 通过存入新凭据值(即创建新的凭据版本)立即轮转凭据。

  • 通过函数计算编码的方式周期性轮转凭据。

管理及使用通用凭据

RAM凭据

RAM凭据是KMS支持的一种全托管类型的凭据。您可以使用RAM凭据托管RAM用户的访问密钥(AccessKey)。

  • 在KMS配置周期性轮转。

  • 在KMS操作立即轮转。

管理及使用RAM凭据

RDS凭据

RDS凭据是KMS支持的一种全托管类型的凭据,可用于托管RDS(阿里云关系型数据库)实例的数据库账号和密码。

  • 在KMS配置周期性轮转。

  • 在KMS操作立即轮转。

管理及使用RDS凭据

ECS凭据

ECS凭据是KMS支持的一种全托管式凭据,可用于托管用于登录ECS实例时使用的用户名/口令和SSH密钥。

  • 在KMS配置周期性轮转。

  • 在KMS操作立即轮转。

管理及使用ECS凭据

如何计费

使用凭据前,您需要先购买KMS实例,购买时设置凭据配额。KMS实例的费用,请参见产品计费。关于如何购买KMS实例,请参见购买和启用KMS实例

访问控制与审计

基于访问控制 RAM(Resource Access Management),限制用户对凭据的访问和操作权限,以保护凭据的安全性。如何配置权限策略,请参见使用RAM实现对资源的访问控制

基于操作审计(ActionTrail),支持对凭据的创建、轮转、读取等操作进行记录。具体操作,请参见查询密钥和凭据的使用记录

相关文档