SAGE 安全安装指南 (Secure Installation Guide)¶
本文档提供了安全安装 SAGE 的最佳实践,包括包验证、漏洞扫描和深度依赖检查。
📋 目录¶
概述¶
安全关注点¶
SAGE 的安全安装涉及以下几个方面:
- 包完整性 - 确保下载的包未被篡改
- 漏洞检查 - 检测依赖中的已知安全漏洞
- 依赖验证 - 验证所有依赖的兼容性和完整性
- 权限管理 - 使用最小权限原则
新增功能¶
从 SAGE 0.1.6+ 版本起,我们提供了以下安全增强功能:
- ✅ Checksum 验证 - 验证下载包的 SHA256
- ✅ Pip-Audit 集成 - 检查已知的安全漏洞
- ✅ Safety 检查 - 额外的漏洞扫描工具
- ✅
--verify-deps- 深度依赖验证选项
快速开始¶
基础安全安装¶
# 1. 创建虚拟环境
python3 -m venv sage-env
source sage-env/bin/activate
# 2. 升级 pip、setuptools 和 wheel
pip install --upgrade pip setuptools wheel
# 3. 进行深度验证后安装
./quickstart.sh --verify-deps --standard
完整安全流程¶
# 1. 系统依赖检查和安装
./quickstart.sh --check-system
# 2. 深度依赖验证
./quickstart.sh --verify-deps
# 3. 安全安装
./quickstart.sh --verify-deps --standard --yes
包完整性验证¶
什么是 Checksum 验证?¶
Checksum(校验和)是文件的数字指纹。通过比对官方 checksum 和下载文件的 checksum,可以验证文件在传输过程中未被篡改。
SHA256 验证流程¶
步骤 1: 获取官方 checksum¶
从 PyPI 官方页面获取文件的 SHA256:
# 方式 1: 访问 PyPI 网站
# https://pypi.org/project/isage/
# 方式 2: 使用 PyPI JSON API
curl -s https://pypi.org/pypi/isage/json | jq '.releases[] | .[] | "\(.filename) \(.digests.sha256)"'
示例输出:
步骤 2: 验证下载的文件¶
# 使用 sha256sum 验证
sha256sum isage-0.1.6-py3-none-any.whl
# 或使用 shasum(macOS)
shasum -a 256 isage-0.1.6-py3-none-any.whl
# 比对结果应该匹配官方 checksum
步骤 3: 手动验证脚本¶
我们提供了自动验证脚本:
# 初始化验证模块
source tools/install/examination_tools/dependency_verification.sh
# 验证单个文件
verify_package_checksum /path/to/isage-0.1.6.whl "expected_sha256_hash"
# 示例
verify_package_checksum \
/tmp/isage-0.1.6-py3-none-any.whl \
"1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t"
pip 的内置验证¶
现代 pip 版本会自动验证 PyPI 包的 checksum:
离线 Checksum 验证¶
如果无法联网,可以使用预下载的 checksum 文件:
# 从官方仓库下载 checksum 文件
wget https://github.com/intellistream/SAGE/releases/download/v0.1.6/SHA256SUMS
# 验证
sha256sum -c SHA256SUMS
# 输出应该显示所有文件 OK
安全漏洞扫描¶
什么是漏洞扫描?¶
漏洞扫描工具会检查已安装的依赖是否存在已知的安全漏洞。常用工具包括:
- pip-audit - PyPA 官方推荐的审计工具(推荐)
- safety - 独立的漏洞检查工具
- Bandit - 源代码安全分析工具
快速扫描¶
方式 1: 使用安装脚本¶
# 在安装过程中进行漏洞扫描
./quickstart.sh --verify-deps
# 输出示例
# 1️⃣ 验证 pip 包依赖...
# ✓ 所有包依赖验证通过
# 2️⃣ 运行安全漏洞扫描...
# ✓ 漏洞扫描完成: security_audit_pip_audit.json
方式 2: 手动扫描¶
# 初始化验证模块
source tools/install/examination_tools/dependency_verification.sh
# 扫描 requirements.txt
check_vulnerabilities requirements.txt
# 指定扫描工具
check_vulnerabilities requirements.txt . pip-audit
check_vulnerabilities requirements.txt . safety
check_vulnerabilities requirements.txt . all # 两个工具都运行
Pip-Audit 详细使用¶
# 1. 安装 pip-audit
pip install pip-audit
# 2. 扫描当前环境
pip-audit
# 3. 扫描特定 requirements 文件
pip-audit -r requirements.txt
# 4. 保存详细报告
pip-audit -r requirements.txt -o json > audit_report.json
pip-audit -r requirements.txt -o markdown > audit_report.md
# 5. 严格模式(有漏洞则失败)
pip-audit -r requirements.txt --strict
输出示例:
Vulnerability Summary
┌─────────────────────┬──────────┬──────────┬──────────────────────────────┐
│ Package │ Version │ ID │ Advisory Title │
├─────────────────────┼──────────┼──────────┼──────────────────────────────┤
│ requests │ 2.27.0 │ GHSA-xxx │ Incorrect handling of ... │
│ urllib3 │ 1.26.0 │ GHSA-yyy │ HTTP Request Smuggling ... │
└─────────────────────┴──────────┴──────────┴──────────────────────────────┘
Safety 详细使用¶
# 1. 安装 safety
pip install safety
# 2. 扫描当前环境
safety check
# 3. 扫描特定 requirements 文件
safety check -r requirements.txt
# 4. 保存 JSON 报告
safety check -r requirements.txt --json > safety_report.json
# 5. 检查特定版本
safety check --key YOUR_API_KEY
处理发现的漏洞¶
如果扫描发现漏洞,有以下几个选项:
选项 1: 升级受影响的包¶
# 查看漏洞详情
pip-audit -r requirements.txt
# 升级到修复版本
pip install --upgrade requests urllib3
# 重新扫描
pip-audit -r requirements.txt
选项 2: 根据漏洞严重程度决定¶
选项 3: 使用不同的依赖版本¶
# 创建兼容版本的 requirements
pip index versions numpy
# 选择安全的版本
# 更新 requirements.txt
echo "numpy==1.21.6" > requirements.txt
# 重新安装和扫描
pip install -r requirements.txt
pip-audit -r requirements.txt
深度依赖验证¶
--verify-deps 选项¶
--verify-deps 选项执行全面的依赖检查,包括:
- ✅ Pip 依赖验证 (
pip check) - ✅ 安全漏洞扫描 (pip-audit + safety)
- ✅ 包版本兼容性检查
- ✅ 生成详细报告
使用方法¶
基础验证¶
# 验证当前环境
./quickstart.sh --verify-deps
# 输出
# === 深度依赖验证 (--verify-deps) ===
# 1️⃣ 验证 pip 包依赖...
# ✓ 所有包依赖验证通过
# 2️⃣ 运行安全漏洞扫描...
# ✓ 漏洞扫描完成
# 3️⃣ 检查包版本兼容性...
# ✓ 所有包都已正确安装
# ✅ 深度验证通过
严格模式¶
指定安装模式¶
# 先验证,再以开发模式安装
./quickstart.sh --verify-deps --dev
# 先验证,再以标准模式安装
./quickstart.sh --verify-deps --standard --yes
验证报告¶
验证完成后,会生成以下报告文件:
security_audit_pip_audit.json # pip-audit 报告
security_audit_safety.json # safety 报告
sage_verification_report.txt # 综合验证报告
手动深度验证¶
# 初始化验证模块
source tools/install/examination_tools/dependency_verification.sh
# 对 requirements.txt 进行深度验证
perform_deep_verification requirements.txt
# 输出详细报告(严格模式)
perform_deep_verification requirements.txt . true
# 自定义输出目录
perform_deep_verification requirements.txt ./reports
验证输出解释¶
安全安装工作流¶
推荐的完整工作流¶
# ========================================
# 步骤 1: 环境准备
# ========================================
# 检查 Python 版本
python3 --version # 需要 3.10+
# 创建虚拟环境
python3 -m venv sage-secure-env
source sage-secure-env/bin/activate
# 升级核心工具
pip install --upgrade pip setuptools wheel
# ========================================
# 步骤 2: 系统检查和依赖安装
# ========================================
# 检查系统是否满足要求
cd /path/to/SAGE
./quickstart.sh --check-system
# 安装系统依赖(如需 sudo)
./quickstart.sh --install-system-deps
# ========================================
# 步骤 3: 深度安全验证
# ========================================
# 运行完整的验证(包括漏洞扫描)
./quickstart.sh --verify-deps --strict
# 检查报告
cat security_audit_pip_audit.json
cat security_audit_safety.json
# ========================================
# 步骤 4: 安全安装
# ========================================
# 以标准模式安装
./quickstart.sh --verify-deps --standard --yes
# 或以开发模式安装(包含开发工具)
./quickstart.sh --verify-deps --dev --yes
# ========================================
# 步骤 5: 验证安装
# ========================================
# 检查系统状态
sage doctor
# 运行 hello world 示例
python3 docs-public/hello_world.py
# 最终验证
python3 -c "import sage; print(f'SAGE {sage.__version__} installed successfully')"
CI/CD 集成示例¶
GitHub Actions¶
name: Secure SAGE Installation
on: [push, pull_request]
jobs:
secure-install:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Create virtual environment
run: |
python3 -m venv sage-env
source sage-env/bin/activate
pip install --upgrade pip setuptools wheel
- name: System dependency check
run: |
source sage-env/bin/activate
sudo apt-get update
sudo apt-get install -y build-essential cmake libblas-dev liblapack-dev
- name: Deep security verification
run: |
source sage-env/bin/activate
./quickstart.sh --verify-deps --strict
- name: Secure installation
run: |
source sage-env/bin/activate
./quickstart.sh --verify-deps --standard --yes
- name: Verify installation
run: |
source sage-env/bin/activate
sage doctor
python3 -c "import sage; assert sage.__version__"
- name: Upload security reports
if: always()
uses: actions/upload-artifact@v3
with:
name: security-reports
path: |
security_audit_*.json
sage_verification_report.txt
GitLab CI¶
secure-install:
stage: build
image: ubuntu:22.04
before_script:
- apt-get update
- apt-get install -y build-essential cmake python3-venv python3-dev libblas-dev liblapack-dev
script:
- python3 -m venv sage-env
- source sage-env/bin/activate
- pip install --upgrade pip setuptools wheel
- ./quickstart.sh --verify-deps --strict
- ./quickstart.sh --verify-deps --standard --yes
- sage doctor
artifacts:
paths:
- security_audit_*.json
- sage_verification_report.txt
expire_in: 1 week
常见问题¶
Q1: pip-audit 显示漏洞但我无法更新包怎么办?¶
A: 评估风险:
# 查看漏洞详情
pip-audit -v
# 检查是否有其他包依赖此版本
pip show conflicting-package
# 选项 1: 等待修复版本(低危)
# 选项 2: 立即升级(高危)
# 选项 3: 替换为替代包(严重)
Q2: --verify-deps 验证失败,我可以跳过吗?¶
A: 不建议跳过,但如果必须:
# 强制安装(不推荐)
./quickstart.sh --standard --yes --force
# 更好的做法:修复问题后重试
./quickstart.sh --verify-deps --standard --yes
Q3: 企业代理导致校验和验证失败¶
A: 配置 pip 信任代理:
pip install \
--index-url https://your-mirror.com/simple \
--trusted-host your-mirror.com \
isage[standard]
Q4: 可以离线进行安全验证吗?¶
A: 可以,使用预下载的数据库:
Q5: 验证报告在哪里?¶
A: 报告文件在当前目录中:
ls -la security_audit_*.json sage_verification_report.txt
# 查看 pip-audit 报告
cat security_audit_pip_audit.json | python3 -m json.tool
# 查看 safety 报告
cat security_audit_safety.json | python3 -m json.tool
相关文档¶
支持和反馈¶
如发现安全问题:
- 安全漏洞:请联系 security@intellistream.com
- 安装问题:提交 GitHub Issue
- 建议和反馈:加入 SAGE 社区讨论
最后更新:2025-11-15\ 版本:1.0.0\ 维护者:SAGE Security Team