全部產品
Search
文件中心

Key Management Service:CreateSecret - 建立憑據

更新時間:Aug 21, 2025

建立憑據並存入憑據的初始版本。

介面說明

  • RAM 使用者或 RAM 角色調用該 OpenAPI 需要被授與權限策略詳情,請參見存取控制

  • 您需要指定憑據名稱、初始版本的憑據值和版本號碼。初始版本的狀態被標記為 ACSCurrent。

  • KMS 使用您指定的金鑰組憑據值進行加密保護,密鑰和憑據需要屬於同一個 KMS 執行個體,且密鑰必須為對稱金鑰。

    說明

    KMS 對每個版本的憑據值進行加密,憑據名稱、版本號碼、版本的狀態標記等中繼資料不會被加密。

  • 您對憑據值進行加密前,需要具備密鑰的kms:GenerateDataKey許可權。

本文將提供一個樣本,建立一個名稱為mydbconninfo、初始版本號碼VersionIdv1、憑據值SecretData{"Accounts":[{"AccountName":"user1","AccountPassword":"****"}]}的 RDS 憑據。

調試

您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。

調試

授權資訊

當前API暫無授權資訊透出。

請求參數

名稱

類型

必填

描述

樣本值

SecretName

string

憑據名稱。 憑據名稱在當前地區下唯一。 長度不超過 192 個字元,可包含英文字母、數字、底線(_)、正斜線(/)、加號(+)、等號(=)、半形句號(.)、短劃線(-)和字元(@)。不同類型的憑據名稱要求如下:

  • 當 SecretType 取值為 Generic(通用憑據)、Rds(RDS 憑據)、Redis(Redis/Tair 憑據)時,不能以acs/開頭。

  • 當 SecretType 取值為 RAMCredentials(RAM 憑據)時,使用固定值$Auto。此時 KMS 自動產生憑據名稱,以acs/ram/user/開頭,包含 RAM 使用者顯示名稱。

  • 當 SecretType 取值為 ECS(ECS 憑據)時,必須以acs/ecs/開頭。

mydbconninfo

VersionId

string

初始版本的版本號碼,版本號碼在該憑據內唯一。 長度不超過 64 個字元。

v1

EncryptionKeyId

string

用於加密憑據值的金鑰識別碼。

說明

密鑰和憑據需要屬於同一個 KMS 執行個體,且密鑰必須為對稱金鑰。

key-gzz63ff0db5hg3qje****

SecretData

string

憑據值。長度不超過 30720 位元組(30KB)。KMS 使用指定的金鑰組其加密後,存入初始版本中。

  • 當 SecretType 取值為 Generic(通用憑據)時,您可以自訂憑據值。

  • 當 SecretType 取值為 Rds(RDS 憑據)時,憑據值格式為:{"Accounts":[{"AccountName":"","AccountPassword":""}]}。其中,AccountName為 RDS 執行個體的帳號名稱,AccountPassword為 RDS 執行個體的帳號口令。

  • 當 SecretType 取值為 Redis(Redis 憑據)時,參數傳值為 $Auto

  • 當 SecretType 取值為 RAMCredentials(RAM 憑據)時,憑據值格式為:{"AccessKeys":[{"AccessKeyId":"","AccessKeySecret":""}]}。其中,AccessKeyId是存取金鑰 ID,AccessKeySecret是存取金鑰內容。您需要指定 RAM 使用者的所有 AccessKey。

  • 當 SecretType 取值為 PolarDB 時,參數傳值為 $Auto

  • 當 SecretType 取值為 ECS(ECS 憑據)時,憑據值格式為:

    • 當 ExtendedConfig 參數中 SecretSubType 取值為 Password 時:{"UserName":"","Password": ""}。其中,UserName為登入 ECS 執行個體的使用者名稱,Password為登入 ECS 執行個體的密碼。

    • 當 ExtendedConfig 參數中 SecretSubType 取值為 SSHKey 時:{"UserName":"","PublicKey": "", "PrivateKey": ""}。其中,PublicKey為登入 ECS 執行個體的 SSH 格式公開金鑰,PrivateKey為登入 ECS 執行個體的私密金鑰。

{"Accounts":[{"AccountName":"user1","AccountPassword":"****"}]}

SecretDataType

string

憑據實值型別。取值:

  • text(預設值):文本類型

  • binary:二進位類型

說明

當 SecretType 取值為 Rds、Redis、PolarDB、RAMCredentials 或 ECS 時,SecretDataType 取值只能為 text。

text

Description

string

憑據的描述資訊。

mydbinfo

Tags

string

憑據的標籤。每個標籤由一個索引值對(Key:Value)組成,包含標籤鍵(Key)、標籤值(Value)。

標籤建和標籤值的格式:最多支援 128 個字元,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、底線(_)、短劃線(-)、半形句號(.)、加號(+)、等號(=)、半形冒號(:)、字元 at(@)。

  • 標籤鍵不能以 aliyun 或 acs:開頭。

  • 每個憑據最多可以設定 20 個標籤索引值對。

[{\"TagKey\":\"key1\",\"TagValue\":\"val1\"},{\"TagKey\":\"key2\",\"TagValue\":\"val2\"}]

SecretType

string

憑據類型。取值:

  • Generic(預設值):通用憑據。

  • Rds:RDS 憑據。

  • Redis:Redis 憑據。

  • RAMCredentials:RAM 憑據。

  • ECS:ECS 憑據。

  • PolarDB:PolarDB 憑據。

Rds

ExtendedConfig

object

憑據的拓展配置,用於指定特定憑據類型的屬性。長度不超過 1024 個字元。

  • 當 SecretType 取值為 Generic(通用憑據)時,忽略該參數。

  • 當 SecretType 取值為 Rds(RDS 憑據)時,需要指定 ExtendedConfig 的如下參數:

    • SecretSubType(必填):憑據子類型。取值:

      • SingleUser:指定憑據管家以單帳號模式 RDS 憑據。憑據輪轉時,指定帳號的口令會被重設為新的隨機口令。

      • DoubleUsers:指定憑據管家以雙帳號模式 RDS 憑據,ACSCurrent 和 ACSPrevious 分別引用其中一個帳號。憑據輪轉時,ACSPrevious 引用帳號的口令會被重設為新的隨機口令,隨後憑據管家交換 ACSCurrent 和 ACSPrevious 對 RDS 帳號的引用。

    • DBInstanceId(必填):指定 RDS 帳號所在的 RDS 執行個體 ID。

    • CustomData(可選):自訂資料。取值為 JSON 格式的索引值對,最多不超過 10 個索引值對,多個索引值對用半形逗號(,)間隔。取值樣本:{"Key1": "v1", "fds":"fdsf"}。預設值為空白{}

  • 當 SecretType 取值為 Redis(Redis 憑據)時,需要指定 ExtendedConfig 的如下參數:

    • SecretSubType(必填):憑據子類型。取值:
      • DoubleUsers:指定憑據管家以雙帳號模式 Redis 憑據,ACSCurrent 和 ACSPrevious 分別引用其中一個帳號。憑據輪轉時,ACSPrevious 引用帳號的口令會被重設為新的隨機口令,隨後憑據管家交換 ACSCurrent 和 ACSPrevious 對 Redis 帳號的引用。

    • AccountName(必填):資料庫使用者名稱。

    • CloneAccountName(必填):資料庫使用者名稱,為 AccountName 加上尾碼_clone

    • AccountPrivilege(必填):訪問資料庫的許可權。

    • InstanceId(必填):Redis 執行個體 ID。

    • RegionId(必填):Redis 執行個體所在地區 ID。

    • CustomData(可選):自訂資料。取值為 JSON 格式的索引值對,最多不超過 10 個索引值對,多個索引值對用半形逗號(,)間隔。取值樣本:{"Key1": "v1", "fds":"fdsf"}。預設值為空白{}

  • 當 SecretType 取值為 RAMCredentials(RAM 憑據)時,需要指定 ExtendedConfig 的如下參數:

    • SecretSubType(必填):憑據子類型。取值: RamUserAccessKey。

    • UserName(必填):RAM 使用者名稱稱。

    • CustomData(可選):自訂資料。取值為 JSON 格式的索引值對,最多不超過 10 個索引值對,多個索引值對用半形逗號(,)間隔。預設值為空白{}

  • 當 SecretType 取值為 ECS(ECS 憑據)時,需要指定 ExtendedConfig 的如下參數:

    • SecretSubType(必填):憑據子類型。取值:

      • Password:ECS 口令。

      • SSHKey:ECS SSH 公私密金鑰。

    • RegionId(必填):ECS 執行個體所在地區 ID。

    • InstanceId(必填):ECS 執行個體 ID。

    • CustomData(可選):自訂資料。取值為 JSON 格式的索引值對,最多不超過 10 個索引值對,多個索引值對用半形逗號(,)間隔。預設值為空白{}

  • 當 SecretType 取值為 PolarDB 時,需要指定 ExtendedConfig 的如下參數:

    • SecretSubType(必填):DoubleUsers(固定值)

    • RegionId(必填): 地區

    • DBClusterId(必填):PolarDB 執行個體 ID

    • DBType(必填): MySQL、PostgreSQL

    • AccountName(必填): 帳號名字

    • CloneAccountName:AccountName_clone

    • AccountType:帳號類型僅支援 Normal

    • AccountPrivilege: 僅 MySQL 可以填

    • DBName:僅 MySQL 可以填

    • CustomData(可選):自訂資料。取值為 JSON 格式的索引值對,最多不超過 10 個索引值對,多個索引值對用半形逗號(,)間隔。取值樣本:{"Key1": "v1", "fds":"fdsf"}。預設值為空白{}。

說明

當 SecretType 取值為 Rds、Redis、PolarDB、RAMCredentials 或 ECS 時,必須設定該參數。

{"SecretSubType":"SingleUser", "DBInstanceId":"rm-bp1b3dd3a506e****" ,"CustomData":{"Key1": "v1", "fds":"fdsf"}}

EnableAutomaticRotation

boolean

是否開啟自動輪轉,取值:

  • true:開啟自動輪轉。

  • false(預設值):不開啟自動輪轉。

說明

當 SecretType 取值為 Rds(RDS 憑據)、PolarDB(PolarDB 憑據)、Redis(Redis 憑據)、RAMCredentials(RAM 憑據)或 ECS(ECS 憑據)時,該參數有效。當 SecretType 取值為 Generic(通用憑據)時,不支援自動輪轉,您可通過 PutSecretValue 操作手工輪轉。

true

RotationInterval

string

自動輪轉的周期。取值範圍:6 小時~8,760 小時(365 天)。
格式為integer[unit],其中integer表示時間長度,unit表示時間單位。
unit 取值:d(天)、h(小時)、m(分鐘)、s(秒)。例如:7d 或者 604,800s 均表示 7 天的周期。




說明

僅當 EnableAutomaticRotation 取值為 true 時,必須設定該參數,否則無需設定。

30d

DKMSInstanceId

string

KMS 執行個體的執行個體 ID。

kst-bjj62d8f5e0sgtx8h****

Policy

string

憑據策略的具體內容,JSON 格式。最大長度為 32768 個位元組。

關於憑據策略的詳細介紹,請參見憑據策略概述。不輸入該參數時,使用預設憑據策略。

憑據策略內容包含:

  • Version:憑據策略的版本,目前版本僅支援設定為 1。

  • Statement:憑據策略的語句,每個憑據策略包含一個或多個語句。

憑據策略格式為:

{
    "Version": "1",
    "Statement": [
        {
            "Sid": "Enable RAM User Permissions",
            "Effect": "Allow",
            "Principal": {
              "RAM": ["acs:ram::12345678****:*"]
            },
            "Action": [
                "kms:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Statement 詳細介紹:

  • Sid:可選,表示自訂的語句標識符。內容長度小於等於 128 字元,支援的字元為:大寫英文字母(A-Z)、小寫英文字母(a-z)、數字(0-9),特殊字元( _/+=.@-)。

  • Effect:必選,表示是允許還是拒絕該策略語句中的許可權。取值為:Allow 或 Deny。

  • Principal:必選,表示權限原則的授權主體,支援設定為當前阿里雲帳號(即憑據所屬的阿里雲帳號),當前阿里雲帳號下的 RAM 使用者、RAM 角色,其他阿里雲帳號下的 RAM 使用者、RAM 角色。

  • Action:必選,表示要允許或拒絕的 API 操作,內容必須以"kms:"開頭。操作許可權列表的範圍,請參見憑據策略概述。如果您設定了列表外的操作,設定後也不會生效。

  • Resource:必選,取值只能是*,表示本 KMS 憑據。

  • Condition:可選,表示授權生效的限制條件。通過使用條件可以評估 API 請求的上下文,以確定策略語句是否適用。格式為"Condition": {"condition operator": {"condition key": "condition value"}}。詳細介紹,請參見憑據策略概述

說明

授權給其他阿里雲帳號下的 RAM 使用者、RAM 角色後,您仍需在存取控制 RAM 側,使用該 RAM 使用者、RAM 角色的阿里雲帳號為其授權使用該憑據,RAM 使用者、RAM 角色才能使用該憑據。集體操作,請參見Key Management Service自訂權限原則參考為 RAM 使用者授權為 RAM 角色授權

{"Version":"1","Statement": [{"Sid":"kms default secret policy","Effect":"Allow","Principal":{"RAM": ["acs:ram::119285303511****:*"]},"Action":["kms:*"],"Resource": ["*"] }] }

關於公用請求參數的詳情,請參見公用參數

返回參數

名稱

類型

描述

樣本值

object

RequestId

string

本次調用請求的 ID,是由阿里雲為該請求產生的唯一識別碼,可用於排查和定位問題。

3bf02f7a-015b-4f93-be0f-cc043fda2dd3

AutomaticRotation

string

是否開啟自動輪轉。取值:

  • Enabled:開啟自動輪轉。

  • Disabled:不開啟自動輪轉。

  • Invalid:輪轉狀態異常,憑據管家無法為您自動輪轉。

說明

SecretType 取值為 Rds、Redis、PolarDB、RAMCredentials 或 ECS 時,返回該參數。

Enabled

SecretName

string

憑據名稱。

mydbconninfo

VersionId

string

憑據版本號碼。

v1

NextRotationDate

string

下一次輪轉的時間。

說明

當自動輪轉開啟時,返回該參數。

2023-07-06T18:22:03Z

SecretType

string

憑據類型。取值:

  • Generic:通用憑據。

  • Rds:RDS 憑據。

  • Redis:Redis 憑據。

  • RAMCredentials:RAM 憑據。

  • ECS:ECS 憑據。

  • PolarDB:PolarDB 憑據。

Rds

RotationInterval

string

憑據自動輪轉的周期。
格式為integer[unit],其中integer表示時間長度,unit表示時間單位。 unit取值:s(秒)。例如:7 天的輪轉周期為 604800s。

說明

當自動輪轉開啟時,返回該參數。

604800s

Arn

string

阿里雲資源名稱。

acs:kms:cn-hangzhou:154035569884****:secret/mydbconninfo

ExtendedConfig

string

憑據的拓展配置。

說明

當 SecretType 取值為 Rds、Redis、PolarDB、RAMCredentials 或 ECS 時,返回該參數。

{\"SecretSubType\":\"SingleUser\", \"DBInstanceId\":\"rm-uf667446pc955****\", \"CustomData\":"Key1": "v1", "fds":"fdsf"} }

DKMSInstanceId

string

KMS 執行個體的執行個體 ID。

kst-bjj62d8f5e0sgtx8h****

樣本

正常返回樣本

JSON格式

{
  "RequestId": "3bf02f7a-015b-4f93-be0f-cc043fda2dd3",
  "AutomaticRotation": "Enabled",
  "SecretName": "mydbconninfo",
  "VersionId": "v1",
  "NextRotationDate": "2023-07-06T18:22:03Z",
  "SecretType": "Rds",
  "RotationInterval": "604800s",
  "Arn": "acs:kms:cn-hangzhou:154035569884****:secret/mydbconninfo",
  "ExtendedConfig": "{\\\"SecretSubType\\\":\\\"SingleUser\\\", \\\"DBInstanceId\\\":\\\"rm-uf667446pc955****\\\",  \\\"CustomData\\\":\"Key1\": \"v1\", \"fds\":\"fdsf\"} }",
  "DKMSInstanceId": "kst-bjj62d8f5e0sgtx8h****"
}

錯誤碼

HTTP status code

錯誤碼

錯誤資訊

描述

400 UnsupportedOperation This action is not supported. 不支援的操作
400 Rejected.LimitExceeded The request was rejected because user create resource limit was exceeded 建立的資源達到上限,請求被拒絕。
400 InvalidParameter The specified parameter is not valid. 參數非法。
400 Rejected.ShareQuotaExceedLimit Instance Share Quota Exceed Limit. 執行個體份額配額超過限制。
500 InternalFailure Internal Failure 內部錯誤
403 Forbidden.DKMSInstanceNotFound The specified DKMS Instance is not found. 您指定的專屬kms執行個體未找到。
404 Forbidden.ResourceNotFound The resource is not found. 資源不存在。
409 Rejected.ResourceExist The resource already exists. 資源已存在。
409 Rejected.ResourceInDeleteWindow The secret is planned to be deleted. 此憑據在計劃刪除中

訪問錯誤中心查看更多錯誤碼。

變更歷史

更多資訊,參考變更詳情