Google Cloud Armor の各セキュリティ ポリシー ルールには、優先度、一致条件、アクションがあります。実行されるのは、リクエストに一致する最も優先度の高いルールのアクションです。その他のルールは、同じ一致条件が設定されていても優先度が低ければ評価されません。
各セキュリティ ポリシー ルールでは 2 種類の一致条件を指定できます。
- 基本一致条件。IP アドレスまたは IP アドレス範囲のリストで構成されます。基本一致条件は、Google Cloud CLI を使用してルールを作成するときに
--src-ip-rangesフラグを使用して定義します。 - 高度な一致条件。受信リクエストのさまざまな属性と照合できる最大 5 つのサブ式を含む式で構成されます。高度な一致条件は、Google Cloud CLI を使用してルールを作成するときに
--expressionフラグを使用して定義します。
このページでは、高度な一致条件と、セキュリティ ポリシー ルールで高度な一致条件の式を記述するために使用する Cloud Armor のカスタムルール言語について説明します。Cloud Armor のカスタムルール言語は Common Expression Language(CEL)のサブセットです。Cloud Armor のカスタムルール言語で記述する式には、次の 2 つのコンポーネントが必要です。
- 属性: 検査するデータ
- 演算: データの使用方法
たとえば、次の式では、演算 inIpRange() で属性 origin.ip と 9.9.9.0/24 が使用されています。この式は、origin.ip が 9.9.9.0/24 の IP アドレス範囲に含まれている場合、true を返します。
inIpRange(origin.ip, '9.9.9.0/24')
上の式で照合されるのはクライアント IP アドレスだけですが、この式を使用する Cloud Armor セキュリティ ポリシー ルールは、割り当ての観点からは高度な一致条件を使用するルールとみなされます。詳細については、Cloud Armor の割り当てと上限をご覧ください。
演算
次の表では、ルールの式を定義するために属性(x、y、k で表現)と一緒に使用できる演算子について説明します。
| 演算 | 式 | 説明 |
|---|---|---|
| 等しい | x == y |
x が y と等しい場合に true を返します。 |
| 等しい(文字列リテラル) |