@stratum-hq/lib 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +49 -20
  2. package/dist/crypto.d.ts.map +1 -1
  3. package/dist/crypto.js +50 -10
  4. package/dist/crypto.js.map +1 -1
  5. package/dist/index.d.ts +7 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +17 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/migrate-schemas.d.ts +4 -0
  10. package/dist/migrate-schemas.d.ts.map +1 -1
  11. package/dist/migrate-schemas.js +17 -7
  12. package/dist/migrate-schemas.js.map +1 -1
  13. package/dist/migrate.d.ts +24 -0
  14. package/dist/migrate.d.ts.map +1 -1
  15. package/dist/migrate.js +44 -6
  16. package/dist/migrate.js.map +1 -1
  17. package/dist/migration-sql.d.ts +25 -0
  18. package/dist/migration-sql.d.ts.map +1 -0
  19. package/dist/migration-sql.js +64 -0
  20. package/dist/migration-sql.js.map +1 -0
  21. package/dist/migrations/001_init.sql +3 -3
  22. package/dist/migrations/029_tenant_parent_cycle_guard.sql +2 -2
  23. package/dist/migrations/031_subtree_read_scope.sql +307 -0
  24. package/dist/migrations/032_control_role.sql +809 -0
  25. package/dist/migrations/033_api_keys_tenant_index.sql +14 -0
  26. package/dist/pinned-query.d.ts +29 -0
  27. package/dist/pinned-query.d.ts.map +1 -0
  28. package/dist/pinned-query.js +60 -0
  29. package/dist/pinned-query.js.map +1 -0
  30. package/dist/pool-helpers.d.ts +2 -0
  31. package/dist/pool-helpers.d.ts.map +1 -1
  32. package/dist/pool-helpers.js +17 -3
  33. package/dist/pool-helpers.js.map +1 -1
  34. package/dist/role-model.d.ts +178 -0
  35. package/dist/role-model.d.ts.map +1 -0
  36. package/dist/role-model.js +670 -0
  37. package/dist/role-model.js.map +1 -0
  38. package/dist/scoped-job.d.ts +9 -1
  39. package/dist/scoped-job.d.ts.map +1 -1
  40. package/dist/scoped-job.js +3 -2
  41. package/dist/scoped-job.js.map +1 -1
  42. package/dist/services/abac-service.js +1 -1
  43. package/dist/services/abac-service.js.map +1 -1
  44. package/dist/services/api-key-service.d.ts +13 -3
  45. package/dist/services/api-key-service.d.ts.map +1 -1
  46. package/dist/services/api-key-service.js +33 -9
  47. package/dist/services/api-key-service.js.map +1 -1
  48. package/dist/services/config-service.d.ts +15 -6
  49. package/dist/services/config-service.d.ts.map +1 -1
  50. package/dist/services/config-service.js +101 -55
  51. package/dist/services/config-service.js.map +1 -1
  52. package/dist/services/event-service.js +2 -2
  53. package/dist/services/event-service.js.map +1 -1
  54. package/dist/services/permission-service.js +1 -1
  55. package/dist/services/permission-service.js.map +1 -1
  56. package/dist/services/rate-limit-service.d.ts +3 -3
  57. package/dist/services/region-service.js +1 -1
  58. package/dist/services/region-service.js.map +1 -1
  59. package/dist/services/retention-service.d.ts +2 -2
  60. package/dist/services/retention-service.js +2 -2
  61. package/dist/services/role-service.d.ts +1 -1
  62. package/dist/services/role-service.js +1 -1
  63. package/dist/services/tenant-service.d.ts +2 -2
  64. package/dist/services/tenant-service.d.ts.map +1 -1
  65. package/dist/services/tenant-service.js +8 -8
  66. package/dist/services/tenant-service.js.map +1 -1
  67. package/dist/stratum-policies.d.ts +51 -0
  68. package/dist/stratum-policies.d.ts.map +1 -0
  69. package/dist/stratum-policies.js +217 -0
  70. package/dist/stratum-policies.js.map +1 -0
  71. package/dist/stratum-tables.d.ts.map +1 -1
  72. package/dist/stratum-tables.js +1 -0
  73. package/dist/stratum-tables.js.map +1 -1
  74. package/dist/stratum.d.ts +56 -11
  75. package/dist/stratum.d.ts.map +1 -1
  76. package/dist/stratum.js +82 -21
  77. package/dist/stratum.js.map +1 -1
  78. package/dist/telemetry.d.ts +2 -2
  79. package/dist/telemetry.js +4 -4
  80. package/dist/telemetry.js.map +1 -1
  81. package/dist/url-redaction.js +1 -1
  82. package/dist/url-redaction.js.map +1 -1
  83. package/package.json +21 -13
@@ -96,7 +96,7 @@ async function createTenant(pool, input) {
96
96
  return res.rows[0];
97
97
  }
