IAM overview

Identity and Access Management (IAM) lets you control user access to Spanner Omni resources. For example, a user can have full control of a specific database, but cannot create or modify other databases in your deployment. Using IAM lets you grant a permission to a user without having to modify each Spanner Omni database permission individually.

This document focuses on the IAM permissions relevant to Spanner Omni and the IAM roles that grant those permissions. For a detailed description of IAM and its features, see the Identity and Access Management developer's guide.

Permissions

Permissions allow users to perform specific actions on Spanner Omni resources. For example, the spanner.databases.read permission allows a user to read from a database using Spanner Omni's read API, while spanner.databases.export lets a user export a Spanner Omni database. You don't directly give users permissions; instead, you grant them predefined roles, which have one or more permissions bundled within them.

The following tables list the IAM permissions that are associated with Spanner Omni. Some permissions are shared with Spanner and some are used by only Spanner Omni.

Databases

The following permissions apply to Spanner Omni databases.

Database permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.databases.create Create a database.
spanner.databases.createBackup Create a backup from the database. Also requires spanner.backups.create to create the backup resource.
spanner.databases.get Get a database's metadata.
spanner.databases.getIamPolicy Get a database's IAM policy.
spanner.databases.list List databases.
spanner.databases.read Read from a database using the read API.
spanner.databases.setIamPolicy Set a database's IAM policy.
spanner.databases.update Update a database's metadata.
spanner.databases.updateDdl Update a database's schema.
spanner.databases.write Write into a database.
spanner.databases.compact Compacts tables in a database
spanner.databases.export Exports a Spanner Omni database
spanner.databases.import Imports a Spanner Omni database
spanner.databases.addSplitPoints Adds split points to a database.

Database operations

The following permissions apply to Spanner Omni database operations.

Database operation permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.databaseOperations.cancel Cancel a database operation.
spanner.databaseOperations.delete Delete a database operation.
spanner.databaseOperations.get Get a specific database operation.
spanner.databaseOperations.list List database and restore database operations.

Backups

The following permissions apply to Spanner Omni backups.

Backup permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.backups.copy Copy a backup.
spanner.backups.create Create a backup. Also requires spanner.databases.createBackup on the source database.
spanner.backups.createDatabaseFromBackup Create a database from a backup.
spanner.backups.delete Delete a backup.
spanner.backups.get Get a backup.
spanner.backups.getIamPolicy Get a backup's IAM policy.
spanner.backups.list List backups.
spanner.backups.restoreDatabase Restore database from a backup. Also requires spanner.databases.create to create the restored database.
spanner.backups.setIamPolicy Set a backup's IAM policy.
spanner.backups.update Update a backup.
spanner.backups.import Imports a backup from external storage

Backup operations

The following permissions apply to Spanner Omni backup operations.

Backup operation permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.backupOperations.cancel Cancel a backup operation.
spanner.backupOperations.get Get a specific backup operation.
spanner.backupOperations.list List backup operations.

Backup schedules

The following permissions apply to Spanner Omni backup schedules.

Backup schedule permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.backupSchedules.create Create a backup schedule. Also requires spanner.databases.createBackup on the source database.
spanner.backupSchedules.delete Delete a backup schedule.
spanner.backupSchedules.get Get a backup schedule.
spanner.backupSchedules.list List backup schedules.
spanner.backupSchedules.update Update a backup schedule.
spanner.backupSchedules.getIamPolicy Get a backup schedule's IAM policy.
spanner.backupSchedules.setIamPolicy Set a backup schedule's IAM policy.

Backup descriptors

The following permissions apply to Spanner Omni backup descriptors.

Backup descriptor permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.backupDescriptors.import Imports a backup from a backup descriptor
spanner.backupDescriptors.list List backup descriptors.

Sessions

The following permissions apply to Spanner Omni sessions.

Session permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.sessions.create Create a session.
spanner.sessions.delete Delete a session.
spanner.sessions.get Get a session.
spanner.sessions.list List sessions.

