この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です Admission Controller 1.34-dev.

生のポリシーの作成

生のポリシーは、任意のJSONドキュメントを評価できるポリシーです。 生のポリシーに関する詳細情報は、生のポリシーページを参照してください。

次の例は、このチュートリアルの検証ページを完了した場合、見覚えがあるはずです。

ポリシーを`raw`としてマークすることを忘れずに、`policyType`フィールドを`metadata.yml`設定で使用してください。 詳細情報については、メタデータ仕様を参照してください。

検証

次の形式のリクエストを受け入れるポリシーを作成します。

{
  "request": {
    "user": "alice",
    "action": "read",
    "resource": "products"
  }
}

`admin`ユーザーのみがリソースを削除できることを検証します。

OPAポリシーテンプレートを使用してポリシーのスキャフォールディングを開始します。

最初に`policy.rego`ファイルを次のように変更する必要があります:

package validation

deny[msg] {
    input.request.action == "delete"
    input.request.user != "admin"
    msg := sprintf("user %v is not allowed to delete resources", [input.request.user])
}

`utility/policy.rego`モジュールは、Kubernetes特有のコードを削除するために修正する必要があります。

package policy

import data.validation

main = {
    "response": response,
}

# OPA policy responses need the uid field to be set.
# If the request doesn't contain a uid, set it to an empty string.
default uid = ""

uid = input.request.uid

response = {
    "uid": uid,
    "allowed": false,
    "status": {"message": reason},
} {
    reason = concat(", ", validation.deny)
    reason != ""
} else = {
    "uid": uid,
    "allowed": true,
} {
    true
}