本文以命令行工具(CLI)为例,为您介绍如何管理通用凭据(Generic Secrets)。您也可以通过阿里云控制台或API管理通用凭据。

创建通用凭据

  • 示例1:创建通用凭据时不指定加密密钥

    执行以下命令调用CreateSecret接口创建通用凭据,KMS凭据管家会使用系统默认加密的方式保护凭据值。

     aliyun kms CreateSecret \
        --SecretName db_cred \
        --SecretData "{\"uname\": \"alice\", \"pwd\": \"12****\"}" \
        --VersionId v1

    KMS返回以下结果:

    {
      "Arn": "acs:kms:cn-shanghai:111760096384****:secret/db_cred",
      "RequestId": "ef0e4234-085c-4676-9ab6-159f2338aaf0",
      "SecretName": "db_cred",
      "SecretType": "Generic",
      "VersionId": "v1"
    }
  • 示例2:创建通用凭据时指定加密密钥

    执行以下命令调用CreateSecret接口创建通用凭据,KMS凭据管家使用指定的用户主密钥(CMK)对凭据进行加密。

     aliyun kms CreateSecret \
        --SecretName ssh_key \
        --SecretData ssh-key-blob \
        --VersionId v1 \
        --EncryptionKeyId Example-CMK-Id
    说明
    • KMS凭据管家使用指定的CMK产生数据密钥,用于加密保护凭据的明文数据。
    • 如果创建通用凭据时指定加密密钥,CreateSecret的调用者还需要具备指定CMK的kms:GenerateDataKey权限。

    KMS返回以下结果:

    {
      "Arn": "acs:kms:cn-shanghai:111760096384****:secret/ssh_key",
      "RequestId": "ef0e4234-085c-4676-9ab6-159f2338aaf0",
      "SecretName": "ssh_key",
      "SecretType": "Generic",
      "VersionId": "v1"
    }

查询通用凭据列表

执行以下命令调用ListSecrets接口查询通用凭据列表。

aliyun kms ListSecrets    

KMS返回以下结果:

{
    "SecretList": {
        "Secret": [
            {
                "SecretName": "db_cred",
                "SecretType": "Generic",
                "CreateTime": "2020-01-22T03:55:18Z",
                "UpdateTime": "2020-01-22T03:55:18Z"
            },
            {
                "SecretName": "ssh_key",
                "SecretType": "Generic",
                "CreateTime": "2020-01-22T03:57:09Z",
                "UpdateTime": "2020-01-22T03:57:09Z"
            }
        ]
    },
    "RequestId": "75aebbde-be68-4cab-ba6e-e4925b61****",
    "PageNumber": 1,
    "PageSize": 10,
    "TotalCount": 2
}

查询通用凭据的凭据值

执行以下命令调用GetSecretValue接口查询通用凭据的凭据值。

aliyun kms GetSecretValue --SecretName ssh_key

KMS返回以下结果:

{
  "CreateTime": "2021-07-08T05:51:50Z",
  "RequestId": "1415f5c7-ecb2-495e-8051-4cd466022c1f",
  "SecretData": "{\"test\":\"test\"}",
  "SecretDataType": "text",
  "SecretName": "ssh_key",
  "SecretType": "Generic",
  "VersionId": "v1",
  "VersionStages": {
    "VersionStage": [
      "ACSCurrent"
    ]
  }
}

查询通用凭据元数据信息

执行以下命令调用DescribeSecret接口查询通用凭据元数据信息。

aliyun kms DescribeSecret --SecretName ssh_key

KMS返回以下结果:

{
    "Arn": "acs:kms:cn-shanghai:111760096384****:secret/ssh_key",
    "SecretName": "ssh_key",
    "SecretType": "Generic",
    "EncryptionKeyId": "Example-CMK-Id",
    "Description": "",
    "CreateTime": "2020-01-22T03:57:09Z",
    "UpdateTime": "2020-01-22T03:57:09Z",
    "RequestId": "ca61398f-e61e-4552-aa7e-957955f6125s"
}

删除通用凭据

  • 执行以下命令调用DeleteSecret接口删除通用凭据。
    • 默认情况下,删除的凭据可以在30天内恢复。
      aliyun kms DeleteSecret --SecretName ssh_key 

      KMS返回以下结果:

      {
          "SecretName": "ssh_key",
          "RequestId": "3e54b02b-6461-46bb-afd5-dbd29d96eead",
          "PlannedDeleteTime": "2020-02-21T04:24:04.58616562Z"
      }
    • 删除凭据时,可以指定恢复窗口为7天。
      aliyun kms DeleteSecret --SecretName ssh_key --RecoveryWindowInDays 7

      KMS返回以下结果:

      {
          "SecretName": "ssh_key",
          "RequestId": "95ec4f18-8f97-4fd5-b7c6-1588979dse4s",
          "PlannedDeleteTime": "2020-01-29T04:25:14.165242211Z"
      }
    • 删除凭据时,如果指定强制删除,则不允许恢复。
      aliyun kms DeleteSecret --SecretName ssh_key --ForceDeleteWithoutRecovery true

      KMS返回以下结果:

      {
          "SecretName": "ssh_key",
          "RequestId": "75efc9c3-8e21-4e38-b6e4-486886be1546",
          "PlannedDeleteTime": "2020-01-22T12:28:22.006884739+08:00"
      }
  • 执行以下命令调用RestoreSecret接口,在恢复窗口期内恢复凭据。
    aliyun kms RestoreSecret --SecretName ssh_key  

    KMS返回以下结果:

    {
        "RequestId": "12770cee-92af-42f5-88e0-cbaa7e0c1254",
        "SecretName": "ssh_key"
    }

轮转通用凭据

如果您需要对凭据进行轮转,请参见轮转通用凭据