すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:ACK と KMS シークレットの統合

最終更新日:Sep 19, 2026

ack-secret-manager Kubernetes プラグインをインストールすると、Key Management Service (KMS) から最新のシークレット値を定期的に取得し、Container Service for Kubernetes (ACK) クラスターにキャッシュするよう設定できます。これにより、KMS の動的シークレットをネイティブ Kubernetes シークレットのように使用でき、アプリケーションの開発およびビルドプロセスにおける機密データの漏洩を防ぐことができます。

手順

  1. ack-secret-manager プラグインをインストールします。

    • Container Service for Kubernetes (ACK) クラスターの場合

      1. ACK コンソールにログインし、[Marketplace] で ack-secret-manager を見つけます。

      2. ack-secret-manager ページで、右上の ワンクリックデプロイメント をクリックします。

      3. パネルで、クラスター、名前空間、リリース名 のデフォルト値を保持します。その後、次へ をクリックします。

      4. パラメーター ページでパラメーターを設定し、OK をクリックします。

        パラメーター

        説明

        例

        command.backend

        外部シークレット管理システムのバックエンド。現在、Alibaba Cloud KMS のみがサポートされています。このパラメーターを alicloud-kms に設定します。

        alicloud-kms

        command.region

        シークレットを取得するリージョン。

        cn-hangzhou

        command.disablePolling

        KMS バックエンドからの最新のシークレット値の自動同期を無効にするかどうかを指定します。同期を無効にするには、この値を true に設定します。デフォルト値:false。

        false

        command.pollingInterval

        KMS バックエンドからのシークレットの同期間隔。

        120s

        デプロイが成功すると、クラスターの ack-secret-manager ページにリダイレクトされます。[Resources] ページで、次の 6 つの Kubernetes リソースが作成されたことを確認します: ack-secret-manager (ServiceAccount)、externalsecrets.alibabacloud.com (CustomResourceDefinition)、ack-secret-manager (ClusterRole)、ack-secret-manager (ClusterRoleBinding)、ack-secret-manager-auth (ClusterRoleBinding)、および ack-secret-manager (Deployment)。

    • 自己管理型 Kubernetes クラスターの場合は、ack-secret-manager にアクセスしてプラグインをインストールします。

  2. KMS でシークレットを作成します。

    すべてのシークレットタイプがサポートされています。詳細については、「汎用シークレットの管理と使用」、「RAMシークレットの管理と使用」、「ApsaraDB RDSシークレットの管理と使用」、または「ECSシークレットの管理と使用」をご参照ください。

  3. ack-secret-manager プラグインに KMS へのアクセス権を付与します。

    • 共有 KMS を使用したアクセス

      この方法は、KMS インスタンス内のシークレットと、KMS インスタンスにないシークレット (インスタンスを必要としなかった以前のバージョンの KMS で作成されたものを含む) に適しています。

      1. Resource Access Management (RAM) で、カスタムポリシーを作成して KMS シークレットへのアクセス権を付与します。次のコードはポリシーの例です。ビジネス要件に基づいてポリシーをカスタマイズできます。詳細については、「Key Management Serviceのカスタムポリシー」をご参照ください。

        {
            "Action": [
               "kms:GetSecretValue",
               "kms:Decrypt"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
      2. Container Service のワークロードまたは Pod に権限を付与します。

        方法

        説明

        クラスターのワーカーロールに権限を追加

        1. ACK コンソールにログインします。左側メニューで、クラスター を選択します。

        2. 対象のクラスターを見つけ、アクション 列の 詳細 をクリックします。

        3. [Cluster Resources] タブで、KubernetesWorkerRole-****** という名前のワーカーロールをクリックします。これにより RAM コンソールにリダイレクトされ、そこでカスタムポリシーをアタッチできます。

        サービスアカウント用 RAM ロール (RRSA) を使用した Pod レベルの認可

        1. RRSA 機能を有効にします。

        2. RRSA 機能を使用します。

          指定されたサービスアカウント用の RAM ロールを作成し、RAM ロールの信頼ポリシーを設定してから、カスタムポリシーをアタッチします。

    • KMS インスタンスエンドポイント ({kmsInstanceId}.cryptoservice.kms.aliyuncs.com) を使用したアクセス

      この方法は、KMS インスタンス内のシークレットにのみ適用されます。Virtual Private Cloud (VPC) 内で KMS へのネットワークアクセスを制限したい場合は、このアプローチを推奨します。詳細については、「アプリケーションアクセスポイントの作成」をご参照ください。

    • 説明

      KMS インスタンスエンドポイントを使用する前に、ワークロードまたは Pod の VPC を KMS インスタンスにバインドしてください。詳細については、「同じリージョン内の複数のVPCからKMSインスタンスにアクセスする」をご参照ください。

  4. ack-secret-manager プラグインで、protocol (KMS へのアクセスプロトコル)、endpoint (アクセスポイント)、client key (認証方法)、SecretName (シークレット名) などのパラメーターを設定します。詳細については、ack-secret-manager のドキュメントをご参照ください。

次のステップ

KMS から取得してクラスターにキャッシュされたシークレットをさらに保護するには、Kubernetes シークレットの保管時の暗号化を有効にします。詳細については、「KMS を使用した保管時の Kubernetes シークレットの暗号化」をご参照ください。

説明

この暗号化機能は、システムシークレットなど、Kubernetes クラスター内の他の静的シークレットも保護します。

関連ドキュメント