performing-entitlement-review-with-sailpoint-iiq

使用 SailPoint IdentityIQ 执行权限审查和访问认证活动, 包括经理认证、定向权限审查、基于角色的访问验证、 SoD 违规整改和自动化撤销工作流。 适用于访问审查、权限认证、SailPoint IIQ 治理或定期用户访问重认证相关请求。

9 stars

Best use case

performing-entitlement-review-with-sailpoint-iiq is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

使用 SailPoint IdentityIQ 执行权限审查和访问认证活动, 包括经理认证、定向权限审查、基于角色的访问验证、 SoD 违规整改和自动化撤销工作流。 适用于访问审查、权限认证、SailPoint IIQ 治理或定期用户访问重认证相关请求。

Teams using performing-entitlement-review-with-sailpoint-iiq should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/performing-entitlement-review-with-sailpoint-iiq/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-entitlement-review-with-sailpoint-iiq/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-entitlement-review-with-sailpoint-iiq/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-entitlement-review-with-sailpoint-iiq Compares

Feature / Agentperforming-entitlement-review-with-sailpoint-iiqStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

使用 SailPoint IdentityIQ 执行权限审查和访问认证活动, 包括经理认证、定向权限审查、基于角色的访问验证、 SoD 违规整改和自动化撤销工作流。 适用于访问审查、权限认证、SailPoint IIQ 治理或定期用户访问重认证相关请求。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 使用 SailPoint IdentityIQ 执行权限审查

## 使用场景

- 合规性要求季度或年度访问认证活动(SOX、HIPAA、PCI-DSS)
- 组织需要为所有直属下属进行基于经理的自动化访问审查
- 需要对敏感应用程序或高权限角色进行定向权限审查
- 必须识别并整改职责分离(SoD)违规
- 需要发现并清理孤立账户和多余权限
- 审计发现要求提供定期访问审查和整改跟踪的证据

**不适用于**实时访问控制决策;IdentityIQ 认证是周期性审查流程,旨在治理和合规验证。

## 前提条件

- 已部署 SailPoint IdentityIQ 8.2+ 并配置数据库后端(Oracle、MySQL 或 SQL Server)
- 已为所有在范围内的系统配置应用连接器(Active Directory、LDAP、数据库、SaaS 应用)
- 已聚合所有已连接来源的当前权限数据的 Identity Cube
- 已配置电子邮件服务器用于认证通知
- 已在身份模型中定义经理层级关系
- 已填充业务角色和权限术语表以提供审查员背景信息

## 工作流

### 第 1 步:定义认证活动策略

规划认证范围和审查员分配:

```java
// SailPoint IdentityIQ BeanShell - 活动配置
import sailpoint.object.*;
import sailpoint.api.*;
import java.util.*;

// 定义季度经理认证的活动计划
CertificationSchedule schedule = new CertificationSchedule();
schedule.setName("Q1-2026-Manager-Access-Review");
schedule.setDescription("所有在职员工的季度经理认证");
schedule.setType(Certification.Type.Manager);

// 配置活动范围
CertificationDefinition certDef = new CertificationDefinition();
certDef.setName("Q1 经理认证");
certDef.setOwner(context.getObjectByName(Identity.class, "cert-admin"));

// 设置认证选项
certDef.setCertifierSelectionType(CertificationDefinition.CertifierSelectionType.Manager);
certDef.setIncludeEntitlements(true);
certDef.setIncludeRoles(true);
certDef.setIncludeAccounts(true);
certDef.setIncludeAdditionalEntitlements(true);

// 从经理审查中排除服务账户
Filter exclusionFilter = Filter.ne("type", "service");
certDef.setExclusionFilter(exclusionFilter);

// 配置通知设置
certDef.setNotificationEnabled(true);
certDef.setReminderFrequency(7); // 天
certDef.setEscalationEnabled(true);
certDef.setEscalationDays(14);
certDef.setEscalationRecipient("security-governance-team");

// 设置活跃期
certDef.setActivePeriodDays(30);
certDef.setAutoCloseEnabled(true);
certDef.setDefaultRevoke(true); // 未审查则撤销

context.saveObject(certDef);
context.commitTransaction();
```

### 第 2 步:配置定向权限认证

为高风险应用程序和特权权限设置重点审查:

```java
// 针对特权访问审查的定向认证
import sailpoint.object.*;
import sailpoint.api.*;

CertificationDefinition targetedCert = new CertificationDefinition();
targetedCert.setName("特权访问定向审查");
targetedCert.setType(Certification.Type.ApplicationOwner);

// 限定为特定高风险应用程序
List applicationNames = new ArrayList();
applicationNames.add("Active Directory");
applicationNames.add("AWS IAM");
applicationNames.add("Oracle EBS");
applicationNames.add("SAP GRC");
applicationNames.add("CyberArk Vault");
targetedCert.setApplicationNames(applicationNames);

// 仅过滤特权权限
String entitlementFilter = "entitlement.classification == \"Privileged\" " +
    "|| entitlement.riskScore > 800 " +
    "|| entitlement.name.contains(\"Admin\") " +
    "|| entitlement.name.contains(\"Root\") " +
    "|| entitlement.name.contains(\"DBA\")";
targetedCert.setEntitlementFilter(entitlementFilter);

// 指定应用所有者为认证员
targetedCert.setCertifierSelectionType(
    CertificationDefinition.CertifierSelectionType.ApplicationOwner
);

// 配置审批工作流
targetedCert.setApprovalRequired(true);
targetedCert.setSignOffRequired(true);
targetedCert.setReasonRequired(true);

// 在认证期间启用 SoD 策略检查
targetedCert.setCheckSodPolicies(true);
targetedCert.setSodPolicyAction(CertificationDefinition.SodPolicyAction.Flag);

context.saveObject(targetedCert);
context.commitTransaction();
```

### 第 3 步:在认证中实施 SoD 策略检查

定义在审查期间标记违规的职责分离策略:

```java
// 创建财务系统访问冲突的 SoD 策略
import sailpoint.object.*;
import sailpoint.object.Policy;

Policy sodPolicy = new Policy();
sodPolicy.setName("财务 SoD - 应付/应收冲突");
sodPolicy.setType(Policy.TYPE_SOD);
sodPolicy.setDescription("防止用户同时拥有应付账款和应收账款访问权限");
sodPolicy.setViolationOwner(
    context.getObjectByName(Identity.class, "compliance-team")
);

// 定义冲突权限
SODConstraint constraint = new SODConstraint();
constraint.setName("AP-AR 分离");

// 左侧:应付账款权限
PolicyConstraint leftSide = new PolicyConstraint();
leftSide.setApplication("SAP ERP");
leftSide.addEntitlement("SAP_AP_PROCESSOR");
leftSide.addEntitlement("SAP_AP_APPROVER");
leftSide.addEntitlement("SAP_AP_ADMIN");
constraint.setLeftConstraint(leftSide);

// 右侧:应收账款权限
PolicyConstraint rightSide = new PolicyConstraint();
rightSide.setApplication("SAP ERP");
rightSide.addEntitlement("SAP_AR_PROCESSOR");
rightSide.addEntitlement("SAP_AR_APPROVER");
rightSide.addEntitlement("SAP_AR_ADMIN");
constraint.setRightConstraint(rightSide);

// 设置违规严重性和整改措施
constraint.setViolationSeverity("High");
constraint.setCompensatingControl("超过 $10,000 的交易需要双重审批");

sodPolicy.addConstraint(constraint);
context.saveObject(sodPolicy);
context.commitTransaction();
```

### 第 4 步:配置撤销和整改工作流

当认证员撤销权限时自动化访问移除:

```java
// 配置已撤销权限的自动配置
import sailpoint.object.*;
import sailpoint.api.*;

// 创建整改工作流
Workflow remediationWorkflow = new Workflow();
remediationWorkflow.setName("认证撤销工作流");
remediationWorkflow.setType(Workflow.Type.CertificationRemediation);

// 第 1 步:创建撤销配置计划
Step createPlan = new Step();
createPlan.setName("创建撤销计划");
createPlan.setScript(
    "import sailpoint.object.ProvisioningPlan;\n" +
    "// 创建配置计划以移除权限\n" +
    "ProvisioningPlan plan = new ProvisioningPlan();\n" +
    "plan.setIdentity(identity);\n" +
    "// 使用 Remove 操作添加账户请求\n" +
    "return plan;"
);

// 第 2 步:执行带重试逻辑的配置
Step executeProvisioning = new Step();
executeProvisioning.setName("执行撤销");
executeProvisioning.setScript(
    "import sailpoint.api.Provisioner;\n" +
    "Provisioner provisioner = new Provisioner(context);\n" +
    "ProvisioningResult result = provisioner.execute(plan);\n" +
    "if (result.isCommitted()) {\n" +
    "    auditEvent(\"权限已成功撤销\", identity, plan);\n" +
    "} else {\n" +
    "    openWorkItem(\"需要手动撤销\", identity, plan);\n" +
    "}"
);

context.saveObject(remediationWorkflow);
context.commitTransaction();
```

