カスタム ルールを追加するための JSONPath オプションは、機能が制限された管理可能なアクセス制御ポリシー言語 (MAPL) ルールのガイド付き構成です。MAPL は、マイクロサービス環境でのアクセスを制御するルールの言語です。この種類のルールを使用して、Kubernetes リソースに必要な状態を定義します。

JSONPath カスタム ルールには、論理演算子にリンクされた複数の条件を組み込めます。条件には、想定される値に接続されている Kubernetes リソース([リソースの種類])が含まれます。

基本的な JSONPath カスタム ルールは、 コンソールのガイド付き構成を使用して構成できます。

特性 説明
リソースの種類 ルールが参照する Kubernetes リソースのタイプ。
JSONPath

JSONPath セレクタは、特定の設定を取得し、Kubernetes リソースの構成ファイル内で値を指定するために使用されます。

注: $ 記号を使用した [JSONPath] セレクタ文字列を開始する必要があります。

カスタム ルールでは、AND ロジックを使用して個々のリソースを照合する複数の JSONPath 条件を設定できます。

JSONPath は、JSON または YAML ファイルの要素または選択要素を示すパスです。JSON パス式は、ツリーとして作成されます。

{.element} {.child} {.grand-child}

JSON パス式はドット (.) で始まります。構成のルートとの照合を開始するには、その後に子、孫などの名前を入力します。

[:] を使用して、配列内の任意の要素 (例: $.metadata.labels 内のラベル名など) を照合します。例:$*.metadata.labels[:].name*

メソッド リソース値を評価する方法:
  • EQ - 等しい
  • NE- 等しくない
  • RE - 正規表現と一致する
  • NRE - 正規表現と一致しない
  • LT - 未満
  • LE - 以下
  • GT - 超
  • GE - 以上
  • EX - 存在する
  • NEX - 存在しない
  • IN - 値のリスト内 [val1,val2,val3,...]
  • NIN - 値のリストにない [val1,val2,val3,...]

リソース値と一致するしきい値。値が一致しない場合、ルールに違反します。

JSON の例

{
  "apiVersion": "v1",
  "kind": "Namespace",
  "metadata": {
    "creationTimestamp": "2021-04-09T00:52:44Z",
    "managedFields": [
      {
        "apiVersion": "v1",
        "fieldsType": "FieldsV1",
        "fieldsV1": {
          "f:status": {
            "f:phase": {}
          }
        },  ...       

カスタム ルール 1 の例

5 個以上のレプリカを持つワークロードを許可しないでください。

$.spec.replicas GT 5

カスタム ルール 2 の例

すべてのコンテナに対して CPU が割り当てられている必要があります。

$.spec.template.spec.containers[:].resources.limits.cpu NEX

カスタム ルール 3 と 4 の例

各ワークロードに serviceOwner というラベルと、メール アドレスのように見える値 (2 つのルール) がある必要があります。
  • $.spec.template.metadata.label.serviceOwner NEX
  • $.spec.template.metadata.label.serviceOwner NRE .+@example\.com