Restrict Application Creation
Introduction
Before version 2.17, there was no way to prevent application creation in Spinnaker. In Armory Spinnaker 2.17 and later, Fiat can now control application creation through the use of a new permission option: CREATE
.
Note: When configuring permissions, you must explicitly configure permissions for each user role. The default for a user role is no permissions, which means it cannot perform any actions.
This document assumes that you have enabled and configured Fiat.
This was tested on version 2.17 and may change in later versions.
Prerequisites
Fiat Needs to be Enabled
Instructions
Fiat is the authorization (authz) microservice of Spinnaker, which looks for the permissions from different sources. In 2.17, a new sources were added, providing more flexibility for applying permissions. This page focuses on the prefix
source to control permissions for any applications whose name starts with a given prefix. To use this functionality, you need to enable Fiat to use the new sources and set prefixes as one of the sources. auth.permissions.source.application.prefix
.
Perform the following steps:
- In
fiat-local.yml
, set the value forauth.permissions.provider.application
parameter toaggregate
.Add prefixes as a source:
auth.permissions.source.application.prefix:
enabled: true
Define the permissions for a prefix:
- prefix:
permissions:
READ:
- ""
- ""
- "" WRITE:
- "" EXECUTE:
- "user role n>" The below example does the following:
- Enables Fiat to read from the new sources.* Sets
prefix
as one of these new sources.* Defines the prefixapptest-x
.Defines permissions for all applications that match the prefixapptest-*
based on roles: - Add READ, WRITE and EXECUTE permissions to
role-one
.* Add READ permissions torole-two
.
In the Halyard Profiles folder, in the fiat-local.yml
file add to or create the file if it doesn't exist:
auth.permissions.provider.application: aggregate
auth.permissions.source.application.prefix:
enabled: true
prefixes:
- prefix: "apptest-*"
permissions:
READ:
- "role-one"
- "role-two" WRITE:
- "role-one" EXECUTE:
- "role-one" ``````
As a result, any application that matches the prefix apptest-*
with role-two
are read-only.
To restrict application creation specifically, add fiat.restrictApplicationCreation
and set it to true
:
**Note: Currently, the prefix source is the only source that support the CREATE permission.**In the Halyard Profiles folder, in the fiat-local.yml
file:
fiat.restrictApplicationCreation: true
auth.permissions.provider.application: aggregate
auth.permissions.source.application.prefix:
enabled: true
prefixes:
- prefix: "*"
permissions:
CREATE:
- "role-one" READ:
- "role-one"
- "role-two" WRITE:
- "role-one" EXECUTE:
- "role-one"
The above example assigns CREATE permission to users with the role-one
role. Users without the role-one
role cannot create any applications in Spinnaker because only role-one
has CREATE permission.
- Finally, apply your configuration changes to Spinnaker by running the following command:
hal deploy apply
.