### 第 5 步:监控活动进度和合规指标

跟踪认证完成情况并生成合规证据:

```java
// 活动监控和报告脚本
import sailpoint.object.*;
import sailpoint.api.*;

QueryOptions qo = new QueryOptions();
qo.addFilter(Filter.eq("phase", Certification.Phase.Active));
Iterator certIterator = context.search(Certification.class, qo);

while (certIterator.hasNext()) {
    Certification cert = certIterator.next();

    System.out.println("活动: " + cert.getName());
    System.out.println("  类型: " + cert.getType());
    System.out.println("  阶段: " + cert.getPhase());
    System.out.println("  截止日期: " + cert.getExpiration());

    CertificationStats stats = cert.getStatistics();
    int totalItems = stats.getTotalEntities();
    int completedItems = stats.getCompletedEntities();
    int pendingItems = totalItems - completedItems;
    double completionPct = (completedItems * 100.0) / totalItems;

    System.out.println("  总项目数: " + totalItems);
    System.out.println("  已完成: " + completedItems + " (" +
        String.format("%.1f", completionPct) + "%)");
    System.out.println("  待处理: " + pendingItems);

    // 识别逾期认证员
    List certifiers = cert.getCertifiers();
    for (Object certObj : certifiers) {
        CertificationEntity entity = (CertificationEntity) certObj;
        if (!entity.isCompleted() && cert.isOverdue()) {
            System.out.println("  [逾期] 认证员: " +
                entity.getCertifier().getDisplayName());
        }
    }
}
```

### 第 6 步:生成审计证据和报告

导出认证结果供审计人员审查:

```java
// 生成已完成认证的审计报告
import sailpoint.object.*;
import sailpoint.api.*;
import sailpoint.tools.Util;

QueryOptions qo = new QueryOptions();
qo.addFilter(Filter.eq("phase", Certification.Phase.End));
qo.addFilter(Filter.ge("signed", Util.stringToDate("2026-01-01")));
qo.addFilter(Filter.le("signed", Util.stringToDate("2026-03-31")));

List results = context.getObjects(Certification.class, qo);

StringBuilder auditReport = new StringBuilder();
auditReport.append("访问认证审计报告\n");
auditReport.append("时间段: Q1 2026\n");
auditReport.append("生成时间: " + new Date() + "\n");
auditReport.append("=".repeat(50) + "\n\n");

for (Certification cert : results) {
    CertificationStats stats = cert.getStatistics();
    auditReport.append("活动: " + cert.getName() + "\n");
    auditReport.append("  已审核项目: " + stats.getTotalEntities() + "\n");
    auditReport.append("  已批准: " + stats.getApprovedCount() + "\n");
    auditReport.append("  已撤销: " + stats.getRevokedCount() + "\n");
    auditReport.append("  已签署: " + (cert.isSignedOff() ? "是" : "否") + "\n\n");
}

System.out.println(auditReport.toString());
```

## 关键概念

| 术语 | 定义 |
|------|------------|
| **认证活动** | 一个有组织的审查流程,指定认证员验证用户是否应在一个或多个应用程序中保留当前的访问权限 |
| **访问审查** | 活动中的单个审查单元,认证员检查特定用户权限并做出批准/撤销决策 |
| **权限** | 在目标应用程序上授予身份的特定权限、组成员资格、角色或访问权利 |
| **认证员** | 负责做出访问决策的审查员,通常为经理、应用所有者或数据所有者 |
| **撤销** | 从用户移除权限的决策,触发对目标应用程序的配置请求以移除访问权限 |
| **SoD 违规** | 职责分离冲突,用户持有来自两个或多个相互冲突的访问组的权限,产生分离风险 |
| **整改** | 根据认证决策从目标系统移除已撤销访问的自动或手动流程 |

## 工具与系统

- **SailPoint IdentityIQ**:企业身份治理平台,提供访问认证、生命周期管理和合规报告
- **IdentityIQ Compliance Manager**:运行认证活动、跟踪审查员进度和生成合规证据的模块
- **SailPoint REST API**:用于自动化认证活动、查询状态和提取审计数据的编程接口
- **IdentityIQ 报告生成器**:内置报告引擎,用于生成访问审查统计、SoD 违规摘要和趋势分析

