fbpx

クラウドネイティブセキュリティのベストプラクティス:AdmissionControllerを使用したイメージ管理 #AquaSecurity #Kubernetes #セキュリティ

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは「Aqua Security」社の技術ブログで2020年2月17日に公開された「 Cloud Native Security Best Practices: Using Kubernetes Admission Controller for Image Assurance 」の日本語翻訳です。

クラウドネイティブセキュリティのベストプラクティス:Kubernetes Admission Controller を使用したイメージ管理


クラウドネイティブテクノロジーは急速に進化し、その採用率も高くなっています。しかし、セキュリティプラクティスは遅れをとっており、完全に適用されていない、場合によっては適用が遅れすぎています。その結果、後になって顧客は高いコストを支払うことになります。Aqua Cloud Native Security Platform はこれらの課題に独自に対処します。このブログでは、アプリケーションパイプラインを保護するための重要な Aqua CSP の1つの機能である Aqua kube-enforcer について説明します。

ソリューションアーキテクトとして、私はしばしば顧客や見込み顧客に対し、彼らのデジタルトランスフォーメーションについてお話する機会があります。現在ほとんどの顧客がアプリケーションを迅速に 開発~デプロイ~実行 をする必要があるため、クラウドネイティブアプリケーション、コンテナ、および Kubernetes が最も重要と考えられています。顧客はアプリケーションの実行場所を制御し、インフラストラクチャとクラウドプロバイダーを簡単に切り替えられるようにしたり、素早く更新をリリースしたいと考えています。

従来のアプリケーションと同様に、組織がクラウドネイティブなアプローチに移行する際には、セキュリティポリシーとスタンダードを適用・実施することが重要です。しかし従来のセキュリティソリューションでは、クラウドネイティブには対応できません。また、プロセスも新たな未知の領域に最適化されていません。
本来は、アプリケーションがデプロイされるずっと前に、セキュリティチームが開発プロセスに関与する必要があります。

多くの場合、顧客は脆弱性スキャンのみに焦点を当てています。これは良いスタートですが、スキャン結果に基づき実行できるイメージを決定するポリシーを自動的に適用しないと、それらの結果は「情報のみ」のままで存在するリスクに対処できない可能性があります。

Aqua CSP などの完全なクラウドネイティブセキュリティソリューションでは、これに対応できます。このブログでは、Aqua CSP のコアコンポーネントの1つである Aqua kube-enforcer について説明します。

Kube-Enforcer: Aqua CSP の Admission Controller

Kube Enforcer は Aqua CSP の Admission Controller です。Kube Enforcer は、スキャン済み・マルウェアに感染していない・ポリシーに準拠したイメージのみが環境で使用されるようにします。

「準拠イメージと非準拠イメージをどのように定義するのですか?」その答えは Aqua の Image Assurance Policy です。

Aqua の Image Assurance Policy は、コンテナライフサイクルの最初の部分であるイメージの開発とデプロイを対象としています。Image Assurance Policy は、イメージのセキュリティ問題を検出、評価、報告します。次に Aquaでは、顧客の要望に応じて様々な形態のリスク管理を提供しています。

  • Aqua は、セキュリティ上の問題があるイメージに基づいてコンテナのデプロイをブロックできます
  • 既知のリスクを持つイメージを使用してデプロイされるリスクを軽減するのに役立ちます

Aqua CSP によるイメージスキャン

イメージスキャンプロセス中に、Aqua CSP は OS パッケージとプログラミング言語ファイルの脆弱性をスキャンします。内容を識別したら、既知のオープンソースの脆弱性の脅威インテリジェンスと脆弱性を比較します。さらに、Aqua CSP はマルウェアをスキャン、シークレットキーなどの機密データや証明書を検出、カスタムコンプライアンスチェックの定義できます。その後イメージスキャンの結果は、定義された Image Assurance Policy と比較されます。 Image Assurance Policy は、機密データ、マルウェア、承認済みベースイメージ、OSSライセンスブラックリスト/ホワイトリスト、必須パッケージバージョン、カスタムコンプライアンスチェックなど、複数の制御オプションを含むコンプライアンスゲートと考えてください。スキャンが完了すると、イメージが Image Assurance Policy に準拠しているかどうかが分かります。脆弱性が特定された場合は、関連するベンダーと NVD の情報を確認し、修正方法を学ぶことができます。詳しくは、脆弱性管理のベストプラクティスをご覧ください。

