- Improve security and reduce compliance risk by enforcing sensitive workloads to use only approved environments.
- Reduce costs and management overhead by providing flexibility to run sensitive and non-sensitive workloads on the same Domino deployment, without compromising on compliance. By marking certain environments as “Restricted”, admins can ensure that they can enforce compliance for sensitive workloads while allowing data scientists the flexibility to use the latest innovations (new tools and libraries) on the same Domino deployment.
Use restricted environments
To enable Restricted Environments in your Domino instance, please reach out to Domino Support. Only an admin can mark a revision of an Environment as Restricted. To designate a Compute Environment as Restricted, go to Environments, select the environment and mark a specific Revision of the Environment as Restricted. You can also quickly set the latest environment revision to Restricted from the environment’s Overview tab by clicking the Restricted checkbox. Only a single Environment revision can be Restricted. If you mark another revision as Restricted, the previous revision becomes unrestricted. Once you mark a revision as Restricted, that Environment can’t be unrestricted. You can, however, choose which revision is the Restricted (that is, frozen) revision. This limitation ensures that anyone using the environment is always using a revision that was explicitly designated as Restricted. Even when an Environment is Restricted and changes to its Dockerfile aren’t permitted, data scientists can still install packages at runtime. To prevent these types of modifications, see prevent dynamic installation.Restricted Projects
To enforce that a Project only uses Restricted Environments, mark the Project asRestricted when you create the Project.
When running workloads from a Restricted Project, Domino limits your choice of Compute Environment to Restricted Environments for all actions including but not limited to:
- Start a manual job run.
- Start a scheduled job run.
- Start a Workspace.
- Rerun a Job.
- Start an App.
- Start a Launcher.
Copy a restricted Project
When a Restricted Project is copied, the copied Restricted is also classified as Restricted. This is especially useful when the source Restricted is a Restricted template, since it ensures that Projects created from a template are Restricted if the template is Restricted.Prevent package installation at runtime
Even when an Environment is frozen and changes to its Dockerfile aren’t permitted, data scientists may still install packages at runtime through various ways (for example, running apip command or installing an R package from CRAN). To prevent these types of modifications, we recommend adding the below commands in your Environment’s Dockerfile. These commands prevent common ways of installing packages at runtime.
Set read-only libpath and block well known R package repositories
Add the following lines to the compute environment’s Dockerfile to set theR_LIBS_USER directory to a folder the Domino user can’t write to.
Overwrite package install functions
Add the following lines to the compute environment’s Dockerfile to modify the package install functions to empty functions that produce a message that the environment is frozen.Block package repos by routing package repo requests to loopback address
The following pre-setup script modifies the/etc/hosts file to re-route requests to a popular package repo back to localhost.
Block pip installs by routing pip to a non-existent URL
One way to disable dynamic installation of packages from within a Workspace or a Job is to set the global index URL in the pip configuration to a non-existing URL:Limitations & caveats
- If a Job is rerun and the previous Environment revision is no longer Restricted, the rerun uses the current Restricted revision of the Environment. If there is no Restricted revision available, the rerun fails.
- Scheduled runs use the Restricted Environment revision at the time of scheduling. If the Environment revision changes before the scheduled run executes, it continues to use the revision from the time of scheduling.