説明
Tencent Cloud TKE の KMS 暗号化保護は、etcd に保存される Kubernetes Secret を暗号化します。この保護が必要な環境で有効になっていないと、保存先の露出による情報漏えいに備える防御が一つ欠けた状態になります。
この設定ですべてのボリュームやネットワーク通信が暗号化されるわけではありません。Secret の読み取り権限を持つユーザーのアクセスも防がないため、RBAC とキーの権限を別途制限する必要があります。
想定される影響
- Secret の保存先が露出すると、資格情報やトークンなどの秘密情報が漏れるリスクが高まるおそれがあります。
- 必要な保存時暗号化がないと、組織のデータ保護要件を満たせない場合があります。
対処方法
クラスターの実際の暗号化状態を確認し、必要に応じて tencentcloud_kubernetes_encryption_protection に対象の cluster_id と kms_configuration を設定してください。サポートされるクラスターと適切な KMS キー・リージョンを選び、必要なサービス権限を付与してください。使用中のキーを無効化・削除せず、設定後に Secret の正常な使用と暗号化状態を確認してください。
例
暗号化保護リソースを追加する抜粋です。VPC データソースは省略しています。kms_region をキーの実際のリージョンに合わせ、必要な KMS 権限を構成してください。
変更前
hcl
resource "tencentcloud_kubernetes_cluster" "platform_cluster" {
vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id
cluster_cidr = "10.32.0.0/16"
cluster_max_pod_num = 32
cluster_name = "tf_example_cluster"
cluster_desc = "example cluster"
cluster_max_service_num = 32
cluster_deploy_type = "MANAGED_CLUSTER"
}
クラスターのみを定義し、この抜粋には KMS 暗号化保護の構成がありません。稼働中のクラスターの実際の暗号化状態を確認してください。
変更後
hcl
resource "tencentcloud_kubernetes_cluster" "platform_cluster" {
vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id
cluster_cidr = "10.32.0.0/16"
cluster_max_pod_num = 32
cluster_name = "tf_example_cluster"
cluster_desc = "example cluster"
cluster_max_service_num = 32
cluster_deploy_type = "MANAGED_CLUSTER"
}
resource "tencentcloud_kms_key" "cluster_key" {
alias = "tf-example-kms-key"
description = "example of kms key instance"
key_usage = "ENCRYPT_DECRYPT"
is_enabled = true
}
resource "tencentcloud_kubernetes_encryption_protection" "cluster_encryption" {
cluster_id = tencentcloud_kubernetes_cluster.platform_cluster.id
kms_configuration {
key_id = tencentcloud_kms_key.cluster_key.id
kms_region = "ap-guangzhou"
}
}
クラスターを KMS キーと暗号化保護に関連付けます。キーの可用性を維持し、Secret へのアクセス権限も別途制限する必要があります。