@xemahq/biome-database-nest 0.7.0 → 0.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.
package/README.md CHANGED
@@ -31,8 +31,9 @@
31
31
  This package centralizes schema-qualified Prisma construction and database
32
32
  bootstrap for Xema biome services. Every consumer explicitly selects whether
33
33
  the application or an external process owns migrations. Externally managed
34
- services receive only a verified runtime connection and must prove target
35
- identity, least privilege, required DML access, and migration compatibility.
34
+ services must prove the exact connection and login identity, single-schema
35
+ least privilege, required DML access, a read-only migration ledger, and
36
+ migration compatibility before the application may start.
36
37
 
37
38
  ## When to use it
38
39
 
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAWzE,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,wBAAwB;IAEvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,yCAAyC;IAExD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;IAE3D,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAE/C,QAAQ,CAAC,aAAa,EAAE,gCAAgC,CAAC;IAEzD,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;CACpE;AAED,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAMzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAOzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,4BAA4B,CAAC;CAC/D;AAED,MAAM,WAAW,kCACf,SAAQ,oCAAoC;IAC5C,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,kBAAkB,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAWxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,iCACf,SAAQ,oCAAoC;IAC5C,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,iBAAiB,CAAC;IACrE,QAAQ,CAAC,SAAS,EAAE,SAAS,yCAAyC,EAAE,CAAC;IAEzE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC;CACrC;AAED,MAAM,MAAM,8BAA8B,GACtC,kCAAkC,GAClC,iCAAiC,CAAC;AA6VtC,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CAiFf"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAWzE,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,wBAAwB;IAEvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,yCAAyC;IAExD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;IAE3D,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAE/C,QAAQ,CAAC,aAAa,EAAE,gCAAgC,CAAC;IAEzD,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;CACpE;AAED,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAMzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAOzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,4BAA4B,CAAC;CAC/D;AAED,MAAM,WAAW,kCACf,SAAQ,oCAAoC;IAC5C,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,kBAAkB,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAWxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,iCACf,SAAQ,oCAAoC;IAC5C,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,iBAAiB,CAAC;IACrE,QAAQ,CAAC,SAAS,EAAE,SAAS,yCAAyC,EAAE,CAAC;IAEzE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC;CACrC;AAED,MAAM,MAAM,8BAA8B,GACtC,kCAAkC,GAClC,iCAAiC,CAAC;AA8VtC,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CAiFf"}
@@ -189,10 +189,11 @@ function withApplicationName(url, applicationName) {
189
189
  function assertExternalTargetMatchesConfig(biomeId, key, config, target) {
190
190
  const configuredSchema = config.schema ?? 'public';
191
191
  if (config.database !== target.database ||
192
- configuredSchema !== target.schema) {
192
+ configuredSchema !== target.schema ||
193
+ config.username !== target.expectedRole) {
193
194
  throw new Error(`${LOG_PREFIX} biome=${biomeId} key=${key}: resolved runtime target ` +
194
- `${config.database}/${configuredSchema} does not match expected ` +
195
- `${target.database}/${target.schema}.`);
195
+ `${config.database}/${configuredSchema}/${config.username} does not match expected ` +
196
+ `${target.database}/${target.schema}/${target.expectedRole}.`);
196
197
  }
197
198
  }
