通过本文您可以了解凭据的元数据、版本和版本状态。

为了更方便的支持对凭据进行轮换,KMS凭据管家对凭据对象内建了支持多版本以及对版本进行状态标记。如果您仅使用凭据托管和保护的功能,而不关心凭据的轮转,则您托管的凭据对象内只有一个版本。凭据管家默认将第一个版本标记为当前版本。凭据对象的完整模型如下图所示。

SecretObject

凭据的元数据

凭据的元数据主要有以下属性:

  • 凭据名称

    当您访问KMS凭据管家相关接口时,用来指代凭据。

  • 加密密钥标识符

    您托管的凭据包含了敏感信息,凭据管家通过加密对其进行保护。您可以指定一个KMS主密钥或依赖凭据管家的默认系统加密,详情请参见加密保护凭据

  • 描述信息

    凭据的描述信息用来帮助您更方便的管理凭据。

  • 资源标签

    凭据和KMS的其他资源一样,也支持标签管理。

凭据的版本

凭据对象支持多个版本,通过版本号标识。您存入到凭据对象中的敏感数据(凭据值)被存储为一个凭据版本。凭据的版本有以下特征:

  • 凭据管家加密保护的是每个版本的凭据值:凭据值调用CreateSecretPutSecretValue接口的SecretData参数指定,在服务端被加密后存储。可以调用GetSecretValue接口获取被解密后的明文。
  • 每个版本号所标识的凭据版本只能被写入一次:您不能调用PutSecretValue接口修改某个版本的凭据值。如果您使用同一个版本号多次存入同一个凭据值,则效果是幂等的;如果您使用已有版本的版本号,存入一个新的凭据值,则请求会被拒绝。

版本的状态

凭据管家的使用方式如下:
  • 仅托管凭据

    您只使用凭据托管的功能而不对凭据进行轮转,因此凭据对象只有一个凭据值,即当前版本。

  • 托管且轮转凭据

    您需要对凭据进行轮转,轮转过程中新的凭据值被存入到一个新的版本,当前版本从老版本切换为新的版本。此后应用程序获取的当前版本会自动更新。

在上述场景中,使用凭据的应用程序仅需要获取当前版本的凭据值。当前版本指版本的状态(Version Stage),凭据管家通过将状态标记(Stage Label)关联到凭据版本的方式来设置版本的状态。凭据管家内建了ACSCurrentACSPrevious两个状态标记,用来表示当前和先前两个版本状态。凭据管家内建状态标记的规则如下:

  • 有且仅有一个当前版本

    当前版本被标记为ACSCurrentGetSecretValue接口默认情况下返回ACSCurrent标记的版本凭据值。

  • 自动变更当前版本和先前版本

    当您调用PutSecretValue接口存入新的凭据值时,如果您不指定新版本的状态,则新版本被默认标记为ACSCurrent

    当您调用PutSecretValueUpdateSecretVersionStage接口变更了ACSCurrent标记的版本,ACSCurrent标记的上一个版本会被标记为ACSPrevious,即先前版本。

除了ACSCurrentACSPrevious内建版本状态之外,您可以使用自定义状态标记来定义额外的版本状态。内建和自定义的状态标记都适用以下规则:

  • 指针规则

    一个状态标记类似一个指针,只能用来标记(指向)一个版本;而每个版本可以被标记零个到多个版本状态。

  • 回收规则

    如果一个版本没有被标记版本状态,则被认为是可回收的(Deprecated)。当凭据内的版本数超过上限时,最老的可回收版本会被删除(回收)。