[Kubernetes]静解析リソース


ユーザワークロードの静的解析



kubectlを使用してPodの生成要求を送信すると、認証、認可、および追加コントローラによってPodが生成されます.
このような多くのプロセスを経験する前に、クラスタに配備する前にセキュリティポリシーをチェックして適用できたらどうなりますか?

kubesec


ユーザーのワークロードを静的に分析し、リソースファイルを表示し、ポリシーを適用するには、kubedcというツールを使用します.
https://kubesec.io
kubedcは、リソースファイルを分析し、セキュリティ上の脅威が発生する可能性のあるホットスポットと、どのような理由で脅威が発生する可能性があるかを示す結果ファイルを出力します.結果ファイルには、分析結果に基づいたスコアも含まれます.
[
  {
    "object": "Pod/node.default",
    "valid": true,
    "fileName": "node.yaml",
    "message": "Failed with a score of -27 points",
    "score": -27,
    "scoring": {
      "critical": [
        {
          "id": "Privileged",
          "selector": "containers[] .securityContext .privileged == true",
          "reason": "Privileged containers can allow almost completely unrestricted host access",
          "points": -30
        }
      ],
      "passed": [
        {
          "id": "ServiceAccountName",
          "selector": ".spec .serviceAccountName",
          "reason": "Service accounts restrict Kubernetes API access and should be configured with least privilege",
          "points": 3
        }
      ],
...
以上の結果例は、特権関連項目に違反していることを確認したため、-27点は検査に合格しなかった.

クbedcのインストール


直接インストールする方法は次のとおりです.それ以外にもドックコンテナを使って運転する方法もあります.
$ wget https://github.com/controlplaneio/kubesec/releases/download/v2.11.0/kubesec_linux_amd64.tar.gz
$ tar -xvf  kubesec_linux_amd64.tar.gz
$ mv kubesec /usr/bin/
正常にインストールされていることを確認します.
$ kubesec

Validate Kubernetes resource security policies

Usage:
  kubesec [command]

Available Commands:
  help        Help about any command
  http        Starts kubesec HTTP server on the specified port
  scan        Scans Kubernetes resource YAML or JSON
  version     Prints kubesec version

Flags:
  -h, --help   help for kubesec

kubedcの使用


kubedc scanコマンドを使用して、リソース定義ファイルを解析できます.
$ kubesec scan pod.yaml
このほか、kubedcを直接インストールするのではなく、kubedcのパブリックホストサービスにリクエストを送信する方法もあります.
$ curl -sSX POST --data-binary @"pod.yaml" http://v2.kubesec.io/scan
kubedcをローカルサーバとして実行してリクエストを送信する方法も使用できます.
$ kubesec http 8080&