Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
kubeaudit — kubeauditは、一般的なセキュリティ対策に照らしてKubernetesクラスターを監査するのに役立ちます。 | Kitploit
ツール/GitHubGitHub/shopify/kubeaudit
クラウドインフラストラクチャセキュリティ脆弱性スキャナーコンテナセキュリティ構成監査クラウドセキュリティDevSecOps設定ミスArchived
GitHubshopify/kubeaudit

kubeaudit

kubeauditは、一般的なセキュリティ対策に照らしてKubernetesクラスターを監査するのに役立ちます。

リポジトリを見る
1.9k1892年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Build Status Go Report Card GoDoc

Kubernetes 1.19 以降のクラスターでの実行が必須となりました。

未登録の kubernetes.io アノテーションを使用したオーバーライドラベルは非推奨になります。今後は kubeaudit.io を使用することが必須となります。 詳細はこのディスカッションを参照してください。

🚨 非推奨のお知らせ 🚨

Kubeaudit は 2024 年 10 月までに非推奨となる予定です。

このプロジェクトの管理を引き継ぐことに興味のあるメンテナを積極的に募集中です。開発とメンテナンスを継続することに情熱をお持ちの方は、ぜひご連絡ください。

代替品をお探しのユーザーには、同様の機能を提供し、活発にメンテナンスされている Kubebench への移行をお勧めします。

コミュニティの皆様のご貢献とご支援に感謝いたします。

kubeaudit ☁️ 🔒 💪

kubeaudit は、Kubernetes クラスターをさまざまなセキュリティ上の懸念事項について監査するためのコマンドラインツールおよび Go パッケージです。例:

  • 非 root での実行
  • 読み取り専用のルートファイルシステムの使用
  • 危険なケーパビリティの削除、新しいものの追加禁止
  • 特権モードでの実行禁止
  • など!

要約: kubeaudit は安全なコンテナをデプロイすることを保証します!

パッケージ

kubeaudit を Go パッケージとして使用するには、パッケージドキュメントを参照してください。

この README の残りの部分では、kubeaudit をコマンドラインツールとして使用する方法に焦点を当てます。

コマンドラインインターフェース (CLI)

  • インストール
  • クイックスタート
  • 監査結果
  • コマンド
  • 設定ファイル
  • エラーのオーバーライド
  • 貢献

インストール

Brew

root@kitploit:~
brew install kubeaudit

バイナリのダウンロード

Kubeaudit には、正式にリリースされた安定版があります: 公式リリース

自分でビルド

main ブランチには、安定版リリースよりも新しい機能が含まれている場合があります。リリースに含まれていない新しい機能が必要な場合は、最新の Go を使用していることを確認し、以下を実行してください:

root@kitploit:~
go get -v github.com/Shopify/kubeaudit

kubeaudit の使用を開始するには、クイックスタートを参照するか、サポートされているコマンドをすべてご覧ください。

Kubectl プラグイン

前提条件: kubectl v1.12.0 以降

kubectl v1.12.0 で外部関数の簡単なプラグイン機能が導入されたことにより、kubeaudit は以下の方法で kubectl audit として呼び出すことができます。

  • make plugin を実行し、$GOPATH/bin を PATH に含める。

または

  • バイナリ名を kubectl-audit に変更し、PATH に配置する。

Docker

Docker Hub が Free Team 組織を廃止したため、Docker Hub へのイメージの公開は行わなくなりました。当面は 古いイメージ が引き続き利用可能ですが、いつでも利用できなくなる可能性があります。まもなく Github Container registry へのイメージ公開を開始する予定です。

クラスター内でジョブとして kubeaudit を実行するには、クラスター内での kubeaudit の実行 を参照してください。

クイックスタート

kubeaudit には 3 つのモードがあります:

  1. マニフェストモード
  2. ローカルモード
  3. クラスターモード

マニフェストモード

-f/--manifest フラグを使用して Kubernetes マニフェストファイルが指定された場合、kubeaudit はそのマニフェストファイルを監査します。

コマンド例:

root@kitploit:~
kubeaudit all -f "/path/to/manifest.yml"

出力例:

root@kitploit:~
$ 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
...

指定された最小重大度のエラーが見つからなかった場合、以下が返されます:

root@kitploit:~
All checks completed. 0 high-risk vulnerabilities found

自動修正

マニフェストモードは、autofix コマンドを使用してすべてのセキュリティ問題を自動修正することもサポートしています:

root@kitploit:~
kubeaudit autofix -f "/path/to/manifest.yml"

修正されたマニフェストをソースファイルの代わりに新しいファイルに書き込むには、-o/--output フラグを使用します。

root@kitploit:~
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"