198
199
  function exportResolvedEnv(key, config, runtimeUrl) {
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"external-runtime-verifier.d.ts","sourceRoot":"","sources":["../../src/lib/external-runtime-verifier.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AA4K1B,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,gCAAgC,EACxC,aAAa,EAAE,iCAAiC,GAC/C,OAAO,CAAC,6BAA6B,CAAC,CA6NxC"}
1
+ {"version":3,"file":"external-runtime-verifier.d.ts","sourceRoot":"","sources":["../../src/lib/external-runtime-verifier.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AA0a1B,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,gCAAgC,EACxC,aAAa,EAAE,iCAAiC,GAC/C,OAAO,CAAC,6BAA6B,CAAC,CAmTxC"}
@@ -3,7 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.verifyExternallyManagedRuntime = verifyExternallyManagedRuntime;
4
4
  const node_crypto_1 = require("node:crypto");
5
5
  const pg_1 = require("pg");
6
+ const migration_mode_1 = require("./migration-mode");
6
7
  const LOG_PREFIX = '[biome-database]';
8
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
9
+ const SHA_256_PATTERN = /^[0-9a-f]{64}$/;
10
+ const ALL_TABLE_DML = Object.values(migration_mode_1.RuntimeTablePrivilege);
11
+ const ALL_SEQUENCE_PRIVILEGES = Object.values(migration_mode_1.RuntimeSequencePrivilege);
12
+ const TABLE_DML_SET = new Set(ALL_TABLE_DML);
13
+ const SEQUENCE_PRIVILEGE_SET = new Set(ALL_SEQUENCE_PRIVILEGES);
7
14
  function quoteIdentifier(identifier) {
8
15
  return `"${identifier.replaceAll('"', '""')}"`;
9
16
  }
@@ -19,9 +26,31 @@ function assertNonEmpty(value, field) {
19
26
  }
20
27
  }
21
28
  function assertExpectation(expectation) {
22
- if (expectation.tablePrivileges.length === 0) {
29
+ if (!Array.isArray(expectation.tablePrivileges) ||
30
+ expectation.tablePrivileges.length === 0) {
23
31
  throw new Error(`${LOG_PREFIX} externally-managed runtime access must require at least one table privilege.`);
24
32
  }
33
+ if (expectation.tablePrivileges.some((privilege) => !TABLE_DML_SET.has(privilege)) ||
34
+ new Set(expectation.tablePrivileges).size !==
35
+ expectation.tablePrivileges.length) {
36
+ throw new Error(`${LOG_PREFIX} runtime table privileges must be unique RuntimeTablePrivilege values.`);
37
+ }
38
+ if (!Array.isArray(expectation.sequencePrivileges) ||
39
+ expectation.sequencePrivileges.some((privilege) => !SEQUENCE_PRIVILEGE_SET.has(privilege)) ||
40
+ new Set(expectation.sequencePrivileges).size !==
41
+ expectation.sequencePrivileges.length) {
42
+ throw new Error(`${LOG_PREFIX} runtime sequence privileges must be unique RuntimeSequencePrivilege values.`);
43
+ }
44
+ const memberships = expectation.authorizedRoleMemberships;
45
+ if (!Array.isArray(memberships)) {
46
+ throw new Error(`${LOG_PREFIX} externally-managed runtime access must explicitly declare authorizedRoleMemberships.`);
47
+ }
48
+ for (const role of memberships) {
49
+ assertNonEmpty(role, 'authorized role membership');
50
+ }
51
+ if (new Set(memberships).size !== memberships.length) {
52
+ throw new Error(`${LOG_PREFIX} authorizedRoleMemberships must not contain duplicates.`);
53
+ }
25
54
  }
26
55
  function buildMissingTablePrivilegeQuery(privileges) {
27
56
  const projections = privileges
@@ -68,11 +97,123 @@ function buildMissingSequencePrivilegeQuery(privileges) {
68
97
  ORDER BY sequence_name
69
98
  `;
70
99
  }
100
+ function buildCrossSchemaTablePrivilegeQuery() {
101
+ const projections = ALL_TABLE_DML.map((privilege) => `CASE WHEN has_table_privilege(current_user, ` +
102
+ `format('%I.%I', table_schema, table_name), '${privilege}') ` +
103
+ `THEN '${privilege}' END`).join(', ');
104
+ return `
105
+ SELECT table_schema AS schema_name,
106
+ table_name AS object_name,
107
+ array_remove(ARRAY[${projections}], NULL) AS privileges
108
+ FROM information_schema.tables
109
+ WHERE table_schema <> $1
110
+ AND table_schema NOT IN ('pg_catalog', 'information_schema')
111
+ AND table_schema NOT LIKE 'pg_toast%'
112
+ AND table_schema NOT LIKE 'pg_temp_%'
113
+ AND (
114
+ ${ALL_TABLE_DML.map((privilege) => `has_table_privilege(current_user, ` +
115
+ `format('%I.%I', table_schema, table_name), '${privilege}')`).join(' OR ')}
116
+ )
117
+ ORDER BY table_schema, table_name
118
+ `;
119
+ }
120
+ function buildCrossSchemaSequencePrivilegeQuery() {
121
+ const projections = ALL_SEQUENCE_PRIVILEGES.map((privilege) => `CASE WHEN has_sequence_privilege(current_user, ` +
122
+ `format('%I.%I', sequence_schema, sequence_name), '${privilege}') ` +
123
+ `THEN '${privilege}' END`).join(', ');
124
+ return `
125
+ SELECT sequence_schema AS schema_name,
126
+ sequence_name AS object_name,
127
+ array_remove(ARRAY[${projections}], NULL) AS privileges
128
+ FROM information_schema.sequences
129
+ WHERE sequence_schema <> $1
130
+ AND sequence_schema NOT IN ('pg_catalog', 'information_schema')
131
+ AND sequence_schema NOT LIKE 'pg_toast%'
132
+ AND sequence_schema NOT LIKE 'pg_temp_%'
133
+ AND (
134
+ ${ALL_SEQUENCE_PRIVILEGES.map((privilege) => `has_sequence_privilege(current_user, ` +
135
+ `format('%I.%I', sequence_schema, sequence_name), '${privilege}')`).join(' OR ')}
136
+ )
137
+ ORDER BY sequence_schema, sequence_name
138
+ `;
139
+ }
71
140
  function formatMissingPrivileges(kind, rows) {
72
141
  return rows
73
142
  .map((row) => `${kind} ${row.object_name} missing ${row.missing_privileges.join('/')}`)
74
143
  .join(', ');
75
144
  }
145
+ function formatCrossSchemaPrivileges(kind, rows) {
146
+ return rows
147
+ .map((row) => `${kind} ${row.schema_name}.${row.object_name} ` +
148
+ `[${row.privileges.join('/')}]`)
149
+ .join(', ');
150
+ }
151
+ function assertExactRoleMemberships(observedRows, authorized, expectedRole) {
152
+ if (authorized.includes(expectedRole)) {
153
+ throw new Error(`${LOG_PREFIX} authorizedRoleMemberships must not include the runtime login role itself.`);
154
+ }
155
+ const observed = observedRows.map((row) => row.role_name).sort();
156
+ const expected = [...authorized].sort();
157
+ if (observed.length !== expected.length ||
158
+ observed.some((role, index) => role !== expected[index])) {
159
+ throw new Error(`${LOG_PREFIX} runtime role membership mismatch: expected ` +
160
+ `[${expected.join(', ')}], observed [${observed.join(', ')}].`);
161
+ }
162
+ }
163
+ function parseLedgerTimestamp(value, migrationName, field) {
164
+ const milliseconds = Date.parse(value);
165
+ if (!Number.isFinite(milliseconds)) {
166
+ throw new Error(`${LOG_PREFIX} migration ${migrationName} has invalid ${field} "${value}".`);
167
+ }
168
+ return milliseconds;
169
+ }
170
+ function validateMigrationLedger(rows) {
171
+ const ids = new Set();
172
+ const names = new Set();
173
+ return rows.map((row) => {
174
+ if (!UUID_PATTERN.test(row.id)) {
175
+ throw new Error(`${LOG_PREFIX} migration ledger row has invalid id "${row.id}".`);
176
+ }
177
+ assertNonEmpty(row.migration_name, 'migration name');
178
+ if (ids.has(row.id) || names.has(row.migration_name)) {
179
+ throw new Error(`${LOG_PREFIX} migration ledger contains a duplicate id or migration name: ${row.migration_name}.`);
180
+ }
181
+ ids.add(row.id);
182
+ names.add(row.migration_name);
183
+ if (!SHA_256_PATTERN.test(row.checksum)) {
184
+ throw new Error(`${LOG_PREFIX} migration ${row.migration_name} has an invalid SHA-256 checksum.`);
185
+ }
186
+ if (row.started_at === null) {
187
+ throw new Error(`${LOG_PREFIX} migration ${row.migration_name} has no started_at timestamp.`);
188
+ }
189
+ const startedAt = parseLedgerTimestamp(row.started_at, row.migration_name, 'started_at');
190
+ if (row.rolled_back_at !== null) {
191
+ throw new Error(`${LOG_PREFIX} migration ${row.migration_name} is rolled back.`);
192
+ }
193
+ if (row.finished_at === null) {
194
+ throw new Error(`${LOG_PREFIX} migration ${row.migration_name} is unfinished or failed.`);
195
+ }
196
+ if (row.logs !== null) {
197
+ throw new Error(`${LOG_PREFIX} migration ${row.migration_name} contains failure logs.`);
198
+ }
199
+ const finishedAt = parseLedgerTimestamp(row.finished_at, row.migration_name, 'finished_at');
200
+ if (finishedAt < startedAt) {
201
+ throw new Error(`${LOG_PREFIX} migration ${row.migration_name} finished before it started.`);
202
+ }
203
+ if (!Number.isInteger(row.applied_steps_count) ||
204
+ row.applied_steps_count <= 0) {
205
+ throw new Error(`${LOG_PREFIX} migration ${row.migration_name} has invalid applied_steps_count ${row.applied_steps_count}.`);
206
+ }
207
+ return {
208
+ id: row.id,
209
+ name: row.migration_name,
210
+ checksum: row.checksum,
211
+ startedAt: row.started_at,
212
+ finishedAt: row.finished_at,
213
+ appliedStepsCount: row.applied_steps_count,
214
+ };
215
+ });
216
+ }
76
217
  function digestLedger(appliedMigrations) {
77
218
  return (0, node_crypto_1.createHash)('sha256')
78
219
  .update(JSON.stringify(appliedMigrations))
@@ -82,6 +223,7 @@ function assertTarget(target) {
82
223
  assertNonEmpty(target.database, 'expected target database');
83
224
  assertNonEmpty(target.schema, 'expected target schema');
84
225
  assertNonEmpty(target.applicationName, 'expected application_name');
226
+ assertNonEmpty(target.expectedRole, 'expected runtime role');
85
227
  }
86
228
  async function verifyExternallyManagedRuntime(runtimeUrl, target, access, compatibility) {
87
229
  assertTarget(target);
@@ -98,17 +240,21 @@ async function verifyExternallyManagedRuntime(runtimeUrl, target, access, compat
98
240
  SELECT current_database() AS database_name,
99
241
  current_schema() AS schema_name,
100
242
  current_setting('application_name') AS application_name,
101
- current_user AS role_name
243
+ current_user AS role_name,
244
+ session_user AS session_role_name
102
245
  `)).rows, 'connection identity');
103
246
  if (identity.database_name !== target.database ||
104
247
  identity.schema_name !== target.schema ||
105
- identity.application_name !== target.applicationName) {
248
+ identity.application_name !== target.applicationName ||
249
+ identity.role_name !== target.expectedRole ||
250
+ identity.session_role_name !== target.expectedRole) {
106
251
  throw new Error(`${LOG_PREFIX} runtime target mismatch: expected ` +
107
- `${target.database}/${target.schema}/${target.applicationName}, observed ` +
108
- `${identity.database_name}/${identity.schema_name ?? '<none>'}/${identity.application_name}.`);
252
+ `${target.database}/${target.schema}/${target.applicationName}/${target.expectedRole}, observed ` +
253
+ `${identity.database_name}/${identity.schema_name ?? '<none>'}/${identity.application_name}/` +
254
+ `${identity.role_name} (session=${identity.session_role_name}).`);
109
255
  }
110
256
  const role = requireSingleRow((await client.query(`
111
- SELECT rolsuper, rolcreatedb, rolcreaterole, rolbypassrls
257
+ SELECT rolsuper, rolcreatedb, rolcreaterole, rolbypassrls, rolreplication
112
258
  FROM pg_roles
113
259
  WHERE rolname = current_user
114
260
  `)).rows, 'runtime role');
@@ -117,11 +263,20 @@ async function verifyExternallyManagedRuntime(runtimeUrl, target, access, compat
117
263
  role.rolcreatedb ? 'CREATEDB' : null,
118
264
  role.rolcreaterole ? 'CREATEROLE' : null,
119
265
  role.rolbypassrls ? 'BYPASSRLS' : null,
266
+ role.rolreplication ? 'REPLICATION' : null,
120
267
  ].filter((value) => value !== null);
121
268
  if (forbiddenRoleAttributes.length > 0) {
122
269
  throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden attribute(s): ` +
123
270
  forbiddenRoleAttributes.join(', '));
124
271
  }
272
+ const roleMemberships = (await client.query(`
273
+ SELECT rolname AS role_name
274
+ FROM pg_roles
275
+ WHERE rolname <> current_user
276
+ AND pg_has_role(current_user, oid, 'MEMBER')
277
+ ORDER BY rolname
278
+ `)).rows;
279
+ assertExactRoleMemberships(roleMemberships, access.authorizedRoleMemberships, target.expectedRole);
125
280
  const databasePrivileges = requireSingleRow((await client.query(`
126
281
  SELECT has_database_privilege(current_user, current_database(), 'CONNECT') AS can_connect,
127
282
  has_database_privilege(current_user, current_database(), 'CREATE') AS can_create,
@@ -136,38 +291,45 @@ async function verifyExternallyManagedRuntime(runtimeUrl, target, access, compat
136
291
  throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden database ` +
137
292
  `${databasePrivileges.owns_database ? 'ownership' : 'CREATE privilege'}.`);
138
293
  }
139
- const schemaPrivileges = requireSingleRow((await client.query(`
140
- SELECT has_schema_privilege(current_user, oid, 'USAGE') AS can_use,
141
- has_schema_privilege(current_user, oid, 'CREATE') AS can_create,
142
- pg_has_role(current_user, nspowner, 'USAGE') AS owns_schema
143
- FROM pg_namespace
144
- WHERE nspname = $1
145
- `, [target.schema])).rows, 'target schema privilege');
146
- if (!schemaPrivileges.can_use) {
147
- throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} lacks USAGE on schema ${target.schema}.`);
148
- }
149
- if (schemaPrivileges.can_create || schemaPrivileges.owns_schema) {
150
- throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden CREATE/ownership ` +
151
- `on schema ${target.schema}.`);
152
- }
153
- const persistentDdlSchemas = (await client.query(`
154
- SELECT nspname AS schema_name
294
+ const persistentSchemaPrivileges = (await client.query(`
295
+ SELECT nspname AS schema_name,
296
+ has_schema_privilege(current_user, oid, 'USAGE') AS can_use,
297
+ has_schema_privilege(current_user, oid, 'CREATE') AS can_create,
298
+ pg_has_role(current_user, nspowner, 'USAGE') AS owns_schema
155
299
  FROM pg_namespace
156
300
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
157
301
  AND nspname NOT LIKE 'pg_toast%'
158
302
  AND nspname NOT LIKE 'pg_temp_%'
159
- AND (
160
- has_schema_privilege(current_user, oid, 'CREATE')
161
- OR pg_has_role(current_user, nspowner, 'USAGE')
162
- )
163
303
  ORDER BY nspname
164
304
  `)).rows;
305
+ const targetSchemaPrivileges = requireSingleRow(persistentSchemaPrivileges.filter((row) => row.schema_name === target.schema), 'target schema privilege');
306
+ if (!targetSchemaPrivileges.can_use) {
307
+ throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} lacks USAGE on schema ${target.schema}.`);
308
+ }
309
+ const persistentDdlSchemas = persistentSchemaPrivileges.filter((row) => row.can_create || row.owns_schema);
165
310
  if (persistentDdlSchemas.length > 0) {
166
311
  throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden persistent ` +
167
312
  `schema CREATE/ownership on: ${persistentDdlSchemas
168
313
  .map((row) => row.schema_name)
169
314
  .join(', ')}.`);
170
315
  }
316
+ const crossSchemaUsage = persistentSchemaPrivileges.filter((row) => row.schema_name !== target.schema && row.can_use);
317
+ if (crossSchemaUsage.length > 0) {
318
+ throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden cross-schema ` +
319
+ `USAGE on: ${crossSchemaUsage
320
+ .map((row) => row.schema_name)
321
+ .join(', ')}.`);
322
+ }
323
+ const crossSchemaTablePrivileges = (await client.query(buildCrossSchemaTablePrivilegeQuery(), [target.schema])).rows;
324
+ if (crossSchemaTablePrivileges.length > 0) {
325
+ throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden cross-schema ` +
326
+ `table privileges: ${formatCrossSchemaPrivileges('table', crossSchemaTablePrivileges)}.`);
327
+ }
328
+ const crossSchemaSequencePrivileges = (await client.query(buildCrossSchemaSequencePrivilegeQuery(), [target.schema])).rows;
329
+ if (crossSchemaSequencePrivileges.length > 0) {
330
+ throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden cross-schema ` +
331
+ `sequence privileges: ${formatCrossSchemaPrivileges('sequence', crossSchemaSequencePrivileges)}.`);
332
+ }
171
333
  const missingTablePrivileges = (await client.query(buildMissingTablePrivilegeQuery(access.tablePrivileges), [target.schema])).rows;
172
334
  if (missingTablePrivileges.length > 0) {
173
335
  throw new Error(`${LOG_PREFIX} runtime DML contract failed: ${formatMissingPrivileges('table', missingTablePrivileges)}.`);
@@ -179,26 +341,50 @@ async function verifyExternallyManagedRuntime(runtimeUrl, target, access, compat
179
341
  throw new Error(`${LOG_PREFIX} runtime DML contract failed: ${formatMissingPrivileges('sequence', missingSequencePrivileges)}.`);
180
342
  }
181
343
  }
344
+ const ledgerPrivileges = requireSingleRow((await client.query(`
345
+ SELECT has_table_privilege(
346
+ current_user,
347
+ format('%I.%I', $1, '_prisma_migrations'),
348
+ 'SELECT'
349
+ ) AS can_select,
350
+ has_table_privilege(
351
+ current_user,
352
+ format('%I.%I', $1, '_prisma_migrations'),
353
+ 'INSERT'
354
+ ) AS can_insert,
355
+ has_table_privilege(
356
+ current_user,
357
+ format('%I.%I', $1, '_prisma_migrations'),
358
+ 'UPDATE'
359
+ ) AS can_update,
360
+ has_table_privilege(
361
+ current_user,
362
+ format('%I.%I', $1, '_prisma_migrations'),
363
+ 'DELETE'
364
+ ) AS can_delete
365
+ `, [target.schema])).rows, 'migration ledger privilege');
366
+ if (!ledgerPrivileges.can_select) {
367
+ throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} lacks required SELECT on ${target.schema}._prisma_migrations.`);
368
+ }
369
+ if (ledgerPrivileges.can_insert ||
370
+ ledgerPrivileges.can_update ||
371
+ ledgerPrivileges.can_delete) {
372
+ throw new Error(`${LOG_PREFIX} runtime role ${identity.role_name} has forbidden write privilege on ` +
373
+ `${target.schema}._prisma_migrations.`);
374
+ }
182
375
  const migrationRows = (await client.query(`
183
376
  SELECT id::text,
184
377
  migration_name,
185
378
  checksum,
186
379
  started_at::text,
187
380
  finished_at::text,
381
+ rolled_back_at::text,
382
+ logs,
188
383
  applied_steps_count
189
384
  FROM ${quoteIdentifier(target.schema)}."_prisma_migrations"
190
- WHERE finished_at IS NOT NULL
191
- AND rolled_back_at IS NULL
192
- ORDER BY finished_at, id
385
+ ORDER BY started_at NULLS FIRST, id
193
386
  `)).rows;
