# Performing Access Recertification With Saviynt

> 在 Saviynt Enterprise Identity Cloud 中配置和执行访问重认证活动，以验证用户权限、撤销多余的访问权限，并维持对 SOX、SOC2 和 HIPAA 的合规性。

- Skill: `killvxk/performing-access-recertification-with-saviynt` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/performing-access-recertification-with-saviynt`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/performing-access-recertification-with-saviynt/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/performing-access-recertification-with-saviynt

---


# 使用 Saviynt 执行访问重认证

## 概述

访问重认证（也称为访问认证或访问审查）是一个周期性流程，由指定审查员验证用户对系统和数据的访问权限是否合适。Saviynt Enterprise Identity Cloud（EIC）通过认证活动自动化此流程——向审查员展示当前的访问分配，并收集批准/撤销/有条件认证的决策。活动可按计划触发（季度、半年）、事件驱动触发（部门调动、角色变更）或按需触发。Saviynt 提供风险评分、使用情况分析和同组分析等智能功能，帮助审查员做出明智决策。

## 前提条件

- 具有管理员访问权限的 Saviynt Enterprise Identity Cloud（EIC）租户
- 已从权威来源（HR、AD、云）同步的身份数据
- 已从目标应用程序导入的权限数据
- 已分配认证员角色（经理、应用所有者、数据所有者）
- 已为每种认证类型定义活动模板

## 核心概念

### 活动类型

| 类型 | 范围 | 触发方式 | 认证员 |
|------|-------|---------|-----------|
| 用户经理 | 经理下属的所有访问 | 按计划（季度） | 直属经理 |
| 权限所有者 | 拥有特定权限的所有用户 | 按计划（半年） | 权限/应用所有者 |
| 应用程序 | 对特定应用程序的所有访问 | 按计划 | 应用所有者 |
| 基于角色 | 分配到特定角色的所有用户 | 按计划 | 角色所有者 |
| 基于事件 | 属性发生变更的用户 | 属性变更触发 | 新经理 |
| 微认证 | 单个用户、单个权限 | 按需 | 经理或所有者 |

### 认证决策

| 决策 | 效果 | 使用场景 |
|----------|--------|----------|
| 认证（批准） | 保留访问 | 访问仍然需要 |
| 撤销 | 创建访问移除工单 | 不再需要访问 |
| 有条件认证 | 有条件保留访问 | 临时需要，之后再审查 |
| 委派 | 转交给另一位认证员 | 认证员缺乏决策知识 |
| 弃权 | 不记录决策 | 存在利益冲突 |

### 活动生命周期

```
配置 → 预览 → 活跃 → 进行中 → 已完成 → 整改
  │      │      │       │         │        │
  │      │      │       │         │        └── 执行撤销工单
  │      │      │       │         │
  │      │      │       │         └── 所有决策已收集
  │      │      │       │
  │      │      │       └── 认证员审查并做出决策
  │      │      │
  │      │      └── 活动已启动，通知已发送
  │      │
  │      └── 仅供验证的只读预览
  │
  └── 定义活动参数
```

## 实施步骤

### 第 1 步：配置活动模板

在 Saviynt 管理控制台中：

1. 导航至"Certifications > Campaign > Create New Campaign"
2. 定义活动参数：

| 参数 | 值 |
|-----------|-------|
| 活动名称 | Q1 2025 经理访问审查 |
| 活动类型 | 用户经理 |
| 描述 | 所有用户访问的季度审查 |
| 认证员类型 | 经理（动态 - 用户的直属经理） |
| 次级认证员 | 应用所有者（经理不可用时的备选） |
| 截止日期 | 启动后 14 天 |
| 提醒计划 | 第 7、10、13 天 |
| 升级 | 如果第 15 天无决策则自动撤销 |

3. 配置范围过滤器：
   - 包含：所有活跃用户
   - 排除：服务账户、紧急访问账户
   - 应用过滤：所有已连接的应用程序

4. 配置智能功能：
   - 启用风险评分（高风险权限突出显示）
   - 启用使用情况数据（显示最后访问日期）
   - 启用同组分析（与同组成员访问情况对比）
   - 启用 SoD 违规标记

### 第 2 步：配置认证员体验

自定义认证员在审查期间看到的内容：

**显示列：**
- 用户名和职位
- 应用程序名称
- 权限/角色名称
- 风险评分（1-10）
- 最后访问日期
- 同组比较（拥有相同访问权限的同组比例）
- SoD 违规标记

**决策选项：**
- 附理由认证（自由文本）
- 附原因撤销（下拉：不再需要、SoD 冲突、角色变更）
- 有条件认证并设置到期日期

**批量操作：**
- 认证所有低风险项目
- 撤销所有 90 天以上未访问的项目
- 按应用程序、风险级别或 SoD 状态过滤

### 第 3 步：通过 API 启动活动

```python
import requests

SAVIYNT_URL = "https://tenant.saviyntcloud.com"
SAVIYNT_TOKEN = "your-api-token"

def create_certification_campaign(campaign_config):
    """创建并启动 Saviynt 认证活动。"""
    headers = {
        "Authorization": f"Bearer {SAVIYNT_TOKEN}",
        "Content-Type": "application/json"
    }

    # 创建活动
    response = requests.post(
        f"{SAVIYNT_URL}/ECM/api/v5/createCampaign",
        headers=headers,
        json={
            "campaignname": campaign_config["name"],
            "campaigntype": campaign_config["type"],
            "description": campaign_config["description"],
            "certifier": campaign_config["certifier_type"],
            "duedate": campaign_config["due_date"],
            "reminderdays": campaign_config["reminder_days"],
            "autorevoke": campaign_config.get("auto_revoke", True),
            "autorevokedays": campaign_config.get("auto_revoke_days", 15),
            "scope": campaign_config.get("scope", {}),
        }
    )
    response.raise_for_status()
    campaign_id = response.json().get("campaignId")

    # 启动活动
    launch_response = requests.post(
        f"{SAVIYNT_URL}/ECM/api/v5/launchCampaign",
        headers=headers,
        json={"campaignId": campaign_id}
    )
    launch_response.raise_for_status()

    return {
        "campaign_id": campaign_id,
        "status": "launched",
        "certifications_created": launch_response.json().get("certificationCount", 0)
    }

def get_campaign_status(campaign_id):
    """获取活动的当前状态和进度。"""
    headers = {"Authorization": f"Bearer {SAVIYNT_TOKEN}"}
    response = requests.get(
        f"{SAVIYNT_URL}/ECM/api/v5/getCampaignDetails",
        headers=headers,
        params={"campaignId": campaign_id}
    )
    response.raise_for_status()
    data = response.json()

    return {
        "campaign_id": campaign_id,
        "status": data.get("status"),
        "total_items": data.get("totalLineItems", 0),
        "certified": data.get("certifiedCount", 0),
        "revoked": data.get("revokedCount", 0),
        "pending": data.get("pendingCount", 0),
        "completion_rate": data.get("completionPercentage", 0),
    }
```

### 第 4 步：监控活动进度

跟踪认证进度并发送升级通知：

- **仪表板**：Saviynt 提供实时活动仪表板（含完成率）
- **提醒**：在配置的时间间隔自动发送电子邮件提醒
- **升级**：如果认证员在截止日期前未响应，升级至上级经理或自动撤销
- **委派**：允许认证员将特定项目委派给应用所有者

### 第 5 步：执行整改

活动关闭后：

1. **自动整改**：Saviynt 自动创建配置任务以撤销被拒绝的访问
2. **工单集成**：撤销任务在 ServiceNow/Jira 中创建工单进行跟踪
3. **宽限期**：配置宽限期（例如 5 个工作日），然后再实际移除访问
4. **验证**：撤销后，验证访问已从目标系统中移除
5. **审计跟踪**：记录所有决策、撤销和整改以作为合规证据

## 验证清单

- [ ] 已为每种认证类型配置活动模板
- [ ] 已分配认证员角色（经理、应用所有者、数据所有者）
- [ ] 已启用风险评分和使用情况分析
- [ ] 已配置 SoD 违规检测
- [ ] 已定义提醒和升级计划
- [ ] 已为无响应认证员配置自动撤销策略
- [ ] 活动已启动并通知认证员
- [ ] 活动完成率在关闭前超过 95%
- [ ] 已为所有被拒绝的权限创建撤销任务
- [ ] 整改在 SLA 内完成
- [ ] 已生成合规审计的活动报告
- [ ] 已为法规保留期归档证据

## 参考资料

- [Saviynt 活动与认证文档](https://docs.saviyntcloud.com/bundle/EIC-Admin-25/page/Content/Chapter15-Campaigns-and-Certifications/Campaigns.htm)
- [Saviynt 通过智能简化认证](https://saviynt.com/blog/simplifying-certifications-with-intelligence)
- [Saviynt 高级访问审查](https://oxfordcomputergroup.com/resources/saviynt-advanced-access-reviews/)
- [ISACA 访问重认证最佳实践](https://www.isaca.org/)