kubeaudit 設定ファイルで指定されたカスタムルールに基づいてマニフェストを修正するには、-k/--kconfig フラグを使用します。

root@kitploit:~
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"

クラスターモード

Kubeaudit は、クラスター内のコンテナ内で実行されているかどうかを検出できます。その場合、そのクラスター内のすべての Kubernetes リソースを監査しようとします:

root@kitploit:~
kubeaudit all

ローカルモード

Kubeaudit は、ローカルの kubeconfig ファイル ($HOME/.kube/config) を使用してクラスターへの接続を試みます。別の kubeconfig の場所は --kubeconfig フラグで指定できます。kubeconfig のコンテキストを指定するには、-c/--context フラグを使用します。

root@kitploit:~
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 結果をファイルに書き込むには、> で出力をリダイレクトします。例:

root@kitploit:~
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif

重大度レベル error の結果がある場合、kubeaudit は終了コード 2 で終了します。これは --exitcode/-e フラグを使用して変更できます。

kubeaudit をカスタマイズするすべての方法については、グローバルフラグ を参照してください。

コマンド

監査人

監査人は個別に実行することもできます。

グローバルフラグ

設定ファイル

kubeaudit 設定は 2 つの目的に使用できます:

  1. 一部の監査人のみを有効にする
  2. 監査人の設定を指定する

個々の監査人にフラグを使用して指定できる設定はすべて、設定を使用して表現できます。

設定の形式は次のとおりです:

root@kitploit:~
enabledAuditors:
  # 監査人は明示的に "false" に設定されていない限り、デフォルトで有効になります
  apparmor: false
  asat: false
  capabilities: true
  deprecatedapis: true
  hostns: true
  image: true
  limits: true
  mounts: true
  netpols: true
  nonroot: true
  privesc: true
  privileged: true
  rootfs: true
  seccomp: true
auditors:
  capabilities:
    # 追加リストに必要なケーパビリティを追加すると、kubeaudit はエラーを報告しなくなります
    allowAddList: ['AUDIT_WRITE', 'CHOWN']
  deprecatedapis:
    # バージョンが指定されておらず、'deprecatedapis' 監査人が有効な場合、非推奨の API で定義されたリソースに対して WARN 結果が生成されます。
    currentVersion: '1.22'
    targetedVersion: '1.25'
  image:
    # イメージが指定されておらず、'image' 監査人が有効な場合、タグなしのイメージを使用しているコンテナに対して WARN 結果が生成されます
    image: 'myimage:mytag'
  limits:
    # 制限が指定されておらず、'limits' 監査人が有効な場合、cpu またはメモリ制限が指定されていないコンテナに対して WARN 結果が生成されます
    cpu: '750m'
    memory: '500m'

各監査人の詳細については、設定内の監査人固有の説明を含め、監査人ドキュメントを参照してください。

注意: kubeaudit 設定は、--kubeconfig フラグで指定される kubeconfig ファイル (Kubernetes 設定ファイルを指します。ローカルモードを参照) とは異なります。また、kubeaudit 設定をサポートしているのは all および autofix コマンドのみであることに注意してください。他のコマンドでは機能しません。

注意: フラグと設定ファイルを組み合わせて使用する場合、フラグが優先されます。

エラーのオーバーライド

特定のコンテナや Pod に対して、オーバーライドラベルを追加することでセキュリティ問題を無視できます。これにより、監査人は error 結果の代わりに info 結果を生成し、監査結果名に Allowed が追加されます。ラベルは各監査人のドキュメントに記載されていますが、オーバーライドをサポートする監査人の一般的な形式は次のとおりです:

オーバーライドラベルは key と value で構成されます。

key は、オーバーライドタイプ (コンテナまたは Pod) と各監査人に固有の オーバーライド識別子 の組み合わせです (key の形式については、各監査人のドキュメントを参照してください)。key はオーバーライドタイプに応じて 2 つの形式のいずれかを取ります:

  1. コンテナオーバーライド: 特定のコンテナに対して監査人をオーバーライドします。形式は次のとおりです:
root@kitploit:~
container.kubeaudit.io/[コンテナ名].[オーバーライド識別子]
  1. Pod オーバーライド: Pod 内のすべてのコンテナに対して監査人をオーバーライドします。形式は次のとおりです:
root@kitploit:~
kubeaudit.io/[オーバーライド識別子]

value が空でない文字列に設定されている場合、OverrideReason として info 結果に表示されます:

root@kitploit:~
$ kubeaudit asat -f "auditors/asat/fixtures/service-account-token-true-allowed.yml"

---------------- Results for ---------------

  apiVersion: v1
  kind: ReplicationController
  metadata:
    name: replicationcontroller
    namespace: service-account-token-true-allowed

--------------------------------------------

-- [info] AutomountServiceAccountTokenTrueAndDefaultSAAllowed
   Message: Audit result overridden: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
   Metadata:
      OverrideReason: SomeReason

Kubernetes 仕様に従い、value は 63 文字以下で、空であるか、英数字 ([a-z0-9A-Z]) で始まり、英数字で終わり、間にダッシュ (-)、アンダースコア (_)、ドット (.) を含む必要があります。

複数のオーバーライドラベル (複数の監査人用) を同じリソースに追加できます。

例については、オーバーライドしたい監査人の特定の監査人ドキュメントを参照してください。

ラベルの詳細については、https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ を参照してください。

貢献

バグの修正、機能の提供、タイプミスの修正など、ぜひご協力ください。行動規範に従っていただくようお願いいたします。

  1. 自分のフォークを作成してください!
  2. ソースを取得: go get github.com/Shopify/kubeaudit
  3. ソースディレクトリに移動: cd $GOPATH/src/github.com/Shopify/kubeaudit
  4. フォークしたリポジトリをフォークとして追加: git remote add fork https://github.com/you-are-awesome/kubeaudit
  5. フィーチャーブランチを作成: git checkout -b awesome-new-feature
  6. Kind をインストール
  7. テストを実行してすべてが期待通り動作するか確認: USE_KIND=true make test (Kind なしでテストを実行する場合: make test)
  8. 変更をコミット: git commit -am 'Adds awesome feature'
  9. ブランチにプッシュ: git push fork
  10. コントリビューターライセンス契約に署名
  11. PR を提出 (すべての PR は 🐛 (バグ修正)、✨ (新機能)、📖 (ドキュメント更新)、または ⚠️ (破壊的変更) のラベルを付ける必要があります)
  12. ???
  13. 利益

PR を開く前に CLA に署名していなかった場合は、PR に "I've signed the CLA!" とコメントを追加することでチェックを再実行できることに注意してください。

ツールをダウンロード
コマンド説明ドキュメント
all利用可能なすべての監査人を実行、または kubeaudit 設定で指定されたものを実行します。docs
autofixセキュリティ問題を自動的に修正します。docs
version現在の kubeaudit バージョンを表示します。
コマンド説明ドキュメント
apparmorAppArmor なしで実行されているコンテナを見つけます。docs
asat自動的にマウントされたデフォルトサービスアカウントを使用している Pod を見つけます。docs
capabilities推奨されるケーパビリティを削除していない、または新しいケーパビリティを追加しているコンテナを見つけます。docs
deprecatedapis非推奨の API バージョンで定義されたリソースを見つけます。docs
hostnsHostPID、HostIPC、または HostNetwork が有効になっているコンテナを見つけます。docs
image希望するバージョンのイメージ (タグ経由) を使用していない、またはタグなしのイメージを使用しているコンテナを見つけます。docs
limits指定された CPU およびメモリ制限を超えている、または制限を指定していないコンテナを見つけます。docs
mounts機密性の高いホストパスがマウントされているコンテナを見つけます。docs
netpolsデフォルト拒否ネットワークポリシーを持たない名前空間を見つけます。docs
nonrootroot として実行されているコンテナを見つけます。docs
privesc権限昇格を許可しているコンテナを見つけます。docs
privileged特権モードで実行されているコンテナを見つけます。docs
rootfs読み取り専用ファイルシステムを持っていないコンテナを見つけます。docs
seccompSeccomp なしで実行されているコンテナを見つけます。docs
短縮長い説明
--format使用する出力形式 ("sarif", "pretty", "logrus", "json" のいずれか) (デフォルトは "pretty")
--kubeconfigローカルの Kubernetes 設定ファイルへのパス。ローカルモードでのみ使用されます (デフォルトは $HOME/.kube/config)
-c--context使用する kubeconfig コンテキストの名前
-f--manifest監査する yaml 設定へのパス。マニフェストモードでのみ使用されます。標準入力から読み取るには - を使用できます。
-n--namespace指定された名前空間のリソースのみを監査します。マニフェストモードでは現在サポートされていません。
-g--includegeneratedスキャンに生成されたリソース (デプロイメントによって生成された Pod など) を含めます。生成されたリソースに対して kubeaudit が結果を生成するようにしたい場合 (カスタムリソースがある場合や、所有者リソースが存在しなくなった孤立リソースをキャッチしたい場合など) にこのフラグを使用できます。
-m--minseverity報告する最小の重大度レベルを設定します ("error", "warning", "info" のいずれか) (デフォルトは "info")
-e--exitcode重大度 "error" の結果がある場合に使用する終了コード。慣例として、0 は成功、0 以外はエラーを示します (デフォルトは 2)。
--no-color出力で色を使用しません (デフォルトは false)