# 邮件推送 Skill 安全配置指南

## 目录

- [概述](#概述)
- [1. 创建子账号并关联策略](#1-创建子账号并关联策略)
  - [操作步骤](#操作步骤)
- [2. 配置 IP 访问限制（推荐）](#2-配置-ip-访问限制推荐)
  - [操作步骤](#操作步骤-1)
- [3. 为子账号创建 API 密钥](#3-为子账号创建-api-密钥secretid--secretkey)
  - [操作步骤](#操作步骤-2)
- [4. 密钥安全管理须知](#4-密钥安全管理须知)
- [附录：安全配置检查清单](#附录安全配置检查清单)

---

## 概述

为保障您的腾讯云账号安全，建议为邮件推送 Skill 创建专用的子账号，并遵循**最小权限原则**进行访问控制。本指南将引导您完成以下配置：

| 步骤 | 操作内容 | 说明 |
|:---:|----------|------|
| 1 | 创建子账号并关联策略 | 创建专用子账号，关联预设策略 `QcloudSESFullAccess` |
| 2 | 配置 IP 访问限制 | 为策略添加 IP 访问限制条件，仅允许指定 IP 调用 API |
| 3 | 创建 API 密钥 | 为子账号生成 SecretId 和 SecretKey |
| 4 | 密钥安全管理 | 遵循密钥存储、传输和轮换的安全规范 |

> ⚠️ **安全提醒**：请勿直接使用主账号的 API 密钥。主账号拥有所有云资源的完整操作权限，一旦密钥泄露，可能导致严重的安全风险和经济损失。

---

## 1. 创建子账号并关联策略

为邮件推送 Skill 创建专用子账号，并关联预设策略 `QcloudSESFullAccess`。

### 操作步骤

1. 登录腾讯云控制台，进入 [用户列表](https://console.cloud.tencent.com/cam) 页面，单击 **新建用户**。
2. 选择 **自定义创建**，用户类型选择 **可访问资源并接收消息**。
3. 填写用户信息：

| 配置项 | 推荐值 | 说明 |
|--------|--------|------|
| **用户名** | `ses-skill-sender` | 建议使用具有辨识度的名称 |
| **访问方式** | 勾选 **编程访问** | 通过 API 密钥调用接口。如无需登录控制台操作，**无需勾选**控制台访问 |

4. 在 **设置用户权限** 步骤中，选择 **从策略列表中选取策略关联**，搜索并关联预设策略 `QcloudSESFullAccess`。

5. 单击 **完成**，完成子账号创建。

> 📖 **参考文档**：[新建子用户](https://cloud.tencent.com/document/product/598/13674)

---

## 2. 配置 IP 访问限制（推荐）

通过为策略添加 IP 访问限制条件，可确保即使密钥泄露，也只有指定 IP 才能调用 API，进一步提升安全性。

### 操作步骤

1. 登录腾讯云控制台，进入 [策略管理](https://console.cloud.tencent.com/cam/policy) 页面。
2. 找到已关联的 `QcloudSESFullAccess` 策略，或新建一个自定义策略（如 `SESIPRestriction`），在策略内容中添加 IP 限制条件：

```json
{
  "version": "2.0",
  "statement": [
    {
      "effect": "deny",
      "action": [
        "ses:*"
      ],
      "resource": "*",
      "condition": {
        "ip_not_equal": {
          "qcs:ip": [
            "<您的服务器出口 IP/掩码>"
          ]
        }
      }
    }
  ]
}
```

> 💡 **说明**：上述策略表示"拒绝非指定 IP 的所有 SES 操作"。配合已关联的 `QcloudSESFullAccess`（允许策略），实现仅允许指定 IP 调用的效果。

#### IP 地址配置示例

| 格式 | 示例 | 说明 |
|------|------|------|
| 单个 IP | `10.0.1.100/32` | 仅允许该 IP 访问 |
| IP 网段 | `239.148.87.0/24` | 允许该网段内所有 IP 访问 |
| 多个 IP | `["1.2.3.4/32", "5.6.7.8/32"]` | 允许多个指定 IP 访问 |

3. 将该自定义策略关联到子账号。

> 📖 **参考文档**：[限制 IP 访问](https://cloud.tencent.com/document/product/598/38037)

---

## 3. 为子账号创建 API 密钥（SecretId / SecretKey）

子账号创建完成后，需为其生成 API 密钥，用于 Skill 调用邮件推送接口时的身份认证。

### 操作步骤

1. 进入 [用户列表](https://console.cloud.tencent.com/cam) 页面，单击目标子账号的 **用户名称**，进入用户详情页。
2. 选择 **API 密钥** 页签，单击 **新建密钥**。
3. 系统将弹出密钥信息窗口，展示 **SecretId** 和 **SecretKey**。

> ⚠️ **重要提示**：
> - SecretKey **仅在创建时显示一次**，之后将无法再次查询。请务必**立即妥善保存**。
> - 每个子账号最多可创建 **2 个** API 密钥。

4. 将获取到的 SecretId 和 SecretKey 配置为 Skill 所需的环境变量：

```bash
export TENCENTCLOUD_SECRET_ID="<您的 SecretId>"
export TENCENTCLOUD_SECRET_KEY="<您的 SecretKey>"
```

> 📖 **参考文档**：[子账号访问密钥管理](https://cloud.tencent.com/document/product/598/37140)

---

## 4. 密钥安全管理须知

API 密钥（SecretId / SecretKey）是调用腾讯云 API 的重要身份凭证。一旦泄露，可能导致云资源被恶意使用，造成不可挽回的经济损失。请务必遵循以下安全规范：

| 安全要求 | 说明 |
|----------|------|
| **严禁明文存储** | 切勿将密钥以明文形式写入代码、配置文件或版本控制系统（如 Git）中。建议使用环境变量或密钥管理服务进行存储。 |
| **限制传播范围** | 密钥仅应由必要的运维人员或系统持有，禁止通过即时通讯工具、邮件等不安全渠道传输。 |
| **定期轮换密钥** | 建议每 90 天更换一次 API 密钥，降低因密钥长期使用而导致泄露的风险。 |
| **泄露后立即处置** | 若怀疑密钥已泄露，请立即前往 [API 密钥管理](https://console.cloud.tencent.com/cam/capi) 页面禁用或删除对应密钥，并重新创建。 |
| **监控异常调用** | 建议开启 [云审计](https://console.cloud.tencent.com/cloudaudit) 日志，监控 API 调用行为，及时发现异常访问。 |

---

## 附录：安全配置检查清单

在完成上述配置后，请逐项确认以下检查项：

| 序号 | 检查项 | 状态 |
|:---:|--------|:----:|
| 1 | 已创建专用子账号，**未使用主账号密钥** | ☐ |
| 2 | 已关联预设策略 `QcloudSESFullAccess` | ☐ |
| 3 | 已配置 IP 访问限制策略 | ☐ |
| 4 | 子账号仅开启编程访问，未开启控制台登录权限 | ☐ |
| 5 | SecretKey 已安全保存，未明文存储于代码或配置文件中 | ☐ |
| 6 | 已制定密钥定期轮换计划（建议每 90 天） | ☐ |