237_group_security_policy.sql 1.3 KB

123456789101112131415161718192021
  1. -- 237_group_security_policy.sql
  2. -- 分组安全策略:分组开关 + 自定义关键词表。
  3. ALTER TABLE groups ADD COLUMN IF NOT EXISTS security_policy_enabled BOOLEAN NOT NULL DEFAULT FALSE;
  4. ALTER TABLE groups ADD COLUMN IF NOT EXISTS security_policy_mode VARCHAR(20) NOT NULL DEFAULT 'block_session';
  5. ALTER TABLE groups ADD COLUMN IF NOT EXISTS security_policy_email_enabled BOOLEAN NOT NULL DEFAULT TRUE;
  6. CREATE TABLE IF NOT EXISTS security_policy_keywords (
  7. id BIGSERIAL PRIMARY KEY,
  8. group_id BIGINT REFERENCES groups(id) ON DELETE CASCADE,
  9. keyword VARCHAR(200) NOT NULL,
  10. category VARCHAR(50) NOT NULL DEFAULT '',
  11. enabled BOOLEAN NOT NULL DEFAULT TRUE,
  12. created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  13. updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  14. deleted_at TIMESTAMPTZ
  15. );
  16. CREATE UNIQUE INDEX IF NOT EXISTS idx_secpol_kw_global_unique ON security_policy_keywords(keyword) WHERE group_id IS NULL AND deleted_at IS NULL;
  17. CREATE UNIQUE INDEX IF NOT EXISTS idx_secpol_kw_group_unique ON security_policy_keywords(group_id, keyword) WHERE group_id IS NOT NULL AND deleted_at IS NULL;
  18. CREATE INDEX IF NOT EXISTS idx_secpol_kw_group_id ON security_policy_keywords(group_id);
  19. CREATE INDEX IF NOT EXISTS idx_secpol_kw_enabled ON security_policy_keywords(enabled);