如何停用 kubectl 對 kube apiserver 的不安全批准

如何停用 kubectl 對 kube apiserver 的不安全批准

我正在嘗試使我的主伺服器 API 更加安全,以避免允許非 https 請求通過。

設定範例:

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    server: https://ip:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: REDACTED

只要我使用正確的 CA,它就可以工作。

我的問題是,如果我刪除 CA 或我有錯誤的 CA,並且只需應用該標誌,它也可以工作--insecure-skip-tls-verify

如何強制伺服器在 Server-API 上允許 https 連線而不是 http 連線?

我還禁用了匿名請求匿名請求但我仍然可以看到請求可以通過。

答案1

我的問題是,如果我刪除 CA 或我有錯誤的 CA,並且只需應用標誌 --insecure-skip-tls-verify,它也可以工作。

使用率--insecure-skip-tls-verify很高不建議在生產環境中。當您想做一些本地測試或出於學習目的時可以使用它。

庫貝克特爾文件您有資訊:

--insecure-skip-tls-verify

If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure

因此,如果此標誌設為 true,它將始終跳過憑證並且根本不檢查伺服器的身份。它類似於curl -k

-k, --insecure
              (TLS) By default, every SSL connection curl makes is verified to
              The  server  connection  is verified by making sure the server's
              interface name, IP address or host name.

您可以透過多種方式保護集群,但這取決於場景。不過,有一些主要API伺服器連接埠和IP概念:

使用安全端口

預設情況下,Kubernetes API 伺服器HTTP在 2 個連接埠上提供服務:

  1. localhost port:
  • 用於測試和引導,以及用於主 > 節點的其他元件(調度程序、控制器管理器)與 API 對話
  • 無 TLS
  • 停用不安全的 http 連線:預設連接埠為 8080,可使用--insecure-port標誌進行變更。 (可以透過 停用它--insecure-port=0
  • 預設 IP 為localhost,用標誌更改--insecure-bind-address。 (消除--insecure-bind-address
  • 請求繞過身份驗證和授權模組。
  • 由准入控制模組處理的請求。
  • 受需要具有主機存取權限的保護
  1. Secure port:
  • 盡可能使用啟用安全連接埠:
  • 使用 TLS。使用標誌設定證書--tls-cert-file和密鑰--tls-private-key-file
  • 預設為 port 6443,用 - 標誌更改-secure-port
  • 預設IP是第一個non-localhost網路接口,用--bind-address標誌改變。
  • 由身份驗證和授權模組處理的請求。
  • 由准入控制模組處理的請求。
  • 身份驗證和授權模組運行。

限制API訪問,這意味著您應該僅允許從特定 IP 或特定 IP 範圍(授權網路)存取您的 api。它不應該從外部世界訪問。為此,您可以使用防火牆規則或網路政策

匿名請求,你已經這樣做了。

您可以查看--insecure-port=0,但它應該在較新的版本中被棄用。

作為附加信息,我建議您檢查Kubernetes 的艱難之路,特別是3章: Provisioning Compute ResourcesProvisioning the CA and Generating TLS CertificatesGenerating Kubernetes Configuration Files for Authentication。您可以找到一些最佳實踐。

Kube API-server您可以在其中找到對標誌的很好的解釋本文

有關叢集安全性的有用連結:

保持 Kubernetes 叢集安全的基礎知識 - 如何保護 kube-apiserver

控制對 Kubernetes API 的訪問

Kubernetes 安全最佳實踐

Kubernetes 安全 101:風險與 29 個最佳實踐

控制對 Kubernetes API 的訪問

訪問叢集

相關內容