GKE のレガシークライアント証明書使用の確認

既定の OAuth 認証を優先し、不要なクライアント証明書と権限を整理してください。

説明

GKE のレガシークライアント証明書は、既定の OAuth 認証とは別のアクセス経路を提供します。証明書と秘密鍵の配布・管理が必要となり、漏えいすると、その主体に付与された権限の範囲でアクセスされるおそれがあります。API サーバーの TLS 証明書検証とは別の設定です。

想定される影響

  • 古い認証手段が残ると、追跡や廃止の管理が難しくなる場合があります。
  • クライアント証明書と秘密鍵が漏えいすると、許可していない第三者が認証できるおそれがあります。

対処方法

  • issue_client_certificate = false で不要なレガシー証明書の発行を止め、既定の OAuth 認証を使用してください。IAM と Kubernetes RBAC の権限も最小限にしてください。
  • 既存証明書を使う運用を移行し、関連する権限をサポートされた手順で取り除いてください。発行設定を変更するだけで、発行済み証明書が失効したと判断しないでください。

例

クライアント証明書の発行設定を比較します。サーバーの TLS 検証を無効にする設定ではなく、既存証明書の権限を取り除く作業は別途必要です。

変更前

hcl
resource "google_container_cluster" "example" {
  name               = "marcellus-wallace"
  location           = "us-central1-a"
  initial_node_count = 3

  master_auth {
    client_certificate_config {
      issue_client_certificate = true
    }
  }
}

変更後

hcl
resource "google_container_cluster" "example" {
  name               = "marcellus-wallace"
  location           = "us-central1-a"
  initial_node_count = 3

  master_auth {
    client_certificate_config {
      issue_client_certificate = false
    }
  }
}

補足:

  • 変更前: レガシークライアント証明書の発行を要求します。
  • 変更後: レガシー証明書の発行を無効にします。既存証明書でアクセスできるかは別途確認が必要です。

参考資料