Alibaba Cloud CLI を使用して、Key Management Service (KMS) の Secrets Manager における汎用シークレットの完全なライフサイクル (作成、一覧表示、値の取得、メタデータの取得、削除、復元、ローテーション) を管理します。
KMS コンソールから、または API オペレーションを直接呼び出して汎用シークレットを管理するには、KMS コンソールガイドとAPI リファレンスをご参照ください。
操作の概要
| 操作 | CLI コマンド | 説明 |
|---|---|---|
| 作成 | CreateSecret | シークレットを作成し、その初期バージョンを保存します |
| 一覧表示 | ListSecrets | 現在のリージョン内のすべてのシークレットを一覧表示します |
| 値の取得 | GetSecretValue | 現在のバージョンのプレーンテキスト値を取得します |
| メタデータの取得 | DescribeSecret | 値を復号せずに構成メタデータを取得します |
| 削除 | DeleteSecret | シークレットの削除をスケジュールするか、即時削除します |
| 復元 | RestoreSecret | 復旧期間内に保留中の削除をキャンセルします |
前提条件
開始する前に、以下が完了していることを確認してください:
Alibaba Cloud CLI がインストールおよび設定済みであること
(カスタム暗号化キーの場合のみ必須) カスタマーマスターキー (CMK) に対する
kms:GenerateDataKey権限
汎用シークレットの作成
Secrets Manager は、各シークレット値を CMK で暗号化します。設定不要の暗号化にはデフォルトの CMK を使用するか、明示的なキー管理のために独自の CMK を指定します。
カスタム暗号化キーを使用しない場合
暗号化キーが指定されていない場合、Secrets Manager はデフォルトの CMK を使用してシークレット値を暗号化します。
aliyun kms CreateSecret \
--SecretName db_cred \
--SecretData "{\"uname\": \"alice\", \"pwd\": \"12****\"}" \
--VersionId v1レスポンスの例:
{
"Arn": "acs:kms:cn-shanghai:111760096384****:secret/db_cred",
"RequestId": "ef0e4234-085c-4676-9ab6-159f2338aaf0",
"SecretName": "db_cred",
"SecretType": "Generic",
"VersionId": "v1"
}カスタム暗号化キーを使用する場合
暗号化キーを指定すると、Secrets Manager は CMK からデータキーを生成し、そのデータキーを使用してシークレット値を暗号化します。
指定された CMK に対する kms:GenerateDataKey 権限が必要です。aliyun kms CreateSecret \
--SecretName ssh_key \
--SecretData ssh-key-blob \
--VersionId v1 \
--EncryptionKeyId Example-CMK-Idレスポンスの例:
{
"Arn": "acs:kms:cn-shanghai:111760096384****:secret/ssh_key",
"RequestId": "ef0e4234-085c-4676-9ab6-159f2338aaf0",
"SecretName": "ssh_key",
"SecretType": "Generic",
"VersionId": "v1"
}汎用シークレットの一覧表示
現在のリージョンにおいて、ご利用の Alibaba Cloud アカウント内のすべての汎用シークレットをページネーション付きで返します。
aliyun kms ListSecretsレスポンスの例:
{
"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
}シークレット値の取得
シークレットの現在のバージョンのプレーンテキスト値を取得します。
aliyun kms GetSecretValue --SecretName ssh_keyレスポンスの例:
{
"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"
]
}
}VersionStages.VersionStage は、返されたバージョンのライフサイクルステージを示します。ACSCurrent は、これがアクティブなバージョンであることを示します。
シークレットのメタデータの取得
シークレット値を復号せずに、シークレットの構成メタデータ (ARN、暗号化キー、タイムスタンプなど) を返します。
aliyun kms DescribeSecret --SecretName ssh_keyレスポンスの例:
{
"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 は論理削除を実行します。シークレットは復旧期間に入り、その期間中に RestoreSecret を使用して復元できます。強制削除は、復旧オプションなしでシークレットを完全に削除します。
| シナリオ | フラグ | 復旧 |
|---|---|---|
| デフォルトの復旧期間 | *(なし)* | 30 日以内 |
| カスタムの復旧期間 | --RecoveryWindowInDays <days> | 指定された日数以内 |
| 復旧不可 | --ForceDeleteWithoutRecovery true | 復旧できません |
デフォルトの復旧期間での削除
シークレットの 30 日後の完全削除をスケジュールします。PlannedDeleteTime の前であればいつでも復元できます。
aliyun kms DeleteSecret --SecretName ssh_keyレスポンスの例:
{
"SecretName": "ssh_key",
"RequestId": "3e54b02b-6461-46bb-afd5-dbd29d96eead",
"PlannedDeleteTime": "2020-02-21T04:24:04.58616562Z"
}PlannedDeleteTime は復旧の期限です。この時刻より前に RestoreSecret を呼び出して、削除をキャンセルしてください。
カスタムの復旧期間での削除
指定された日数が経過した後の削除をスケジュールします。以下の例では、7 日間の復旧期間を設定しています。
aliyun kms DeleteSecret --SecretName ssh_key --RecoveryWindowInDays 7レスポンスの例:
{
"SecretName": "ssh_key",
"RequestId": "95ec4f18-8f97-4fd5-b7c6-1588979dse4s",
"PlannedDeleteTime": "2020-01-29T04:25:14.165242211Z"
}強制削除 (復旧不可)
シークレットを即時かつ完全に削除します。この操作は元に戻せません。
強制削除は元に戻せません。続行する前に、シークレットが不要になったことを確認してください。
aliyun kms DeleteSecret --SecretName ssh_key --ForceDeleteWithoutRecovery trueレスポンスの例:
{
"SecretName": "ssh_key",
"RequestId": "75efc9c3-8e21-4e38-b6e4-486886be1546",
"PlannedDeleteTime": "2020-01-22T12:28:22.006884739+08:00"
}削除されたシークレットの復元
保留中の削除をキャンセルし、シークレットをアクティブな状態に復元します。これは復旧期間内でのみ機能します。PlannedDeleteTime を過ぎると、シークレットは復旧できません。
aliyun kms RestoreSecret --SecretName ssh_keyレスポンスの例:
{
"RequestId": "12770cee-92af-42f5-88e0-cbaa7e0c1254",
"SecretName": "ssh_key"
}次のステップ
汎用シークレットのローテーション — 一般的なローテーションシナリオとそのトリガー方法について説明します