blog.anqou.net
rss
author
tags

NixOS に立てた k3s で CSI Hardening Guide に従う

k3s のドキュメントには CSI Hardening Guide というページがあり、これを見ながら k3s の設定を行うとセキュリティを高めることができます。NixOS で k3s を立ち上げている場合 services.k3s などの設定を調整することでこのガイドに従うことができます。なお以下の設定ではガイドの一部にしか従っていません。特に audit に関する部分は(自分の運用だと不要なので)技術的には可能だと思いますが書いていません。

{
  services.k3s = {
    enable = true;
    extraKubeletConfig = {
      streamingConnectionIdleTimeout = "5m";
      tlsCipherSuites = [
        "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
        "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
        "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
        "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
        "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305"
        "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"
      ];
    };
    extraFlags = [
      "--protect-kernel-defaults"
      "--secrets-encryption"
      "--kube-apiserver-arg admission-control-config-file=${pkgs.writeText "psa.yaml" (builtins.readFile ./path/to/psa.yaml)}"
      "--kube-controller-manager-arg terminated-pod-gc-threshold=10"
    ];
    manifests = {
      default-network-policies = {
        enable = true;
        target = "default-network-policies.yaml";
        source = ./path/to/default-network-policies.yaml;
      };
    };
  };
  boot.kernel.sysctl = {
    "vm.panic_on_oom" = 0;
    "vm.overcommit_memory" = 1;
    "kernel.panic" = 10;
    "kernel.panic_on_oops" = 1;
  };
}

psa.yamldefault-network-policies.yaml にはガイドにある YAML のマニフェストが書かれています。