98
98
  else {
99
- // Root tenant — no parent lock needed
99
+ // Root tenant: no parent lock needed
100
100
  const rootRegionId = input.region_id ?? null;
101
101
  const res = await client.query(`INSERT INTO tenants (parent_id, ancestry_path, depth, name, slug, config, metadata, isolation_strategy, status, region_id)
102
102
  VALUES (NULL, '/', 0, $1, $2, $3, $4, $5, $6, $7)
@@ -150,7 +150,7 @@ async function getTenant(pool, id, includeArchived = false) {
150
150
  * pages. Slug is globally unique, so this returns exactly the one matching row.
151
151
  *
152
152
  * Mirrors getTenant's not-found and state contract: throws TenantNotFoundError
153
- * when no row matches, and — unless `includeArchived` is set — TenantArchivedError
153
+ * when no row matches, and (unless `includeArchived` is set) TenantArchivedError
154
154
  * / TenantSuspendedError / TenantPendingError for a non-active row. `includeArchived` is the "give me
155
155
  * the row whatever its state" escape hatch and bypasses both non-active states.
156
156
  */
@@ -295,10 +295,10 @@ async function loadForTransition(client, id) {
295
295
  * and forces a leaf-first walk so no active tenant is ever left under a
296
296
  * non-active parent.
297
297
  */
298
- async function assertNoActiveChildren(client, id) {
298
+ async function assertNoActiveChildren(client, id, action) {
299
299
  const childrenRes = await client.query(`SELECT COUNT(*) as count FROM tenants WHERE parent_id = $1 AND status = 'active'`, [id]);
300
300
  if (parseInt(childrenRes.rows[0].count, 10) > 0) {
301
- throw new core_1.TenantHasChildrenError(id);
301
+ throw new core_1.TenantHasChildrenError(id, action);
302
302
  }
303
303
  }
304
304
  /**
@@ -311,7 +311,7 @@ async function suspendTenant(pool, id) {
311
311
  if (tenant.status !== "active") {
312
312
  throw new core_1.InvalidTenantStateError(id, tenant.status, "suspend", ["active"]);
313
313
  }
314
- await assertNoActiveChildren(client, id);
314
+ await assertNoActiveChildren(client, id, "suspend");
315
315
  const res = await client.query(`UPDATE tenants SET status = 'suspended', updated_at = now() WHERE id = $1 RETURNING *`, [id]);
316
316
  return res.rows[0];
317
317
  });
@@ -326,7 +326,7 @@ async function archiveTenant(pool, id) {
326
326
  if (tenant.status !== "active" && tenant.status !== "suspended") {
327
327
  throw new core_1.InvalidTenantStateError(id, tenant.status, "archive", ["active", "suspended"]);
328
328
  }
329
- await assertNoActiveChildren(client, id);
329
+ await assertNoActiveChildren(client, id, "archive");
330
330
  const res = await client.query(`UPDATE tenants SET status = 'archived', deleted_at = now(), updated_at = now() WHERE id = $1 RETURNING *`, [id]);
331
331
  return res.rows[0];
332
332
  });
@@ -513,7 +513,7 @@ async function batchCreateTenants(pool, inputs) {
513
513
  // The batch runs in one transaction, so a mid-batch failure rolls the whole
514
514
  // thing back (see withTransaction). `created` was pushed to in-memory before
515
515
  // the throw, so it still lists rolled-back tenants. Clear it so the return
516
- // reflects what actually persisted -- nothing -- and callers do not emit
516
+ // reflects what actually persisted (nothing) and callers do not emit
517
517
  // TENANT_CREATED events or audit entries for rows that never committed (#213).
518
518
  created.length = 0;
519
519
  }
@@ -538,7 +538,7 @@ async function getAncestors(pool, id) {
538
538
  * Get the root tenant for any tenant in the tree: the top-most ancestor, or the
539
539
  * tenant itself when it is already a root. Resolves in one row lookup for the
540
540
  * tenant plus one for its root (never fetches the whole ancestor chain), so it
541
- * is the efficient primitive for "which top-level org owns this tenant" — a
541
+ * is the efficient primitive for "which top-level org owns this tenant", a
542
542
  * common need in hierarchical multi-tenancy (billing scope, ownership checks,
543
543
  * root-level policy).
544
544
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-service.js","sourceRoot":"","sources":["../../src/services/tenant-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant-service.js","sourceRoot":"","sources":["../../src/services/tenant-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type pg from "pg";
2
+ /**
3
+ * The canonical row-level security of the Stratum tables: the tables that
4
+ * have it and every policy on them, as migrations 019, 020, 031 and 032
5
+ * leave them. stratum_apply_control_role() of migration 032 drops every
6
+ * policy on these tables and re-creates exactly this set (a unit test checks
7
+ * that the function's SQL is the one policiesPlpgsql() renders), and
8
+ * stratumPolicyDrift() compares a database with it.
9
+ */
10
+ /** The Stratum tables with row-level security enabled and forced. */
11
+ export declare const STRATUM_RLS_TABLES: readonly string[];
12
+ export interface StratumPolicy {
13
+ table: string;
14
+ name: string;
15
+ cmd: "ALL" | "SELECT";
16
+ /** "control" for the control role, else PUBLIC. */
17
+ to: "control" | "public";
18
+ using: string;
19
+ check: string | null;
20
+ }
21
+ /** Every canonical policy, in a fixed order. */
22
+ export declare function stratumPolicies(): StratumPolicy[];
23
+ /**
24
+ * The PL/pgSQL statements of stratum_apply_control_role() that reset the
25
+ * row-level security of the Stratum tables: every policy on them is dropped,
26
+ * RLS is enabled and forced, and the canonical policies are created. They
27
+ * expect the variables v_schema, v_role, v_table and v_policy.
28
+ */
29
+ export declare function policiesPlpgsql(): string;
30
+ export interface PolicyDriftOptions {
31
+ /** The control role. Default: the role of the database's stratum_control_plane policies, else stratum_control. */
32
+ controlRole?: string;
33
+ }
34
+ /**
35
+ * The differences between the row-level security of the Stratum tables in
36
+ * the schema of `tenants` (on the search path of `pool`) and the canonical
37
+ * set: tables without RLS enabled and forced, and policies that are missing,
38
+ * extra, or differ in command, roles or expressions. Empty when they match.
39
+ * Before the control role is applied (no stratum_control_plane policy
40
+ * anywhere), the control policies, and FORCE on stratum_security, are not
41
+ * expected.
42
+ *
43
+ * The canonical expressions are deparsed by the same server: the check
44
+ * creates temporary tables with the same names and columns, puts the
45
+ * canonical policies on them, and compares pg_get_expr() of both, all in a
46
+ * transaction that it rolls back. It needs only the TEMP privilege. The
47
+ * transaction's search path is pg_catalog only (see pinned-query.ts), so
48
+ * both sides print the Stratum names with their schema.
49
+ */
50
+ export declare function stratumPolicyDrift(pool: pg.Pool, options?: PolicyDriftOptions): Promise<string[]>;
51
+ //# sourceMappingURL=stratum-policies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stratum-policies.d.ts","sourceRoot":"","sources":["../src/stratum-policies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB;;;;;;;GAOG;AAEH,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAgB9C,CAAC;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,KAAK,GAAG,QAAQ,CAAC;IACtB,mDAAmD;IACnD,EAAE,EAAE,SAAS,GAAG,QAAQ,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA8BD,gDAAgD;AAChD,wBAAgB,eAAe,IAAI,aAAa,EAAE,CAyBjD;AAuBD;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAiBxC;AAED,MAAM,WAAW,kBAAkB;IACjC,kHAAkH;IAClH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmF3G"}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRATUM_RLS_TABLES = void 0;
4
+ exports.stratumPolicies = stratumPolicies;
5
+ exports.policiesPlpgsql = policiesPlpgsql;
6
+ exports.stratumPolicyDrift = stratumPolicyDrift;
7
+ const migration_sql_js_1 = require("./migration-sql.js");
8
+ const pinned_query_js_1 = require("./pinned-query.js");
9
+ /**
10
+ * The canonical row-level security of the Stratum tables: the tables that
11
+ * have it and every policy on them, as migrations 019, 020, 031 and 032
12
+ * leave them. stratum_apply_control_role() of migration 032 drops every
13
+ * policy on these tables and re-creates exactly this set (a unit test checks
14
+ * that the function's SQL is the one policiesPlpgsql() renders), and
15
+ * stratumPolicyDrift() compares a database with it.
16
+ */
17
+ /** The Stratum tables with row-level security enabled and forced. */
18
+ exports.STRATUM_RLS_TABLES = Object.freeze([
19
+ "tenants",
20
+ "config_entries",
21
+ "permission_policies",
22
+ "audit_logs",
23
+ "webhook_events",
24
+ "webhook_deliveries",
25
+ "webhooks",
26
+ "consent_records",
27
+ "abac_policies",
28
+ "api_keys",
29
+ "roles",
30
+ "principal_roles",
31
+ "usage_events",
32
+ "regions",
33
+ "stratum_security",
34
+ ]);
35
+ const LEGACY = "(SELECT %1$I.stratum_legacy_bypass())";
36
+ const CURRENT_TENANT = "NULLIF(current_setting('app.current_tenant_id', true), '')::uuid";
37
+ const SUBTREE = "((SELECT %1$I.stratum_subtree_tenant_ids())::uuid[])";
38
+ const SCOPE = "current_setting('app.tenant_scope', true) = 'subtree'";
39
+ /** Tables whose rows carry tenant_id. */
40
+ const TENANT_ID_TABLES = [
41
+ "config_entries",
42
+ "permission_policies",
43
+ "audit_logs",
44
+ "webhook_events",
45
+ "webhooks",
46
+ "consent_records",
47
+ "abac_policies",
48
+ "api_keys",
49
+ "roles",
50
+ "usage_events",
51
+ ];
52
+ /** Tables with the subtree read of migration 031 (not webhooks or api_keys, which hold credentials). */
53
+ const SUBTREE_TENANT_ID_TABLES = TENANT_ID_TABLES.filter((t) => t !== "webhooks" && t !== "api_keys");
54
+ /** Rows scoped through a parent table: the scope of the parent's tenant_id. */
55
+ const VIA_PARENT = {
56
+ webhook_deliveries: "SELECT 1 FROM %1$I.webhook_events we WHERE we.id = webhook_deliveries.event_id AND we.tenant_id",
57
+ principal_roles: "SELECT 1 FROM %1$I.roles r WHERE r.id = principal_roles.role_id AND r.tenant_id",
58
+ };
59
+ /** Every canonical policy, in a fixed order. */
60
+ function stratumPolicies() {
61
+ const policies = [];
62
+ const isolation = (table, scope) => {
63
+ const expr = `${LEGACY} OR ${scope}`;
64
+ policies.push({ table, name: "tenant_isolation", cmd: "ALL", to: "public", using: expr, check: expr });
65
+ };
66
+ const subtree = (table, scope) => {
67
+ policies.push({ table, name: "tenant_subtree_read", cmd: "SELECT", to: "public", using: `${SCOPE} AND ${scope}`, check: null });
68
+ };
69
+ for (const table of TENANT_ID_TABLES)
70
+ isolation(table, `tenant_id = ${CURRENT_TENANT}`);
71
+ isolation("tenants", `id = ${CURRENT_TENANT}`);
72
+ for (const [table, join] of Object.entries(VIA_PARENT))
73
+ isolation(table, `EXISTS (${join} = ${CURRENT_TENANT})`);
74
+ for (const table of SUBTREE_TENANT_ID_TABLES) {
75
+ subtree(table, table === "config_entries" ? `tenant_id = ANY ${SUBTREE} AND NOT sensitive` : `tenant_id = ANY ${SUBTREE}`);
76
+ }
77
+ subtree("tenants", `id = ANY ${SUBTREE}`);
78
+ for (const [table, join] of Object.entries(VIA_PARENT))
79
+ subtree(table, `EXISTS (${join} = ANY ${SUBTREE})`);
80
+ policies.push({ table: "regions", name: "stratum_legacy_bypass", cmd: "ALL", to: "public", using: LEGACY, check: LEGACY });
81
+ for (const table of exports.STRATUM_RLS_TABLES) {
82
+ policies.push({ table, name: "stratum_control_plane", cmd: "ALL", to: "control", using: "true", check: "true" });
83
+ }
84
+ return policies;
85
+ }
86
+ /**
87
+ * The CREATE POLICY statement of `p`, with the format() placeholders %1$I for
88
+ * the schema and, for the control role, %2$I for the role. Every Stratum
89
+ * object the expressions name is qualified with the schema, because
90
+ * stratum_apply_control_role() runs with search_path = pg_catalog, pg_temp.
91
+ */
92
+ function createPolicyTemplate(p) {
93
+ const to = p.to === "control" ? " AS PERMISSIVE FOR ALL TO %2$I" : ` FOR ${p.cmd}`;
94
+ const check = p.check === null ? "" : ` WITH CHECK (${p.check})`;
95
+ return `CREATE POLICY ${p.name} ON %1$I.${p.table}${to} USING (${p.using})${check}`;
96
+ }
97
+ /**
98
+ * `text` with the schema placeholder replaced by `schema`, for the canonical
99
+ * policies that stratumPolicyDrift() puts on temporary tables: the functions
100
+ * and tables they name are the live Stratum ones, as in the live policies.
101
+ */
102
+ function inSchema(text, schema) {
103
+ return text.split("%1$I.").join(`${(0, pinned_query_js_1.quoteIdentifier)(schema)}.`);
104
+ }
105
+ /**
106
+ * The PL/pgSQL statements of stratum_apply_control_role() that reset the
107
+ * row-level security of the Stratum tables: every policy on them is dropped,
108
+ * RLS is enabled and forced, and the canonical policies are created. They
109
+ * expect the variables v_schema, v_role, v_table and v_policy.
110
+ */
111
+ function policiesPlpgsql() {
112
+ const lines = [
113
+ " FOREACH v_table IN ARRAY v_tables LOOP",
114
+ " FOR v_policy IN",
115
+ " SELECT p.polname FROM pg_policy p WHERE p.polrelid = format('%I.%I', v_schema, v_table)::regclass",
116
+ " LOOP",
117
+ " EXECUTE format('DROP POLICY %I ON %I.%I', v_policy, v_schema, v_table);",
118
+ " END LOOP;",
119
+ " EXECUTE format('ALTER TABLE %I.%I ENABLE ROW LEVEL SECURITY', v_schema, v_table);",
120
+ " EXECUTE format('ALTER TABLE %I.%I FORCE ROW LEVEL SECURITY', v_schema, v_table);",
121
+ " END LOOP;",
122
+ ];
123
+ for (const p of stratumPolicies()) {
124
+ const args = p.to === "control" ? "v_schema, v_role" : "v_schema";
125
+ lines.push(` EXECUTE format($pol$${createPolicyTemplate(p)}$pol$, ${args});`);
126
+ }
127
+ return lines.join("\n");
128
+ }
129
+ /**
130
+ * The differences between the row-level security of the Stratum tables in
131
+ * the schema of `tenants` (on the search path of `pool`) and the canonical
132
+ * set: tables without RLS enabled and forced, and policies that are missing,
133
+ * extra, or differ in command, roles or expressions. Empty when they match.
134
+ * Before the control role is applied (no stratum_control_plane policy
135
+ * anywhere), the control policies, and FORCE on stratum_security, are not
136
+ * expected.
137
+ *
138
+ * The canonical expressions are deparsed by the same server: the check
139
+ * creates temporary tables with the same names and columns, puts the
140
+ * canonical policies on them, and compares pg_get_expr() of both, all in a
141
+ * transaction that it rolls back. It needs only the TEMP privilege. The
142
+ * transaction's search path is pg_catalog only (see pinned-query.ts), so
143
+ * both sides print the Stratum names with their schema.
144
+ */
145
+ async function stratumPolicyDrift(pool, options = {}) {
146
+ const nsp = await (0, pinned_query_js_1.schemaOfTable)(pool);
147
+ if (!nsp)
148
+ return ["the tenants table was not found; run the Stratum migrations"];
149
+ const client = await pool.connect();
150
+ try {
151
+ await client.query("BEGIN");
152
+ await client.query(`SET LOCAL search_path = ${pinned_query_js_1.PINNED_SEARCH_PATH}`);
153
+ const ns = await client.query(`SELECT (SELECT min(r::text) FROM pg_policies p, unnest(p.roles) r WHERE p.policyname = 'stratum_control_plane') AS control`);
154
+ const applied = ns.rows[0].control !== null;
155
+ const control = options.controlRole ?? ns.rows[0].control ?? migration_sql_js_1.STRATUM_CONTROL_ROLE;
156
+ const expected = stratumPolicies().filter((p) => applied || p.to !== "control");
157
+ const policyQuery = (namespace) => client.query(`SELECT c.relname AS tbl, p.polname AS name, p.polpermissive AS permissive, p.polcmd::text AS cmd,
158
+ ARRAY(SELECT CASE WHEN r = 0 THEN 'public' ELSE pg_get_userbyid(r)::text END FROM unnest(p.polroles) r ORDER BY 1) AS roles,
159
+ pg_get_expr(p.polqual, p.polrelid) AS qual, pg_get_expr(p.polwithcheck, p.polrelid) AS chk
160
+ FROM pg_policy p JOIN pg_class c ON c.oid = p.polrelid
161
+ WHERE c.relnamespace = (SELECT n.oid FROM pg_namespace n WHERE n.nspname = $1::text) AND c.relname = ANY ($2::text[])`, [namespace, exports.STRATUM_RLS_TABLES]);
162
+ const issues = [];
163
+ const flags = await client.query(`SELECT c.relname, c.relrowsecurity AS on, c.relforcerowsecurity AS forced FROM pg_class c
164
+ WHERE c.relnamespace = (SELECT n.oid FROM pg_namespace n WHERE n.nspname = $1::text) AND c.relname = ANY ($2::text[])`, [nsp, exports.STRATUM_RLS_TABLES]);
165
+ for (const f of flags.rows) {
166
+ // Until the control role is applied, migration 032 leaves stratum_security
167
+ // without FORCE, so that its owner's definer function can read it.
168
+ const forceExpected = applied || f.relname !== "stratum_security";
169
+ if (!f.on || (forceExpected && !f.forced)) {
170
+ issues.push(`${f.relname}: row-level security is not enabled${forceExpected ? " and forced" : ""}`);
171
+ }
172
+ }
173
+ const live = (await policyQuery(nsp)).rows;
174
+ // The canonical policies, on temporary tables of the same names and columns.
175
+ const columns = await client.query(`SELECT c.relname, string_agg(format('%I %s', a.attname, format_type(a.atttypid, a.atttypmod)), ', ' ORDER BY a.attnum) AS cols
176
+ FROM pg_class c JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum > 0 AND NOT a.attisdropped
177
+ WHERE c.relnamespace = (SELECT n.oid FROM pg_namespace n WHERE n.nspname = $1::text) AND c.relname = ANY ($2::text[])
178
+ GROUP BY c.relname`, [nsp, exports.STRATUM_RLS_TABLES]);
179
+ for (const t of columns.rows) {
180
+ await client.query(`CREATE TEMP TABLE pg_temp."${t.relname}" (${t.cols}) ON COMMIT DROP`);
181
+ }
182
+ for (const p of expected) {
183
+ if (!columns.rows.some((t) => t.relname === p.table))
184
+ continue;
185
+ const to = p.to === "control" ? ` AS PERMISSIVE FOR ALL TO "${control}"` : ` FOR ${p.cmd}`;
186
+ const check = p.check === null ? "" : ` WITH CHECK (${inSchema(p.check, nsp)})`;
187
+ await client.query(`CREATE POLICY ${p.name} ON pg_temp."${p.table}"${to} USING (${inSchema(p.using, nsp)})${check}`);
188
+ }
189
+ const temp = await client.query("SELECT pg_my_temp_schema()::regnamespace::text AS nsp");
190
+ const canonical = (await policyQuery(temp.rows[0].nsp)).rows;
191
+ const key = (r) => `${r.tbl}.${r.name}`;
192
+ const liveByKey = new Map(live.map((r) => [key(r), r]));
193
+ for (const c of canonical) {
194
+ const l = liveByKey.get(key(c));
195
+ if (!l) {
196
+ issues.push(`${c.tbl}: policy ${c.name} is missing`);
197
+ continue;
198
+ }
199
+ liveByKey.delete(key(c));
200
+ const differs = l.permissive !== c.permissive ||
201
+ l.cmd !== c.cmd ||
202
+ l.roles.join(",") !== c.roles.join(",") ||
203
+ l.qual !== c.qual ||
204
+ l.chk !== c.chk;
205
+ if (differs)
206
+ issues.push(`${c.tbl}: policy ${c.name} differs from migration 032`);
207
+ }
208
+ for (const l of liveByKey.values())
209
+ issues.push(`${l.tbl}: policy ${l.name} is not a Stratum policy`);
210
+ return issues;
211
+ }
212
+ finally {
213
+ await client.query("ROLLBACK").catch(() => undefined);
214
+ client.release();
215
+ }
216
+ }
217
+ //# sourceMappingURL=stratum-policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stratum-policies.js","sourceRoot":"","sources":["../src/stratum-policies.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stratum-tables.d.ts","sourceRoot":"","sources":["../src/stratum-tables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAgB1C,CAAC"}
1
+ {"version":3,"file":"stratum-tables.d.ts","sourceRoot":"","sources":["../src/stratum-tables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAiB1C,CAAC"}
@@ -22,6 +22,7 @@ exports.STRATUM_TABLES = Object.freeze([
22
22
  "principal_roles",
23
23
  "regions",
24
24
  "roles",
25
+ "stratum_security",
25
26
  "tenants",
26
27
  "usage_events",
27
28
  "webhook_deliveries",
@@ -1 +1 @@
1
- {"version":3,"file":"stratum-tables.js","sourceRoot":"","sources":["../src/stratum-tables.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACU,QAAA,cAAc,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC7D,aAAa;IACb,eAAe;IACf,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,SAAS;IACT,OAAO;IACP,SAAS;IACT,cAAc;IACd,oBAAoB;IACpB,gBAAgB;IAChB,UAAU;CACX,CAAC,CAAC"}
1
+ {"version":3,"file":"stratum-tables.js","sourceRoot":"","sources":["../src/stratum-tables.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACU,QAAA,cAAc,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC7D,aAAa;IACb,eAAe;IACf,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,SAAS;IACT,OAAO;IACP,kBAAkB;IAClB,SAAS;IACT,cAAc;IACd,oBAAoB;IACpB,gBAAgB;IAChB,UAAU;CACX,CAAC,CAAC"}
package/dist/stratum.d.ts CHANGED
@@ -5,18 +5,53 @@ import * as eventService from "./services/event-service.js";
5
5
  import * as keyRotationService from "./services/key-rotation-service.js";
6
6
  import * as roleService from "./services/role-service.js";
7
7
  import { type StratumLogger } from "./logger.js";
8
- import type { TenantNode, CreateTenantInput, UpdateTenantInput, PaginationInput, PaginatedResult, ConfigEntry, SetConfigInput, BatchSetConfigEntry, ResolvedConfig, BatchSetConfigResult, PermissionPolicy, CreatePermissionInput, UpdatePermissionInput, ResolvedPermission, Webhook, CreateWebhookInput, UpdateWebhookInput, WebhookEvent, WebhookDelivery, ListWebhookEventsQuery, AuditContext, AuditEntry, AuditLogQuery, RecordAuditEventInput, ConsentRecord, GrantConsentInput, Region, CreateRegionInput, UpdateRegionInput, TenantContext, TenantStatus, ResolvedTenantContext, ConfigDiff, DriftResult, BatchDriftResult, AbacPolicy, CreateAbacPolicyInput, AbacEvaluationRequest, AbacEvaluationResult, ResolvedAbacPolicy, RecordUsageInput, UsageEvent, UsageAggregate, UsageAggregateQuery } from "@stratum-hq/core";
8
+ import type { TenantNode, CreateTenantInput, UpdateTenantInput, PaginationInput, PaginatedResult, ConfigEntry, SetConfigInput, BatchSetConfigEntry, ResolvedConfig, ResolveConfigOptions, BatchSetConfigResult, PermissionPolicy, CreatePermissionInput, UpdatePermissionInput, ResolvedPermission, Webhook, CreateWebhookInput, UpdateWebhookInput, WebhookEvent, WebhookDelivery, ListWebhookEventsQuery, AuditContext, AuditEntry, AuditLogQuery, RecordAuditEventInput, ConsentRecord, GrantConsentInput, Region, CreateRegionInput, UpdateRegionInput, TenantContext, TenantStatus, ResolvedTenantContext, ConfigDiff, DriftResult, BatchDriftResult, AbacPolicy, CreateAbacPolicyInput, AbacEvaluationRequest, AbacEvaluationResult, ResolvedAbacPolicy, RecordUsageInput, UsageEvent, UsageAggregate, UsageAggregateQuery } from "@stratum-hq/core";
9
9
  export interface StratumOptions {
10
+ /**
11
+ * The application's pool. With `adminPool`, the library runs no query of
12
+ * its own on it; initialize() only checks its role. Without `adminPool`,
13
+ * the library runs every query on it through the legacy app.bypass_rls path.
14
+ */
10
15
  pool: pg.Pool;
16
+ /**
17
+ * The library's own pool: a login that is a member of the control role
18
+ * (migration 032). Every library query and autoMigrate run on it. Optional
19
+ * in 1.x, with a deprecation warning when absent; required in 2.0.
20
+ */
21
+ adminPool?: pg.Pool;
22
+ /**
23
+ * The control role. Default: the role the database's policies name, else
24
+ * `stratum_control`. autoMigrate passes it to migrate().
25
+ */
26
+ controlRole?: string;
27
+ /**
28
+ * Accept API keys stored with the legacy unkeyed SHA-256 hash (version 1)
29
+ * while STRATUM_API_KEY_HMAC_SECRET is set, and re-hash each one with HMAC
30
+ * when it authenticates (a warning is logged once per process when that
31
+ * happens). Default true in 1.x; the default becomes false in 2.0. Set it
32
+ * to false to accept only HMAC hashes once the secret is set. Without the
33
+ * secret, SHA-256 is the only hash and this option has no effect.
34
+ */
35
+ allowLegacyKeyHashes?: boolean;
11
36
  keyPrefix?: string;
12
37
  logger?: StratumLogger;
13
38
  /** Run migrations automatically on initialize(). Defaults to false. */
14
39
  autoMigrate?: boolean;
15
- /** When true, migrations hard-fail if the PG role has BYPASSRLS. Use in production. */
40
+ /**
41
+ * When true, initialize() (and migrations) hard-fail if the PG role has
42
+ * BYPASSRLS. Checked on every initialize, whether or not a migration runs.
43
+ * With adminPool, initialize() also fails when the login of pool does not
44
+ * fit the role model, including when it can create objects in the schema
45
+ * of the Stratum tables. Use in production.
46
+ */
16
47
  enforceRls?: boolean;
17
48
  }
18
49
  export declare class Stratum {
19
50
  private readonly pool;
51
+ private readonly appPool;
52
+ private readonly hasAdminPool;
53
+ private readonly controlRole;
54
+ private readonly allowLegacyKeyHashes;
20
55
  private readonly keyPrefix;
21
56
  private readonly logger;
22
57
  private readonly autoMigrate;
@@ -24,9 +59,9 @@ export declare class Stratum {
24
59
  private initPromise;
25
60
  constructor(options: StratumOptions);
26
61
  /**
27
- * Initialize Stratum — runs migrations if autoMigrate is enabled.
62
+ * Initialize Stratum: runs migrations if autoMigrate is enabled.
28
63
  * Call this once before using any other methods. Safe to call multiple
29
- * times concurrently — subsequent calls return the same promise.
64
+ * times concurrently; subsequent calls return the same promise.
30
65
  */
31
66
  initialize(): Promise<void>;
32
67
  private _doInitialize;
@@ -44,7 +79,7 @@ export declare class Stratum {
44
79
  createTenant(input: CreateTenantInput, audit?: AuditContext): Promise<TenantNode>;
45
80
  getTenant(id: string, includeArchived?: boolean): Promise<TenantNode>;
46
81
  /**
47
- * Resolve a tenant by its globally-unique slug in one indexed lookup — the
82
+ * Resolve a tenant by its globally-unique slug in one indexed lookup, the
48
83
  * slug-keyed counterpart to {@link getTenant}, mirroring its archived /
49
84
  * suspended handling. See {@link tenantService.getTenantBySlug}.
50
85
  */
@@ -101,19 +136,29 @@ export declare class Stratum {
101
136
  getDescendants(id: string, includeArchived?: boolean): Promise<TenantNode[]>;
102
137
  getChildren(id: string): Promise<TenantNode[]>;
103
138
  reorderTenant(id: string, position: number, audit?: AuditContext): Promise<TenantNode>;
104
- getTenantContext(tenantId: string): Promise<TenantContext>;
105
- resolveConfig(tenantId: string): Promise<ResolvedConfig>;
139
+ getTenantContext(tenantId: string, options?: ResolveConfigOptions): Promise<TenantContext>;
140
+ /**
141
+ * Resolve a tenant's effective config. Sensitive values inherited from an
142
+ * ancestor come back masked (`value: null`, `masked: true`) unless
143
+ * `options.revealSensitive` is set, or `options.viewerTenantId` is the
144
+ * tenant that set them.
145
+ */
146
+ resolveConfig(tenantId: string, options?: ResolveConfigOptions): Promise<ResolvedConfig>;
106
147
  setConfig(tenantId: string, key: string, input: SetConfigInput, audit?: AuditContext): Promise<ConfigEntry>;
107
148
  deleteConfig(tenantId: string, key: string, audit?: AuditContext): Promise<void>;
108
- getConfigWithInheritance(tenantId: string): Promise<ResolvedConfig>;
109
- diffConfig(tenantIdA: string, tenantIdB: string): Promise<ConfigDiff>;
149
+ getConfigWithInheritance(tenantId: string, options?: ResolveConfigOptions): Promise<ResolvedConfig>;
150
+ diffConfig(tenantIdA: string, tenantIdB: string, options?: ResolveConfigOptions): Promise<ConfigDiff>;
110
151
  computeDrift(parentId: string, childId: string): Promise<DriftResult>;
111
152
  batchComputeDrift(parentId: string, childIds: string[]): Promise<BatchDriftResult>;
112
153
  resolvePermissions(tenantId: string): Promise<Record<string, ResolvedPermission>>;
113
154
  createPermission(tenantId: string, input: CreatePermissionInput, audit?: AuditContext): Promise<PermissionPolicy>;
114
155
  updatePermission(tenantId: string, policyId: string, input: UpdatePermissionInput, audit?: AuditContext): Promise<PermissionPolicy>;
115
156
  deletePermission(tenantId: string, policyId: string, audit?: AuditContext): Promise<void>;
116
- createApiKey(tenantId: string, nameOrOptions?: string | apiKeyService.CreateApiKeyOptions, expiresAt?: Date, audit?: AuditContext): Promise<apiKeyService.CreatedApiKey>;
157
+ /**
158
+ * Creates an API key and returns its plaintext once.
159
+ * Pass `null` as tenantId to create a global key, which is not limited to one tenant.
160
+ */
161
+ createApiKey(tenantId: string | null, nameOrOptions?: string | apiKeyService.CreateApiKeyOptions, expiresAt?: Date, audit?: AuditContext): Promise<apiKeyService.CreatedApiKey>;
117
162
  validateApiKey(key: string): Promise<apiKeyService.ValidatedApiKey | null>;
118
163
  revokeApiKey(keyId: string, audit?: AuditContext): Promise<boolean>;
119
164
  rotateApiKey(keyId: string, newName?: string, audit?: AuditContext): Promise<apiKeyService.CreatedApiKey>;
@@ -211,7 +256,7 @@ export declare class Stratum {
211
256
  deleteAbacPolicy(tenantId: string, policyId: string, audit?: AuditContext): Promise<void>;
212
257
  /**
213
258
  * Record a countable usage event for a tenant. Pass `idempotency_key` to make
214
- * the write safe to retry — a duplicate key is a no-op that returns the
259
+ * the write safe to retry; a duplicate key is a no-op that returns the
215
260
  * original event. See {@link usageService.recordUsage}.
216
261
  */
217
262
  recordUsage(tenantId: string, input: RecordUsageInput): Promise<UsageEvent>;