2018-08-16 00:44:00 +00:00
|
|
|
---
|
2020-01-18 00:18:09 +00:00
|
|
|
layout: docs
|
|
|
|
page_title: Namespaces - Vault Enterprise
|
|
|
|
description: >-
|
|
|
|
Vault Enterprise has support for Namespaces, a feature to enable Secure
|
|
|
|
Multi-tenancy (SMT) and self-management.
|
2018-08-16 00:44:00 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
# Vault Enterprise Namespaces
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
2020-01-25 00:18:22 +00:00
|
|
|
-> **Note**: This feature is available in all versions of [Vault Enterprise](https://www.hashicorp.com/products/vault/).
|
|
|
|
|
2019-10-14 17:31:03 +00:00
|
|
|
Many organizations implement Vault as a "service", providing centralized
|
2018-08-16 20:38:24 +00:00
|
|
|
management for teams within an organization while ensuring that those teams
|
2020-01-18 00:18:09 +00:00
|
|
|
operate within isolated environments known as _tenants_.
|
2018-08-16 00:44:00 +00:00
|
|
|
|
|
|
|
There are two common challenges when implementing this architecture in Vault:
|
|
|
|
|
|
|
|
**Tenant Isolation**
|
2018-08-16 00:44:36 +00:00
|
|
|
|
2018-08-16 00:44:00 +00:00
|
|
|
Frequently teams within a VaaS environment require strong isolation from other
|
2019-10-14 17:31:03 +00:00
|
|
|
users in their policies, secrets, and identities. Tenant isolation is typically a
|
|
|
|
result of compliance regulations such as [GDPR](https://www.eugdpr.org/), though it may
|
2018-08-16 20:38:24 +00:00
|
|
|
be necessitated by corporate or organizational infosec requirements.
|
2018-08-16 00:44:00 +00:00
|
|
|
|
|
|
|
**Self-Management**
|
2018-08-16 00:44:36 +00:00
|
|
|
|
2019-10-14 17:31:03 +00:00
|
|
|
As new tenants are added, there is an additional human cost in the management
|
2018-08-16 00:44:00 +00:00
|
|
|
overhead for teams. Given that tenants will likely have different policies and
|
|
|
|
request changes at a different rate, managing a multi-tenant environment can
|
|
|
|
become very difficult for a single team as the number of tenants within that
|
2018-08-16 20:38:24 +00:00
|
|
|
organization grow.
|
2018-08-16 00:44:00 +00:00
|
|
|
|
|
|
|
'Namespaces' is a set of features within Vault Enterprise that allows Vault
|
2020-01-18 00:18:09 +00:00
|
|
|
environments to support _Secure Multi-tenancy_ (or _SMT_) within a single Vault
|
2018-08-16 00:44:00 +00:00
|
|
|
infrastructure. Through namespaces, Vault administrators can support tenant isolation
|
2018-08-16 20:38:24 +00:00
|
|
|
for teams and individuals as well as empower delegated administrators to manage their
|
2019-04-06 16:22:48 +00:00
|
|
|
own tenant environment.
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
API operations performed under a namespace can be done by providing the relative
|
|
|
|
request path along with the namespace path using the `X-Vault-Namespace` header.
|
|
|
|
Similarly, the namespace header value can be provided in full or partially when
|
|
|
|
reaching into nested namespaces. When provided partially, the remaining
|
|
|
|
namespace path must be provided in the request path in order to reach into the
|
|
|
|
desired nested namespace.
|
|
|
|
|
|
|
|
Alternatively, the fully qualified path can be provided without using the
|
|
|
|
`X-Vault-Namespace` header. In either scenario, Vault will construct the fully
|
|
|
|
qualified path from these two sources to correctly route the request to the
|
|
|
|
appropriate namespace.
|
|
|
|
|
|
|
|
For example, these three requests are equivalent:
|
2020-01-18 00:18:09 +00:00
|
|
|
|
2019-04-06 16:22:48 +00:00
|
|
|
1. Path: `ns1/ns2/secret/foo`
|
|
|
|
2. Path: `secret/foo`, Header: `X-Vault-Namespace: ns1/ns2/`
|
|
|
|
3. Path: `ns2/secret/foo`, Header: `X-Vault-Namespace: ns1/`
|
2018-08-16 00:44:00 +00:00
|
|
|
|
2020-10-08 16:46:43 +00:00
|
|
|
## Root only API Paths
|
|
|
|
|
|
|
|
There are certain API paths that can only be called from the root namespace:
|
|
|
|
|
2020-12-17 21:53:33 +00:00
|
|
|
- `sys/init`
|
|
|
|
- `sys/leader`
|
|
|
|
- `sys/health`
|
|
|
|
- `sys/metrics`
|
2023-01-09 17:50:16 +00:00
|
|
|
- `sys/config/group-policy-application`
|
2020-12-17 21:53:33 +00:00
|
|
|
- `sys/config/state`
|
|
|
|
- `sys/host-info`
|
|
|
|
- `sys/key-status`
|
|
|
|
- `sys/storage`
|
|
|
|
- `sys/storage/raft`
|
2022-10-11 19:09:29 +00:00
|
|
|
- `sys/quotas`
|
2020-10-08 16:46:43 +00:00
|
|
|
|
2018-08-16 00:44:00 +00:00
|
|
|
## Architecture
|
|
|
|
|
|
|
|
Namespaces are isolated environments that functionally exist as "Vaults within a Vault."
|
2018-08-16 20:38:24 +00:00
|
|
|
They have separate login paths and support creating and managing data isolated to their
|
2019-10-14 17:31:03 +00:00
|
|
|
namespace. This data includes the following:
|
2018-08-16 00:44:00 +00:00
|
|
|
|
2018-08-30 21:20:14 +00:00
|
|
|
- Secret Engines
|
|
|
|
- Auth Methods
|
2021-09-30 16:41:45 +00:00
|
|
|
- ACL, EGP, and RGP Policies
|
|
|
|
- Password Policies
|
2018-08-16 00:44:00 +00:00
|
|
|
- Identities (Entities, Groups)
|
|
|
|
- Tokens
|
|
|
|
|
2018-08-16 20:38:24 +00:00
|
|
|
Rather than rely on Vault system admins, namespaces can be managed by delegated admins who
|
|
|
|
can be prescribed administration rights for their namespace. These delegated admins can also
|
2019-10-14 17:31:03 +00:00
|
|
|
create their own child namespaces, thereby prescribing admin rights on a subordinate group
|
|
|
|
of delegate admins.
|
2018-08-16 00:44:00 +00:00
|
|
|
|
2018-08-30 21:20:14 +00:00
|
|
|
Child namespaces can share policies from their parent namespaces. For example, a child namespace
|
|
|
|
may refer to parent identities (entities and groups) when writing policies that function only
|
|
|
|
within that child namespace. Similarly, a parent namespace can have policies asserted on child
|
2023-01-26 00:12:15 +00:00
|
|
|
identities. This behavior can be configured using the [group-policy-application](/vault/api-docs/system/config-group-policy-application) API, and
|
2023-01-09 17:50:16 +00:00
|
|
|
can be set to allow policies to be applied irrespective of namespace hierarchy, allowing sharing
|
|
|
|
across any namespace.
|
2018-08-30 21:20:14 +00:00
|
|
|
|
2022-04-04 17:05:16 +00:00
|
|
|
## Tutorial
|
2018-08-16 00:44:00 +00:00
|
|
|
|
2019-10-14 17:31:03 +00:00
|
|
|
Refer to the [Secure Multi-Tenancy with Namespaces](https://learn.hashicorp.com/vault/operations/namespaces)
|
2022-04-04 17:05:16 +00:00
|
|
|
tutorial to learn how to use Vault as a Service to allow organizations(tenants) to manage their own secrets and policies.
|