194
- const appliedMigrations = migrationRows.map((row) => ({
195
- id: row.id,
196
- name: row.migration_name,
197
- checksum: row.checksum,
198
- startedAt: row.started_at,
199
- finishedAt: row.finished_at,
200
- appliedStepsCount: row.applied_steps_count,
201
- }));
387
+ const appliedMigrations = validateMigrationLedger(migrationRows);
202
388
  const observedLedgerDigest = digestLedger(appliedMigrations);
203
389
  const context = Object.freeze({
204
390
  target: Object.freeze({ ...target }),
@@ -1 +1 @@
1
- {"version":3,"file":"external-runtime-verifier.js","sourceRoot":"","sources":["../../src/lib/external-runtime-verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-runtime-verifier.js","sourceRoot":"","sources":["../../src/lib/external-runtime-verifier.ts"],"names":[],"mappings":"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"}
@@ -20,11 +20,13 @@ export declare enum RuntimeSequencePrivilege {
20
20
  export interface RuntimeDatabaseAccessExpectation {
21
21
  readonly tablePrivileges: readonly RuntimeTablePrivilege[];
22
22
  readonly sequencePrivileges: readonly RuntimeSequencePrivilege[];
23
+ readonly authorizedRoleMemberships: readonly string[];
23
24
  }
24
25
  export interface RuntimeDatabaseTarget {
25
26
  readonly database: string;
26
27
  readonly schema: string;
27
28
  readonly applicationName: string;
29
+ readonly expectedRole: string;
28
30
  }
29
31
  export interface AppliedPrismaMigration {
30
32
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"migration-mode.d.ts","sourceRoot":"","sources":["../../src/lib/migration-mode.ts"],"names":[],"mappings":"AAOA,oBAAY,0BAA0B;IACpC,kBAAkB,wBAAwB;IAC1C,iBAAiB,uBAAuB;CACzC;AAQD,oBAAY,+BAA+B;IACzC,YAAY,kBAAkB;IAC9B,WAAW,gBAAgB;CAC5B;AAGD,oBAAY,qBAAqB;IAC/B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAGD,oBAAY,wBAAwB;IAClC,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAUD,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,eAAe,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAClE;AAGD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAGD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAGD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC9D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAGD,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,CAAC;AASN,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,CACf,OAAO,EAAE,6BAA6B,KACnC,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACzE"}
1
+ {"version":3,"file":"migration-mode.d.ts","sourceRoot":"","sources":["../../src/lib/migration-mode.ts"],"names":[],"mappings":"AAOA,oBAAY,0BAA0B;IACpC,kBAAkB,wBAAwB;IAC1C,iBAAiB,uBAAuB;CACzC;AAQD,oBAAY,+BAA+B;IACzC,YAAY,kBAAkB;IAC9B,WAAW,gBAAgB;CAC5B;AAGD,oBAAY,qBAAqB;IAC/B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAGD,oBAAY,wBAAwB;IAClC,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAUD,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,eAAe,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAKjE,QAAQ,CAAC,yBAAyB,EAAE,SAAS,MAAM,EAAE,CAAC;CACvD;AAGD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAGD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC9D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAGD,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,CAAC;AASN,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,CACf,OAAO,EAAE,6BAA6B,KACnC,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACzE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/biome-database-nest",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Explicit database migration ownership, least-privilege runtime verification, and schema-qualified Prisma wiring for Xema biome services.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",