導入
Kubescapeは、リスク分析、セキュリティコンプライアンス、RBACビジュアライザ、およびイメージの脆弱性スキャンに使用される、Armosecによって開発されたKubernetesオープンソースツールです。さらに、Kubescapeは、潜在的な構成の問題を検出して展開を攻撃のリスクにさらす可能性があるものを検出するためにKubernetesマニフェストをスキャンすることができます。Helmチャートをスキャンし、RBAC(ロールベースのアクセス制御)の違反を検出し、リスクスコアの計算を実行し、時間の経過とともにリスクの傾向を表示します。
Kubescapeの主な機能:
- Kubernetesの誤構成を検出し、Armosec Cloud Portalを介して補助対策を提供します。
- リスク分析と時間の経過によるトレンドの表示、Armosec Cloud Portalを介して。
- ArmoBest、NSA、MITRE、およびDevopsベストプラクティスなど、複数のセキュリティコンプライアンスフレームワークを含みます。
- 例外管理サポートにより、Kubernetes管理者が受け入れ可能なリスクレベルをマークできます。
- Jenkins、Githubワークフロー、Prometheusなど、さまざまなツールと統合します。
- イメージスキャン – 脆弱性をスキャンして、修正すべき脆弱性を簡単に見る、並べ替え、フィルタリングします。
- RBACの複雑さを簡素化し、クラスター内のRBAC構成を示すわかりやすいビジュアルグラフを提供します。
Kubescapeは異なる方法で実行できます:
- コマンドラインインターフェース(CLI)を介して。これは、スクリプトやさまざまな自動化、CI/CDパイプライン内で実行するための推奨方法です。結果は解析のためにArmosec Cloud Portalにアップロードできます。
- Kubernetesクラスター内のcronjobとして。このモードでは、KubescapeがKubernetesクラスターの変更を常に監視し、スキャン結果をArmosec Cloud Portalにアップロードします。この機能は、DOKSクラスターにArmo Cluster Componentsを展開した場合にのみ機能します。
- Armosec Cloud PortalのWebインターフェースを介して。構成スキャン、イメージスキャンのトリガーを設定したり、RBACルールを表示および検査したり、フレームワークをカスタマイズしたりできます。この機能は、DOKSクラスターにArmo Cluster Componentsを展開した場合にのみ機能します。
- Visual Studio Code IDE内で。これにより、開発初期段階で問題を迅速に発見できます。
Kubescapeは、次のようなミス構成を検出するために異なるフレームワークを使用しています:
Kubescapeは無料ですか?
はい、ツールとコミュニティエディションは永久に無料です。ただし、クラウドポータルのバックエンド実装やその他の高度な機能は有料です。また、1クラスターあたりスキャンできる最大ワーカーノード数に制限があります(最大10)。スキャンレポートのデータ保持期間は、Armoクラウドポータルで1か月間に制限されています。
詳細については、価格プランを参照してください。
Kubescapeはオープンソースですか?
はい、ツールは確かにオープンソースです。各コンポーネントの実装の詳細については、Armo GitHubホームページをご覧ください。ただし、クラウドポータルのバックエンド実装はオープンソースではありません。
このガイドでは、Kubescapeを使用してKubernetesアプリケーションのサプライチェーン(コンテナイメージ、Kubernetes YAMLマニフェスト)のリスク分析を実行し、適切な対策を行う方法を学びます。最後に、CI/CDパイプラインにKubescapeを統合して開発初期段階での脆弱性スキャンを行う方法を学びます。
目次
- はじめに
- 要件
- ステップ1 – Kubescape CLI の理解
- ステップ2 – Armosec Cloud ポータルの理解
- ステップ3 – DOKSのKubescape自動スキャンの構成
- ステップ4 – CI/CDパイプラインでKubescapeを使用してKubernetes構成の脆弱性をスキャンする
- ステップ5 – Kubescapeスキャン結果の調査と報告された問題の修正
- ステップ6 – Kubescape CI/CDワークフローの自動トリガー
- ステップ7 – 連続監視のためのSlack通知を有効にする
- 結論
- 追加リソース
前提条件
このガイドのすべての手順を完了するには、次のものが必要です:
- A working
DOKS
cluster runningKubernetes version >=1.21
that you have access to. For additional instructions on configuring a DigitalOcean Kubernetes cluster, see: How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS). - A DigitalOcean Docker Registry. A free plan is enough to complete this tutorial. Also, make sure it is integrated with your DOKS cluster as explained here.
Kubernetes
との対話のためのKubectl
CLI。この手順に従って、kubectl
とdoctl
でクラスタに接続します。- KubernetesクラスタにKubescapeをインストールするためのHelm。
- Kubescape脆弱性スキャナーと対話するためのKubescape CLI。
- A free Armosec Cloud Portal account used to periodically publish scan results for your Kubernetes cluster to a nice dashboard. Also, the Armosec portal web interface helps you with investigations and risk analysis.
- A Slack workspace you own, and a dedicated Slack app to get notified of vulnerability scan issues reported by Kubescape.
ステップ1 – Kubescape CLIの理解
kubescape
コマンドラインインターフェースを使用して、脆弱性を手動でスキャンすることができます。kubescape CLIは、さまざまなスクリプトや自動化で使用するように設計されています。実用的な例としては、Tekton、Jenkins、GitHubワークフローなどのさまざまなツールを使用して実装されたCI/CDパイプラインがあります。
kubescapeは、Kubernetesクラスタ全体(ワークロード、コンテナなど)をスキャンするように設計されています。必要に応じて、特定の名前空間にスキャンを制限することもできます。その他の機能には、ホストスキャン(ワーカーノード)、ローカルまたはリモートリポジトリのスキャン(例:GitHub)、Kubernetes YAMLマニフェストやHelmチャートの設定ミスの検出が含まれます。 framework
コマンドを使用して、ArmoBest、NSA、MITREなどのさまざまなフレームワークを選択できます。
kubescape CLIが呼び出されると、既知の脆弱性データベースをローカルマシンにダウンロード(または更新)します。その後、スキャンプロセスを開始し、特定の形式で問題を報告します。デフォルトでは、標準出力またはコンソールを使用して要約表を出力します。 kubescapeは、JSON、HTML、SARIFなどの他の形式でもレポートを生成できます。
スキャン結果を後でスキャン結果を格納し、視覚化するために--submit
フラグを使用してArmosec Cloud Portalに結果をプッシュすることも選択できます。
注意:スキャン結果をArmosecクラウドポータルに送信する必要はありません。ポータルを使用する大きな利点は、可視性です。なぜなら、すべてのスキャンレポートや全体的なリスクスコアをチェックできる素敵なダッシュボードにアクセスできるからです。また、長期的な調査やリメディエーションのヒントも提供します。
kubescape CLIで試すためのいくつかの例:
-
整个Kubernetes集群的スキャンを実行し、標準出力にサマリーレポートを生成します:
-
特定の名前空間のみをスキャンに使用します:
-
スキャンから特定の名前空間を除外します:
-
特定の名前空間をスキャンし、結果をArmosecクラウドポータルに送信します:
-
特定のフレームワーク(例:NSA)を使用してクラスタースキャンを実行します:
Kubescapeは、Kubernetesクラスターのホスト(またはワーカーノード)をOSの脆弱性に対してスキャンできます。この機能を有効にするには、kubescape CLIに--enable-host-scan
フラグを渡す必要があります。このフラグが有効になっていると、kubescapeはクラスターにsensors
を展開します。センサーは、各ノードにポッドを展開するKubernetes DaemonSetを使用して作成され、既知の脆弱性をスキャンします。スキャンプロセスが完了すると、センサーはクラスターから削除されます(関連するKubernetesリソースも含めて)。
Kubescape CLIは、すべての利用可能なオプションのヘルプページを提供しています。以下のコマンドを使用してメインのヘルプページを表示できます:
出力は次のようになります:
各kubescape CLIコマンド(またはサブコマンド)には、関連するヘルプページもあり、kubescape [command] --help
を使用してアクセスできます。
詳細な例については、公式の<kubescape CLIドキュメントページをご覧ください。
ステップ2 – Armosecクラウドポータルの使い方を理解する
Armosecは、Kubescapeスキャン結果をアップロードしてリスク分析を実行できる素敵なクラウドベースのポータルを提供しています。これはかなり便利です。各スキャンレポートを視覚化し、検査し、適切な対策を講じて状況を修復し、その後、結果をチェックするために再度スキャンを実行する必要があります。各レポートと関連するリスクスコアの良い視覚的表現を持つことで、報告されたセキュリティの問題を修正するために必要な調査と反復作業を長期間支援します。
無料でアカウントを作成できますが、制限はあります。ワーカーノード数は10台まで、データの保持期間は1か月です。これはほとんどの場合(例:テストや開発のニーズ)に十分であるはずです。kubescapeクラウドアカウントの作成方法については、公式ドキュメントページを参照してください。
アカウントを作成すると、固有のユーザーIDが生成されます。このIDを使用して、特定のアカウントにスキャン結果をアップロードできます。たとえば、CI/CDパイプラインなどの特定の自動化がある場合、スキャン結果をアップロードする必要があります。そのため、関連するユーザーIDを使用して複数のテナントを区別する必要があります。
リスクスコア分析とトレンド
Armosecクラウドアカウントにアップロードされた各スキャンレポートごとに、発見された問題のリストと関連するリスクスコアが追加される新しい履歴レコードが生成されます。これにより、時間の経過とともにリスクスコアの進化を示す傾向や関連するグラフを取得できます。また、主要なセキュリティ問題のリストもメインダッシュボードに生成されます。
以下の画像は、これらの機能を示しています:
Kubescapeリスクスコア値の理解
各スキャンでは、kubescapeは内部コントロールを使用してリソースの潜在的なセキュリティリスクを検証します。 Kubescapeコントロールは、kubescape
ツールがクラスターの特定の側面(またはスキャンされているリソース)をチェックするために使用するテストを示す概念です。さらに、フレームワークは、特定のリソースに対して内部的に使用されるコントロールやテストのコレクションです。したがって、使用するフレームワークに応じて、異なるスイートのチェックが実行されます(それでも、一部のテストは共通のものがあります)。最後に、各テストに関連付けられたリスクファクターに応じて最終スコアが計算されます。
最終スコアは、0から100%までの正の数です。値が低いほど良いスコアを示し、値が高いほど悪いことを示します。したがって、安全側に立ちたい場合は、可能な限り最低の値を目指す必要があります。実際には、30%以下のリスクスコアが良い出発点となるでしょう。
報告されたセキュリティの問題に対する支援された修復
Armosecクラウドポータルが提供するもう一つの便利な機能は、セキュリティの問題の修復支援です。これは、kubescapeスキャナーによって見つかった各セキュリティの問題を修正する方法についての推奨事項を受け取ることを意味します。これは非常に重要です。なぜなら、各報告されたセキュリティの問題を修正するために必要な各イテレーションのプロセスを簡素化し、ループを閉じるからです。
以下の画像は、このプロセスをより良く説明しています:
各報告されたセキュリティの問題には、修復支援を受け取るためにクリックできるレンチツールアイコンが表示されます:
次に、新しいウィンドウが開き、緑色で強調表示された各影響を受けるKubernetesオブジェクトの詳細が表示されます:
C-0018
、C-0030
、C-0086
などの各コントロールをクリックして、強調表示された問題を調査できます。各セキュリティの問題を修正する方法についての提案が表示されます。残されたことは、ヒントに従って各セキュリティの問題を修正することです。
ウェブUIからクラスタースキャンのトリガーを起動する
Armoクラウドポータルは、ArmoクラウドコンポーネントのHelmチャートがDOKSクラスターに展開されている場合、ウェブインターフェイスからクラスタースキャンをトリガーする可能性を提供します(次のステップで説明します)。構成とイメージのスキャンは、ポータルでワンクリックするだけでトリガーできます。この機能を使用するには、Armoクラウドコンポーネントがクラスターのスキャンをバックグラウンドで完了し、結果をアップロードするのを待つ必要があります。
構成スキャンのトリガーは、構成スキャンページに移動し、スキャンボタンをクリックすることで行われます。以下の画像は、このタスクを実行する方法を示しています:
必要に応じて、ポップアップウィンドウで表示された後にスキャンボタンをクリックすると、自動スキャンの現在のスケジュールを設定または変更することもできます。同じウィンドウを使用して、スキャンに使用するコントロールフレームワークを選択できます。以下の画像は、これらのタスクを実行する方法を示しています:
ステップ3 – DOKS用のKubescape自動スキャンの設定
Kubescapeを構成して、特定の時間間隔でクラスタ全体を自動的にスキャンするか、新しいアプリケーションイメージがデプロイされるたびにスキャンするようにすることができます。この機能を実現するには、Armo Cluster ComponentsをHelmを使用してKubernetesクラスタにデプロイする必要があります。また、結果をアップロードして検査するために、Armosec Cloud Portalアカウントが必要です。
Armo Helm chartは、クロンジョブをインストールし、Kubernetesクラスタ全体とコンテナイメージの両方に対して脆弱性スキャンをトリガーします。各クロンジョブのインターバルは、Helm values fileで設定可能です。
DOKSにArmo Cluster Componentsをプロビジョニングする
Kubernetesクラスタにkubescape
をHelmを使用してデプロイする手順:
Helm
レポを追加し、利用可能なcharts
を一覧表示します:
出力は次のようになります:
注意:
興味のあるチャートはarmo/armo-cluster-components
であり、これによりArmoコンポーネントがKubernetesクラスタにインストールされます。このチャートに関する詳細については、armo-helmリポジトリページをご覧ください。
- ArmoアカウントのユーザーIDを取得するためにkubescape CLIを使用します(次のステップで必要です):
出力は次のようになります:
注意:
kubescape CLIを使用してスキャン結果をArmosecクラウドポータルに送信したことがない場合、上記のコマンドは機能しません。この場合は、こちらで説明されているように、ポータルにログインしてアカウントIDを取得する必要があります。
- Armo Kubescapeクラスターコンポーネントをインストールします。専用の
armo-system
ネームスペースも作成されます(<>
プレースホルダーを適切に置換してください):
–create-namespace \
注意:
armo-cluster-components
Helmチャートの特定のバージョンが使用されます。この場合、1.7.15
が選択され、Armoクラスターコンポーネントのリリース1.7.15
に対応します(Step 1.
の出力を参照)。一般的に特定のバージョンにロックするのが良い慣習です。これにより予測可能な結果が得られ、Git
を介したバージョン管理が可能になります。
今、Armoクラスターコンポーネントのデプロイメントがすべて正常に稼働しているかどうかを確認します:
出力は次のようになります:
すべてのArmoクラスターコンポーネントが正常に稼働しているはずです。
- 最後に、数分後にクラウドポータルでクラスタスキャンレポートが利用可能になるはずです。
- 構成スキャン結果:
- イメージスキャン結果:
RBACビジュアライザーの結果:
詳細については、公式ドキュメントのクラスタ脆弱性スキャンページを参照してください。
このガイドで提供されているHelm値ファイルを編集して、Armoクラスタコンポーネントチャートの動作を変更できます。
- 以下の設定を変更できます:
armoScanScheduler
およびarmoKubescapeScanScheduler
値を使用したスキャン間隔。
triggerNewImageScan
値を使用した新しいイメージスキャントリガー。
カスタマイズ可能な値の完全なリストは、公式Helmチャートの値ファイルで利用できます。
変更を適用するには、現在のHelmチャートのバージョンをアップグレードする必要があります(<>
プレースホルダーを適切に置き換えてください):
ステップ4 – CI/CDパイプラインでKubescapeを使用してKubernetes構成の脆弱性をスキャンする
CI/CDパイプラインにセキュリティコンプライアンススキャンツールを組み込み、本番環境での不快な状況を避ける方法について、どのように利益を得ることができますか?
すべては基盤レベルで始まります。ソフトウェア開発が始まる場所です。一般的に、各段階に専用の環境を使用することが望ましいでしょう。したがって、開発の初期段階ではアプリケーションコードが非常に頻繁に変更されるため、専用の開発環境(通常は下位環境と呼ばれる)を使用する必要があります。次に、アプリケーションがより洗練されるにつれて、QA環境でQAチームが手動および/または自動テストを実行します。次に、アプリケーションがQAチームの承認を受けると、ステージングなどの上位環境に昇格し、最終的には本番環境に移行します。アプリケーションが1つの環境から別の環境に昇格するプロセスでは、専用のパイプラインが実行され、アプリケーションアーティファクトを継続的にスキャンし、セキュリティリスクスコアを計算します。スコアが特定の閾値を満たさない場合、パイプラインはすぐに失敗し、アプリケーションアーティファクトの本番環境への昇格が初期段階で停止します。
したがって、セキュリティスキャンツール(例:kubescape)は、開発の初期段階から本番環境に望ましくないアーティファクトをブロックするゲートキーパーとして機能します。同様に、上位環境のパイプラインでは、kubescape
を使用して、最終的な本番段階にアプリケーションアーティファクトが入るかどうかを許可または拒否します。
このステップでは、GitHubワークフローを介した統合脆弱性スキャン付きのサンプルCI/CDパイプラインの作成とテスト方法を学びます。DigitalOcean KubernetesとGithub Actionsの基本を学ぶには、このチュートリアルを参照してください。
次のセクションで提供されるパイプラインは、DigitalOcean kubernetes-sample-appsリポジトリからgame-2048-exampleアプリケーションをビルドおよびデプロイします。
- 高レベルの概要では、Kubernetes-sample-appsリポジトリで提供されるサンプルCI/CDワークフローは、次のステージで構成されています:
- アプリケーションのビルドおよびテストステージ – メインのアプリケーションアーティファクトをビルドし、自動テストを実行します。
- Kubescapeスキャンステージ – アプリケーションに関連するKubernetes YAMLマニフェストで既知の脆弱性をスキャンします。これはゲートとして機能し、最終的なパイプラインの状態(合格/不合格)はこのステップに依存します。失敗した場合、Slack通知も送信されます。
- アプリケーションイメージのビルドとプッシュステージ – 最新のgitコミットSHAを使用してアプリケーションイメージをビルドし、タグ付けします。その後、イメージはDOCRにプッシュされます。
アプリケーションのデプロイメントステージ – アプリケーションをKubernetes(DOKS)にデプロイします。
以下の図は、パイプラインからの各ジョブと関連するアクションの手順を示しています(関連する構成のみが表示されます):
- 注意:
kustomize
ベースのプロジェクトの場合、最終マニフェストをkubectl kustomize </path/to/kustomization_/file>
コマンドでレンダリングすることが最適です。これにより、すべて(リモートリソースを含む)をキャプチャしてスキャンできます。一方、どのKubernetesリソースをパッチする必要があるか特定するのは難しい場合があります。これは、生成されたマニフェストファイルが適用されるすべてのリソースで構成されているためです。これがKustomizeの動作方法です – 各オーバーレイからすべての構成フラグメントを収集し、ベースに適用して最終的な複合体を構築します。
Kubescape
に、customize
構成を保持しているフォルダ全体をスキャンするよう指示することもできます(現在のガイドではこの方法に依存しています)。これにより、リポジトリ内で修正する必要があるリソースを特定しやすくなります。kustomizeによって使用されるリモートリソースは上流で修正する必要があります。また、kustomize
によって生成されたKubernetesのシークレットとConfigMapはキャプチャされません。
特定のセキュリティコンプライアンスレベルを満たさない場合、パイプラインをどのように失敗させますか?
Kubescape CLIは、この目的のために--fail-threshold
というフラグを提供しています。このフラグは、各スキャン後に計算される総合リスクスコアと相関します。しきい値値に基づいてパイプラインを失敗させるか通過させるかを決定し、条件が満たされない場合はアプリケーションの展開を停止することができます。
以下の図は、このガイドで使用されている例のCI/CDパイプラインのフローを示しています:
- 以下の手順に従って、
kubescape
CI/CD GitHubワークフローを作成し、kubernetes-sample-apps GitHubリポジトリで提供されたものをテストしてください: SLACK_WEBHOOK_URL
– kubescapeスキャンの通知に使用されるSlackの着信Webhook URLを保持します。- フォークしたリポジトリのアクションタブに移動し、Game 2048 Kubescape CI/CD Exampleワークフローを選択します:
A new entry should appear in below list after clicking the Run Workflow green button. Select the running workflow to observe pipeline progress:
ワークフローを実行ボタンをクリックして、デフォルト値をそのままにします:
パイプラインは、30
の全体的なリスクスコアのデフォルト閾値が望ましい値よりも低いため、kubescape-nsa-security-checkジョブが実行されると失敗して停止します。また、ワークフローの実行に関する詳細を含むSlack通知も受信するはずです。
次のステップでは、kubescape
スキャンレポートを調査して問題を修正し、リスクスコアを下げてパイプラインを通過させる方法を学びます。
ステップ5 – Kubescapeスキャン結果の調査と報告された問題の修正
リスクスコア値の閾値を満たさない場合、game-2048 GitHubワークフローは失敗し、追加の詳細がSlack通知されます。
game-2048ワークフローは1つのセキュリティチェック(ローカルイメージスキャンはサポートされていません)を実行します – Kubernetesマニフェストの構成ミスチェックです。この目的には、kubescape-nsa-security-checkジョブが使用されます。使用される等価のkubescape
コマンドは次のとおりです – kubescape scan framework nsa /path/to/project/kubernetes/manifests
。
以下のスニペットはkubescape-nsa-security-checkジョブのメインロジックを示しています:
–submit –account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
上記の設定は、kustomize/
ディレクトリに存在するすべてのKubernetesマニフェストを使用して、NSAフレームワークを使用して新しいスキャンを開始するようにkubescape CLIに指示します。また、-tフラグを使用してどの閾値レベルを使用するかを指定し、最終結果をArmoクラウドポータルに送信するように指定します(–submitフラグと–acountを併用)。
したがって、リスクスコアの値を下げてワークフローをパスするには、kubescape-nsa-security-checkジョブによって報告された問題を調査して修正する必要があります。次に、このジョブによって報告されたセキュリティの問題に対処する方法を学びます。
A new browser window opens showing in detail each control and description. You will also be presented with required actions to remediate the issue (highlighted in green color):
ステータスレポートを確認するには、受信したSlack通知からkubescapeスキャン結果リンクをクリックします。次に、Armoクラウドポータルの左メニューからREPOSITORIES SCANスキャンボタンをクリックします。次に、リストからkubernetes-sample-appsエントリをクリックします。
スキャンレポートからすべての情報を収集した後、リポジトリのgame-2048-example/kustomize/resources
サブフォルダーにあるdeployment.yamlファイルを編集してください。修正はすでに行われていますので、ファイルの最後の行のコメントを外すだけです。最終的なdeployment.yaml
ファイルは以下のようになります:
# ドッカーのレジストリ情報を`<>`のプレースホルダーに置換します
- 注意:
この例では、C-0055 の提案は簡略化のため省略されています。Kubernetes におけるセキュアコンピューティングモードについては、こちら を参照してください。 - 何が変わったのか?以下のセキュリティ修正が適用されました:
readOnlyRootFilesystem
– コンテナイメージを読み取り専用で実行します(コンテナ内のkubectl exec
によるファイルの変更ができません)。runAsNonRoot
– game-2048 プロジェクトの USER ディレクティブで定義された非ルートユーザーとして実行します。Dockerfile。
allowPrivilegeEscalation
– allowPrivilegeEscalation を false に設定することで、コンテナの子プロセスが親プロセスよりも権限を上回ることがないようにします。
capabilities.drop
– コンテナをより安全にするために、実行に必要な権限の最小限を提供する必要があります。実践的には、デフォルトですべてを削除し、必要な機能を段階的に追加します。Armosec によるこの記事でコンテナセキュリティについて詳しく説明されています。
A few final checks can be performed as well on the Kubernetes side to verify if the reported issues were fixed:
- 最後に、deployment.yaml ファイルの変更をコミットしてメインブランチにプッシュします。手動でワークフローをトリガーした後、今度は正常に完了するはずです。
- game-2048デプロイメントが読み取り専用(不変)のファイルシステムを持っているかどうかを確認するために、アプリケーションのindex.htmlファイルを書き込んでください:
コンテナが非ルートユーザーとして実行されているかどうかを確認します(ゼロ以外の整数が表示されるはずです。例:1000
):
コンテナが非ルートユーザーとして実行されているかどうかを確認します(ゼロ以外の整数が表示されるはずです。例:1000
):
すべてのチェックがパスした場合、必要なセキュリティ推奨事項が正常に適用されました。
チームが無視しても安全だと考えるいくつかの報告された問題によって最終的なリスクスコアが影響を受けないようにしたい場合があります。 Kubescapeには、この状況を管理し、例外を処理するための組み込み機能が提供されています。
A more efficient approach is where you integrate vulnerability scan tools directly in your favorite IDE (or Integrated Development Environment). This way, you can detect and fix security issues ahead of time in the software development cycle.
この機能について詳しくはこちらをご覧ください。
- IDE用のKubescape
- Kubescapeは、次の拡張機能を介したIDE統合をサポートしています:
上記のプラグインは、開発の初期段階で問題を検出して修正するのに役立ち、それにより本番システムでのフラストレーション、コスト、セキュリティの欠陥を排除します。また、長期的には反復を減らし、人間の作業量を減らすのに役立ちます。たとえば、CI/CD自動化によって報告されたセキュリティの問題ごとに、コードを修正し、変更をコミットし、再度CI/CD自動化を待ち、失敗した場合には繰り返す必要があります。
これらの機能について詳しくは、Kubescape documentationページに移動し、INTEGRATIONSセクションを検索してください。
Step 6 – Kubescape CI/CD Workflowの自動トリガー
以下の行をgame-2048-kubescape.yamlファイルの先頭でコメント解除することで、ワークフローを各コミットまたはメインブランチへのPRごとに自動的にトリガーできます:
ファイルを編集した後、変更内容をメインブランチにコミットし、準備が整いました。
ステップ7 – 継続的なモニタリングのためのSlack通知の有効化
これまでに実装した脆弱性スキャンの自動化は良い出発点ですが、完璧ではありません。なぜでしょうか?
現在のアプローチの1つの問題は、すでに展開したアセットについて新しい問題が報告された場合にわからないことです。つまり、セキュリティリスクを評価し、CI/CDの自動化が実行された特定の時点で問題を修正する対策を取りました。
しかし、その間に新しい問題が報告され、アプリケーションが再び脆弱になった場合はどうでしょうか?
Kubescapeのモニタリング機能は、絶えず開示される新しい脆弱性に対処するのに役立ちます。Slack統合と組み合わせると、本番環境でアプリケーションに影響を与える可能性のある新たに開示された問題をすぐに修正するための即時の対策を取ることができます。
- Armoクラウドポータルは、クラスタースキャンごとにリアルタイムのアラートを送信するためのSlack統合をサポートしています。この機能には、ステップ3 – DOKS向けのKubescape自動スキャンの構成で説明されているように、ArmoクラウドコンポーネントのHelmチャートをDOKSクラスターにインストールする必要があります。
- Slackアラートを有効にすると、次のようなDOKSクラスターで検出された重要な脆弱性に関する通知を受け取ることができます:
- ワーカーノードの脆弱性(OSレベル)。
コンテナイメージの脆弱性。
- さまざまなリソース(デプロイメント、ポッドなど)のKubernetesミス構成。
- まず、Slackアプリを作成する必要があります。次に、OAuth&パーミッションページでSlackボットに以下の権限を付与する必要があります:
channels:join
– ワークスペースのパブリックチャンネルに参加します。channels:read
– ワークスペースのパブリックチャンネルに関する基本情報を表示します。groups:read
– Slackアプリが追加されたプライベートチャンネルに関する基本情報を表示します。chat:write
– @<あなたのSlackアプリ名>としてメッセージを送信します。
im:read
– Slackアプリが追加されたダイレクトメッセージの基本情報を表示します。
mpim:read
– Slackアプリが追加されたグループダイレクトメッセージの基本情報を表示します。
次に、Armoクラウドポータルアカウントの設定ページ(右上の歯車アイコン)に移動します。そこから、統合ページを選択し、Slackを選択します。
今、SlackボットのOAuthトークン(SlackアプリページのOAuth&アクセス許可ページにあります)をトークンを挿入入力フィールドに貼り付けてください。最後に、通知方法とアラートを送信するSlackチャンネルを選択してください。通知の設定ボタンをクリックすると、設定が完了します。以下の画像は詳細を示しています:
Slack統合を構成した後、指定されたチャンネルでクラスタースキャン後に定期的な通知を受け取るはずです:
上記と類似した通知を受け取った場合、Armosec Kubescape Slack統合を正常に構成しました。
このガイドでは、最も人気のあるKubernetes脆弱性スキャンツールの1つであるKubescapeの使用方法を学びました。また、Kubescape CLIを使用してクラスターおよびリポジトリのスキャン(YAMLマニフェスト)を実行する方法を学びました。そして、GitHubワークフローを使用して実装された従来のCI/CDパイプラインに脆弱性スキャンツールを統合する方法を学びました。
最後に、脆弱性スキャンレポートを調査し、状況を是正するための修正を適用し、game-2048アプリケーション(kubernetes-sample-appsリポジトリから)を使用した実践例を通じてリスクスコアを最小限に抑える方法を学びました。
- 詳細を学ぶ
- 以下の追加リソースを読むことで、さらに学ぶことができます:
- Snyk脆弱性スキャンツールの使用
- ArmoによるKubernetesセキュリティベストプラクティス
- Armosecによるセキュリティ問題の事前検知
- ArmosecによるKubernetes展開のセキュリティ確保
- Armosecホストスキャナーの詳細
Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool