alibabacloud-kms-secret-manage について
alibabacloud-kms-secret-manageは、Aliyun CLIやPython SDKの例を使ってAlibaba Cloud KMSのシークレットを管理するスキルです。ライフサイクル操作に加え、機密値の取り扱いや削除に安全上の制約を設けています。
主な機能
- 01シークレットの作成・一覧・確認・削除
- 02値の更新とバージョン管理
- 03ローテーション設定と復元
- 04シークレット値の既定マスキング
- 05削除前の確認要求
活用シーン
- 01データベース認証情報やAPIキーの管理
- 02保存済みシークレットのローテーション
- 03削除済みシークレットの復元
- 04削除前のメタデータ確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-kms-secret-manageインストール後、Claude Code で/alibabacloud-kms-secret-manageを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdcli-installation-guide.mdmanaged-credentials.mdram-policies.mdrelated-apis.mdverification-method.md詳細
Alibaba Cloud KMS シークレット管理
このスキルは、Alibaba Cloud Key Management Service(KMS)のシークレット管理の中核機能を提供し、シークレットに対する CRUD 操作をサポートします。
シナリオの説明
KMS シークレット管理サービスは、次のような機密情報を安全に保管、管理、アクセスするために使用します。
- データベース接続認証情報
- API キー
- OAuth トークン
- 証明書の秘密鍵
- 安全な保管が必要なその他の機密データ
アーキテクチャ: Alibaba Cloud KMS Service + シークレット管理(Secrets Manager)
graph TB
User[Application/User] --> KMS[KMS Secret Management]
KMS --> Secret[Generic Secret]
Secret --> V1[Version 1]
Secret --> V2[Version 2]
Secret --> VN[Version N]
KMS --> Rotation[Rotation Secret]
Rotation --> RDS[RDS Managed Secret]
Rotation --> RAM[RAM Managed Secret]
Rotation --> ECS[ECS Managed Secret]
Rotation --> Redis[Redis Managed Secret]
Rotation --> PolarDB[PolarDB Managed Secret]
環境のセットアップ
依存関係:Aliyun CLI。
command not foundエラーが発生した場合は、インストール方法について references/cli-installation-guide.md を参照してください。
タイムアウトの設定
CLI コマンドがハングするのを避けるため、適切なタイムアウトを設定します。
# Set timeout environment variables (in seconds)
export ALIBABA_CLOUD_CONNECT_TIMEOUT=30
export ALIBABA_CLOUD_READ_TIMEOUT=30
または、コマンドラインフラグを使用します。
aliyun kms <action> --connect-timeout 30 --read-timeout 30 ...
推奨タイムアウト値:
- 接続タイムアウト:30 秒
- 読み取りタイムアウト:30 秒
セキュリティルール
- 禁止事項:AK/SK 値の読み取り、出力、表示
- 禁止事項:会話中にユーザーへ AK/SK の直接入力を求めること
- 機密データのマスキング:GetSecretValue が返すシークレット値は、デフォルトでマスキングされます(例:
***)。ユーザーが明示的に要求した場合にのみ、平文で出力します
RAM 権限の要件
実行ユーザーに、以下の KMS 権限があることを確認してください。詳細なポリシーについては、references/ram-policies.md を参照してください。
最小権限(読み取り専用):
kms:DescribeSecret, kms:ListSecrets, kms:GetSecretValue, kms:ListSecretVersionIds, kms:GetSecretPolicy
フル権限(読み書き):
kms:CreateSecret, kms:DeleteSecret, kms:UpdateSecret, kms:DescribeSecret,
kms:ListSecrets, kms:GetSecretValue, kms:PutSecretValue, kms:ListSecretVersionIds,
kms:UpdateSecretVersionStage, kms:UpdateSecretRotationPolicy, kms:RotateSecret,
kms:RestoreSecret, kms:SetSecretPolicy, kms:GetSecretPolicy,
kms:ListKmsInstances, kms:ListKeys, kms:CreateKey
主なワークフロー
1. シークレットの作成
シークレットを作成するには、まず KMS インスタンス ID と暗号化キー ID を取得してから、作成を実行します。
# Step 1: Get KMS Instance ID
aliyun kms ListKmsInstances --PageNumber 1 --PageSize 10 --region <region-id> --user-agent AlibabaCloud-Agent-Skills
# → Extract KmsInstances.KmsInstance[0].KmsInstanceId
# Step 2: Get Encryption Key ID
aliyun kms ListKeys --Filters '[{"Key":"KeySpec","Values":["Aliyun_AES_256"]},{"Key":"DKMSInstanceId","Values":["<instance-id>"]}]' --PageNumber 1 --PageSize 10 --region <region-id> --user-agent AlibabaCloud-Agent-Skills
# → Extract Keys.Key[0].KeyId
# Step 3: Create Secret (requires DKMSInstanceId and EncryptionKeyId)
aliyun kms CreateSecret --SecretName "<secret-name>" --SecretData "<secret-value>" --VersionId "<version-id>" --EncryptionKeyId "<key-id>" --DKMSInstanceId "<instance-id>" --region <region-id> --user-agent AlibabaCloud-Agent-Skills
2. シークレットの一覧表示
aliyun kms ListSecrets --region <region-id> --user-agent AlibabaCloud-Agent-Skills
3. シークレット値の取得
セキュリティポリシー:
- ユーザーがシークレット値を明示的に要求していない場合:CLI コマンドまたは Python コードスクリプトのみを提示します。実行しないでください。
- ユーザーがシークレット値の取得や表示を明示的に要求した場合:まずコマンドまたはスクリプトを提示し、その後、ユーザーの確認を得てから実行します。
CLI コマンド:
aliyun kms GetSecretValue --SecretName "<secret-name>" --region <region-id> --user-agent AlibabaCloud-Agent-Skills
Python SDK の例:
from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_util import models as util_models
credential = CredentialClient()
config = open_api_models.Config(credential=credential)
config.endpoint = 'kms.<region-id>.aliyuncs.com'
client = OpenApiClient(config)
params = open_api_models.Params(
action='GetSecretValue',
version='2016-01-20',
protocol='HTTPS',
method='POST',
auth_type='AK',
style='RPC',
pathname='/',
req_body_type='json',
body_type='json'
)
body = {'SecretName': '<secret-name>'}
runtime = util_models.RuntimeOptions()
request = open_api_models.OpenApiRequest(body=body)
response = client.call_api(params, request, runtime)
print(response.body)
注:
- ユーザーが明示的に確認した後にのみ取得を実行してください
- シークレット値には機密情報が含まれるため、慎重に取り扱う必要があります
- 安全な環境(プライベートなターミナル、画面共有なし、ログ記録なし)で実行するよう、必ずユーザーに注意を促してください
4. シークレットの削除
削除前の事前確認(安全要件):
シークレットを強制削除する前に、必ず存在を確認し、まだ使用中かどうかを確認してください。
# Step 1: Describe the secret to verify existence and check metadata
aliyun kms DescribeSecret --SecretName "<secret-name>" --region <region-id> --user-agent AlibabaCloud-Agent-Skills
# → Check SecretName, CreateTime, and other metadata to confirm this is the correct secret
DescribeSecret がエラーを返す場合(シークレットが見つからない):
- 処理を中止し、ユーザーに「シークレットは存在しないため、削除は不要です」と伝えます
DescribeSecret が成功した場合:
- シークレットのメタデータを確認します
- 強制削除を進める前に、ユーザーに確認します
# Step 2: Force delete (immediate deletion, cannot be recovered)
aliyun kms DeleteSecret --SecretName "<secret-name>" --ForceDeleteWithoutRecovery true --region <region-id> --user-agent AlibabaCloud-Agent-Skills
冪等性:
Forbidden.ResourceNotFoundエラーが返された場合、シークレットは存在しないことを意味します。削除は成功したものとして扱い、後続の操作を続行してください。
5. シークレット値の更新
aliyun kms PutSecretValue --SecretName "<secret-name>" --SecretData "<new-secret-value>" --VersionId "<new-version-id>" --region <region-id> --user-agent AlibabaCloud-Agent-Skills
6. シークレットの詳細表示
aliyun kms DescribeSecret --SecretName "<secret-name>" --region <region-id> --user-agent AlibabaCloud-Agent-Skills
7. シークレットバージョンの一覧表示
aliyun kms ListSecretVersionIds --SecretName "<secret-name>" --IncludeDeprecated true --region <region-id> --user-agent AlibabaCloud-Agent-Skills
8. ローテーションポリシーの設定
aliyun kms UpdateSecretRotationPolicy --SecretName "<secret-name>" --EnableAutomaticRotation true --RotationInterval 7d --region <region-id> --user-agent AlibabaCloud-Agent-Skills
9. 削除済みシークレットの復元
aliyun kms RestoreSecret --SecretName "<secret-name>" --region <region-id> --user-agent AlibabaCloud-Agent-Skills
冪等性:
Rejected.ResourceInUseエラーが返された場合、シークレットはすでに復元済み、または削除されていないことを意味します。復元は成功したものとして扱い、後続の操作を続行してください。
高度な機能
マネージド認証情報やその他の高度な機能については、references/managed-credentials.md を参照してください。
Reference Links
| Document | Description |
|---|---|
| references/related-apis.md | API detailed description |
| references/ram-policies.md | RAM permission policies |
| references/managed-credentials.md | Managed credentials guide |