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

Key Management Service:KMSシークレットをACKに統合する

最終更新日:Jan 17, 2025

Container Service for Kubernetes (ack) にACK-secret-manager secret Kubernetesプラグインをインストールした後、プラグインでシークレット名を設定できます。 プラグインは、Key Management Service (KMS) から最新のシークレット値を定期的に読み取り、Kubernetesクラスターに値をキャッシュします。 Kubernetes secretsでシークレットを使用するのと同じ方法で、KMSで管理されている動的シークレットを使用できます。 これにより、アプリケーションの開発および構築中の機密データの送信および漏洩が防止される。

プロシージャ

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

    • ACKクラスター

      1. ACKコンソールにログインし、Marketplaceページでack-secret-managerをクリックします。

      2. ack-secret-managerページの右上隅で、[デプロイ] をクリックします。

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

      4. [パラメーター] ステップでパラメーターを設定し、[OK] をクリックします。

        パラメーター

        の説明

        コマンド. backend

        外部キー管理システムのバックエンド。 KMSのみがサポートされています。 値をalicloud-kmsに設定します。

        alicloud-kms

        コマンド. region

        秘密を取得する地域。

        cn-hangzhou

        コマンド. disablePolling

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

        false

        command.pollingInterval

        既存のシークレット値がKMSから同期される間隔。

        120s

        設定が完了すると、ack-secret-managerページにリダイレクトされます。 インストール結果はページで確認できます。 次の図に示すリソースが作成されている場合、ack-secret-manager secret Kubernetesプラグインがインストールされます。image.png

    • 自己管理型Kubernetesクラスター

      ack-secret-managerにアクセスし、ack-secret-manager secret Kubernetesプラグインをインストールできます。

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

    すべてのタイプの秘密を作成できます。 詳細については、「ジェネリックシークレットの管理と使用」「RAMシークレットの管理と使用」「ApsaraDB RDSシークレットの管理と使用」、または「ECSシークレットの管理と使用」をご参照ください。

  3. ack-secret-manager secret KubernetesプラグインでKMSにアクセスする権限を指定します。

    • KMSエンドポイントを使用したKMSへのアクセス

      この方法は、KMSインスタンスのシークレットと、KMSインスタンスが購入されていない古いバージョンのKMSで作成されたシークレットに適しています。

      1. リソースアクセス管理 (RAM) で、シークレットへのアクセスに使用できるカスタムポリシーを作成します。 次のサンプルコードは、ポリシーコンテンツの例を示しています。 ビジネス要件に基づいてポリシーの内容を指定できます。 詳細については、「カスタムポリシー」をご参照ください。

        {
            "Action": [
               "kms:GetSecretValue",
               "kms:Decrypt"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
      2. ワークロードまたはポッドにKMSへのアクセスを許可します。

        移動方法

        クラスターの必要なワーカーロールにカスタムポリシーをアタッチする

        1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

        2. 管理するクラスターを見つけて、[操作] 列の [詳細] をクリックします。

        3. [クラスターリソース] タブで、Kubernetes WorkerRole-****** という名前のRAMロールの名前をクリックします。 カスタムポリシーをロールにアタッチできるページにリダイレクトされます。

        サービスアカウントのRAMロール (RRSA) 機能を使用して、ポッドごとにカスタムポリシーをアタッチします。

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

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

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

    • {kmsInstanceI d}.cryptoservice.kms.aliyuncs.com形式のKMSインスタンスエンドポイントを使用してKMSにアクセスする

      この方法は、KMSインスタンスのシークレットに適しています。 KMSインスタンスを使用してシークレットを管理し、仮想プライベートクラウド (VPC) でのみKMSにアクセスする場合は、この方法を使用することを推奨します。 詳細については、「AAPの作成」をご参照ください。

    • 説明

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

  4. ack-secret-manager secret Kubernetesプラグインで、プロトコル、エンドポイント、クライアントキー、およびシークレット名を指定します。 詳細については、「ack-secret-manager」をご参照ください。

次に何をすべきか

KMSから読み取られ、Kubernetesクラスターにキャッシュされたシークレットを保護するために、Kubernetes secretsでシークレットを暗号化できます。 詳細については、「KMSを使用したKubernetes Secrets at restの暗号化」をご参照ください。

説明

暗号化を実行して、Kubernetesクラスターの静的シークレットを保護することもできます。 静的秘密は、システム秘密である。

関連ドキュメント