Skip to main content
Version: 2.14

Authorization

Authorization is the process of verifying that an authenticated entity (such as a user) has access to a resource and can perform a desired action. Ververica Platform implements a simple yet powerful authorization model based on preset roles.

We first describe our preset roles and then show how to bind a role to an entity such as a user or group.

Roles

Roles grant permissions to access resources. They specify which resources can be accessed and how they can be accessed. The following roles are available:

  • Viewer: read-only access to all resources within a Namespace, except for Secret Values and some special endpoints in the Apache Flink® UI.
  • Editor: read and write access to all resources within a Namespace except Deployment Targets and API Tokens.
  • Owner: full access within a Namespace.
  • Admin: read and write access to all Namespace resources (but no implicit access to individual Namespaces or their subresources).
ResourceViewerEditorOwnerAdmin
ArtifactsList, GetMetadataAllAllNone
ApiTokenNoneNoneAllNone
DeploymentDefaultsGetGetAllNone
DeploymentTargetList, GetList, GetAllNone
{flink} UIGet*AllAllNone
NamespaceNoneNoneGet, UpdateAll
SecretValueNoneAllAllNone
All OthersList, GetAllAllNone

* Except for TaskManager thread dumps, datasets and job cancellation requests.

Role Bindings

In order to assign a role to an authenticated entity such as a user or a group, a role has to be explicitly bound to it.

The Namespace resource allows to assign individual users and groups to roles viewer, editor, and owner. All assigned roles are scoped to the respective Namespace and don't imply any permissions in other Namespaces.

Members can be individual users, groups, or system-level groups:

  • user:foo@bar.com matches the user foo@bar.com.
  • group:vvp-editors matches users in the group vvp-editors.
  • system:authenticated matches all authenticated users.

Example: Assign roles in a Namespace

{
"namespace": {
"name": "namespaces/foo",
"roleBindings": [
{
"role": "viewer",
"members": [ "system:authenticated" ]
},
{
"role": "editor",
"members": [ "group:vvp-editors" ]
},
{
"role": "owner",
"members": [ "user:foo@bar.com" ]
}
]
}
}

In the example above any authenticated user is assigned the viewer role. All members of the vvp-editors group are assigned the editor role. The user authenticated as foo@bar.com is assigned the owner role.

Administrators

The admin role is configured on a global level in the main configuration file of Ververica Platform.

Administrators get full read/write access to Namespace resources. However, the admin role does not imply access to resources within a Namespace unless additional permissions are explicitly granted as shown above.

vvp:
auth:
enabled: true
# A list of users and groups that are granted the admin role.
# - `user:foo@bar.com` matches the user `foo@bar.com`
# - `group:vvp-admins` matches users group `vvp-admins`
# - `system:authenticated` matches all authenticated users
admins:
- user:foo@bar.com

API Tokens

API Tokens are a namespaced resource that allows non-interactive/machine to machine access to Ververica Platform. They have a designated role as part of their specification.