Aqua Enterprise Functions機能のポリシー設定と内容をまとめてみた

2022.02.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、コンサル部@大阪オフィスのTodaです。

aqua社が提供しているAqua Enterpriseを試す機会がありFunctions(関数)機能について確認をしています。
今回は保証ポリシーとランタイムポリシーについて確認をして内容をまとめています。

Aqua Enterpriseとは?

Aqua Enterpriseはaqua社が提供するソリューションでコンテナとクラウドネイティブアプリのために開発された、 フルライフサイクルなセキュリティソリューションになります。

■ aqua コンテナ・クラウドネイティブアプリのためのセキュリティソリューション
https://www.creationline.com/aqua

製品の内容については下記記事をご覧ください。

Functions機能について

Functions機能はAWS Lambda, Azure Functions, Google Cloud Functionsを対象とした保証とランタイムの監視・制限をおこなう機能になります。
ランタイムの監視・制限にはNanoEnforcerを利用しておこない、AWS Lambdaの場合レイヤーを追加する事で対応が可能です。
設定は「Assurance Policies(保証ポリシー)」と「Runtime Policies(ランタイムポリシー)」でおこないます。

ポリシーについて

Assurance Policies(保証ポリシー)

監視対象の内容を確認して権限、ライブラリの脆弱性、CVEの有無をチェックして問題が確認できた場合、ログの記録、動作の制限をおこないます。

設定箇所

Aquaにログインを頂き、左メニューから[Policies] > [Assurance Policies]を選択ください。
一覧に表示されるポリシーの設定の中で[Type:Function]となっているものが対象になります。
新規でポリシーを登録する場合は画面上部[Add Policy] > [Function Assurance]を選択します。

Assurance Policies設定箇所

設定内容

ポリシーの設定には下記項目がございます。

・Scope
監視対象を指定する項目になります。
関数名またはタグを指定しての適用が可能で、and/or条件を利用して詳細な条件指定が可能です。

・Action
コントロール設定で有効化したチェックに引っかかった場合の対応を設定します。
ログメッセージの書き込み、関数の動作を強制停止する処理ができます。

・Exceptions
コントロール設定で有効化したチェックで除外をする場合のルールを設定します。
特定の脆弱性除外や、指定パスのライブラリをチェックから除外が可能です。

・Controls
関数のチェック内容をコントロールします。
コントロールには下記がございます。

コントロール 説明
CVEs Blocked 関数に1つ以上のCVEが含まれているかどうかをチェックします。
Excessive Permissions 関数の権限でワイルドカード(*)またはAdministratorAccess権限が存在するかをチェックします。
Function Integrity 関数が更新された場合、修正内容のチェックします。
Permissions Blocked 関数の権限で指定された権限が存在するかをチェックします。
Sensitive Data 関数のプログラム内に機密情報が含まれていないかをチェックします。
Vulnerability Score Aquaで評価したスコアで指定レベル以上でないかをチェックします。
Vulnerability Severity Aquaで評価した重大度で指定レベル以上でないかをチェックします。

Assurance Policies設定内容

Runtime Policies(ランタイムポリシー)

監視対象のランタイムを監視して設定内容に合わせて、ログの記録、動作の制限をおこないます。
ランタイムの監視は下記言語が対応しています。

Node.js 8.10、10、12、14
Python 2.7、3.6、3.7、3.8
Java 8、11
.Net Core 2.1、3.1 (C#とPowerShell)

設定箇所

Aquaにログインを頂き、左メニューから[Policies] > [Runtime Policies]を選択ください。
一覧に表示されるポリシーの設定の中で[Workload Type:Function]となっているものが対象になります。
新規でポリシーを登録する場合は画面上部[Add Policy] > [FunctionRuntime]を選択します。

Runtime Policies設定箇所

設定内容

ポリシーの設定には下記項目がございます。

・Scope
監視対象を指定する項目になります。
関数名またはタグを指定しての適用が可能で、and/or条件を利用して詳細な条件指定が可能です。

・Enforcement Mode
AuditとEnforceがあり、設定内容によりControlsの挙動がかわります。

・Controls
関数のチェック内容をコントロールします。
コントロールには下記がございます。

コントロール 説明 Enforcement Mode
Block Malicious Executables 関数の動作で実行可能ファイルの生成を検知します。 Audit:ログの記録のみ
Enforce:生成をブロックし、ログを記録します。
Executables Blocked 関数の動作で指定の実行可能ファイルの動作を判定します。 Audit:ログの記録のみ
Enforce:動作をブロックし、ログを記録します。
Honeypot Honeypot用に構成されます。攻撃者の行動を記録して攻撃手法の分析をおこないます。 Audit:ログの記録のみ
Enforce:攻撃の購読を記録した後、攻撃をブロックし、ログを記録します。

Runtime Policies設定内容

ポリシーでブロックした場合の挙動

LambdaにNanoEnforcerレイヤー追加して、ポリシーによるブロックを動作させた場合「Internal server error」のメッセージにて処理が停止します。

さいごに

今回はAquaのFunctions機能で利用できる保証ポリシーとランタイムポリシーについて確認しました。
少しでもお客様の作りたい物の参考になればと考えております。