Files
Assistant/database/migrations/059_identity_acceptance_harness.sql
2026-09-01 23:13:15 +03:00

25 lines
1.6 KiB
PL/PgSQL

BEGIN;
SET ROLE identity_role;
CREATE TABLE IF NOT EXISTS identity.service_principals (
principal_id TEXT PRIMARY KEY,
actor_id TEXT NOT NULL,
kind TEXT NOT NULL CHECK (kind = 'SERVICE'),
purpose TEXT NOT NULL,
synthetic_scope TEXT NOT NULL,
active BOOLEAN NOT NULL DEFAULT TRUE,
revision BIGINT NOT NULL DEFAULT 1,
recorded_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
CHECK (principal_id <> '' AND actor_id <> '' AND purpose <> '' AND synthetic_scope <> '' AND revision > 0)
);
CREATE UNIQUE INDEX IF NOT EXISTS service_principals_actor_idx ON identity.service_principals(actor_id);
INSERT INTO identity.service_principals(principal_id, actor_id, kind, purpose, synthetic_scope)
VALUES ('domovoy-acceptance-harness-principal', 'domovoy-acceptance-harness-actor', 'SERVICE', 'AUTHENTICATE_ACCEPTANCE_HARNESS', 'synthetic-acceptance-scope')
ON CONFLICT (principal_id) DO NOTHING;
INSERT INTO identity.actors(actor_id, display_name) VALUES ('domovoy-acceptance-harness-actor', 'Domovoy Acceptance Harness') ON CONFLICT (actor_id) DO NOTHING;
INSERT INTO identity.principals(principal_id, display_name) VALUES ('domovoy-acceptance-harness-principal', 'Domovoy Acceptance Harness Principal') ON CONFLICT (principal_id) DO NOTHING;
INSERT INTO identity.principal_bindings(actor_id, principal_id, active) VALUES ('domovoy-acceptance-harness-actor', 'domovoy-acceptance-harness-principal', TRUE) ON CONFLICT (actor_id, principal_id) DO UPDATE SET active=TRUE;
REVOKE ALL ON identity.service_principals FROM PUBLIC;
GRANT SELECT ON identity.service_principals TO identity_role;
RESET ROLE;
COMMIT;