From 837d0a893157b9bff05725e0ce497c9f28596645 Mon Sep 17 00:00:00 2001 From: Andre Loreth Date: Wed, 26 Mar 2025 11:09:55 +0100 Subject: [PATCH 1/3] feat: add support for CEL as policy --- package.json | 1 + src/dispatch/policy.spec.ts | 32 +++++++++++++ src/dispatch/policy.ts | 41 ++++++++++------- src/utils/config.ts | 7 ++- yarn.lock | 91 +++++++++++++++++++++++++++++++++++++ 5 files changed, 154 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 66308bc..aaae5d0 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "prettier": "@abinnovision/prettier-config", "dependencies": { "@cross-policy/core": "^0.1.0", + "@cross-policy/target-cel": "^0.1.0", "@cross-policy/target-opa-wasm": "^0.1.0", "@octokit/auth-app": "^7.1.1", "@octokit/auth-callback": "^5.0.1", diff --git a/src/dispatch/policy.spec.ts b/src/dispatch/policy.spec.ts index 14c1e57..24121f6 100644 --- a/src/dispatch/policy.spec.ts +++ b/src/dispatch/policy.spec.ts @@ -123,4 +123,36 @@ describe("handler/policy", () => { expect(result).toBe(false); }); }); + + describe("target/cel", () => { + it("should throw exception on invalid expression", async () => { + vi.stubEnv("APP_GH_AUTH_TYPE", "token"); + vi.stubEnv("APP_GH_AUTH_TOKEN", "token"); + vi.stubEnv("APP_POLICY", "cel"); + vi.stubEnv("APP_POLICY_EXPRESSION", "this is not a valid expression"); + + const { evaluatePolicyForRequest } = await import("./policy.js"); + + await expect( + evaluatePolicyForRequest({ + target: { + owner: "abinnovison", + repository: "github-workflow-dispatch-proxy", + ref: "main", + workflow: "update-version", + + inputs: { + test: "test", + }, + }, + caller: { + owner: "abinnovison", + repository: "github-workflow-dispatch-proxy", + ref: "main", + workflow: "build", + }, + }), + ).rejects.toThrow(); + }); + }); }); diff --git a/src/dispatch/policy.ts b/src/dispatch/policy.ts index 3255d25..aecc19f 100644 --- a/src/dispatch/policy.ts +++ b/src/dispatch/policy.ts @@ -1,33 +1,40 @@ import { createCrossPolicy } from "@cross-policy/core"; +import { celPolicyTarget } from "@cross-policy/target-cel"; import { opaWasmPolicyTarget } from "@cross-policy/target-opa-wasm"; -import * as path from "path"; import z from "zod"; import { getConfig } from "../utils/config.js"; -// The built-in policies. -const builtInPolicyMapping = { - allow_all: "allow_all.wasm", - allow_org_wide: "allow_org_wide.wasm", +/** + * Built-in expressions written in CEL. + */ +const builtinExpressions = { + allow_all: `true`, + allow_org_wide: `config.organization == caller.owner && config.organization == target.owner`, }; /** - * Provides the policy to use based on the current config. + * Creates the cross-policy compatible target based on the current config. */ -function getPolicyPath(): string { +function createCrossPolicyTarget() { const config = getConfig(); - let policyPath: string; - if (config.POLICY === "custom") { - policyPath = config.POLICY_PATH; + if (config.POLICY === "opa-wasm") { + return opaWasmPolicyTarget({ + policyPath: config.POLICY_PATH, + }); + } else if (config.POLICY === "cel") { + return celPolicyTarget({ + expression: config.POLICY_EXPRESSION, + }); + } else if (config.POLICY === "builtin") { + return celPolicyTarget({ + expression: builtinExpressions[config.POLICY_TYPE], + }); } else { - policyPath = path.join( - process.env.POLICY_DIR as string, - builtInPolicyMapping[config.POLICY_TYPE], - ); + // This should never happen. + throw new Error(`Unsupported policy type`); } - - return policyPath; } const schema = z.object({ @@ -51,7 +58,7 @@ const schema = z.object({ }); const crossPolicy = createCrossPolicy({ - target: opaWasmPolicyTarget({ policyPath: getPolicyPath() }), + target: createCrossPolicyTarget(), schema, }); diff --git a/src/utils/config.ts b/src/utils/config.ts index 344a3ba..a2e3ec2 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -25,10 +25,15 @@ const policySchema = z.discriminatedUnion("POLICY", [ POLICY_CONFIG: z.string().optional(), }), z.object({ - POLICY: z.literal("custom"), + POLICY: z.literal("opa-wasm"), POLICY_PATH: z.string(), POLICY_CONFIG: z.string().optional(), }), + z.object({ + POLICY: z.literal("cel"), + POLICY_EXPRESSION: z.string(), + POLICY_CONFIG: z.string().optional(), + }), ]); const githubAuthSchema = z.discriminatedUnion("GH_AUTH_TYPE", [ diff --git a/yarn.lock b/yarn.lock index ffd2df3..482f46a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -133,6 +133,48 @@ __metadata: languageName: node linkType: hard +"@chevrotain/cst-dts-gen@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/cst-dts-gen@npm:11.0.3" + dependencies: + "@chevrotain/gast": "npm:11.0.3" + "@chevrotain/types": "npm:11.0.3" + lodash-es: "npm:4.17.21" + checksum: 10/601d23fa3312bd0e32816bd3f9ca2dcba775a52192a082fd6c5e4a2e8ee068523401191babbe2c346d6d2551900a67b549f2f74d7ebb7d5b2ee1b6fa3c8857a0 + languageName: node + linkType: hard + +"@chevrotain/gast@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/gast@npm:11.0.3" + dependencies: + "@chevrotain/types": "npm:11.0.3" + lodash-es: "npm:4.17.21" + checksum: 10/7169453a8fbfa994e91995523dea09eab87ab23062ad93f6e51f4a3b03f5e2958e0a8b99d5ca6fa067fccfbbbb8bcf1a4573ace2e1b5a455f6956af9eaccb35a + languageName: node + linkType: hard + +"@chevrotain/regexp-to-ast@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/regexp-to-ast@npm:11.0.3" + checksum: 10/7387a1c61c5a052de41e1172b33eaaedea166fcdb1ffe4c381b86d00051a8014855a031d28fb658768a62c833ef5f5b0689d0c40de3d7bed556f8fea24396e69 + languageName: node + linkType: hard + +"@chevrotain/types@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/types@npm:11.0.3" + checksum: 10/49a82b71d2de8ceb2383ff2709fa61d245f2ab2e42790b70c57102c80846edaa318d0b3645aedc904d23ea7bd9be8a58f2397b1341760a15eb5aa95a1336e2a9 + languageName: node + linkType: hard + +"@chevrotain/utils@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/utils@npm:11.0.3" + checksum: 10/29b5d84373a7761ad055c53e2f540a67b5b56550d5be1c473149f6b8923eef87ff391ce021c06ac7653843b0149f6ff0cf30b5e48c3f825d295eb06a6c517bd3 + languageName: node + linkType: hard + "@commitlint/cli@npm:^19.7.1": version: 19.7.1 resolution: "@commitlint/cli@npm:19.7.1" @@ -334,6 +376,16 @@ __metadata: languageName: node linkType: hard +"@cross-policy/target-cel@npm:^0.1.0": + version: 0.1.0 + resolution: "@cross-policy/target-cel@npm:0.1.0" + dependencies: + "@cross-policy/core": "npm:^0.1.0" + cel-js: "npm:^0.3.0" + checksum: 10/fedc0646ac9867994f4552e66e739205cae60da6222da2e984cadfe73698518ccb21962116daf21ec65363ba846ecc30dff766fe32123aa660081ab9e263edc0 + languageName: node + linkType: hard + "@cross-policy/target-opa-wasm@npm:^0.1.0": version: 0.1.0 resolution: "@cross-policy/target-opa-wasm@npm:0.1.0" @@ -2325,6 +2377,16 @@ __metadata: languageName: node linkType: hard +"cel-js@npm:^0.3.0": + version: 0.3.1 + resolution: "cel-js@npm:0.3.1" + dependencies: + chevrotain: "npm:11.0.3" + ramda: "npm:0.30.0" + checksum: 10/10dee5175fa9e3c6cf1165977fe3c99008f1f163967aaa91854cc549658e572ea182cfc5c5c3272a385c196c82fb6861306e4dd9564dabdb3fd66f7cc6f6d96e + languageName: node + linkType: hard + "chai@npm:^5.1.2": version: 5.2.0 resolution: "chai@npm:5.2.0" @@ -2373,6 +2435,20 @@ __metadata: languageName: node linkType: hard +"chevrotain@npm:11.0.3": + version: 11.0.3 + resolution: "chevrotain@npm:11.0.3" + dependencies: + "@chevrotain/cst-dts-gen": "npm:11.0.3" + "@chevrotain/gast": "npm:11.0.3" + "@chevrotain/regexp-to-ast": "npm:11.0.3" + "@chevrotain/types": "npm:11.0.3" + "@chevrotain/utils": "npm:11.0.3" + lodash-es: "npm:4.17.21" + checksum: 10/8fa6253e51320dd4c3d386315b925734943e509d7954a2cd917746c0604461191bea57b0fb8fbab1903e0508fd94bfd35ebd0f8eace77cd0f3f42a9ee4f8f676 + languageName: node + linkType: hard + "chokidar@npm:^3.5.2": version: 3.6.0 resolution: "chokidar@npm:3.6.0" @@ -3982,6 +4058,7 @@ __metadata: "@abinnovision/prettier-config": "npm:^2.1.3" "@commitlint/cli": "npm:^19.7.1" "@cross-policy/core": "npm:^0.1.0" + "@cross-policy/target-cel": "npm:^0.1.0" "@cross-policy/target-opa-wasm": "npm:^0.1.0" "@octokit/auth-app": "npm:^7.1.1" "@octokit/auth-callback": "npm:^5.0.1" @@ -4902,6 +4979,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 10/03f39878ea1e42b3199bd3f478150ab723f93cc8730ad86fec1f2804f4a07c6e30deaac73cad53a88e9c3db33348bb8ceeb274552390e7a75d7849021c02df43 + languageName: node + linkType: hard + "lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0" @@ -6023,6 +6107,13 @@ __metadata: languageName: node linkType: hard +"ramda@npm:0.30.0": + version: 0.30.0 + resolution: "ramda@npm:0.30.0" + checksum: 10/18112bc9328bbbdc7b1e59ad5e548e7636813defe00446a083720d7fe8247df23b9b049348f7a10edeec0d2be6813fc19427a5cff792f6e1404079f4136d75f8 + languageName: node + linkType: hard + "range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" From 0011ca4a3048693042c493a8836328ff3ae2860e Mon Sep 17 00:00:00 2001 From: Andre Loreth Date: Wed, 26 Mar 2025 11:35:12 +0100 Subject: [PATCH 2/3] fix: remove legacy rego/wasm files for opa-wasm --- policies/allow_all.rego | 4 ---- policies/allow_all.wasm | Bin 140788 -> 0 bytes policies/allow_org_wide.rego | 15 --------------- policies/allow_org_wide.wasm | Bin 141239 -> 0 bytes 4 files changed, 19 deletions(-) delete mode 100644 policies/allow_all.rego delete mode 100644 policies/allow_all.wasm delete mode 100644 policies/allow_org_wide.rego delete mode 100644 policies/allow_org_wide.wasm diff --git a/policies/allow_all.rego b/policies/allow_all.rego deleted file mode 100644 index cf896af..0000000 --- a/policies/allow_all.rego +++ /dev/null @@ -1,4 +0,0 @@ -package main - -# Allow all actions. -allow := true diff --git a/policies/allow_all.wasm b/policies/allow_all.wasm deleted file mode 100644 index df467f01157cac05e819c690ac460c62136ab29b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140788 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 diff --git a/policies/allow_org_wide.rego b/policies/allow_org_wide.rego deleted file mode 100644 index 5957710..0000000 --- a/policies/allow_org_wide.rego +++ /dev/null @@ -1,15 +0,0 @@ -package main -import future.keywords - -# Deny per default. -default allow := false - -allow if { - input.config.organization != null - input.config.organization != "" - - # The target and caller must be in the configure organization. - input.caller.owner == input.config.organization - input.target.owner == input.config.organization -} - diff --git a/policies/allow_org_wide.wasm b/policies/allow_org_wide.wasm deleted file mode 100644 index 167429b8430f29f5d471369991bf78db50f945b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141239 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 wbOO%Ek&)SvlOj)#^hGX?d@u5Y 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 zro Date: Thu, 27 Mar 2025 10:16:41 +0100 Subject: [PATCH 3/3] docs: add documentation about cel --- README.md | 63 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 7b2ddc8..d32bbcc 100644 --- a/README.md +++ b/README.md @@ -33,24 +33,27 @@ docker run -d \ The proxy is configured via environment variables. The following environment variables are supported: -| Name | Description | Default | Note | -| ----------------------------- | ------------------------------------------------------------------------------------ | ----------- | ------------------------------------------ | -| `APP_PORT` | Port to listen on. | `8080` | | -| `APP_BASE_PATH` | Base path fo the proxy. | `/` | | -| `APP_POLICY` | Policy to use, either `builtin` or `custom`. | `builtin` | | -| `APP_POLICY_TYPE` | Type of the builtin policy to use, either `allow_all` or `allow_org_wide`. | `allow_all` | | -| `APP_POLICY_CONFIG` | Config to pass to the policy evaluation. Format: `key=value;key=value` | | | -| `APP_POLICY_PATH` | Path to the custom policy (_.wasm_). | | | -| `APP_GH_AUTH_TYPE` | Type of the GitHub authentication to use, either `app` or `token`. | | **Required** | -| `APP_GH_AUTH_APP_ID` | ID of the GitHub App to use for authentication. (Only for `app` auth type.) | | Required if `APP_GH_AUTH_TYPE` is `app`. | -| `APP_GH_AUTH_APP_PRIVATE_KEY` | Private key of the GitHub App to use for authentication. (Only for `app` auth type.) | | Required if `APP_GH_AUTH_TYPE` is `app`. | -| `APP_GH_AUTH_TOKEN` | Token to use for authentication. (Only for `token` auth type.) | | Required if `APP_GH_AUTH_TYPE` is `token`. | +| Name | Description | Default | Note | +| ----------------------------- | ------------------------------------------------------------------------------------ | ----------- | ---------------------------------------------------- | +| `APP_PORT` | Port to listen on. | `8080` | | +| `APP_BASE_PATH` | Base path fo the proxy. | `/` | | +| `APP_POLICY` | Policy to use, either `builtin`, `opa-wasm` or `cel`. | `builtin` | | +| `APP_POLICY_TYPE` | Type of the builtin policy to use, either `allow_all` or `allow_org_wide`. | `allow_all` | | +| `APP_POLICY_CONFIG` | Config to pass to the policy evaluation. Format: `key=value;key=value` | | | +| `APP_POLICY_PATH` | Path to the opa-wasm policy (_.wasm_ file). | | Only available if `APP_POLICY` is set to `opa-wasm`. | +| `APP_POLICY_EXPRESSION` | Express when using CEL. | | Only available if `APP_POLICY` is set to `cel`. | +| `APP_GH_AUTH_TYPE` | Type of the GitHub authentication to use, either `app` or `token`. | | **Required** | +| `APP_GH_AUTH_APP_ID` | ID of the GitHub App to use for authentication. (Only for `app` auth type.) | | Required if `APP_GH_AUTH_TYPE` is `app`. | +| `APP_GH_AUTH_APP_PRIVATE_KEY` | Private key of the GitHub App to use for authentication. (Only for `app` auth type.) | | Required if `APP_GH_AUTH_TYPE` is `app`. | +| `APP_GH_AUTH_TOKEN` | Token to use for authentication. (Only for `token` auth type.) | | Required if `APP_GH_AUTH_TYPE` is `token`. | ## Policies Policies are used to determine whether a request is allowed or not. -The implementation is based on -the [Open Policy Agent (OPA)](https://www.openpolicyagent.org/). + +This is implemented using [cross-policy](https://github.com/abinnovision/cross-policy). As of right now, +the [opa-wasm target](https://github.com/abinnovision/cross-policy/tree/main/packages/target-opa-wasm) +and [cel target](https://github.com/abinnovision/cross-policy/tree/main/packages/target-cel) is supported. ### Built-in Policies @@ -64,11 +67,11 @@ This policy allows all requests from within the configured organization. It requires the `organization` configuration to be set on the `APP_POLICY_CONFIG` environment variable. -### Custom Policies +### Open Policy Agent (OPA) WASM Policies -Custom policies can be used by setting the `APP_POLICY` environment variable -to `custom` and providing the path to the policy file via `APP_POLICY_PATH`. The -policy file must be a valid WebAssembly file built with +OPA WASM can be used by setting the `APP_POLICY` environment variable +to `opa-wasm` and providing the path to the policy file via `APP_POLICY_PATH`. +The policy file must be a valid WebAssembly file built with [Open Policy Agent (OPA)](https://www.openpolicyagent.org/). To get started, @@ -78,10 +81,30 @@ Also, see the source [code of the built-in policies for examples](./policies). [This script](./policies/build.sh) can be used to build the policy file. It can -be place in the folder with many .rego files and it will build a .wasm file in +be placed in the folder with many .rego files, and it will build a .wasm file in the same folder for each .rego file. -#### Input schema for policies +### Common Expression Language (CEL) Policies + +CEL can be used by setting the `APP_POLICY` environment variable +to `cel` and providing the expression via `APP_POLICY_EXPRESSION`. + +CEL is a language for expressing policies in a way that is straightforward to understand and write. +It is used by Google in many of its services. + +See the [@cross-policy/target-cel](http://npmjs.com/package/@cross-policy/target-cel) package for further details and +possible limitations. + +#### Example configuration + +This example configuration allows only requests from the owner `abinnovision`. + +``` +APP_POLICY=cel +APP_POLICY_EXPRESSION='caller.owner == "abinnovision"' +``` + +### Input schema for policies The input schema for the policy is defined as follows: