# 備份配置

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 和區域
- **未來增強**：計劃在未來版本中實現 S3 上傳功能

## 自動備份排程

### 可視化 Cron 編輯器

自動備份使用可視化 cron 編輯器介面，允許您：

- **選擇頻率**：從每日、每週、每月或自訂計劃中選擇
- **設定時間**：選擇備份執行的具體小時和分鐘
- **預覽計劃**：檢視備份計劃的人類可讀描述

### 任務管理

- **狀態追蹤**：每個備份任務追蹤執行狀態（待處理、成功、失敗）
- **錯誤日誌**：失敗的備份包含詳細的錯誤訊息以便故障排除

此配置在保持嚴格安全邊界的同時啟用備份操作，確保備份功能不會被濫用來存取未授權的系統區域。 