## 常见场景

### 场景:SOX 合规季度访问审查

**背景**:一家上市公司必须根据 SOX 第 404 条展示对所有财务应用程序的季度访问审查。此前的手动审查流程需要 6 周并产生不一致的结果。

**方法**:
1. 定义应用范围:SAP ERP、Oracle Financials、银行平台和资金系统
2. 配置经理认证,设置 30 天活跃期用于常规访问审查
3. 以应用所有者为认证员,为特权财务角色创建定向权限认证
4. 启用 SoD 策略检查,标记 AP/AR、总账过账/审批和用户管理/交易冲突
5. 在第 7、14、21 天配置自动提醒,在第 25 天升级至合规团队
6. 设置活动结束时未审查项目的默认撤销,以强制完成问责制
7. 为外部审计人员生成带决策审计跟踪的签署认证报告
8. 跟踪撤销完成情况,确保所有被拒绝的访问实际上从目标系统中移除

**常见误区**:
- 未预先填充权限描述导致认证员批准所有不理解的内容
- 将活动设置得过短(不足 21 天)导致草率审查和低质量审查
- 未验证撤销是否实际配置到目标系统(纸面批准但系统中仍然活跃)
- 服务账户拥有财务系统访问权限时从审查范围中遗漏

## 输出格式

```
访问认证活动报告
=======================================
活动:          Q1-2026 经理访问审查
类型:          经理认证
时间段:        2026-01-15 至 2026-02-14
状态:          已完成

覆盖范围
已审查身份:      2,847
在范围内的应用:  34
权限总数:        18,392

决策摘要
已批准:          16,841 (91.6%)
已撤销:           1,203 (6.5%)
已缓解:             198 (1.1%)
已委派:             150 (0.8%)

撤销状态
已配置:          1,089 / 1,203 (90.5%)
待处理:             87
失败:               27(已创建手动工作项)

SoD 违规
已标记:             43
已整改:             31
补偿控制:           12

认证员合规性
准时完成率:      89.3%
需要升级:       14 位认证员
平均审查时间:   每项 3.2 分钟

签署
活动签署:    2026-02-14,由 compliance-admin 签署
审计证据:    已导出至 /reports/Q1-2026-cert-evidence.pdf
```

Related Skills

performing-yara-rule-development-for-detection

9
from killvxk/cybersecurity-skills-zh

通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。

performing-wireless-security-assessment-with-kismet

9
from killvxk/cybersecurity-skills-zh

使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-windows-artifact-analysis-with-eric-zimmerman-tools

9
from killvxk/cybersecurity-skills-zh

使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。

performing-wifi-password-cracking-with-aircrack

9
from killvxk/cybersecurity-skills-zh

在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。

performing-web-cache-poisoning-attack

9
from killvxk/cybersecurity-skills-zh

在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。

performing-web-cache-deception-attack

9
from killvxk/cybersecurity-skills-zh

通过利用 CDN 缓存层与源服务器之间的路径规范化差异,执行 Web 缓存欺骗攻击,从而缓存并获取敏感的已认证内容。

performing-web-application-vulnerability-triage

9
from killvxk/cybersecurity-skills-zh

使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。

performing-web-application-scanning-with-nikto

9
from killvxk/cybersecurity-skills-zh

Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。

performing-web-application-penetration-test

9
from killvxk/cybersecurity-skills-zh

遵循 OWASP Web 安全测试指南(WSTG)方法论,对 Web 应用程序执行系统化安全测试,识别认证、授权、 输入验证、会话管理和业务逻辑中的漏洞。测试人员以 Burp Suite 作为主要拦截代理,结合手动测试技术 发现自动化扫描器遗漏的缺陷。适用于 Web 应用渗透测试、OWASP 测试、应用安全评估或 Web 漏洞测试等请求场景。

performing-web-application-firewall-bypass

9
from killvxk/cybersecurity-skills-zh

使用编码技术、HTTP 方法操控、参数污染和载荷混淆绕过 Web 应用防火墙保护,将 SQL 注入、XSS 及其他攻击载荷穿透 WAF 检测规则。

performing-vulnerability-scanning-with-nessus

9
from killvxk/cybersecurity-skills-zh

使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。