Uploaded image for project: 'OpenStack Strategy'
  1. OpenStack Strategy
  2. RHOSSTRAT-1201

Implement SRBAC for Cyborg

XMLWordPrintable

    • Icon: Feature Feature
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • None
    • openstack-cyborg
    • None
    • Not Selected
    • False
    • False
    • Hide

      None

      Show
      None
    • L
    • 0
    • 0
    • rhos-workloads-evolution

      Feature Overview
      Cyborg's current RBAC implementation is inconsistent. While "Device Profiles"
      have been modernized, the majority of the API still relies on legacy rules
      (e.g., "admin_or_owner") defined in base.py. This feature involves a full
      audit of all Cyborg API routes—including ARQs, Accelerators, and Deployables—to
      implement the OpenStack community standard for Secure and Consistent RBAC.
      By moving away from hardcoded "admin" checks toward personas, we
      ensure that Cyborg provides secure multi-tenancy and granular access control
      aligned with the rest of the OpenStack ecosystem.

      Goals
      1. Full Policy Audit: Identify all API endpoints currently using legacy
      permissions and map them to appropriate Project scoped roles.
      2. Standardized Access: Transition from "admin_or_owner" logic to granular
      Admin, Service, Project-Manager, Project-Member, and Project-Reader personas.
      3. Consistency: Ensure all resources (ARQs, Accelerators, etc.) follow the
      pattern already established in the Device Profiles implementation.
      4. Backward Compatibility: Support the 'enforce_new_defaults' and
      'enforce_scope' configuration options to allow a smooth transition for
      existing deployments.

      Requirements

      Requirement Notes isMVP?
      Comprehensive Policy Audit Document current vs. target state for all API
      policies.
      Yes
      Refactor Base Policies Update base.py to support system and project
      scopes.
      Yes
      Implement Scoped Rules Apply DocumentedRuleDefault to all non-updated
      routes.
      Yes
      Deprecate Legacy Rules Formal deprecation of "admin_or_owner" and
      "default" rules.
      Yes
      Testing & Validation Update Tempest and functional tests for new
      personas.
      Yes

      Acceptance Criteria

      • A complete audit document exists mapping every Cyborg API endpoint to its
        new policy default.
      • All API endpoints (ARQs, Deployables, Attributes, etc.) are refactored
        to use oslo.policy DocumentedRuleDefault.
      • Project-scoped tokens (Manager/Member/Reader) are strictly isolated to their own
        resources, verified across all refactored routes.
      • The system correctly handles the 'enforce_new_defaults' toggle, allowing
        operators to opt-in to the new behavior.
      • Documentation is automatically generated from the new code-based
        policy defaults
      • all routes need at least reader access, no more usage of generic allow outside the micoverion endpoint

      Use Cases

      • Infrastructure Monitoring: A system-reader lists all deployables across
        the cloud to monitor hardware health without needing project-level access.
      • Secure Multi-tenancy: A project-member in Project A is denied access
        when attempting to view ARQs belonging to Project B, even if they have
        the UUID.
      • Read-Only Auditing: A user with the 'reader' role on a project can
        view their accelerator requests but is blocked from creating new
        device profiles.

      Out of Scope

      • Implementation of custom or domain-specific roles outside the standard
        OpenStack personas.
      • system-scope

      Documentation Considerations

      Questions to Answer

      • Are there any "admin-only" actions in Cyborg that should strictly
        remain System-Admin only and never be available to Project-Admins?
      • How should we handle existing custom policy.yaml files that override
        the legacy "default" rule?

      Background and Strategic Fit
      Cyborg is currently in a "partially migrated" state. While device_profiles.py
      follows the new standard, the rest of the service (common/policy.py and
      base.py) remains tied to legacy logic. Completing this audit and
      implementation resolves Bug 1954886 and ensures Cyborg is not a
      security outlier in modern OpenStack deployments.

      Customer Considerations
      Operators relying on the legacy "admin_or_owner" behaviour will need clear
      warning logs and documentation. The change must be toggle-able to prevent
      breaking existing workflows during the upgrade cycle.
      the defautl will change in 2027.1

      Team Sign Off

      Reviewed By Team Name Accepted Notes
             
             

              Unassigned Unassigned
              smooney@redhat.com Sean Mooney
              Edu Alcaniz Edu Alcaniz
              rhos-workloads-evolution
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: