OPA-Richtlinien für ZETA Guard

Dieses Repository enthält die OPA (Open Policy Agent) Richtlinien und Konfigurationsdaten zur Autorisierung von Anfragen im ZETA-Ökosystem.

Verzeichnisstruktur

  • policies/: Enthält alle Rego-Richtliniendateien.
  • values/: Enthält alle externen Daten im JSON-Format, die von den Richtlinien verwendet werden.
    • professions.json: Erlaubte Berufs-OIDs.
    • products.json: Erlaubte Client-Produkte und deren Versionen.
    • audiences.json: Erlaubte Ziel-URLs (Audiences).
    • token_config.json: Konfiguration für Token-Gültigkeitsdauern (TTL) und erlaubte Scopes.

Voraussetzungen

Anleitung

Lokales Testen der Richtlinien

Sie können die Richtlinien lokal mit dem opa eval Befehl testen. Erstellen Sie eine input.json-Datei mit Testdaten und fragen Sie den Endpunkt data.zeta.authz.decision ab.

Beispiel input.json (für einen Erfolgsfall):

{
  "version": "1.0",
  "client_registration_data": {
    "name": "Home-Office-PC",
    "client_id": "cid-win-sw-pqrst",
    "platform": "windows",
    "manufacturer_id": "any-vendor",
    "manufacturer_name": "Any Vendor",
    "owner_mail": "home.office@example.com",
    "registration_timestamp": 1678890000,
    "platform_product_id": {
      "store_id": "9PBLGGH4R0C9"
    }
  },
  "client_assertion": {
    "sub": "cid-win-sw-pqrst",
    "platform": "windows",
    "posture": {
      "platform_product_id": {
        "store_id": "9PBLGGH4R0C9"
      },
      "product_id": "demo_client",
      "product_version": "0.1.0",
      "os": "Windows 11 Home",
      "os_version": "10.0.22000",
      "arch": "amd64",
      "public_key": "base64-encoded-self-signed-public-key...",
      "attestation_challenge": "base64-encoded-signed-nonce-from-as..."
    },
    "attestation_timestamp": 1678890010
  },
  "user_info": {
    "identifier": "A112233445",
    "professionOID": "1.2.276.0.76.4.50"
  },
  "delegation_context": null,
  "authorization_request": {
    "scopes": [
      "openid"
    ],
    "aud": [
      "https://some-service.de/api/v1"
    ],
    "ip_address": "192.0.2.150",
    "grant_type": "authorization_code",
    "amr": [
      "pwd"
    ]
  }
}

Überprüfung mit dem opa Tool:

opa eval --data values/ --data policies/ --input ../schemas/policy-engine-input-windows-software.json "data.zeta.authz.decision"