# 备份配置

Nginx UI 配置中的备份部分控制备份操作的安全性和访问权限。此部分确保备份功能在定义的安全边界内运行，同时提供灵活的存储选项。

## 概述

Nginx UI 提供全面的备份功能，包括：

- **手动备份**：通过 Web 界面按需创建备份
- **自动备份**：使用可视化 cron 编辑器的定时备份任务
- **多种备份类型**：支持 Nginx 配置、Nginx UI 配置或自定义目录备份
- **存储选项**：本地存储和 S3 兼容的对象存储
- **安全性**：配置数据使用 AES 加密的加密备份

## GrantedAccessPath

- 类型：`[]string`
- 默认值：`[]`（空数组）
- 版本：`>= v2.0.0`

这是备份操作最关键的安全设置。它定义了允许进行备份操作的目录路径列表，包括备份源路径和存储目标路径。

### 用途

`GrantedAccessPath` 设置作为安全边界：

- **防止未授权访问**：将备份操作限制在明确授权的目录内
- **保护系统文件**：防止意外备份或访问敏感的系统目录
- **强制访问控制**：确保所有备份路径都在管理员定义的边界内
- **防止路径遍历**：阻止尝试访问允许范围外的目录

### 配置格式

```ini
[backup]
GrantedAccessPath = /var/backups
GrantedAccessPath = /home/user/backups
```

### 路径验证规则

1. **前缀匹配**：使用适当的边界检查进行前缀匹配验证路径
2. **路径清理**：所有路径都经过标准化处理以防止目录遍历攻击（如 `../` 序列）
3. **精确边界**：`/tmp` 允许 `/tmp/backup` 但不允许 `/tmpfoo` 以防止混淆
4. **空默认值**：默认情况下，为了最大安全性，不允许任何自定义目录备份操作

### 安全考虑

- **默认安全**：默认的空配置确保在明确配置之前不允许任何自定义目录备份操作
- **显式配置**：管理员必须有意识地定义允许的路径
- **定期审查**：根据操作需要定期审查和更新允许的路径
- **最小权限**：仅授予真正需要备份功能的目录访问权限

## 备份类型

### 配置备份

备份 Nginx 或 Nginx UI 配置时：

- **加密**：所有配置备份都使用 AES 加密自动加密
- **密钥管理**：加密密钥自动生成并与备份文件一起保存
- **完整性验证**：SHA-256 哈希确保备份完整性
- **元数据**：包含版本信息和时间戳以提供恢复上下文

### 自定义目录备份

对于自定义目录备份：

- **无加密**：自定义目录备份存储为标准 ZIP 文件，不加密
- **路径验证**：源目录必须在 `GrantedAccessPath` 边界内
- **灵活内容**：可以备份允许路径内的任何目录结构

## 存储配置

### 本地存储

- **路径验证**：存储路径必须在 `GrantedAccessPath` 边界内
- **目录创建**：如果存储目录不存在，会自动创建
- **权限**：备份文件使用安全权限（0600）创建

### S3 存储

对于 S3 兼容的对象存储：

- **必需字段**：存储桶名称、访问密钥 ID 和秘密访问密钥是必需的
- **可选字段**：可以为自定义 S3 提供商配置端点 URL 和区域

## 自动备份调度

### 可视化 Cron 编辑器

自动备份使用可视化 cron 编辑器界面，允许您：

- **选择频率**：从每日、每周、每月或自定义计划中选择
- **设置时间**：选择备份执行的具体小时和分钟
- **预览计划**：查看备份计划的人类可读描述

### 任务管理

- **状态跟踪**：每个备份任务跟踪执行状态（待处理、成功、失败）
- **错误日志**：失败的备份包含详细的错误消息以便故障排除

此配置在保持严格安全边界的同时启用备份操作，确保备份功能不会被滥用来访问未授权的系统区域。