pipework 0.264.1 → 0.264.2
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/CHANGELOG.md +4 -0
- package/dist/test/fingerprint.js +1 -1
- package/dist/test/setup.d.ts.map +1 -1
- package/dist/test/setup.js +132 -0
- package/dist/test/setup.js.map +1 -1
- package/package.json +1 -1
- package/src/test/fingerprint.ts +1 -1
- package/src/test/setup.ts +159 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.264.2
|
|
4
|
+
|
|
5
|
+
- **Fixed: a per-file clone's app role holds the anchor app role's grants on schemas other than `public`** (#932). Since 0.264.1 a `beforeAll` app-role pool reaches the clone, whose app role was granted on `public` only, so a query into another schema the anchor's configured app role (`appTestUrl`) could use failed with `permission denied for schema`. When a template is built, the anchor role's own grants on every non-system schema but `public` (schema USAGE/CREATE, tables, views, sequences, routines and default privileges) are read from the anchor and made to the template's app role, for the schemas and objects the template carries; every clone inherits them. Each grant is made by the object's owner (the test login or the migration owner); one neither owns fails setup with a message naming it. A schema that exists only on the anchor, and not in the migrated template, is still absent from the clone. Column-level grants and privileges held through role membership are not copied, and a cached template does not see later changes to the anchor's grants. Templates are rebuilt once (format version 3).
|
|
6
|
+
|
|
3
7
|
## 0.264.1
|
|
4
8
|
|
|
5
9
|
- **Fixed: in a test fork, `pool.getOrCreate(config.database(name))` outside test isolation connects to the fork's clone** (#930). Opened in `beforeAll` or at module scope, it connected to the database's `testUrl`, which every fork of the run shares and templates are built from, so its writes committed there and concurrent forks saw each other's rows. Once `setupTestDatabases` has run, every role routes to the clone: the owner and app roles on the clone's logins, the system role on its configured login against the clone's database. A pool opened before setup is closed and reopened on the clone at the next `getOrCreate`, and teardown closes routed pools before the clone is dropped. `migrateOne`'s apply step still opens its own connection on the configured URL.
|
package/dist/test/fingerprint.js
CHANGED
|
@@ -13,7 +13,7 @@ import { VERSION } from '../core/runtime/broker.js';
|
|
|
13
13
|
// fresh process, and a per-process key (pid, run nonce) meant every one of them
|
|
14
14
|
// replayed the whole migration stack. Issue #340.
|
|
15
15
|
/** Bump when pipework changes the SHAPE of what it puts in a template. */
|
|
16
|
-
const TEMPLATE_FORMAT_VERSION =
|
|
16
|
+
const TEMPLATE_FORMAT_VERSION = 3;
|
|
17
17
|
/**
|
|
18
18
|
* Hash a migrations folder's contents: every file's path relative to the folder
|
|
19
19
|
* and its bytes, in a stable order. Path names are included so a rename is a
|
package/dist/test/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAUnD,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAA;AAKtB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;CACjB;AA6ED,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAoBxD,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,UAAU,CAAC,EAAE,qBAAqB,CAAA;IAClC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAUpC;AAgUD,8DAA8D;AAC9D,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAI7C;AAID;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC7B,KAAK,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAyD,EAC5F,QAAQ,GAAE,SAAS,MAAM,EAA0B,GAClD,OAAO,CAAC,OAAO,CAAC,CAYlB;AAYD,yFAAyF;AACzF,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM;CAe1E;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,gFAAgF;IAChF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAgC5F;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,QAAQ,CAAC,GAAkB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/test/setup.js
CHANGED
|
@@ -560,6 +560,9 @@ async function buildTemplate(instance, plan, tracker) {
|
|
|
560
560
|
const grantBeat = (detail) => tracker.reached('template-grants', plan.name, detail);
|
|
561
561
|
grantBeat('role');
|
|
562
562
|
await provisionTemplateRole(adminClient, templateUrlStr, plan.appRole, migrateUrlStr, grantBeat);
|
|
563
|
+
if ('appUrl' in dbConfig) {
|
|
564
|
+
await grantAnchorSchemas(dbConfig.url, new URL(dbConfig.appUrl).username, plan.appRole, templateUrlStr, migrateUrlStr, grantBeat);
|
|
565
|
+
}
|
|
563
566
|
if (dbConfig.rls !== undefined)
|
|
564
567
|
await provisionTestSystemPolicy(templateUrlStr, migrateUrlStr, grantBeat);
|
|
565
568
|
// The marker is written last, and its presence is what makes this template
|
|
@@ -845,6 +848,135 @@ async function provisionTemplateRole(client, templateUrl, roleName, migrateUrl,
|
|
|
845
848
|
}
|
|
846
849
|
await templateClient.end();
|
|
847
850
|
}
|
|
851
|
+
// Every schema but `public` and the system ones.
|
|
852
|
+
const ANCHOR_SCHEMA = `n.nspname <> 'public' AND n.nspname <> 'information_schema' AND n.nspname NOT LIKE 'pg\_%'`;
|
|
853
|
+
const ACL_GRANTEE = `a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $1)`;
|
|
854
|
+
const ACL_PRIVILEGE = /^[A-Z]+$/;
|
|
855
|
+
const DEFAULT_ACL_TARGET = { r: 'TABLES', S: 'SEQUENCES', f: 'ROUTINES', T: 'TYPES' };
|
|
856
|
+
const splitPrivs = (list) => list.split(',');
|
|
857
|
+
const objectKey = (...parts) => parts.join('\x1f');
|
|
858
|
+
// What the anchor's configured app role holds on the anchor's non-public
|
|
859
|
+
// schemas: its own ACL entries on each schema, relation and routine, and its
|
|
860
|
+
// default privileges. Column-level and inherited (role membership) grants are
|
|
861
|
+
// not read.
|
|
862
|
+
async function readAnchorAcl(anchorUrl, anchorRole) {
|
|
863
|
+
const client = postgres(anchorUrl, { max: 1, fetch_types: false, onnotice: () => { } });
|
|
864
|
+
try {
|
|
865
|
+
const grants = async (query, keyOf) => (await client.unsafe(query, [anchorRole]))
|
|
866
|
+
.map(r => ({ key: keyOf(r), privs: splitPrivs(r['privs']).filter(p => ACL_PRIVILEGE.test(p)) }));
|
|
867
|
+
return {
|
|
868
|
+
schemas: await grants(`SELECT n.nspname, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
869
|
+
FROM pg_namespace n, aclexplode(n.nspacl) a
|
|
870
|
+
WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname`, r => objectKey(r['nspname'])),
|
|
871
|
+
relations: await grants(`SELECT n.nspname, c.relname, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
872
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace, aclexplode(c.relacl) a
|
|
873
|
+
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
|
|
874
|
+
GROUP BY n.nspname, c.relname`, r => objectKey(r['nspname'], r['relname'])),
|
|
875
|
+
routines: await grants(`SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
876
|
+
FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace, aclexplode(p.proacl) a
|
|
877
|
+
WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
|
|
878
|
+
GROUP BY n.nspname, p.oid, p.proname`, r => objectKey(r['nspname'], r['proname'], r['args'])),
|
|
879
|
+
defaults: (await client.unsafe(`SELECT n.nspname, d.defaclobjtype AS objtype, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
880
|
+
FROM pg_default_acl d JOIN pg_namespace n ON n.oid = d.defaclnamespace, aclexplode(d.defaclacl) a
|
|
881
|
+
WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname, d.defaclobjtype`, [anchorRole]))
|
|
882
|
+
.flatMap(r => DEFAULT_ACL_TARGET[r.objtype] === undefined ? [] : [{
|
|
883
|
+
schema: r.nspname, target: DEFAULT_ACL_TARGET[r.objtype], privs: splitPrivs(r.privs).filter(p => ACL_PRIVILEGE.test(p)),
|
|
884
|
+
}]),
|
|
885
|
+
};
|
|
886
|
+
}
|
|
887
|
+
finally {
|
|
888
|
+
await client.end();
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
/**
|
|
892
|
+
* A clone's app role is a different role from the anchor's configured app role,
|
|
893
|
+
* so what the anchor role was granted on other schemas (`public` is handled by
|
|
894
|
+
* `provisionTemplateRole`) does not reach it. Read those grants from the anchor
|
|
895
|
+
* and make them on the template, which every clone inherits. Only schemas and
|
|
896
|
+
* objects the template carries are granted; each grantor grants what it owns, and
|
|
897
|
+
* a grant nobody could make is an error naming the object.
|
|
898
|
+
*/
|
|
899
|
+
async function grantAnchorSchemas(anchorUrl, anchorRole, roleName, templateUrl, migrateUrl, beat) {
|
|
900
|
+
const acl = await readAnchorAcl(anchorUrl, anchorRole);
|
|
901
|
+
if (acl.schemas.length + acl.relations.length + acl.routines.length + acl.defaults.length === 0)
|
|
902
|
+
return;
|
|
903
|
+
beat('anchor schemas');
|
|
904
|
+
const roleIdent = quoteIdentifier(roleName, 'role');
|
|
905
|
+
const wanted = (list, key) => list.find(g => g.key === key)?.privs;
|
|
906
|
+
const missing = [];
|
|
907
|
+
for (const url of migrateUrl === undefined ? [templateUrl] : [templateUrl, migrateUrl]) {
|
|
908
|
+
const client = postgres(url, { max: 1, fetch_types: false, onnotice: () => { } });
|
|
909
|
+
try {
|
|
910
|
+
for (const r of await client `
|
|
911
|
+
SELECT n.nspname, quote_ident(n.nspname) AS ident FROM pg_namespace n WHERE pg_get_userbyid(n.nspowner) = current_user`) {
|
|
912
|
+
const privs = wanted(acl.schemas, objectKey(r.nspname));
|
|
913
|
+
if (privs !== undefined)
|
|
914
|
+
await client.unsafe(`GRANT ${privs.join(', ')} ON SCHEMA ${r.ident} TO ${roleIdent}`);
|
|
915
|
+
}
|
|
916
|
+
for (const r of await client `
|
|
917
|
+
SELECT n.nspname, c.relname, c.relkind AS kind, c.oid::regclass::text AS ident
|
|
918
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
919
|
+
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND pg_get_userbyid(c.relowner) = current_user`) {
|
|
920
|
+
const privs = wanted(acl.relations, objectKey(r.nspname, r.relname));
|
|
921
|
+
if (privs === undefined)
|
|
922
|
+
continue;
|
|
923
|
+
await client.unsafe(`GRANT ${privs.join(', ')} ON ${r.kind === 'S' ? 'SEQUENCE' : 'TABLE'} ${r.ident} TO ${roleIdent}`);
|
|
924
|
+
}
|
|
925
|
+
for (const r of await client `
|
|
926
|
+
SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, p.oid::regprocedure::text AS ident
|
|
927
|
+
FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE pg_get_userbyid(p.proowner) = current_user`) {
|
|
928
|
+
const privs = wanted(acl.routines, objectKey(r.nspname, r.proname, r.args));
|
|
929
|
+
if (privs !== undefined)
|
|
930
|
+
await client.unsafe(`GRANT ${privs.join(', ')} ON ROUTINE ${r.ident} TO ${roleIdent}`);
|
|
931
|
+
}
|
|
932
|
+
const present = new Set((await client `SELECT nspname FROM pg_namespace`).map(r => r.nspname));
|
|
933
|
+
for (const d of acl.defaults.filter(d => present.has(d.schema))) {
|
|
934
|
+
await client.unsafe(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${quoteIdentifier(d.schema, 'schema')} GRANT ${d.privs.join(', ')} ON ${d.target} TO ${roleIdent}`);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
finally {
|
|
938
|
+
await client.end();
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
// Whatever the template carries that the anchor role holds and the clone role
|
|
942
|
+
// now lacks was owned by neither grantor.
|
|
943
|
+
const check = postgres(templateUrl, { max: 1, fetch_types: false, onnotice: () => { } });
|
|
944
|
+
try {
|
|
945
|
+
const lacking = async (rows, test) => {
|
|
946
|
+
if (rows.length === 0)
|
|
947
|
+
return;
|
|
948
|
+
const found = await check `
|
|
949
|
+
SELECT t.ident, t.priv FROM jsonb_to_recordset(${JSON.stringify(rows)}::text::jsonb) AS t(ident text, priv text)
|
|
950
|
+
WHERE NOT ${check.unsafe(test)}`;
|
|
951
|
+
for (const f of found)
|
|
952
|
+
missing.push(`${f.priv} on ${f.ident}`);
|
|
953
|
+
};
|
|
954
|
+
const flat = (list, toIdent) => list.flatMap(g => g.privs.map(priv => ({ ident: toIdent(g.key), priv })));
|
|
955
|
+
const role = `'${roleName.replace(/'/g, "''")}'`;
|
|
956
|
+
const exists = async (query, idents) => new Set((await check.unsafe(query, [JSON.stringify(idents)])).map(r => r.ident));
|
|
957
|
+
const schemaNames = [...new Set(acl.schemas.map(g => g.key))];
|
|
958
|
+
const inTemplate = await exists(`SELECT nspname AS ident FROM pg_namespace WHERE nspname IN (SELECT jsonb_array_elements_text($1::text::jsonb))`, schemaNames);
|
|
959
|
+
await lacking(flat(acl.schemas.filter(g => inTemplate.has(g.key)), k => k), `has_schema_privilege(${role}, t.ident, t.priv)`);
|
|
960
|
+
const relIdents = await check.unsafe(`SELECT n.nspname || E'\\x1f' || c.relname AS key, c.oid::regclass::text AS ident, c.relkind = 'S' AS seq
|
|
961
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
962
|
+
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA}`);
|
|
963
|
+
for (const seq of [false, true]) {
|
|
964
|
+
const relByKey = new Map(relIdents.filter(r => r.seq === seq).map(r => [r.key, r.ident]));
|
|
965
|
+
await lacking(flat(acl.relations.filter(g => relByKey.has(g.key)), k => relByKey.get(k)), `has_${seq ? 'sequence' : 'table'}_privilege(${role}, t.ident::regclass, t.priv)`);
|
|
966
|
+
}
|
|
967
|
+
const procIdents = await check.unsafe(`SELECT n.nspname || E'\\x1f' || p.proname || E'\\x1f' || pg_get_function_identity_arguments(p.oid) AS key, p.oid::regprocedure::text AS ident
|
|
968
|
+
FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE ${ANCHOR_SCHEMA}`);
|
|
969
|
+
const procByKey = new Map(procIdents.map(r => [r.key, r.ident]));
|
|
970
|
+
await lacking(flat(acl.routines.filter(g => procByKey.has(g.key)), k => procByKey.get(k)), `has_function_privilege(${role}, t.ident::regprocedure, t.priv)`);
|
|
971
|
+
}
|
|
972
|
+
finally {
|
|
973
|
+
await check.end();
|
|
974
|
+
}
|
|
975
|
+
if (missing.length > 0) {
|
|
976
|
+
throw new Error(`[pipework] The anchor's app role "${anchorRole}" holds privileges the clone app role "${roleName}" could not be given, ` +
|
|
977
|
+
`because neither the test login nor the migration owner owns the object: ${missing.join('; ')}.`);
|
|
978
|
+
}
|
|
979
|
+
}
|
|
848
980
|
const APP_ROLE_GRANTS = {
|
|
849
981
|
tables: 'SELECT, INSERT, UPDATE, DELETE',
|
|
850
982
|
sequences: 'USAGE, SELECT',
|
package/dist/test/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/test/fingerprint.ts
CHANGED
|
@@ -17,7 +17,7 @@ import { VERSION } from '../core/runtime/broker.js'
|
|
|
17
17
|
// replayed the whole migration stack. Issue #340.
|
|
18
18
|
|
|
19
19
|
/** Bump when pipework changes the SHAPE of what it puts in a template. */
|
|
20
|
-
const TEMPLATE_FORMAT_VERSION =
|
|
20
|
+
const TEMPLATE_FORMAT_VERSION = 3
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Everything that determines a template's contents. Serialized and hashed;
|
package/src/test/setup.ts
CHANGED
|
@@ -726,6 +726,9 @@ async function buildTemplate(instance: Manifold, plan: TemplatePlan, tracker: Ph
|
|
|
726
726
|
const grantBeat = (detail: string): void => tracker.reached('template-grants', plan.name, detail)
|
|
727
727
|
grantBeat('role')
|
|
728
728
|
await provisionTemplateRole(adminClient!, templateUrlStr, plan.appRole, migrateUrlStr, grantBeat)
|
|
729
|
+
if ('appUrl' in dbConfig) {
|
|
730
|
+
await grantAnchorSchemas(dbConfig.url, new URL(dbConfig.appUrl).username, plan.appRole, templateUrlStr, migrateUrlStr, grantBeat)
|
|
731
|
+
}
|
|
729
732
|
if (dbConfig.rls !== undefined) await provisionTestSystemPolicy(templateUrlStr, migrateUrlStr, grantBeat)
|
|
730
733
|
|
|
731
734
|
// The marker is written last, and its presence is what makes this template
|
|
@@ -1109,6 +1112,162 @@ async function provisionTemplateRole(
|
|
|
1109
1112
|
await templateClient.end()
|
|
1110
1113
|
}
|
|
1111
1114
|
|
|
1115
|
+
// Every schema but `public` and the system ones.
|
|
1116
|
+
const ANCHOR_SCHEMA = `n.nspname <> 'public' AND n.nspname <> 'information_schema' AND n.nspname NOT LIKE 'pg\_%'`
|
|
1117
|
+
const ACL_GRANTEE = `a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $1)`
|
|
1118
|
+
const ACL_PRIVILEGE = /^[A-Z]+$/
|
|
1119
|
+
const DEFAULT_ACL_TARGET: Readonly<Record<string, string>> = { r: 'TABLES', S: 'SEQUENCES', f: 'ROUTINES', T: 'TYPES' }
|
|
1120
|
+
|
|
1121
|
+
interface AnchorGrant { readonly key: string; readonly privs: string[] }
|
|
1122
|
+
interface AnchorAcl {
|
|
1123
|
+
readonly schemas: AnchorGrant[]
|
|
1124
|
+
readonly relations: AnchorGrant[]
|
|
1125
|
+
readonly routines: AnchorGrant[]
|
|
1126
|
+
readonly defaults: { readonly schema: string; readonly target: string; readonly privs: string[] }[]
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
const splitPrivs = (list: string): string[] => list.split(',')
|
|
1130
|
+
const objectKey = (...parts: string[]): string => parts.join('\x1f')
|
|
1131
|
+
|
|
1132
|
+
// What the anchor's configured app role holds on the anchor's non-public
|
|
1133
|
+
// schemas: its own ACL entries on each schema, relation and routine, and its
|
|
1134
|
+
// default privileges. Column-level and inherited (role membership) grants are
|
|
1135
|
+
// not read.
|
|
1136
|
+
async function readAnchorAcl(anchorUrl: string, anchorRole: string): Promise<AnchorAcl> {
|
|
1137
|
+
const client = postgres(anchorUrl, { max: 1, fetch_types: false, onnotice: () => {} })
|
|
1138
|
+
try {
|
|
1139
|
+
const grants = async (query: string, keyOf: (r: Record<string, string>) => string): Promise<AnchorGrant[]> =>
|
|
1140
|
+
(await client.unsafe<Record<string, string>[]>(query, [anchorRole]))
|
|
1141
|
+
.map(r => ({ key: keyOf(r), privs: splitPrivs(r['privs']!).filter(p => ACL_PRIVILEGE.test(p)) }))
|
|
1142
|
+
return {
|
|
1143
|
+
schemas: await grants(
|
|
1144
|
+
`SELECT n.nspname, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
1145
|
+
FROM pg_namespace n, aclexplode(n.nspacl) a
|
|
1146
|
+
WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname`,
|
|
1147
|
+
r => objectKey(r['nspname']!)),
|
|
1148
|
+
relations: await grants(
|
|
1149
|
+
`SELECT n.nspname, c.relname, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
1150
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace, aclexplode(c.relacl) a
|
|
1151
|
+
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
|
|
1152
|
+
GROUP BY n.nspname, c.relname`,
|
|
1153
|
+
r => objectKey(r['nspname']!, r['relname']!)),
|
|
1154
|
+
routines: await grants(
|
|
1155
|
+
`SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
1156
|
+
FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace, aclexplode(p.proacl) a
|
|
1157
|
+
WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
|
|
1158
|
+
GROUP BY n.nspname, p.oid, p.proname`,
|
|
1159
|
+
r => objectKey(r['nspname']!, r['proname']!, r['args']!)),
|
|
1160
|
+
defaults: (await client.unsafe<{ nspname: string; objtype: string; privs: string }[]>(
|
|
1161
|
+
`SELECT n.nspname, d.defaclobjtype AS objtype, string_agg(DISTINCT a.privilege_type, ',') AS privs
|
|
1162
|
+
FROM pg_default_acl d JOIN pg_namespace n ON n.oid = d.defaclnamespace, aclexplode(d.defaclacl) a
|
|
1163
|
+
WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname, d.defaclobjtype`, [anchorRole]))
|
|
1164
|
+
.flatMap(r => DEFAULT_ACL_TARGET[r.objtype] === undefined ? [] : [{
|
|
1165
|
+
schema: r.nspname, target: DEFAULT_ACL_TARGET[r.objtype]!, privs: splitPrivs(r.privs).filter(p => ACL_PRIVILEGE.test(p)),
|
|
1166
|
+
}]),
|
|
1167
|
+
}
|
|
1168
|
+
} finally {
|
|
1169
|
+
await client.end()
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
/**
|
|
1174
|
+
* A clone's app role is a different role from the anchor's configured app role,
|
|
1175
|
+
* so what the anchor role was granted on other schemas (`public` is handled by
|
|
1176
|
+
* `provisionTemplateRole`) does not reach it. Read those grants from the anchor
|
|
1177
|
+
* and make them on the template, which every clone inherits. Only schemas and
|
|
1178
|
+
* objects the template carries are granted; each grantor grants what it owns, and
|
|
1179
|
+
* a grant nobody could make is an error naming the object.
|
|
1180
|
+
*/
|
|
1181
|
+
async function grantAnchorSchemas(
|
|
1182
|
+
anchorUrl: string,
|
|
1183
|
+
anchorRole: string,
|
|
1184
|
+
roleName: string,
|
|
1185
|
+
templateUrl: string,
|
|
1186
|
+
migrateUrl: string | undefined,
|
|
1187
|
+
beat: (detail: string) => void,
|
|
1188
|
+
): Promise<void> {
|
|
1189
|
+
const acl = await readAnchorAcl(anchorUrl, anchorRole)
|
|
1190
|
+
if (acl.schemas.length + acl.relations.length + acl.routines.length + acl.defaults.length === 0) return
|
|
1191
|
+
beat('anchor schemas')
|
|
1192
|
+
const roleIdent = quoteIdentifier(roleName, 'role')
|
|
1193
|
+
const wanted = (list: AnchorGrant[], key: string): string[] | undefined => list.find(g => g.key === key)?.privs
|
|
1194
|
+
|
|
1195
|
+
const missing: string[] = []
|
|
1196
|
+
for (const url of migrateUrl === undefined ? [templateUrl] : [templateUrl, migrateUrl]) {
|
|
1197
|
+
const client = postgres(url, { max: 1, fetch_types: false, onnotice: () => {} })
|
|
1198
|
+
try {
|
|
1199
|
+
for (const r of await client<{ nspname: string; ident: string }[]>`
|
|
1200
|
+
SELECT n.nspname, quote_ident(n.nspname) AS ident FROM pg_namespace n WHERE pg_get_userbyid(n.nspowner) = current_user`) {
|
|
1201
|
+
const privs = wanted(acl.schemas, objectKey(r.nspname))
|
|
1202
|
+
if (privs !== undefined) await client.unsafe(`GRANT ${privs.join(', ')} ON SCHEMA ${r.ident} TO ${roleIdent}`)
|
|
1203
|
+
}
|
|
1204
|
+
for (const r of await client<{ nspname: string; relname: string; kind: string; ident: string }[]>`
|
|
1205
|
+
SELECT n.nspname, c.relname, c.relkind AS kind, c.oid::regclass::text AS ident
|
|
1206
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
1207
|
+
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND pg_get_userbyid(c.relowner) = current_user`) {
|
|
1208
|
+
const privs = wanted(acl.relations, objectKey(r.nspname, r.relname))
|
|
1209
|
+
if (privs === undefined) continue
|
|
1210
|
+
await client.unsafe(`GRANT ${privs.join(', ')} ON ${r.kind === 'S' ? 'SEQUENCE' : 'TABLE'} ${r.ident} TO ${roleIdent}`)
|
|
1211
|
+
}
|
|
1212
|
+
for (const r of await client<{ nspname: string; proname: string; args: string; ident: string }[]>`
|
|
1213
|
+
SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, p.oid::regprocedure::text AS ident
|
|
1214
|
+
FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE pg_get_userbyid(p.proowner) = current_user`) {
|
|
1215
|
+
const privs = wanted(acl.routines, objectKey(r.nspname, r.proname, r.args))
|
|
1216
|
+
if (privs !== undefined) await client.unsafe(`GRANT ${privs.join(', ')} ON ROUTINE ${r.ident} TO ${roleIdent}`)
|
|
1217
|
+
}
|
|
1218
|
+
const present = new Set((await client<{ nspname: string }[]>`SELECT nspname FROM pg_namespace`).map(r => r.nspname))
|
|
1219
|
+
for (const d of acl.defaults.filter(d => present.has(d.schema))) {
|
|
1220
|
+
await client.unsafe(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${quoteIdentifier(d.schema, 'schema')} GRANT ${d.privs.join(', ')} ON ${d.target} TO ${roleIdent}`)
|
|
1221
|
+
}
|
|
1222
|
+
} finally {
|
|
1223
|
+
await client.end()
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
// Whatever the template carries that the anchor role holds and the clone role
|
|
1228
|
+
// now lacks was owned by neither grantor.
|
|
1229
|
+
const check = postgres(templateUrl, { max: 1, fetch_types: false, onnotice: () => {} })
|
|
1230
|
+
try {
|
|
1231
|
+
const lacking = async (rows: { ident: string; priv: string }[], test: string): Promise<void> => {
|
|
1232
|
+
if (rows.length === 0) return
|
|
1233
|
+
const found = await check<{ ident: string; priv: string }[]>`
|
|
1234
|
+
SELECT t.ident, t.priv FROM jsonb_to_recordset(${JSON.stringify(rows)}::text::jsonb) AS t(ident text, priv text)
|
|
1235
|
+
WHERE NOT ${check.unsafe(test)}`
|
|
1236
|
+
for (const f of found) missing.push(`${f.priv} on ${f.ident}`)
|
|
1237
|
+
}
|
|
1238
|
+
const flat = (list: AnchorGrant[], toIdent: (key: string) => string): { ident: string; priv: string }[] =>
|
|
1239
|
+
list.flatMap(g => g.privs.map(priv => ({ ident: toIdent(g.key), priv })))
|
|
1240
|
+
const role = `'${roleName.replace(/'/g, "''")}'`
|
|
1241
|
+
const exists = async (query: string, idents: string[]): Promise<Set<string>> =>
|
|
1242
|
+
new Set((await check.unsafe<{ ident: string }[]>(query, [JSON.stringify(idents)])).map(r => r.ident))
|
|
1243
|
+
const schemaNames = [...new Set(acl.schemas.map(g => g.key))]
|
|
1244
|
+
const inTemplate = await exists(`SELECT nspname AS ident FROM pg_namespace WHERE nspname IN (SELECT jsonb_array_elements_text($1::text::jsonb))`, schemaNames)
|
|
1245
|
+
await lacking(flat(acl.schemas.filter(g => inTemplate.has(g.key)), k => k), `has_schema_privilege(${role}, t.ident, t.priv)`)
|
|
1246
|
+
const relIdents = await check.unsafe<{ key: string; ident: string; seq: boolean }[]>(
|
|
1247
|
+
`SELECT n.nspname || E'\\x1f' || c.relname AS key, c.oid::regclass::text AS ident, c.relkind = 'S' AS seq
|
|
1248
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
1249
|
+
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA}`)
|
|
1250
|
+
for (const seq of [false, true]) {
|
|
1251
|
+
const relByKey = new Map(relIdents.filter(r => r.seq === seq).map(r => [r.key, r.ident]))
|
|
1252
|
+
await lacking(flat(acl.relations.filter(g => relByKey.has(g.key)), k => relByKey.get(k)!),
|
|
1253
|
+
`has_${seq ? 'sequence' : 'table'}_privilege(${role}, t.ident::regclass, t.priv)`)
|
|
1254
|
+
}
|
|
1255
|
+
const procIdents = await check.unsafe<{ key: string; ident: string }[]>(
|
|
1256
|
+
`SELECT n.nspname || E'\\x1f' || p.proname || E'\\x1f' || pg_get_function_identity_arguments(p.oid) AS key, p.oid::regprocedure::text AS ident
|
|
1257
|
+
FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE ${ANCHOR_SCHEMA}`)
|
|
1258
|
+
const procByKey = new Map(procIdents.map(r => [r.key, r.ident]))
|
|
1259
|
+
await lacking(flat(acl.routines.filter(g => procByKey.has(g.key)), k => procByKey.get(k)!), `has_function_privilege(${role}, t.ident::regprocedure, t.priv)`)
|
|
1260
|
+
} finally {
|
|
1261
|
+
await check.end()
|
|
1262
|
+
}
|
|
1263
|
+
if (missing.length > 0) {
|
|
1264
|
+
throw new Error(
|
|
1265
|
+
`[pipework] The anchor's app role "${anchorRole}" holds privileges the clone app role "${roleName}" could not be given, ` +
|
|
1266
|
+
`because neither the test login nor the migration owner owns the object: ${missing.join('; ')}.`,
|
|
1267
|
+
)
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1112
1271
|
/** The privileges one grantor hands one role, by object kind. */
|
|
1113
1272
|
interface GrantSet {
|
|
1114
1273
|
readonly tables: string
|