Iceberg table permissions

The default roles listed on this page are the out-of-the-box defaults from Palantir. Your administrator may have configured custom settings for your environment via custom role sets.

This page describes the operations that govern what you can do with Foundry Iceberg tables. Operations are the individual permissions Foundry checks before allowing an action, and roles are collections of operations that you can grant to users. For more information about how operations and roles relate, see Understanding roles and operations.

Reading and writing Iceberg tables

The broader table:read and table:write operations govern reading and writing Iceberg tables. These operations apply to both Iceberg tables and virtual tables.

Main branch protection

Main branch protection support for Iceberg tables is in Beta and may not yet be available on your environment.

If you have main branch protection enabled on your Iceberg table resource, you must have the following operation to make changes outside of the owning Foundry job spec.

Foundry generates the job spec automatically from the pipeline that authored the table, such as the Pipeline Builder or Python transforms logic that created the resource. To make changes outside of this owning resource, you must have an additional elevated permission that bypasses the table's main branch protection.

OperationDisplay nameDefault role
iceberg:bypass-branch-protectionBypass branch protectionOwner

You commonly need this operation to make changes to a branch-protected table from either a maintenance task or an external client.

Main branch protection refers specifically to resource branch protection on the table, and not to code branch protection on the backing code.

Maintenance task operations

These operations control who can read and write maintenance tasks on an Iceberg table.

OperationDisplay nameDefault role
iceberg:read-maintenance-tasksRead table maintenance tasksViewer
iceberg:write-maintenance-tasksWrite table maintenance tasksEditor
iceberg:write-sql-maintenance-tasksWrite custom SQL maintenance tasksEditor
iceberg:write-data-altering-maintenance-tasksWrite data-altering maintenance tasksEditor
iceberg:schedule-maintenance-tasksSchedule maintenance tasks (of any type)Editor

The three write operations are cumulative. Writing or editing any maintenance task always requires iceberg:write-maintenance-tasks. Depending on the task category, Foundry also checks the more specific iceberg:write-sql-maintenance-tasks and iceberg:write-data-altering-maintenance-tasks operations. As a result, removing iceberg:write-maintenance-tasks from a role removes the ability to author maintenance tasks entirely, even if the role still includes the other two operations.

Creating or editing a task also requires permission to read and write the underlying table data. On a branch-protected table, main branch protection applies as well.

Maintenance operations in practice

The following table shows the operations you need to write each kind of task:

Task typeRequired operations
Form-based procedures:
For example, Rewrite data files or Expire snapshots
iceberg:write-maintenance-tasks
Custom SQL that does not logically alter the current snapshot:
For example, CALL system.rewrite_data_files(...)
iceberg:write-maintenance-tasks
+ iceberg:write-sql-maintenance-tasks
Custom SQL that logically alters the current snapshot:
For example, INSERT, UPDATE, DELETE
iceberg:write-maintenance-tasks
+ iceberg:write-sql-maintenance-tasks
+ iceberg:write-data-altering-maintenance-tasks

Combining branch protection with maintenance operations

Foundry checks the operation to bypass main branch protection and the operations to edit maintenance tasks independently. This lets you separate who can author a kind of change from the tables they can apply it to.

For example:

  • To write a Custom SQL maintenance task against a table that is not branch protected, a user needs iceberg:write-sql-maintenance-tasks and iceberg:write-maintenance-tasks.
  • To write the same task against a table that is branch protected, a user needs those same two operations and additionally iceberg:bypass-branch-protection.