Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、2020年10月13日にDan Papandreaが投稿したブログ(https://sysdig.com/blog/k3s-sysdig-falco/)を元に日本語に翻訳・再構成した内容となっております。
Kubernetesが世界を食っている今、Rancherのウィザードによって作成されるK3sと呼ばれる代替の認定Kubernetesオファリングを見つけてください。
K3sは、その簡単なデプロイ、ローフットプリントのバイナリー、そしてフルKubernetesでは高度すぎるかもしれない特定のユースケースに使用できることから、コミュニティで多くの関心を集めています。K3s は完全に CNCF (Cloud Native Computing Foundation) 認定の Kubernetes オファリングです。これは、通常のKubernetesに対して動作するようにYAMLを書くことができ、それらはk3sクラスタ上で全く同じように動作することを意味します。
このブログ記事では、k3sのデプロイをウォークスルーします。その後、Falco OSS(オープンソースのランタイムエンジンとそのルールとアラートがk3sでどのように動作するかを理解したい方のために)とSysdig Essentialsをインストールして、k3sのセキュリティと可視性を素早くウォークスルーし、k3sの凄さをより多くの凄さで強化していきます。8分以内に安全で完全に監視可能なクラスタを作成する方法を、ステップとスクリプトを提供します。
その前に....
軽量なKubernetes:本番環境に対応、インストールが簡単、メモリが半分、すべて100MB以下のバイナリーであり、Edge、IoT、CI、開発、その他多くの方法で、小さくて強力なパッケージにk8sの機能を埋め込むのに便利です。
Ranchers自身のgitpageの言葉を借りれば、次のようになります:
k3s は完全に準拠したプロダクションレディの Kubernetes ディストリビューションであり、以下の変更点があります:
どのような仕組みになっているのか?(図。絵は千の言葉を語ることもあるので) この図は、k3sのコンポーネントがバニラのKubernetesディストリビューションのものと似ていることを示していますが、本質的には似ているだけです。
3つのノードを持つk3sクラスタを迅速にデプロイするために、以下の3つのオプションを提供します。Terraform 設定を更新するか、プロバイダースクリプトでノードを追加することで、ノードを追加することができます。
A. Rancherデフォルトスクリプト
sudo k3s server & # Kubeconfig is written to /etc/rancher/k3s/k3s.yaml
sudo k3s kubectl get node
別のノードで、以下を実行します。node_token は /var/lib/rancher/k3s/server/node-token から来ています。
# on your server
sudo k3s agent --server https://myserver:6443 --token ${NODE_TOKEN}
k3sup は、ローカルまたはリモートの VM 上で k3s を使ってゼロから KUBECONFIG にアクセスするための軽量なユーティリティです (Alex Ellis による)。必要なのは ssh アクセスで、k3sup バイナリを実行し、すぐに kubectl アクセスを得ることができます。
GKEやAWSで3つのノードをプロビジョニングし、その上でk3sをk3supでデプロイするTerraformスクリプトをいくつか用意しました。また、ノードの IP アドレスと ssh 鍵を調整する必要がありますが、さらに簡単にするために k3sup.sh スクリプトも作成しました。
C. マネージドk3sクラスター
Civo Cloudは、世界初のk3sを搭載したマネージドKubernetesサービスです。マネージドサービスを利用すれば、数回クリックするだけでクラスターの準備ができます。
Falcoはオープンソースのランタイムセキュリティツールです。元々はSysdig, Inc.によって構築され、CNCFに寄付され、現在はCNCFのインキュベーションプロジェクトとなっています。Falcoは実行時にカーネルからのLinuxシステムコールを解析し、強力なルールエンジンに対してストリームをアサートします。ルールに違反した場合、Falcoのアラートがトリガーされ、多くの便利なメカニズムに送ることができます(このブログの後の方にリストアップしています)。
これは @krisnova さんがまとめてくれた、Falco がどのように動作するかを示す素晴らしい図で、k3s を表示するために修正しました。
デフォルトでは、Falco には、以下のようなカーネルの異常な動作をチェックする成熟したルールのセットが同梱されています。
shadowutilやpasswdの実行ファイルを変異させる
Falcoは、1つ以上のチャンネルにアラートを送信することができます。
Falco とは何か、何をするのかがわかったので、k3s クラスタで Falco を実行するための手順を説明します。
1. k3s script、k3sup、またはcivo cloudのいずれかの方法でクラスタをデプロイします。
2. オプションで、次のようにしてネームスペースを作成します: kubectl create ns falco。
3. helm install falco falcosecurity/falco を実行します。GCP またはそれ以降のカーネルを使用している場合は、次のようにしてみてください:helm install falco falcosecurity/falco -set ebpf.enabled=true.
ここでは、ルール違反の例と、Falcoからの結果の出力(標準出力)を示します。
Falcoのルール:ネットワークツールがコンテナ内で起動しました。
アタック
結果:カーネルの速度でSTDOUTに通知され、JSONや他の形式で送信することができます!
Falcoルールの詳細やインストールの詳細については、falco.orgをチェックしてみてください。
新しいSysdigのオンボーディングを使えば、5分もかからずに設定できます。
1. 無料トライアルにサインアップしてください。
2. 当社の "Get Started" curlスクリプトを介してインストールします。
インストールが完了したので、Sysdig がもたらすものを見てみましょう。
それでは、作成したばかりの k3s クラスタで、5 つの重要なワークフローを実際に見てみましょう。イメージスキャンから始めて、全体的な可視性に至るまでを見ていきます。セキュリティイベント中に何が発生しているかを理解することは非常に重要です。
1. イメージスキャン
この例では、busyboxイメージをk3sポッドとしてデプロイしています。Sysdigのイメージスキャナは、インライン(CI/CDパイプライン内のローカル)とレジストリからのフェッチの両方でイメージを解析できます。
Sysdigは、イメージスキャンのベストプラクティスに従うのに役立ちます。例えば、インラインスキャンでセキュリティをシフトレフトさせ、パイプラインの早い段階でセキュリティ問題を検出し、レジストリにプッシュされる脆弱なイメージをブロックすることができます。
必要なのはイメージだけ・・・あとは私たちにお任せください。
2. ランタイムセキュリティ:Falcoルールエンジン...PLUS+
Falcoの例で使用したのと同じルールをSysdig Secureでも使用できます。しかし、今回はコンテナを停止して監査証跡を残すことができました。
Sysdig Activity Auditには、k3s cluster/pod/process/containerで実行された他のすべてのコマンドとともに、ncatコマンドの実行が表示されます。
私たちのUIで見ることができる豊富なコンテキストのすべては、下流のSIEMに抽出することができ、セキュリティを組み込んだKubernetesを追求し、パワーアップさせることができます。
3. コンプライアンス
現在のところk3sのCISベンチマークはありませんが、通常のkubernetesホストやlinuxホストの規約は機能します。これにより、インスタンスレベルでk3sクラスタのコンプライアンスを調整し、確実にすることができます。
環境全体のコンプライアンススコアをSysdig内のダッシュボードとして可視化することができます。
4. Kubernetesとコンテナの監視
k3sクラスタの利用率、可用性、全体的なキャパシティを理解することは非常に重要です。この重要な情報は、リソースを追加したり削除したり、それに応じてサイズを変更したりするのに役立ちます。リソースをより良く管理することで、コストを節約することができます。
5. アプリケーションとクラウドサービスの監視
Sysdigが提供するダッシュボードは、最も一般的なクラウドサービスを監視するのに役立ちます。これらはゴールデンシグナルの原則に沿っており、最終的なユーザーから見たアプリケーションの健全性とパフォーマンスの非常に良いアイデアを提供してくれます。
SysdigはKubernetesモニタリングのデファクトスタンダードであるPrometheusと完全に互換性があります。つまり、開発者はPromCatのようなリポジトリから様々なリソースにアクセスしながら、お馴染みのツールを使い続けることができます。
今日は何を学んだのでしょうか?K3sは優秀で、シンプルなバイナリでKubernetesのデプロイのしやすさと機能を手に入れることができます。
Sysdigを加えれば、それは間違いありません。インスタンス上でK3を実行し、DevOpsに不可欠な5つのワークフローと合わせて、すべてを8分以内に完了させることができます。
今すぐk3sクラスタを導入して、FalcoとSysdigで安全に運用しましょう。
役立つリンク
Darren Shepherd氏とRancherチームの皆様、斬新な発想でk3を作成してくれたことに感謝します。