ack-secret-manager Kubernetes プラグインをインストールすると、Key Management Service (KMS) から最新のシークレット値を定期的に取得し、Container Service for Kubernetes (ACK) クラスターにキャッシュするように設定できます。これにより、KMS の動的シークレットをネイティブの Kubernetes シークレットのように使用でき、アプリケーションの開発およびビルドプロセス中に機密データが漏洩するのを防ぐことができます。
操作手順
-
ack-secret-managerプラグインをインストールします。-
ACK クラスターの場合
-
ACK コンソールにログインし、[Marketplace] で
ack-secret-managerを見つけます。 -
ack-secret-manager ページで、右上隅にある ワンクリックデプロイメント をクリックします。
-
パネルで、クラスター、名前空間、およびリリース名をデフォルト値のままにして、次へをクリックします。
-
パラメーター ページで、パラメーターを設定し、OK をクリックします。
パラメーター
説明
例
command.backend外部シークレット管理システムのバックエンド。現在、KMS のみがサポートされています。このパラメーターを
alicloud-kmsに設定します。alicloud-kmscommand.regionシークレットを取得するリージョン。
cn-hangzhoucommand.disablePollingKMS バックエンドから最新のシークレット値を自動同期するかどうかを指定します。同期を無効にする場合は
trueに設定します。デフォルト値:falsefalsecommand.pollingIntervalKMS バックエンドからのシークレットのポーリング間隔。
120sデプロイが成功すると、クラスターの
ack-secret-managerページにリダイレクトされます。[Resources] ページで、次の 6 つの Kubernetes リソースが作成されたことを確認します:ack-secret-manager(サービスアカウント)、externalsecrets.alibabacloud.com(カスタムリソース定義)、ack-secret-manager(ClusterRole)、ack-secret-manager(ClusterRoleBinding)、ack-secret-manager-auth(ClusterRoleBinding)、ack-secret-manager(デプロイメント)
-
-
セルフマネージド Kubernetes クラスターの場合は、ack-secret-manager にアクセスしてプラグインをインストールしてください。
-
-
KMS でシークレットを作成します。
すべてのシークレットタイプがサポートされています。詳細については、「汎用シークレットの管理と使用」、「RAM シークレットの管理と使用」、「ApsaraDB RDS シークレットの管理と使用」、または「ECS シークレットの管理と使用」をご参照ください。
-
ack-secret-managerプラグインに KMS へのアクセス権を付与します。-
共有 KMS を使用したアクセス
この方法は、KMS インスタンス内のシークレットと、KMS インスタンスにないシークレット (インスタンスが不要だった以前の KMS バージョンで作成されたシークレットを含む) に適しています。
-
Resource Access Management (RAM) で、KMS シークレットへのアクセス権を付与するカスタムポリシーを作成します。次のコードはポリシーの例です。ビジネス要件に基づいてポリシーをカスタマイズできます。詳細については、「Key Management Service のカスタムポリシー」をご参照ください。
{ "Action": [ "kms:GetSecretValue", "kms:Decrypt" ], "Resource": [ "*" ], "Effect": "Allow" } -
コンテナサービスのワークロードまたは Pod に権限を付与します。
方法
説明
クラスターのワーカーロールに権限を追加
-
ACK コンソールにログインします。左側のナビゲーションペインで、クラスター を選択します。
-
対象のクラスターを見つけ、アクション 列の 詳細 をクリックします。
-
[Cluster Resources] タブで、
KubernetesWorkerRole-******という名前のワーカーロールをクリックします。これにより RAM コンソールにリダイレクトされ、カスタムポリシーをアタッチできます。
RAM Roles for Service Accounts (RRSA) を使用した Pod レベルでの権限付与
-
指定されたサービスアカウントの RAM ロールを作成し、RAM ロールの信頼ポリシーを設定してから、カスタムポリシーをアタッチします。
-
-
-
KMS インスタンスエンドポイント (
{kmsInstanceId}.cryptoservice.kms.aliyuncs.com) を使用したアクセスこの方法は、KMS インスタンス内のシークレットにのみ適用されます。Virtual Private Cloud (VPC) 内で KMS へのネットワークアクセスを制限したい場合は、このアプローチを推奨します。詳細については、「アプリケーションアクセスポイントの作成」をご参照ください。
説明KMS インスタンスエンドポイントを使用する前に、ワークロードまたは Pod の VPC を KMS インスタンスにバインドしてください。詳細については、「同一リージョン内の複数の VPC から KMS インスタンスにアクセスする」をご参照ください。
-
-
ack-secret-managerプラグインで、protocol(KMS にアクセスするためのプロトコル)、endpoint(アクセスポイント)、client key(認証方法)、SecretName(シークレット名) などのパラメーターを設定します。詳細については、ack-secret-manager のドキュメントをご参照ください。
次のステップ
KMS から取得してクラスターにキャッシュされたシークレットをさらに保護するには、Kubernetes シークレットの保存時の暗号化を有効にします。詳細については、「KMS を使用した Kubernetes シークレットの保存時の暗号化」をご参照ください。
この暗号化機能は、システムシークレットなど、Kubernetes クラスター内の他の静的シークレットも保護します。