fbpx

ヒューマンエラーをコントロールしながらオブジェクトラベルを活用 #aqua #コンテナ #セキュリティ #kubernetes

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

本ブログは「Aqua Security」社の技術ブログで2020年11月5日に公開された「 Taking Advantage of Object Labels while Controlling the Human Factor 」の日本語翻訳です。

ヒューマンエラーをコントロールしながらオブジェクトラベルを活用


オブジェクトラベルの使用は、業界のベストプラクティスにまで成長しています。ラベルを使用すると、コンテナイメージ、デプロイメント、コンテナ、ボリューム、ネットワークなどのオブジェクトにメタデータを適用できます。しかし、オブジェクトラベルの作成を自動化したとしても、ヒューマンエラーの可能性はまだあります。

実質どんなテキストデータでもラベルとして追加できます。ラベルとして追加できるテキストデータは、アーティファクトのソースと宛先、ライセンス情報、作成者とメンテナ、コンテナ間の関係などさまざまです。実際、ワークロードの保証と保護に関するセキュリティ上の決定を行うためのメタデータを提供するために、ラベルが活用されています。また、ラベルの使用方法を標準化するための継続的な取り組みが行われています。例えば、Label Schema (後日 OCI Annotaions に取って代わられました)などです。

ラベルは2つの利用者によって利用されます。1つ目は「人」です。特定のオブジェクトのメタデータを表示したり、同じメタデータを共有する複数のオブジェクトを検索したり、フィルタリングしたり等に利用します。2つ目は「人以外」です。通常はオブジェクトのメタデータを参照するプロセスで、オブジェクトがどこにどのようにデプロイされる必要があるかを自動的に決定します。これについては、以下の「一般的なユースケース」で詳しく説明します。

Aqua の Image Assurance と Kubernetes Assurance を使用して、1つまたは複数のラベルとその値の設定を強制し、「適合」とマークすることでイメージのデプロイを承認することができます。高度なユースケースでは、イメージが非準拠と判断された場合はデプロイを防ぐことが可能です。まず、イメージラベルに関連する一般的なユースケースを見てみましょう。

一般的なユースケース

アーティファクトの分類と整理

ビジネスに合わせて環境が拡大していく中で、管理すべきアーティファクトは多数に及ぶでしょう。ラベルはアーティファクトに対して簡単にタグ付けできるので、アーティファクトを簡単に管理・維持できます。

開発ライフサイクルのサポートとコンプライアンスの保証

開発ライフサイクルの一環として、さまざまなコンプライアンスルールを実施しようとすることがあります。これはラベルを活用することで実現できます。

例えば、「所有者(owner)」のような名前のラベルを使用することがあります。開発者は、すべてのコンテナイメージに所有者を示すラベルを割り当てる必要があります。これはコンテナに問題が発生した場合に、問題を解決するための適切なリソースを迅速に特定するためです。

先述のユースケースの他に、自社の運用に合わせて、場合によっては社内外の監査人や規制上の要件で別のユースケースを求められることもあります。いずれにせよ、ラベルを使うことで運用が楽になります。

デプロイメントの自動化

ラベルに配置する情報は、ときにワークロードをどのように配置するかを決定します。アプリケーション内のワークロードが、特定のプロキシサーバの背後に配置する必要があるシナリオを考えてみましょう。この場合、コンテナイメージに「HasProxy」ラベルを追加し、プロキシの背後にデプロイする必要があるコンテナには「true」という値が与えられます。

DevOps チームがコンテナをデプロイする際に、ラベルの存在とその値に基づいてコンテナの前段にあるプロキシサーバーのデプロイと設定を自動化できます。プロキシ経由でしかアクセスできないという事実に基づいて、ワークロードへの直接アクセスを防止し、適切なネットワークに配置し、関連するセキュリティルールと制限を設けられます。

別のシナリオでは、コンテナイメージが特定の機密データを含むかどうかに基づいて、パブリックネットワーク上で公開するか否かを指定できます。この情報を使用して、DevOps チームはワークロードをどこに置くべきか(あるいはどこに置くべきではないのか)、ワークロードの権限、ワークロードへのアクセス権を決定できます。

デプロイメントプロセスの自動化は時間と労力を節約できるだけでなく、ヒューマンエラーの可能性を減らすことができるという点で価値があります。

ラベルを使用してデプロイメントを自動化することを決めたのならば、それを強制する手段も必要です。ここで人的な要素が重要になってきます。なぜなら最終的にはミスを起こす可能性があり、統合が深まれば深まるほど、そのミスはビジネスに悪影響を及ぼす可能性があるからです。

人的要素をコントロールする

適切なラベルの使用は、あなたのビジネスのために有効であることは間違いありません。しかしラベルの作成プロセスは、少なくとも一部は手作業(つまり間違いやすく)であり、ここに多くの問題があります。正しいラベルが正しいワークロードに追加されたことを、どのようにして信頼できるのでしょうか。自動化されたデプロイメントプロセスが、適切な場所へ配備されるようになっていることを、どのようにして保証できますか。Aqua Enterprise の Assurance 機能を使用することで、プロセスの人的要素をコントロールできます。

コンテナイメージが定義したプロセスに準拠しているか、ワークロードが安全にデプロイされているかを確認するために、いくつかの検証機能を提供しています。1つ目のチェックは、イメージがビルドされた際に行います。2つ目は、ワークロードがデプロイされる前に行います。

  1. CI/CD プロセスにおいて、Aqua の Image Assurance Policy は、事前に定義された値を持つ1つ以上のラベルに基づいて、イメージのコンプライアンス状態を合否判定します。
  2. Aqua の Kubernetes Assurance Policy(KAP)は、Rego言語で定義されたカスタムコンプライアンススクリプトを追加できます。カスタムコンプライアンスと KAP を組み合わせて YAMLファイルをスキャンし、ワークロードが適切に定義されていることを確認します。これを Kubernetes の Admission Controller の一部として行い、デプロイメントが適切に設定されていない場合は通知します。

先ほどの「HasProxy」ラベルを使った自動化の例に戻ります。1つ目のチェックの際に、コンテナイメージにこのラベルが含まれているかを確認し、まだ含まれていない場合はイメージに対して非準拠のステータスを付けます。2つ目のチェックでは、デプロイメントが適切に定義されているか、コンテナが直接アクセスを禁止する適切なネットワークポリシーに割り当てられているか、その他のカスタムチェックが定義されているかを確認します。

オブジェクトラベルを最大限に活用する

オブジェクトラベルを理解し活用することで、さまざまな環境でセキュリティやコンプライアンスのルールを作成し、自動化できます。Aqua の Image Assurance と Kubernetes Assurance Policy は、ヒューマンエラーの課題に対処しながら、ポリシーがどのようなものであっても、必要な検証と実施を提供することで自動化を補完します。

最新版の Aqua Enterprise は、アプリケーションのライフサイクルの開発、デプロイメント、ランタイムの各段階で Kubernetes のセキュリティを確保するため、その他多くの機能が含まれています。

Try Aqua Enterprise today
Get a Demo

Aqua に関する最新情報はこちらをご覧ください。

New call-to-action
新規CTA