Skip to main content
Role-based access control (RBAC) is exposed in ROS 2 through core_node. The services map one-to-one with the Robotics Python SDK but run under lifecycle management so you can gate access policies alongside mission logic.

Capabilities

  • Create roles that encapsulate operational capabilities (operator, maintenance)
  • Define permissions (e.g., store_telemetry, emit_intent)
  • Assign permissions to roles and grant roles to robot or user DIDs
  • Query existing policies for audit trails or dashboards

Service Reference

ServiceTypePurpose
/peaq_core_node/access/create_rolepeaq_ros2_interfaces/srv/AccessCreateRoleAdd a new role identifier
/peaq_core_node/access/create_permissionpeaq_ros2_interfaces/srv/AccessCreatePermissionRegister a permission definition
/peaq_core_node/access/assign_permissionpeaq_ros2_interfaces/srv/AccessAssignPermToRoleAttach a permission to a role
/peaq_core_node/access/grant_rolepeaq_ros2_interfaces/srv/AccessGrantRoleGrant a role to a robot or user DID
All services accept simple JSON payloads and return transaction hashes so you can follow progress via peaq/tx_status.

Example Workflow

# 1. Create role
ros2 service call /peaq_core_node/access/create_role \
  peaq_ros2_interfaces/srv/AccessCreateRole \
  '{role_id: "operator"}'

# 2. Create permission
ros2 service call /peaq_core_node/access/create_permission \
  peaq_ros2_interfaces/srv/AccessCreatePermission \
  '{permission_id: "telemetry:write"}'

# 3. Assign permission to role
ros2 service call /peaq_core_node/access/assign_permission \
  peaq_ros2_interfaces/srv/AccessAssignPermToRole \
  '{role_id: "operator", permission_id: "telemetry:write"}'

# 4. Grant role to robot DID
ros2 service call /peaq_core_node/access/grant_role \
  peaq_ros2_interfaces/srv/AccessGrantRole \
  '{user_did: "did:peaq:5G...", role_id: "operator"}'
Responses include transaction hashes for each step. Combine them with ros2 topic echo /peaq/tx_status to confirm finalization.

Automation Pattern

  • Trigger RBAC provisioning from CI whenever a new robot identity is created.
  • Use a ROS 2 Node (Python/C++) that batches service calls and verifies outcomes before declaring a robot operational.
  • Persist granted roles using your fleet management system for quick audits.

Best Practices

  • Prefix permissions with domain context (telemetry:write, mission:cancel) to avoid collisions.
  • Use different roles for humans vs. robots even if they share capabilities—this keeps grants revocable per actor type.
  • Log RBAC service responses for compliance; they already include block hashes and timestamps.
Next, wire RBAC with secure data flows by configuring Verifiable Storage.