
kubeauditは、一般的なセキュリティ対策に照らしてKubernetesクラスターを監査するのに役立ちます。
Kubernetes 1.19 以降のクラスターでの実行が必須となりました。
未登録の
kubernetes.ioアノテーションを使用したオーバーライドラベルは非推奨になります。今後はkubeaudit.ioを使用することが必須となります。 詳細はこのディスカッションを参照してください。
Kubeaudit は 2024 年 10 月までに非推奨となる予定です。
このプロジェクトの管理を引き継ぐことに興味のあるメンテナを積極的に募集中です。開発とメンテナンスを継続することに情熱をお持ちの方は、ぜひご連絡ください。
代替品をお探しのユーザーには、同様の機能を提供し、活発にメンテナンスされている Kubebench への移行をお勧めします。
コミュニティの皆様のご貢献とご支援に感謝いたします。
kubeaudit は、Kubernetes クラスターをさまざまなセキュリティ上の懸念事項について監査するためのコマンドラインツールおよび Go パッケージです。例:
要約: kubeaudit は安全なコンテナをデプロイすることを保証します!
kubeaudit を Go パッケージとして使用するには、パッケージドキュメントを参照してください。
この README の残りの部分では、kubeaudit をコマンドラインツールとして使用する方法に焦点を当てます。
brew install kubeaudit
Kubeaudit には、正式にリリースされた安定版があります: 公式リリース
main ブランチには、安定版リリースよりも新しい機能が含まれている場合があります。リリースに含まれていない新しい機能が必要な場合は、最新の Go を使用していることを確認し、以下を実行してください:
go get -v github.com/Shopify/kubeaudit
kubeaudit の使用を開始するには、クイックスタートを参照するか、サポートされているコマンドをすべてご覧ください。
前提条件: kubectl v1.12.0 以降
kubectl v1.12.0 で外部関数の簡単なプラグイン機能が導入されたことにより、kubeaudit は以下の方法で kubectl audit として呼び出すことができます。
make plugin を実行し、$GOPATH/bin を PATH に含める。または
kubectl-audit に変更し、PATH に配置する。Docker Hub が Free Team 組織を廃止したため、Docker Hub へのイメージの公開は行わなくなりました。当面は 古いイメージ が引き続き利用可能ですが、いつでも利用できなくなる可能性があります。まもなく Github Container registry へのイメージ公開を開始する予定です。
クラスター内でジョブとして kubeaudit を実行するには、クラスター内での kubeaudit の実行 を参照してください。
kubeaudit には 3 つのモードがあります:
-f/--manifest フラグを使用して Kubernetes マニフェストファイルが指定された場合、kubeaudit はそのマニフェストファイルを監査します。
コマンド例:
kubeaudit all -f "/path/to/manifest.yml"
出力例:
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- Results for ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [error] AppArmorAnnotationMissing
Message: AppArmor annotation missing. The annotation 'container.apparmor.security.beta.kubernetes.io/container' should be added.
Metadata:
Container: container
MissingAnnotation: container.apparmor.security.beta.kubernetes.io/container
-- [error] AutomountServiceAccountTokenTrueAndDefaultSA
Message: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
-- [error] CapabilityShouldDropAll
Message: Capability not set to ALL. Ideally, you should drop ALL capabilities and add the specific ones you need to the add list.
Metadata:
Container: container
Capability: AUDIT_WRITE
...
指定された最小重大度のエラーが見つからなかった場合、以下が返されます:
All checks completed. 0 high-risk vulnerabilities found
マニフェストモードは、autofix コマンドを使用してすべてのセキュリティ問題を自動修正することもサポートしています:
kubeaudit autofix -f "/path/to/manifest.yml"
修正されたマニフェストをソースファイルの代わりに新しいファイルに書き込むには、-o/--output フラグを使用します。
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"
kubeaudit 設定ファイルで指定されたカスタムルールに基づいてマニフェストを修正するには、-k/--kconfig フラグを使用します。
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"
Kubeaudit は、クラスター内のコンテナ内で実行されているかどうかを検出できます。その場合、そのクラスター内のすべての Kubernetes リソースを監査しようとします:
kubeaudit all
Kubeaudit は、ローカルの kubeconfig ファイル ($HOME/.kube/config) を使用してクラスターへの接続を試みます。別の kubeconfig の場所は --kubeconfig フラグで指定できます。kubeconfig のコンテキストを指定するには、-c/--context フラグを使用します。
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
Kubernetes 設定ファイルの詳細については、https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ を参照してください。
Kubeaudit は、3 つのレベルの重大度で結果を生成します:
Error: セキュリティ問題または無効な Kubernetes 設定Warning: ベストプラクティスの推奨事項Info: 情報提供、アクションは不要。これにはオーバーライドされた結果が含まれます。最小重大度レベルは --minSeverity/-m フラグを使用して設定できます。
デフォルトでは、kubeaudit は人間が読みやすい形式で結果を出力します。出力をさらに処理する場合は、--format json フラグを使用して JSON で出力するように設定できます。結果をログとして出力するには (以前のデフォルト)、--format logrus を使用します。一部の出力形式では、端末で結果を読みやすくするために色が含まれています。色を無効にするには (出力をテキストファイルに送信する場合など)、--no-color フラグを使用できます。
--format sarif フラグを使用して、SARIF 形式で kubeaudit レポートを生成できます。SARIF 結果をファイルに書き込むには、> で出力をリダイレクトします。例:
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif
重大度レベル error の結果がある場合、kubeaudit は終了コード 2 で終了します。これは --exitcode/-e フラグを使用して変更できます。
kubeaudit をカスタマイズするすべての方法については、グローバルフラグ を参照してください。
| コマンド | 説明 | ドキュメント |
|---|---|---|
all | 利用可能なすべての監査人を実行、または kubeaudit 設定で指定されたものを実行します。 | docs |
autofix | セキュリティ問題を自動的に修正します。 | docs |
version | 現在の kubeaudit バージョンを表示します。 |
監査人は個別に実行することもできます。