Aqua CSP はイメージをスキャンし、詳細で実用的な概要レポートを提供するだけでなく、インスタンス化されたイメージに一意の識別子を割り当てます。一意の識別子により、 Admission Controller はイメージが Image Assurance Policy に準拠しており、パイプラインの初期段階でスキャンされたイメージと同じであることを確認できます。

Aqua CSP の Admission Controller は、Kubernetes の組み込み機能を活用します。詳しくは、 Kubernetes の Admission Controller をご覧ください。

以下は、Aqua CSP の Admission Controller を Kubernetes API サーバに登録する ValidatingWebhookConfiguration の例です。

参考:Aqua CSP は複数の制御を備えた階層型セキュリティアプローチを提供します。未登録または非準拠のイメージをブロックするオーケストレーターとして Kubernetes を使用していない場合、Aqua Enforcer(Aqua コンポーネントの1つ)によりコンテナランタイムレベルで非準拠のコンテナをブロックします。

Aqua CSP Admission Controller の動作

それでは、Aqua CSP の Admission Controller の動作を見てみましょう。この例では、ssl-cert-*.key などの機密情報を含む PostgreSQL:9.5 イメージを使用しています。

最初にイメージをスキャンし、「Docker-Hub」と名付けた Image Assurance Policy を適用した結果を確認します。

ポリシーで、機密データ制御(Sensitive Data)オプションを有効にしました。

スキャンプロセスが完了すると、特定されたリスクに関するすべての情報を含む詳細なレポートが表示されます。

リスクとそれが見つかった場所(パス)に関する詳細情報を見ることができます。

次に Runtime Policy を定義し、非準拠イメージをブロック(Block Non-Compliant Images)オプションを有効にします。

Runtime Policy を有効にしたので、postgres.yaml ファイルを使用して非準拠のイメージをデプロイしようとします。

予想どおり、Aqua CSP はデプロイをブロックします。

Aqua CSP の Admission Controller はデプロイをブロックし、CLI でエラーを返し、詳細な監査イベントを記録します。イベントは Splunk や Elastic Search などの SIEM や分析ツールに転送することもできます。

裏で何が行われているか見てみましょう。まず Aqua CSP の Admission Controller は、Webhook Config を介して Kubernetes API サーバからリクエストを受信し、認証および承認を受けます。次に、コンポーネントは postgres.yaml ファイルで指定されているイメージが準拠しているかどうかをチェックし、非準拠イメージのデプロイをブロックします。

まとめ


以下、Aqua CSP Admission Controller について説明した内容をまとめました。

  • Aqua CSP Kube Enforcer は、オブジェクトが作成される前に、リクエストが認証および承認された後に Kubernetes API サーバへのリクエストをインターセプトするコンポーネントです
  • Aqua CSP Kube Enforcer は、Aqua CSP のオプション機能です。Kubernetes Admissions Controller として実装され、Kubernetes コマンドを Aqua の Image Assurance Policy に基づき検査します
  • Aqua CSP Kube Enforcer はクラスター上に作成され、Kubernetes API サーバからの呼び出しを待機します
  • Aqua CSP Kube Enforcer は、登録されていない、または Image Assurance Policy に準拠していないイメージが含まれている場合、Pod の作成または更新を停止します
  • Aqua CSP Kube Enforcer は、非ルートユーザコンテキストで実行される Web サーバであるため、特別な権限は必要ありません

Aqua CSP Admission Controller は、セキュリティスタンダードとポリシー(この場合はイメージリスク管理)を実施するための非常に重要な機能を提供します。この機能は、さらなる Kubernetes 制御機能の可能性を提供します。

New call-to-action

New call-to-action
新規CTA