Access Namespaces in a Restricted Manner
The namespace feature is currently in Public Preview. The feature and related documentation are subject to change.
This document explains how to set up namespaces and access them in a restricted manner in a multi-tenant deployment of ScalarDL.
What is restricted access to namespaces?​
Restricting access to namespaces allows you to host multiple tenants on a single ScalarDL cluster while ensuring strict data isolation between them. Each tenant operates within its own namespace and can only access assets within that namespace.
Security model​
Restricted access to namespaces relies on port-based access control:
- Privileged port: Used by administrators for namespace management and credential registration. Only administrators should have access to this port.
- Non-privileged port: Used by tenant clients for contract registration and execution. Tenants access this port with their credentials registered to their specific namespace.
Because tenant credentials are registered to a specific namespace, all operations performed with those credentials are automatically scoped to that namespace. Tenants cannot register contracts or execute operations outside their assigned namespace.
This tutorial uses default ports and runs all commands from the same client machine for simplicity, assuming both the privileged and non-privileged ports are accessible. In a production environment, you should restrict access to the privileged port so that only administrators can reach it, while tenants connect only through the non-privileged port.
Prerequisites​
- One of the following Java Development Kits (JDKs):
- Oracle JDK: 8, 11, 17, or 21 (LTS versions)
- OpenJDK distribution (Eclipse Temurin, Amazon Corretto, or Microsoft Build of OpenJDK): 8, 11, 17, or 21 (LTS versions)
- Docker 20.10 or later with Docker Compose v2.20.0 or later