kakakakakku blog

Weekly Tech Blog: Keep on Learning!

kubectl や kube-apiserver など Kubernetes バイナリを checksum で検証する

以下のドキュメントを読んでいたら kubectl コマンド(バイナリファイル)をダウンロードした後に checksum を使って検証(改ざんなし)をする手順が載っていた.kubectl に限定する必要はなく kube-apiserver などにも適用できる.さっそく試していく!

kubernetes.io

ちなみに Certified Kubernetes Security Specialist (CKS) の出題範囲には「Verify platform binaries before deploying」と書いてあり,内容としては関連していると思う.

github.com

checksum を取得する

checksum (SHA-256) は公開されているため curl コマンドを使って取得できる.例えば kubectlkube-apiserver を例にすると以下のようになる.最新バージョン(今日時点では v1.22.2)は https://dl.k8s.io/release/stable.txt で確認できるし,具体的にバージョンを指定することもできる.バイナリファイルとしては,他にも kube-schedulerkubeletkube-proxy なども指定できる.

  • kubectl コマンド
    • 最新
      • https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256
      • aeca0018958c1cae0bf2f36f566315e52f87bdab38b440df349cd091e9f13f36
    • v1.22.2
      • https://dl.k8s.io/v1.22.2/bin/linux/amd64/kubectl.sha256
      • aeca0018958c1cae0bf2f36f566315e52f87bdab38b440df349cd091e9f13f36
    • v1.20.11
      • https://dl.k8s.io/v1.20.11/bin/linux/amd64/kubectl.sha256
      • 3a2bf981939df89f807858a481f6f5f2e33a7b9708bd029c8bece434db228efe
  • kube-apiserver コマンド
    • 最新
      • https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kube-apiserver.sha256
      • 1887dcff21492cd4fe83682ad22908c8614e732dead927f3af2e5f8fada9a089
    • v1.22.2
      • https://dl.k8s.io/v1.22.2/bin/linux/amd64/kube-apiserver.sha256
      • 1887dcff21492cd4fe83682ad22908c8614e732dead927f3af2e5f8fada9a089
    • v1.20.11
      • https://dl.k8s.io/v1.20.11/bin/linux/amd64/kube-apiserver.sha256
      • bec4c071f6b75b478fd679ec01115f118ba0bcb49131a9011b29a8c53275b3cd

checksum を使って検証をする

以下のように sha256sum --check コマンドを使って検証をすることができる.結果的に OK もしくは WARNING と表示される.

$ curl -LO "https://dl.k8s.io/v1.22.2/bin/linux/amd64/kubectl.sha256"

$ echo "$(<kubectl.sha256) /usr/local/bin/kubectl" | sha256sum --check
kubectl: OK

$ echo "$(<kubectl.sha256) /usr/local/bin/kubectl" | sha256sum --check
/usr/local/bin/kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

おまけ : macOS で sha256sum コマンドを使う

macOS だと sha256sum コマンドが使えなかった.今回は Homebrew で使えるようにした.

$ which sha256sum
sha256sum not found

$ brew install coreutils

$ which sha256sum
/usr/local/bin/sha256sum