当业务应用中需要使用账号口令、访问密钥等凭据信息时,您可以使用KMS的凭据管理功能,将凭据信息保存在KMS的凭据中,业务应用通过集成阿里云SDK、KMS实例SDK或凭据SDK向KMS动态获取凭据信息,以避免明文存储凭据信息导致的信息泄露或系统被恶意操作风险。本文介绍凭据的应用场景、组成、轮转等基本信息。
为什么使用凭据管理
数据库账号口令、服务器账号口令、SSH Key、访问密钥等凭据的泄露,是当今数据安全面临的主要威胁之一。为了降低数据泄露的安全风险,执行有效的凭据保护和周期性轮转非常关键。使用KMS的凭据管理功能可以为您带来以下安全优势:
KMS对凭据值使用高安全强度的加密算法加密存储,防止凭据硬编码带来的凭据泄露以及高价值资产泄露,提升数据安全性。
提供安全便捷的客户端接入方式,应用程序以无代码或者低代码的方式,动态使用凭据。
具备应急处置能力,当您通过立即轮转的方式更新凭据时,应用程序和业务不受影响。
说明仅对RAM凭据、RDS凭据(双账号托管)、ECS凭据,并通过凭据SDK集成时有效。
支持高频次轮转的全动态凭据,缩小凭据的有效时间窗口,降低凭据被破解的风险。
支持通过API、阿里云ROS或Terraform等运维编排工具,满足中心化、规模化的安全管理需求。
应用场景
以托管您自建数据库的用户名和口令为例,为您介绍基本的凭据托管和使用场景。
如果您使用的是RDS数据库,更推荐您使用RDS凭据,具体请参考RDS凭据。
安全管理员在目标数据库配置MyApp访问数据库所需的用户名和口令。
安全管理员在KMS创建一个通用凭据,凭据名为“MyDbCreds”,用来托管上述用户名和口令。
当MyApp需要访问数据库时,通过凭据客户端SDK向KMS请求凭据MyDbCreds。
KMS读取到存储的凭据密文,解密后将明文通过HTTPS返回给MyApp。
MyApp读取并解析KMS返回的凭据明文,获取到用户名和口令,使用该账号可以访问目标数据库。
对应用MyApp而言,通过调用KMS的API来获取访问数据库的用户名和口令,避免了在程序中硬编码凭据带来的信息泄露风险。硬编码凭据和使用KMS的应用程序之间的差异,如下图所示。
凭据的组成
凭据由元数据、一或多个凭据版本组成。您可以登录密钥管理服务控制台,在凭据管理页面查看凭据详情。
元数据
包含凭据名称、ARN、创建时间、凭据类型、加密密钥、标签等信息。
重要加密密钥仅用于加密凭据值,不加密凭据的元数据信息。密钥和凭据需要属于同一个KMS实例,且密钥必须为对称密钥。
凭据版本
一个凭据可以有多个凭据版本。每个凭据版本包含版本号、版本状态、凭据值。
版本号:只能在存入凭据值时被写入,在凭据内唯一且不支持修改。一个版本号可以关联多个版本状态,但每个版本状态只能关联一个版本号。
版本状态:在凭据内唯一,包含内置版本状态、自定义版本状态。
内置版本状态:
ACSCurrent:凭据的当前版本,即最新存入的凭据值的状态。
ACSPrevious:凭据的上一个版本。
ACSPending:待处理版本,轮转过程中会产生该版本,轮转完成后不会出现该状态。
说明通过接口获取凭据值时读取ACSCurrent对应的凭据值。
内置版本状态类似指针。例如,第一次存入一个凭据版本,版本号设置为v1,存入后内置版本状态为ACSCurrent,此时继续存入一个凭据版本,版本号设置为v2,则v2对应的内置版本状态为ACSCurrent,v1对应的版本状态会自动改为ACSPrevious。
自定义版本状态:每个凭据版本可以自定义多个版本状态。
凭据值:您存入的凭据信息,可以是字符串或二进制值。
说明当凭据的版本数超过上限时,最早的可回收版本(没有关联版本状态的版本)会被删除。
凭据轮转
凭据轮转即基于凭据支持多个版本的特征,通过存入新的凭据版本来更新凭据,以提升凭据的安全性。新存入的凭据版本其状态会设置为ACSCurrent,业务应用会动态读取ACSCurrent对应的凭据值。
轮转过程
轮转方式
周期性自动轮转:设置轮转周期后,您无需关注轮转的过程以及时间,到期后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)。 |
| |
RDS凭据 | RDS凭据是KMS支持的一种全托管类型的凭据,可用于托管RDS(阿里云关系型数据库)实例的数据库账号和密码。 |
| |
ECS凭据 | ECS凭据是KMS支持的一种全托管式凭据,可用于托管用于登录ECS实例时使用的用户名/口令和SSH密钥。 |
|
如何计费
使用凭据前,您需要先购买KMS实例,购买时设置凭据配额。KMS实例的费用,请参见产品计费。关于如何购买KMS实例,请参见购买和启用KMS实例。
访问控制与审计
基于访问控制 RAM(Resource Access Management),限制用户对凭据的访问和操作权限,以保护凭据的安全性。如何配置权限策略,请参见密钥管理服务自定义权限策略参考。
基于操作审计(ActionTrail),支持对凭据的创建、轮转、读取等操作进行记录。具体操作,请参见查询密钥和凭据的使用记录。