Learn about user permissions and how to add and remove users in a Firebolt account.
In Firebolt, an organization can have multiple accounts, each serving as a separate workspace for managing resources and data. Within each account, users are created to control access, with their identities defined through logins or service accounts. Logins are associated with individual human users, each authenticated by unique credentials, allowing them to interact directly with Firebolt’s resources according to assigned roles. Service accounts provide programmatic access for applications and automated processes within the account, such as data pipelines or monitoring tools. Each login and service account is linked to specific roles, which define their permissions, ensuring that access is managed efficiently and securely across the organization.
A login in Firebolt represents a human user and is associated with an individual’s credentials, identified by an email address. Logins are tied to user roles, which define what the individual can access or modify. A login is primarily used for human authentication and allows a user to access the platform, run queries, and interact with databases and other resources. For instance, a login object might be created for a specific person such as kate@acme.com
, and this login is linked to roles that control permissions.
A service account represents a machine or application rather than a human user. It allows automated processes to authenticate and interact with Firebolt resources. A service account is used for programmatic access, such as in pipelines, monitoring systems, application data access, and scheduled queries. Service accounts are associated with roles just like logins but are designed to operate without human intervention. For example, a service account might be used for a data pipeline that regularly ingests data into Firebolt. Each service account must be associated with a user. For more information about how to create and manage service accounts, see Manage programmatic access to Firebolt.
A user is a distinct identity that interacts with the Firebolt platform. Each user is assigned specific roles, which determine what actions they can perform and which resources they can access. Users are essential for controlling access in Firebolt and are managed through role-based access control (RBAC). Users authenticate via logins or service accounts, depending on whether they are human users or machine-based processes.
A user must be associated with either a login or a service account, as follows:
There can be multiple users per login or service account. Users are managed at the account level, as shown in the following diagram:
You can add, edit or delete users using SQL in the Develop Space or using the user interface (UI) in the Configure Space.
Managing roles requires the account_admin role. For more information about roles, see the Roles section in Organizations and accounts, and the Account permissions section of Role-based access control that specifies permissions for CREATE USER.
Topics
To set up a new user, complete the following steps:
The following sections guide you through the previous steps.
To set up a user for programmatic access, create a service account, and then complete the steps in the following sections to create a user, link the user to a service account, create a role, and assign the role to the user.
A login is an email that is used for authentication. A login can be associated with multiple accounts. When you set up a new user, you must create either a login or service account for them. Create a login if you want to associate a user with human access to Firebolt. Create a service account for programmatic access. You will link the user to either a login or a service account.
Login to Firebolt’s Workspace. If you haven’t yet registered with Firebolt, see the Get Started guide. If you encounter any issues, reach out to support@firebolt.io for help. Then, do the following:
Select the Configure icon () in the left navigation pane to open the Configure Space.
Select Logins.
Select Create Login.
In the Create login window that pops up, enter the following:
Select a network policy from the drop-down list. You can choose Default or create your own. The default network policy accepts traffic from any IP address. For more about network policies, including how to create a new policy, see Manage network policies.
Toggle the following options on or off to select the following:
Select Create.
Login to Firebolt’s Workspace. If you haven’t yet registered with Firebolt, see the Get Started guide. If you encounter any issues, reach out to support@firebolt.io for help. Then, do the following:
Select the Develop icon (</>).
By default, when you login to Firebolt’s Workspace for the first time, Firebolt creates a tab in the Develop Space called Script 1. The following apply:
The database that Script 1 will use is located directly below the tab name. If you want to change the database, select another database from the drop-down list.
An engine must be running to process the script in a selected tab. The name and status of the engine that Script 1 uses for computation is located to the right of the current selected database. If the engine has auto-start set to TRUE
, it will start from a stopped state. For more information about auto-start, see Immediately Starting or Automatically Stopping an Engine.
Select system from the drop-down arrow next to the engine name. The system engine is always running, and you can use it to create a login. You can also use an engine that you create.
Use the syntax in the following example code to create a login in the SQL Script Editor:
After you create a login, the next step is to create a user.
Select the Govern icon () in the left navigation pane to open the Govern Space.
Select Users from the left sub-menu bar.
Select the + Create User button at the top right of the Govern Space.
In the Create User window, enter the following:
User name - The name of the user to associate with the login. This name can be any string, excluding spaces, and special characters such as exclamation points (!), percent signs (%), at sign(@), dot sign (.), underscore sign (_), minus sign (-), and asterisks (*).
Assign to - Use the dropdown to assign the user to one of the following: i. Unassigned - No specific assignment.
ii. Login - Associates the user with a login name or email address. After selecting this option, you will be prompted to choose the login name or email address.
iii. Service Account - Associates the user with a service account. After selecting this option, you will be prompted to choose a service account name.
Role - Select the role you want to assign to the user. If no role is specified, the user is automatically granted a public role. For more information about roles, see the Roles section in Organization and accounts.
Default Database - Choose a database to associate with the user, setting it as their default for access.
Default Engine - Choose a default processing engine to associate with the user.
Select Create new user to save the configuration.
Use the syntax in the following example code and the CREATE USER statement to create a user in the SQL Script Editor in the Develop Space:
You can also create a user and link it to a login simultaneously as shown in the following code example:
Create a user and link it to a service account at the same time as shown in the following code example:
If the user wasn’t associated with a login or service account when they were created, you must link them.
Use the syntax in the following example code and the ALTER_USER statement to link a user to a login in the SQL Script Editor in the Develop Space:
The following code links a user to a service account:
If you don’t already have a role that you want to assign to a user, you can create a role to define what actions users can perform. For more information, see Roles.
Select the Govern icon () in the left navigation pane to open the Govern Space.
Select Roles from the left sub-menu bar.
Select the + New Role button at the top right of the Govern Space.
In the left sub-menu bar, enter the following:
Select Databases in the left sub-menu bar, and select the following in Database privileges:
Select Engines in the left sub-menu bar, and select the following in Engine privileges:
Select Create.
Use the syntax in the following example code and the CREATE ROLE and GRANT statements to create a role in the SQL Script Editor in the Develop Space:
Use the following code to grant engine access to a role:
Use the following code example to grant a role permission to modify a database:
Use the following code example to grant a role permission to create objects inside the public schema:
Use the following code to grant a role permission to access the public schema in a database:
Use the following code example to grant a role permission to read data from a specified table:
For more information about role-based access, see Manage role-based access control.
You can assign a new role to the user or change the role assigned to the user from the default public role to grant them specific permissions. A user can have multiple roles.
Use the syntax in the following example code and the GRANT statement to assign a role in the SQL Script Editor in the Develop Space:
You can use GRANT
to assign a role to another role as follows:
You can alter a user’s name, login or service account that they are associated with, their default database, and engine.
Use the ALTER USER statement to change a user’s information in the SQL Script Editor in the Develop Space.
The following code example changes a user’s name:
The following code example changes a user’s login:
Users can modify most of their own account settings without requiring RBAC permissions, except when altering LOGIN configurations or a SERVICE ACCOUNT.
You can delete a user using either the UI or with SQL. The delete operation is irreversible.
Use the syntax in the following example code and the the DROP USER statement to delete an existing user in the SQL Script Editor in the Develop Space: