Skip to content

AI Catalog Permissions, Backend Enforcement, Conditional Rules (issue 3 of 29) #4041

Description

@gabemontero

Labels: ready-to-code
Dependencies: None
RHIDP Stories: RHIDP-15271, RHIDP-15272, RHIDP-15306 (permission definitions), RHIDP-15312
Feature: RHDHPLAN-1508 — Epic RHIDP-15270

Define AI Catalog permission constants (ai-catalog.asset.read, ai-catalog.asset.read.usage-docs, ai-catalog.admin), implement graduated visibility backend enforcement (Tier 1 entity-level + Tier 2 field-level filtering), and implement conditional permission rules (isAiAssetCategory, isFromConnector, isInTenant) with toQuery() support. The default-deny config implementation is in Issue 20.

Tasks

From openspec/changes/ai-catalog-asset-governance/tasks.md group 1 (RHIDP-15271, RHIDP-15306):

  • 1.1 Define AI_CATALOG_ASSET_RESOURCE_TYPE constant in boost-common/src/permissions.ts
  • 1.2 Define ai-catalog.asset.read resource permission
  • 1.3 Define ai-catalog.asset.read.usage-docs resource permission
  • 1.4 Define ai-catalog.admin basic permission
  • 1.5 Export all permission constants and resource type
  • 1.6 Register all 3 permissions via permissionsRegistry.addPermissions()

From openspec/changes/ai-catalog-asset-governance/tasks.md group 2 (RHIDP-15271, RHIDP-15272):

  • 2.1 Implement Tier 2 field-level filtering in AI asset detail endpoint
  • 2.2 Implement entity-level filtering on list endpoint using authorizeConditional()
  • 2.3 Implement batch authorizeConditional() for Tier 2
  • 2.4 Add unit tests for field-level filtering

From openspec/changes/ai-catalog-asset-governance/tasks.md group 4 (RHIDP-15312):

  • 4.1 Implement isAiAssetCategory rule with apply() and toQuery()
  • 4.2 Implement isAiAssetCategory.toQuery() generating catalog query predicate
  • 4.3 Implement isFromConnector rule with apply() and toQuery()
  • 4.4 Implement isFromConnector.toQuery() generating catalog query predicate
  • 4.5 Implement isInTenant rule with apply() and toQuery()
  • 4.6 Implement isInTenant.toQuery() generating catalog query predicate
  • 4.7 Register all 3 rules via createPermissionIntegrationRouter with resourceType: 'ai-catalog-asset'
  • 4.8 Add unit tests for each rule's apply() and toQuery() methods

Specifications

  • openspec/changes/ai-catalog-asset-governance/specs/graduated-visibility/spec.md
  • openspec/changes/ai-catalog-asset-governance/specs/conditional-policies/spec.md

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions