mcpField
A
alibabacloud-kms-secret-manage

alibabacloud-kms-secret-manage

github.com/aliyunセキュリティ281224 回インストール1 日前に更新
リポジトリ

alibabacloud-kms-secret-manage について

alibabacloud-kms-secret-manageは、Aliyun CLIやPython SDKの例を使ってAlibaba Cloud KMSのシークレットを管理するスキルです。ライフサイクル操作に加え、機密値の取り扱いや削除に安全上の制約を設けています。

主な機能

  1. 01シークレットの作成・一覧・確認・削除
  2. 02値の更新とバージョン管理
  3. 03ローテーション設定と復元
  4. 04シークレット値の既定マスキング
  5. 05削除前の確認要求

活用シーン

  1. 01データベース認証情報やAPIキーの管理
  2. 02保存済みシークレットのローテーション
  3. 03削除済みシークレットの復元
  4. 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.md
cli-installation-guide.md
managed-credentials.md
ram-policies.md
related-apis.md
verification-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

DocumentDescription
references/related-apis.mdAPI detailed description
references/ram-policies.mdRAM permission policies
references/managed-credentials.mdManaged credentials guide

コメント