Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3814,7 +3814,7 @@ jobs:
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
repository: OmniNode-ai/omninode_infra
ref: b0ce124838108bdce47f0e02245906ec5be4fde2
ref: 8b8d5d3b5dda51bdcc99168d4c358a6df0f19380
path: .proof-dependencies/omninode-infra
token: ${{ steps.app-token-proof.outputs.token }}
persist-credentials: false
Expand Down
16 changes: 8 additions & 8 deletions config/application_database_domain_proof_ownership.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ db_io:
db_tables:
- name: tenants
database_ref: application
schema: tenant
schema: public
migration: docker/application-domain-enforcement/seed.sql
access: read_write
role: tenant_identity_root
- name: events
database_ref: application
schema: tenant
schema: public
migration: docker/application-domain-enforcement/seed.sql
access: read_write
role: tenant_event_proof
Expand All @@ -34,7 +34,7 @@ relation_evidence:
- name: tenants
kind: table
database_ref: application
schema: tenant
schema: public
domain: TENANT
owner_declaration: service:application_domain_proof
tenant_identity_column: id
Expand All @@ -50,7 +50,7 @@ relation_evidence:
- name: events
kind: table
database_ref: application
schema: tenant
schema: public
domain: TENANT
owner_declaration: service:application_domain_proof
tenant_identity_column: tenant_id
Expand Down Expand Up @@ -80,18 +80,18 @@ relation_evidence:
- name: events_view
kind: view
database_ref: application
schema: tenant
schema: public
domain: TENANT
owner_declaration: service:application_domain_proof
readers: [app_dashboard]
database_objects:
- name: safe_report
kind: function
database_ref: application
schema: tenant
schema: public
domain: TENANT
owner_declaration: service:application_domain_proof
readers: [app_dashboard]
function_signature: "()"
audit_id: OMN-15361:tenant.safe_report:58b47971e3234c0117f153a4d3d7c7d0efdfb611804ba729153dfac19e503cfe
definition_sha256: 58b47971e3234c0117f153a4d3d7c7d0efdfb611804ba729153dfac19e503cfe
audit_id: OMN-17887:public.safe_report:0d04ab584434cb569795cbcaf50d4b91c907c93500199dd6de1148d7ab033ea6
definition_sha256: 0d04ab584434cb569795cbcaf50d4b91c907c93500199dd6de1148d7ab033ea6
59 changes: 31 additions & 28 deletions docker/application-domain-enforcement/seed.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,55 +10,58 @@ CREATE ROLE tenant_projection_writer LOGIN PASSWORD 'domain-proof-only' NOSUPERU
CREATE ROLE app_dashboard LOGIN PASSWORD 'domain-proof-only' NOSUPERUSER NOBYPASSRLS NOCREATEDB NOCREATEROLE NOREPLICATION; -- pragma: allowlist secret
CREATE ROLE omninode_runtime LOGIN PASSWORD 'domain-proof-only' NOSUPERUSER NOBYPASSRLS NOCREATEDB NOCREATEROLE NOREPLICATION; -- pragma: allowlist secret

CREATE SCHEMA tenant AUTHORIZATION owner_onex_tenant;
-- OMN-17887: the TENANT domain's schema is `public` (no `tenant` schema). Own it
-- as the tenant owner, as onex-lab's bootstrap does, and keep it deny-by-default.
ALTER SCHEMA public OWNER TO owner_onex_tenant;
REVOKE ALL ON SCHEMA public FROM PUBLIC;
CREATE SCHEMA omninode_internal AUTHORIZATION owner_omninode_internal;
CREATE SCHEMA platform_catalog AUTHORIZATION owner_platform_catalog;

