计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
performing-access-recertification-with-saviynt【效率与协作】在 Saviynt Enterprise Identity Cloud 中配置和执行访问重认证活动,以验证用户权限、撤销多余的访问权限,并维持对 SOX、SOC2 和 HIPAA 的合规性。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
访问重认证(也称为访问认证或访问审查)是一个周期性流程,由指定审查员验证用户对系统和数据的访问权限是否合适。Saviynt Enterprise Identity Cloud(EIC)通过认证活动自动化此流程——向审查员展示当前的访问分配,并收集批准/撤销/有条件认证的决策。活动可按计划触发(季度、半年)、事件驱动触发(部门调动、角色变更)或按需触发。Saviynt 提供风险评分、使用情况分析和同组分析等智能功能,帮助审查员做出明智决策。
| 类型 | 范围 | 触发方式 | 认证员 |
|---|---|---|---|
| 用户经理 | 经理下属的所有访问 | 按计划(季度) | 直属经理 |
| 权限所有者 | 拥有特定权限的所有用户 | 按计划(半年) | 权限/应用所有者 |
| 应用程序 | 对特定应用程序的所有访问 | 按计划 | 应用所有者 |
| 基于角色 | 分配到特定角色的所有用户 | 按计划 | 角色所有者 |
| 基于事件 | 属性发生变更的用户 | 属性变更触发 | 新经理 |
| 微认证 | 单个用户、单个权限 | 按需 | 经理或所有者 |
| 决策 | 效果 | 使用场景 |
|---|---|---|
| 认证(批准) | 保留访问 | 访问仍然需要 |
| 撤销 | 创建访问移除工单 | 不再需要访问 |
| 有条件认证 | 有条件保留访问 | 临时需要,之后再审查 |
| 委派 | 转交给另一位认证员 | 认证员缺乏决策知识 |
| 弃权 | 不记录决策 | 存在利益冲突 |
配置 → 预览 → 活跃 → 进行中 → 已完成 → 整改
│ │ │ │ │ │
│ │ │ │ │ └── 执行撤销工单
│ │ │ │ │
│ │ │ │ └── 所有决策已收集
│ │ │ │
│ │ │ └── 认证员审查并做出决策
│ │ │
│ │ └── 活动已启动,通知已发送
│ │
│ └── 仅供验证的只读预览
│
└── 定义活动参数
在 Saviynt 管理控制台中:
| 参数 | 值 |
|---|---|
| 活动名称 | Q1 2025 经理访问审查 |
| 活动类型 | 用户经理 |
| 描述 | 所有用户访问的季度审查 |
| 认证员类型 | 经理(动态 - 用户的直属经理) |
| 次级认证员 | 应用所有者(经理不可用时的备选) |
| 截止日期 | 启动后 14 天 |
| 提醒计划 | 第 7、10、13 天 |
| 升级 | 如果第 15 天无决策则自动撤销 |
配置范围过滤器:
配置智能功能:
自定义认证员在审查期间看到的内容:
显示列:
决策选项:
批量操作:
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),
}
跟踪认证进度并发送升级通知:
活动关闭后: