ガバナンス仕様言語(GSL)

CloudGuardガバナンス指定言語(GSL)は、ポスチャマネジメントルールを定義するための構文であり、CloudGuardポスチャマネジメントのルールセットに含めることができます。GSL は、さまざまなクラウドプロバイダ(AWS、Azure、GCP、Alibaba Cloud、Kubernetes など) のドメイン固有の機能を追加する一連の関数によって拡張されるコア言語で構成されます。これらの関数には、IP アドレスとネットワーク、インスタンスなどのクラウドエンティティ、文字列一致、日付& 時刻などが含まれます。

使用事例

GSL は、クラウド環境で実行して評価できるコンプライアンスルールとインテリジェンスクエリを作成するために使用されます。CloudGuard には、GSL Builder またはGSL Editor と呼ばれるグラフィカルインタフェースがあり、関連するコンテキスト内でのルールの構築に役立ちます。詳細については、GSLビルダーを参照してください。

規則構文

GSL ルールの形式は次のとおりです。

<Target> should <Condition>

Target は、ルールがチェックするクラウドエンティティタイプです(例: instance やSecurityGroup)。各ルールは、1 つのターゲットのみをチェックできます。

where キーワードを使用して追加するエンティティのより小さなセットに一致するようにターゲットを修飾できます。

ターゲットの正式な定義は次のとおりです。

<entity_type> where <expression>

各変数の意味は以下のとおりです。

  • entity_type - CloudGuard が確認するピボットクラウドエンティティタイプ(インスタンス、SecurityGroup、ELB など)。

  • expression - ターゲットエンティティタイプで一致する任意の複雑なGSL 式を指定できます。

例:

SecurityGroup where name='default' should...

Instance where (tags contain [key='env' and value='prod'] and not name='test') should ...

Condition は、ルールの実際の本質です。これには、CloudGuard が検査する対象のアトリビュートが含まれます。この条件は、ターゲットに関連する複数の属性をテストする複雑なGSL 式にすることができます。

コンテキストトラベル

配カラムを参照するコマンド(with, contain, contain-any, contain-all, contain-none, groupBy など) を使用すると、配カラム内部オブジェクトで検索するアクションを実行できます。

配カラムコマンドを使用するたびに、新しいコンテキストを作成し、配カラムの詳細を削除します。ある意味では、配カラム自体も配カラムになり得る配カラムの子オブジェクトの深部を移動します。これはchild context travel と呼ばれます。

コマンドを使用して、親コンテキストを参照し、親配カラムに戻ることができます。

これを行うには、いくつかのタイプのコマンドを使用できます。各コマンドには、テキスト表現とシンボル表現があります。

コマンド記号

コマンドテキスト

説明

$this()

現在の配カラムコンテキストレベルを参照します。

GSL クエリ内で到達した現在の配カラム

~ root()

配カラムコンテキストの最上位レベルを参照します。

GSL クエリのルートレベルは、アセット自体です。

^

parent(n)

現在の配カラムコンテキストの上のn レベルを参照します。

複数のコンテキストレベルを移動するには、複数のシンボル(^^ または^^^) を入力するか、 parent(2)parent(3) など) と同等のテキストを使用します。

データタイプ

GSLには、文字列(テキスト値)と数値の構文が異なります。

関数

コアGSL 構文は、次のような複数の領域でドメイン固有の機能を提供する内部関数によって拡張されています。IP アドレス、日付、文字列の一致。

構文:

<property_name> <function_name> (<param1>,<param2>...)

各変数の意味は以下のとおりです。

  • property_name は、操作したいプロパティ/オブジェクトです(オブジェクト指向言語の関数に似ています)。

  • function_name は、上記のリストパラムからの関数の名前であり、関数のタイプに応じて必要なパラメータを区切ります。

一般的な機能

ネットワーク機能- 一般

AWS NACL および MS Azure NSG のネットワーク関数

AWS NACL とMS Azure NSG には、異なるファイアウォールセマンティクスがあります。

ファイアウォールルールは順序付けされており、明示的な'DROP' を含む場合があります。これにより、ルールの順序が重要になります。

これらの関数は、ルールのリストを操作します。

リソース関数

これらの関数は、アセットのプロパティの値を返します。特に、アセットのセカンダリ値(EC2 インスタンスに割り当てられたSG のルールアドレスの値など) を返すことができます。

-これらの機能は、Terraformプランでのみサポートされ、後ですべてのプラットフォームに拡張する予定です。

時間関数