Skip to main content
Version: v4

Users & Roles

Harper uses a Role-Based Access Control (RBAC) framework to manage access to Harper instances. Each user is assigned a role that determines their permissions to access database resources and run operations.

Roles

Role permissions in Harper are divided into two categories:

Database Manipulation — CRUD (create, read, update, delete) permissions against database data (tables and attributes).

Database Definition — Permissions to manage databases, tables, roles, users, and other system settings. These are restricted to the built-in super_user role.

Built-In Roles

RoleDescription
super_userFull access to all operations and methods. The admin role.
structure_userAccess to create and delete databases and tables. Can be set to true (all databases) or an array of database names (specific databases only).

User-Defined Roles

Admins (super_user users) can create custom roles with explicit permissions on specific tables and attributes.

  • Unless a user-defined role has super_user: true, all permissions must be defined explicitly.
  • Any table or database not included in the role's permission set will be inaccessible.
  • describe operations return metadata only for databases, tables, and attributes that the role has CRUD permissions for.

Permission Structure

When creating or altering a role, you define a permission object:

{
"operation": "add_role",
"role": "software_developer",
"permission": {
"super_user": false,
"database_name": {
"tables": {
"table_name1": {
"read": true,
"insert": true,
"update": true,
"delete": false,
"attribute_permissions": [
{
"attribute_name": "attribute1",
"read": true,
"insert": true,
"update": true
}
]
},
"table_name2": {
"read": true,
"insert": true,
"update": true,
"delete": false,
"attribute_permissions": []
}
}
}
}
}

Table Permissions

Each table entry defines CRUD access:

{
"table_name": {
"read": boolean, // Access to read from this table
"insert": boolean, // Access to insert data
"update": boolean, // Access to update data
"delete": boolean, // Access to delete rows
"attribute_permissions": [
{
"attribute_name": "attribute_name",
"read": boolean,
"insert": boolean,
"update": boolean
// Note: "delete" is not an attribute-level permission
}
]
}
}

Important Rules

Table-level:

  • If a database or table is not included in the permissions, the role has no access to it.
  • If a table-level CRUD permission is false, setting the same CRUD permission to true on an attribute returns an error.

Attribute-level:

  • If attribute_permissions is a non-empty array, only the listed attributes are accessible (plus the table's hash attribute — see below).
  • If attribute_permissions is empty ([]), attribute access follows the table-level CRUD permissions.
  • If any non-hash attribute is given CRUD access, the table's hash_attribute (primary key) automatically receives the same access, even if not explicitly listed.
  • Any attribute not explicitly listed in a non-empty attribute_permissions array has no access.
  • DELETE is not an attribute-level permission. Deleting rows is controlled at the table level.
  • The __createdtime__ and __updatedtime__ attributes managed by Harper can have read permissions set; other attribute-level permissions for these fields are ignored.

Role-Based Operation Restrictions

The following table shows which operations are restricted to super_user roles. Non-super_user roles are also restricted within their accessible operations by their CRUD permission set.

Databases and Tables

OperationRestricted to Super User
describe_all
describe_database
describe_table
create_databaseX
drop_databaseX
create_tableX
drop_tableX
create_attribute
drop_attributeX

NoSQL Operations

OperationRestricted to Super User
insert
update
upsert
delete
search_by_hash
search_by_value
search_by_conditions

SQL Operations

OperationRestricted to Super User
select
insert
update
delete

Bulk Operations

OperationRestricted to Super User
csv_data_load
csv_file_load
csv_url_load
import_from_s3

Users and Roles

OperationRestricted to Super User
list_rolesX
add_roleX
alter_roleX
drop_roleX
list_usersX
user_info
add_userX
alter_userX
drop_userX

Clustering

OperationRestricted to Super User
cluster_set_routesX
cluster_get_routesX
cluster_delete_routesX
add_nodeX
update_nodeX
cluster_statusX
remove_nodeX
configure_clusterX

Components

OperationRestricted to Super User
get_componentsX
get_component_fileX
set_component_fileX
drop_componentX
add_componentX
package_componentX
deploy_componentX

Registration

OperationRestricted to Super User
registration_info
get_fingerprintX
set_licenseX

Jobs

OperationRestricted to Super User
get_job
search_jobs_by_start_dateX

Logs

OperationRestricted to Super User
read_logX
read_transaction_logX
delete_transaction_logs_beforeX
read_audit_logX
delete_audit_logs_beforeX

Utilities

OperationRestricted to Super User
delete_records_beforeX
export_localX
export_to_s3X
system_informationX
restartX
restart_serviceX
get_configurationX

Token Authentication

OperationRestricted to Super User
create_authentication_tokens
refresh_operation_token

Troubleshooting: "Must execute as User"

If you see the error Error: Must execute as <<username>>, it means Harper was installed as a specific OS user and must be run by that same user. Harper stores files natively on the operating system and only allows the Harper executable to be run by a single user — this prevents file permission issues and keeps the installation secure.

To resolve: run Harper with the same OS user account used during installation.