# 多租户和统一管理

## 概览

随着现代数据平台跨团队、跨业务单元扩展，支持**多租户**、确保**数据隔离性与治理**并**简化跨联邦集群的管理**变得尤为重要。

本文档提供了一份参考架构及功能清单，用于在多租户环境中实现安全、隔离且易于管理的 Alluxio 集群部署。

***

## 关键特性

### 1. 认证与授权

* 支持与企业身份提供商（如 OKTA）的集成。
* 通过身份验证后，用户会获得安全 token（JWT），并随请求传递。
* 由策略引擎（如 OPA ‑ Open Policy Agent）执行细粒度访问控制，可基于自定义规则评估每个请求。

### 2. 租户隔离

* 缓存管理隔离
  * 按租户配置缓存（TTL、配额、驱逐策略）
  * 独立运维控制

### 3. 集群联邦

* 当部署包含多个集群时，提供统一管理功能：
  * 监控
  * 许可证管理
  * 运维管理

确保即使扩展至数十个/数百个集群时仍可管理。

***

## 架构概览

<figure><img src="/files/DEZnzOPWIYyy3WZ8reVT" alt=""><figcaption></figcaption></figure>

示意图说明：采用API网关作为核心组件，统一处理跨Alluxio集群的认证授权。用户通过管理控制台或认证服务器获取 token, API网关验证后路由至对应集群coordinator。网关集成策略引擎 (OPA)进行访问决策，支持定向集群请求与组播操作。管理控制台提供集中式仪表盘，通过网关接口监控和管理所有集群。

### 组件

**1. 管理控制台**

* 提供可视化集群管理界面
* 展示跨集群监控数据
* 通过认证服务器验证用户身份
* 与API网关交互执行操作

**2. API 网关**

* 所有请求的统一入口
* 路由请求至对应集群
* 集成认证和授权功能

### 工作流示例：缓存 TTL 更新

1. **用户认证**

* 用户在管理控制台或认证服务器（如 OKTA）登录
* 认证成功后获得 JWT token

2. **请求提交**

* 用户向 API 网关发送请求，内容包括：
  * 获得的 JWT token
  * 期望的 TTL 值
  * 目标租户信息

3. **访问控制检查**

* API 网关验证 token 有效性。
* 策略引擎（OPA）校验用户是否有权限：
  * 修改缓存设置
  * 访问指定租户资源

4. **执行请求**

* 若授权通过，API 网关将请求转发至：
  * 特定集群 coordinator（单集群操作）
  * 所有相关coordinator（多集群操作）
* Coordinator 将变更应用至 worker节点
* 更新配置持久化保存

***

## 认证与授权

### 认证

初期采用 OKTA 进行统一身份认证。用户登录并通过验证后，OKTA 会为 API 网关生成 [JSON Web Token (JWT)](https://auth0.com/docs/secure/tokens/access-tokens/access-token-profiles)。JWT为编码的JSON对象，包含用户声明信息（如角色/组标识符）。

### 授权

授权机制确保用户仅能访问其被允许访问的资源。系统采用 [Open Policy Agent (OPA)](https://www.openpolicyagent.org/docs/latest/#running-opa) 作为策略引擎来执行访问控制。OPA 采用声明式语言 Rego 编写细粒度、上下文感知的策略，通过其决策 API 判断请求是否允许执行。

## 多租户

[用户角色访问控制](/ee-ai-cn/ai-3.6/start/overview/user-roles-access-control.md)提供Alluxio 系统内部用户访问与权限管理。可创建不同的用户角色，并为每个角色配置特定的访问层级和权限，确保用户仅能访问其被授权的资源。

## 集群联邦

关于在多可用区环境中如何搭建与管理 Alluxio 集群，请参见 [多可用区（Multi‑AZ）](/ee-ai-cn/ai-3.6/data-access/high-availability/multi-az.md)章节。

## 许可证管理

当集群数量较多时，可进行集中式许可证管理与下发与执行。详情请参见[许可证](/ee-ai-cn/ai-3.6/start/install/license.md)章节。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.alluxio.io/ee-ai-cn/ai-3.6/overview/multi-tenancy-cluster-federation-and-unified-management.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