Location and zones

The following permissions apply to Spanner Omni locations and zones.

Permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.locations.create Create a Spanner Omni location
spanner.locations.delete Delete a Spanner Omni location
spanner.locations.get Get a Spanner Omni location
spanner.locations.list List Spanner Omni locations
spanner.locationDistances.create Create a Spanner Omni location distance
spanner.locationDistances.delete Delete a Spanner Omni location distance
spanner.locationDistances.get Get a Spanner Omni location distance
spanner.locationDistances.list List Spanner Omni location distances
spanner.locationDistances.update Update a Spanner Omni location distance
spanner.zones.create Create a Spanner Omni zone
spanner.zones.delete Delete a Spanner Omni zone
spanner.zones.get Get a Spanner Omni zone
spanner.zones.list List Spanner Omni zones

Servers

The following permissions apply to Spanner Omni servers.

Server permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.servers.create Creates a Spanner Omni server
spanner.servers.delete Deletes a Spanner Omni server
spanner.servers.get Gets a Spanner Omni server
spanner.servers.list Lists Spanner Omni servers

Users and roles

The following permissions apply to Spanner Omni users and roles.

Permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.users.create Creates a Spanner Omni user
spanner.users.delete Deletes a Spanner Omni user
spanner.users.get Gets a Spanner Omni user
spanner.users.list Lists Spanner Omni users
spanner.users.update Updates a Spanner Omni user
spanner.roles.get Gets a Spanner Omni role
spanner.roles.list Lists Spanner Omni roles

External storage

The following permissions apply to Spanner Omni external storage.

External storage permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.externalStorages.create Creates external storage
spanner.externalStorages.delete Deletes an external storage
spanner.externalStorages.get Gets external storage
spanner.externalStorages.getIamPolicy Gets the IAM policy of an external storage
spanner.externalStorages.list Lists external storages
spanner.externalStorages.setIamPolicy Sets the IAM policy of an external storage

File system and descriptors

The following permissions apply to the Spanner Omni file system.

Permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.filesystem.cat Prints files in the Spanner Omni file system
spanner.filesystem.ls Lists files in the Spanner Omni file system
spanner.descriptors.print Prints descriptors in the Spanner Omni file system

Other administrator permissions

The following permissions apply to other Spanner Omni administrator tasks.

Permission name Description Spanner and Spanner Omni Spanner Omni only
spanner.chubby.list Lists Chubby cells
spanner.chubby.print Prints Chubby cell contents
spanner.deployment.get Get Spanner Omni deployment
spanner.diagnostics.create Collects artifacts from Spanner Omni servers for debugging
spanner.internal-tables.sql Runs SQL queries against internal tables
spanner.logs.copy Copies logs from a Spanner Omni server
spanner.tablet.move Moves a tablet from one Spanner Omni server to another
spanner.workflows.delete Deletes a workflow in a database
spanner.groups.compact Compacts tablets in a group
spanner.directories.compact Compacts tablets in a directory

Predefined roles

A predefined role is a bundle of one or more permissions. Spanner Omni supports the following predefined roles:

Role Description
roles/spanner.admin Has complete access to all Spanner Omni resources. Includes all permissions.
roles/spanner.backupAdmin Has complete access to Spanner Omni backups and backup operations.
roles/spanner.backupWriter Can create backups, but cannot update or delete them.
roles/spanner.databaseAdmin Has complete access to all Spanner Omni databases in a project.
roles/spanner.databaseReader Can read from the Spanner Omni database and view schema.
roles/spanner.databaseUser Can read from and write to the Spanner Omni database.
roles/spanner.editor Editor role for Spanner Omni.
roles/spanner.restoreAdmin Can restore a database from a backup.
roles/spanner.viewer Can view all Spanner Omni resources but cannot modify them. Includes read-only permissions.

Spanner Omni has a few more notable limitations:

  • No custom roles.
  • No fine-grained access control.
  • No IAM conditions.

What's next