CREATE TABLE tenant.tenants (
CREATE TABLE public.tenants (
id UUID PRIMARY KEY,
tenant_name TEXT NOT NULL
);
ALTER TABLE tenant.tenants OWNER TO owner_onex_tenant;
ALTER TABLE tenant.tenants ENABLE ROW LEVEL SECURITY;
ALTER TABLE tenant.tenants FORCE ROW LEVEL SECURITY;
CREATE POLICY tenant_identity_isolation ON tenant.tenants
ALTER TABLE public.tenants OWNER TO owner_onex_tenant;
ALTER TABLE public.tenants ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.tenants FORCE ROW LEVEL SECURITY;
CREATE POLICY tenant_identity_isolation ON public.tenants
AS PERMISSIVE FOR ALL TO PUBLIC
USING (id = current_setting('app.tenant_id', true)::uuid)
WITH CHECK (id = current_setting('app.tenant_id', true)::uuid);

INSERT INTO tenant.tenants (id, tenant_name) VALUES
INSERT INTO public.tenants (id, tenant_name) VALUES
('11111111-1111-1111-1111-111111111111', 'tenant-a'),
('22222222-2222-2222-2222-222222222222', 'tenant-b');

CREATE TABLE tenant.events (
CREATE TABLE public.events (
event_id UUID PRIMARY KEY,
tenant_id UUID NOT NULL,
payload TEXT NOT NULL
);
ALTER TABLE tenant.events OWNER TO owner_onex_tenant;
ALTER TABLE tenant.events ENABLE ROW LEVEL SECURITY;
ALTER TABLE tenant.events FORCE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON tenant.events
ALTER TABLE public.events OWNER TO owner_onex_tenant;
ALTER TABLE public.events ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.events FORCE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON public.events
AS PERMISSIVE FOR ALL TO PUBLIC
USING (tenant_id = current_setting('app.tenant_id', true)::uuid)
WITH CHECK (tenant_id = current_setting('app.tenant_id', true)::uuid);

INSERT INTO tenant.events (event_id, tenant_id, payload) VALUES
INSERT INTO public.events (event_id, tenant_id, payload) VALUES
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1', '11111111-1111-1111-1111-111111111111', 'tenant-a-first'),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa2', '11111111-1111-1111-1111-111111111111', 'tenant-a-second'),
('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbb1', '22222222-2222-2222-2222-222222222222', 'tenant-b-only');

CREATE VIEW tenant.events_view WITH (security_invoker = true) AS
SELECT event_id, tenant_id, payload FROM tenant.events;
ALTER VIEW tenant.events_view OWNER TO owner_onex_tenant;
CREATE VIEW public.events_view WITH (security_invoker = true) AS
SELECT event_id, tenant_id, payload FROM public.events;
ALTER VIEW public.events_view OWNER TO owner_onex_tenant;

CREATE FUNCTION tenant.safe_report() RETURNS INTEGER
CREATE FUNCTION public.safe_report() RETURNS INTEGER
LANGUAGE sql
SECURITY DEFINER
SET search_path = pg_catalog, tenant, pg_temp
AS 'SELECT count(*)::integer FROM tenant.events';
ALTER FUNCTION tenant.safe_report() OWNER TO owner_onex_tenant;
REVOKE ALL ON FUNCTION tenant.safe_report() FROM PUBLIC;
SET search_path = pg_catalog, public, pg_temp
AS 'SELECT count(*)::integer FROM public.events';
ALTER FUNCTION public.safe_report() OWNER TO owner_onex_tenant;
REVOKE ALL ON FUNCTION public.safe_report() FROM PUBLIC;

CREATE TABLE omninode_internal.runtime_state (
state_id UUID PRIMARY KEY,
Expand All @@ -74,13 +77,13 @@ CREATE TABLE platform_catalog.feature_flags (
ALTER TABLE platform_catalog.feature_flags OWNER TO owner_platform_catalog;

GRANT CONNECT ON DATABASE omnidash_analytics TO onex_api, tenant_projection_writer, app_dashboard, omninode_runtime;
GRANT USAGE ON SCHEMA tenant TO onex_api, tenant_projection_writer, app_dashboard;
GRANT USAGE ON SCHEMA tenant TO tenant_control_admin;
GRANT SELECT, INSERT ON tenant.tenants TO onex_api, tenant_control_admin;
GRANT SELECT ON tenant.events TO onex_api, tenant_projection_writer, app_dashboard;
GRANT SELECT ON tenant.events_view TO onex_api, tenant_projection_writer, app_dashboard;
GRANT INSERT, UPDATE, DELETE ON tenant.events TO onex_api, tenant_projection_writer;
GRANT EXECUTE ON FUNCTION tenant.safe_report() TO app_dashboard;
GRANT USAGE ON SCHEMA public TO onex_api, tenant_projection_writer, app_dashboard;
GRANT USAGE ON SCHEMA public TO tenant_control_admin;
GRANT SELECT, INSERT ON public.tenants TO onex_api, tenant_control_admin;
GRANT SELECT ON public.events TO onex_api, tenant_projection_writer, app_dashboard;
GRANT SELECT ON public.events_view TO onex_api, tenant_projection_writer, app_dashboard;
GRANT INSERT, UPDATE, DELETE ON public.events TO onex_api, tenant_projection_writer;
GRANT EXECUTE ON FUNCTION public.safe_report() TO app_dashboard;
GRANT USAGE ON SCHEMA omninode_internal TO omninode_runtime;
GRANT SELECT, INSERT, UPDATE, DELETE ON omninode_internal.runtime_state TO omninode_runtime;
GRANT USAGE ON SCHEMA platform_catalog TO onex_api, app_dashboard, omninode_runtime;
Expand Down
19 changes: 3 additions & 16 deletions docker/catalog/database-topology/dogfood.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ databases:
objects: []
privileges:
- USAGE
schema: tenant
schema: public
- object_type: SCHEMA
objects: []
privileges:
Expand Down Expand Up @@ -160,7 +160,7 @@ databases:
objects: []
privileges:
- USAGE
schema: tenant
schema: public
- object_type: SCHEMA
objects: []
privileges:
Expand All @@ -175,11 +175,6 @@ databases:
privileges:
- CONNECT
schema: null
- object_type: SCHEMA
objects: []
privileges:
- USAGE
schema: tenant
- object_type: SCHEMA
objects: []
privileges:
Expand Down Expand Up @@ -244,11 +239,6 @@ databases:
privileges:
- USAGE
schema: public
- object_type: SCHEMA
objects: []
privileges:
- USAGE
schema: tenant
login: true
schemas:
action_authorization_claim:
Expand All @@ -263,9 +253,6 @@ databases:
public:
domain: TENANT
owner: owner_onex_tenant
tenant:
domain: TENANT
owner: owner_onex_tenant
omnibase_infra:
bindings:
omninode_runtime_service:
Expand Down Expand Up @@ -368,5 +355,5 @@ source:
profile_catalog_path: src/omnibase_infra/topology/application_database_profiles.yaml
profile_catalog_sha256: 690ada1927fc31465fd1d80435e82c96394fa05d49bd433e30242ea014fa740f
repository: OmniNode-ai/omnibase_infra
sha256: bd70ba91704f69b3ebeeed58febe60cfdbbe0a55c44cd236b80b08aeebfe29e3
sha256: 3db481a0456f1634cc80627502cdc381df57762439192bbbc7e7ce2b0623f915
topology_instance: local
19 changes: 3 additions & 16 deletions docker/catalog/database-topology/judge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ databases:
objects: []
privileges:
- USAGE
schema: tenant
schema: public
- object_type: SCHEMA
objects: []
privileges:
Expand Down Expand Up @@ -160,7 +160,7 @@ databases:
objects: []
privileges:
- USAGE
schema: tenant
schema: public
- object_type: SCHEMA
objects: []
privileges:
Expand All @@ -175,11 +175,6 @@ databases:
privileges:
- CONNECT
schema: null
- object_type: SCHEMA
objects: []
privileges:
- USAGE
schema: tenant
- object_type: SCHEMA
objects: []
privileges:
Expand Down Expand Up @@ -244,11 +239,6 @@ databases:
privileges:
- USAGE
schema: public
- object_type: SCHEMA
objects: []
privileges:
- USAGE
schema: tenant
login: true
schemas:
action_authorization_claim:
Expand All @@ -263,9 +253,6 @@ databases:
public:
domain: TENANT
owner: owner_onex_tenant
tenant:
domain: TENANT
owner: owner_onex_tenant
omnibase_infra:
bindings:
omninode_runtime_service:
Expand Down Expand Up @@ -368,5 +355,5 @@ source:
profile_catalog_path: src/omnibase_infra/topology/application_database_profiles.yaml
profile_catalog_sha256: 690ada1927fc31465fd1d80435e82c96394fa05d49bd433e30242ea014fa740f
repository: OmniNode-ai/omnibase_infra
sha256: bd70ba91704f69b3ebeeed58febe60cfdbbe0a55c44cd236b80b08aeebfe29e3
sha256: 3db481a0456f1634cc80627502cdc381df57762439192bbbc7e7ce2b0623f915
topology_instance: local
19 changes: 3 additions & 16 deletions docker/catalog/database-topology/lakshman.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ databases:
objects: []
privileges:
- USAGE
schema: tenant
schema: public
- object_type: SCHEMA
objects: []
privileges:
Expand Down Expand Up @@ -160,7 +160,7 @@ databases:
objects: []
privileges:
- USAGE
schema: tenant
schema: public
- object_type: SCHEMA
objects: []
privileges:
Expand All @@ -175,11 +175,6 @@ databases:
privileges:
- CONNECT
schema: null
- object_type: SCHEMA
objects: []
privileges:
- USAGE
schema: tenant
- object_type: SCHEMA
objects: []
privileges:
Expand Down Expand Up @@ -244,11 +239,6 @@ databases:
privileges:
- USAGE
schema: public
- object_type: SCHEMA
objects: []
privileges:
- USAGE
schema: tenant
login: true
schemas:
action_authorization_claim:
Expand All @@ -263,9 +253,6 @@ databases:
public:
domain: TENANT
owner: owner_onex_tenant
tenant:
domain: TENANT
owner: owner_onex_tenant
omnibase_infra:
bindings:
omninode_runtime_service:
Expand Down Expand Up @@ -368,5 +355,5 @@ source:
profile_catalog_path: src/omnibase_infra/topology/application_database_profiles.yaml
profile_catalog_sha256: 690ada1927fc31465fd1d80435e82c96394fa05d49bd433e30242ea014fa740f
repository: OmniNode-ai/omnibase_infra
sha256: bd70ba91704f69b3ebeeed58febe60cfdbbe0a55c44cd236b80b08aeebfe29e3
sha256: 3db481a0456f1634cc80627502cdc381df57762439192bbbc7e7ce2b0623f915
topology_instance: local
Loading
Loading