# 环境变量配置说明 ## .env 文件(推荐方式) `.env` 文件用于存储敏感配置信息,如API密钥。该文件**不会被提交到Git**(已添加到 `.gitignore`)。 ### 配置步骤 1. **复制示例配置** ```bash cp .env.example .env ``` 2. **编辑 .env 文件** ```bash # 使用你喜欢的编辑器 vim .env # 或 nano .env # 或 code .env ``` 3. **填入你的腾讯云API密钥** ```bash TENCENT_SECRET_ID=你的SecretId TENCENT_SECRET_KEY=你的SecretKey ``` 4. **保存文件** ### 获取API密钥 访问腾讯云控制台: https://console.cloud.tencent.com/cam/capi - 点击「新建密钥」或查看现有密钥 - 复制 `SecretId` 和 `SecretKey` - ⚠️ **重要:** SecretKey只在创建时显示一次,请妥善保存! ## 环境变量方式 如果不使用 `.env` 文件,可以直接设置系统环境变量。 ### Linux/Mac **临时设置(当前会话有效):** ```bash export TENCENT_SECRET_ID="你的SecretId" export TENCENT_SECRET_KEY="你的SecretKey" ``` **永久设置(添加到 ~/.bashrc 或 ~/.zshrc):** ```bash echo 'export TENCENT_SECRET_ID="你的SecretId"' >> ~/.bashrc echo 'export TENCENT_SECRET_KEY="你的SecretKey"' >> ~/.bashrc source ~/.bashrc ``` ### Windows **PowerShell临时设置:** ```powershell $env:TENCENT_SECRET_ID="你的SecretId" $env:TENCENT_SECRET_KEY="你的SecretKey" ``` **PowerShell永久设置:** ```powershell [System.Environment]::SetEnvironmentVariable('TENCENT_SECRET_ID', '你的SecretId', 'User') [System.Environment]::SetEnvironmentVariable('TENCENT_SECRET_KEY', '你的SecretKey', 'User') ``` **CMD临时设置:** ```cmd set TENCENT_SECRET_ID=你的SecretId set TENCENT_SECRET_KEY=你的SecretKey ``` ## 验证配置 ### 方式1: 查看 .env 文件 ```bash cat .env ``` ### 方式2: 查看环境变量 ```bash # Linux/Mac echo $TENCENT_SECRET_ID # Windows PowerShell echo $env:TENCENT_SECRET_ID # Windows CMD echo %TENCENT_SECRET_ID% ``` ### 方式3: 测试连接 ```bash python scripts/list_records.py --domain example.com ``` 如果成功,将显示域名记录列表(可能为空)。 ## 安全建议 ### ✅ 推荐做法 1. **使用 .env 文件** - 方便管理,不会被Git跟踪 2. **使用 .env.example** - 提供配置模板,不含真实密钥 3. **定期轮换密钥** - 定期更换API密钥提高安全性 4. **使用子账号** - 创建独立的子账号,只授予必要权限 5. **设置IP白名单** - 在腾讯云CAM中限制API调用来源IP ### ❌ 避免做法 1. ❌ 不要将密钥硬编码在代码中 2. ❌ 不要在Git仓库中提交 .env 文件 3. ❌ 不要在生产环境使用默认密钥 4. ❌ 不要在公开场合分享密钥 5. ❌ 不要使用弱密钥或重复使用密钥 ## 常见问题 ### Q1: .env 文件不生效? **原因:** 可能是文件权限问题或路径错误。 **解决:** ```bash # 确认文件存在 ls -la .env # 确认文件内容 cat .env # 确认文件格式(无BOM,Unix换行符) file .env ``` ### Q2: 还是提示找不到密钥? **解决:** 检查 `.env` 文件是否在项目根目录: ```bash pwd # 应该在 tencent-dnspod 目录 ls .env # 应该能看到 .env 文件 ``` ### Q3: Git提交时意外包含了 .env? **解决:** ```bash # 1. 从Git中移除(但保留本地文件) git rm --cached .env # 2. 确认 .gitignore 包含 .env echo ".env" >> .gitignore # 3. 提交修改 git add .gitignore git commit -m "Remove .env from tracking" # 4. 更换已泄露的密钥! # 访问: https://console.cloud.tencent.com/cam/capi ``` ### Q4: 多个项目需要不同的密钥? **解决:** 每个项目使用独立的 .env 文件: ```bash # 项目A cd /path/to/project-a echo "TENCENT_SECRET_ID=项目A的ID" > .env # 项目B cd /path/to/project-b echo "TENCENT_SECRET_ID=项目B的ID" > .env ``` ## 权限管理建议 ### 创建专用子账号 1. 访问: https://console.cloud.tencent.com/cam 2. 创建子账号,只授予DNSPod权限 3. 为子账号创建API密钥 4. 使用子账号密钥而非主账号密钥 ### 最小权限原则 只授予必要的权限: - DNSPod只读权限(查询记录) - DNSPod读写权限(管理记录) - 避免授予所有产品的访问权限 ## 参考文档 - **腾讯云访问管理(CAM):** https://cloud.tencent.com/document/product/598 - **API密钥管理:** https://console.cloud.tencent.com/cam/capi - **子账号权限:** https://console.cloud.tencent.com/cam/user