This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.Questo contenuto non è disponibile nella lingua selezionata.
Chapter 31. Securing Builds by Strategy
31.1. Overview Copia collegamentoCollegamento copiato negli appunti!
Builds in OpenShift Container Platform are run in privileged containers that have access to the Docker daemon socket. As a security measure, it is recommended to limit who can run builds and the strategy that is used for those builds. Custom builds are inherently less safe than Source builds, given that they can execute any code in the build with potentially full access to the node’s Docker socket, and as such are disabled by default. Docker build permission should also be granted with caution as a vulnerability in the Docker build logic could result in a privileges being granted on the host node.
By default, all users that can create builds are granted permission to use the Docker and Source-to-Image build strategies. Users with cluster-admin privileges can enable the Custom build strategy, as referenced in the Restricting Build Strategies to a User Globally section of this page.
You can control who can build with what build strategy using an authorization policy. Each build strategy has a corresponding build subresource. A user must have permission to create a build and permission to create on the build strategy subresource in order to create builds using that strategy. Default roles are provided which grant the create permission on the build strategy subresource.
Strategy | Subresource | Role |
---|---|---|
Docker | builds/docker | system:build-strategy-docker |
Source-to-Image | builds/source | system:build-strategy-source |
Custom | builds/custom | system:build-strategy-custom |
JenkinsPipeline | builds/jenkinspipeline | system:build-strategy-jenkinspipeline |
31.2. Disabling a Build Strategy Globally Copia collegamentoCollegamento copiato negli appunti!
To prevent access to a particular build strategy globally, log in as a user with cluster-admin privileges, remove the corresponding role from the system:authenticated group, and apply the annotation openshift.io/reconcile-protect: "true"
to protect them from changes between the API restarts. The following example shows disabling the docker build strategy.
Apply the
openshift.io/reconcile-protect
annotationCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Change the
openshift.io/reconcile-protect
annotation’s value to"true"
. By default, it is set to"false"
.
Remove the role:
oc adm policy remove-cluster-role-from-group system:build-strategy-docker system:authenticated
$ oc adm policy remove-cluster-role-from-group system:build-strategy-docker system:authenticated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
In versions prior to 3.2, the build strategy subresources were included in the admin
and edit
roles.
Ensure the build strategy subresources are also removed from these roles:
oc edit clusterrole admin oc edit clusterrole edit
$ oc edit clusterrole admin
$ oc edit clusterrole edit
For each role, remove the line that corresponds to the resource of the strategy to disable.
Disable the Docker Build Strategy for admin
- 1
- Delete this line to disable Docker builds globally for users with the admin role.
31.3. Restricting Build Strategies to a User Globally Copia collegamentoCollegamento copiato negli appunti!
To allow only a set of specific users to create builds with a particular strategy:
- Disable global access to the build strategy.
Assign the role corresponding to the build strategy to a specific user. For example, to add the system:build-strategy-docker cluster role to the user devuser:
oc adm policy add-cluster-role-to-user system:build-strategy-docker devuser
$ oc adm policy add-cluster-role-to-user system:build-strategy-docker devuser
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Granting a user access at the cluster level to the builds/docker subresource means that the user will be able to create builds with the Docker strategy in any project in which they can create builds.
31.4. Restricting Build Strategies to a User Within a Project Copia collegamentoCollegamento copiato negli appunti!
Similar to granting the build strategy role to a user globally, to allow only a set of specific users within a project to create builds with a particular strategy:
- Disable global access to the build strategy.
Assign the role corresponding to the build strategy to a specific user within a project. For example, to add the system:build-strategy-docker role within the project devproject to the user devuser:
oc adm policy add-role-to-user system:build-strategy-docker devuser -n devproject
$ oc adm policy add-role-to-user system:build-strategy-docker devuser -n devproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow