关于 regulatory-alert-analysis
regulatory-alert-analysis 是面向合规团队的 ServiceNow GRC 技能,用于评估监管警报的业务影响。它将警报关联到法规引文、政策和控制措施,并支持生成影响评估及跟踪变更任务。
主要功能
- 01分级处理监管警报
- 02查找受影响的法规引文和政策
- 03识别受影响的控制措施与目标
- 04生成结构化影响评估
- 05创建监管变更任务
- 06将评估结果更新到警报
适用场景
- 01评估新收到的监管警报
- 02为合规委员会准备法规更新
- 03确定所需的政策和控制措施变更
- 04跟踪合规响应活动
MCP 相关
使用 ServiceNow MCP 工具查询警报、法规引文和政策,创建监管变更任务、更新警报记录,并运行影响分析脚本。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill regulatory-alert-analysis安装后在 Claude Code 中输入/regulatory-alert-analysis确认已加载。
详细介绍
法规警报分析
概述
此技能用于分析 ServiceNow GRC 中的法规警报,评估其业务影响并推动合规响应。包括:
- 按紧急程度和范围检索并分流收到的法规警报
- 识别受法规变更影响的政策、控制措施和法规引文
- 为合规领导层生成结构化的影响评估
- 创建法规变更任务,以跟踪所需的更新
- 将警报映射到现有合规框架和控制目标
- 为合规团队制定建议行动计划
适用场景:
- 收到新的法规警报,需要进行影响分析时
- 监测法规环境并开展前瞻扫描时
- 法规发生变更,现有合规计划需要更新时
- 合规委员会会议前,需要介绍法规动态时
- 评估新法规是否需要新增控制措施或更新政策时
前提条件
- 角色:
sn_compliance.manager、sn_grc.manager或admin - 插件:
com.sn_compliance、com.sn_grc - 访问权限: 对 sn_regulatory_alert、sn_regulatory_change_task、sn_compliance_policy、sn_compliance_citation 表具有读写权限
- 知识: 了解适用的法规环境和组织的合规义务
主要法规表
| 表 | 用途 | 主要字段 |
|---|---|---|
sn_regulatory_alert | 收到的法规警报 | number、short_description、description、state、priority、regulation、authority、effective_date、alert_type、impact_level |
sn_regulatory_change_task | 用于实施法规变更的任务 | number、short_description、state、assigned_to、due_date、alert、change_type |
sn_compliance_policy | 可能受影响的合规政策 | number、short_description、state、owner、policy_statement、effective_date |
sn_compliance_citation | 需要更新的法规引文 | number、short_description、reference、regulation、authority、citation_text |
sn_compliance_control | 受法规变更影响的控制措施 | number、short_description、state、control_objective、owner、effectiveness |
sn_compliance_control_objective | 需要修订的控制目标 | number、short_description、framework、effectiveness、owner |
操作步骤
步骤 1:检索待处理的法规警报
查询尚未处理或最近收到的法规警报。
使用 MCP(Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sn_regulatory_alert
query: active=true^stateIN1,2^ORDERBYDESCpriority
fields: sys_id,number,short_description,description,state,priority,regulation,authority,effective_date,alert_type,impact_level,sys_created_on
limit: 50
使用 REST API:
GET /api/now/table/sn_regulatory_alert?sysparm_query=active=true^stateIN1,2^ORDERBYDESCpriority&sysparm_fields=sys_id,number,short_description,description,state,priority,regulation,authority,effective_date,alert_type,impact_level&sysparm_limit=50
步骤 2:识别受影响的引文和法规
对于每条警报,查找引用相同法规或监管机构的现有引文。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_compliance_citation
query: active=true^regulationLIKE[regulation_name]
fields: sys_id,number,short_description,reference,regulation,authority,citation_text
limit: 50
按监管机构搜索(例如 SEC、CNIL、HHS):
Tool: SN-Query-Table
Parameters:
table_name: sn_compliance_citation
query: active=true^authorityLIKE[authority_name]
fields: sys_id,number,short_description,reference,regulation,authority,citation_text
limit: 50
使用 REST API:
GET /api/now/table/sn_compliance_citation?sysparm_query=active=true^regulationLIKE[regulation_name]&sysparm_fields=sys_id,number,short_description,reference,regulation,authority,citation_text&sysparm_limit=50
步骤 3:识别受影响的政策
查找关联到受影响法规的政策:
Tool: SN-Query-Table
Parameters:
table_name: sn_compliance_policy
query: active=true^short_descriptionLIKE[regulation_keyword]^ORdescriptionLIKE[regulation_keyword]
limit: 25
用于评估政策影响的结构化查询:
Tool: SN-Query-Table
Parameters:
table_name: sn_compliance_policy
query: active=true^short_descriptionLIKE[regulation_keyword]^ORdescriptionLIKE[regulation_keyword]
fields: sys_id,number,short_description,state,owner,policy_statement,effective_date
limit: 30
步骤 4:识别受影响的控制措施和目标
查询与受影响法规相关的控制措施:
Tool: SN-Execute-Background-Script
Parameters:
script: |
var regulationKeyword = 'GDPR'; // Replace with target regulation
var affected = {
controls: [],
objectives: [],
total_controls: 0,
total_objectives: 0
};
// Find affected control objectives
var obj = new GlideRecord('sn_compliance_control_objective');
obj.addQuery('active', true);
obj.addEncodedQuery('short_descriptionLIKE' + regulationKeyword + '^ORdescriptionLIKE' + regulationKeyword + '^ORframeworkLIKE' + regulationKeyword);
obj.query();
while (obj.next()) {
affected.total_objectives++;
affected.objectives.push({
number: obj.number.toString(),
title: obj.short_description.toString(),
framework: obj.framework.getDisplayValue() || '',
effectiveness: obj.effectiveness.getDisplayValue() || 'Not Assessed',
owner: obj.owner.getDisplayValue()
});
// Find controls for each objective
var ctrl = new GlideRecord('sn_compliance_control');
ctrl.addQuery('control_objective', obj.sys_id.toString());
ctrl.addQuery('active', true);
ctrl.query();
while (ctrl.next()) {
affected.total_controls++;
affected.controls.push({
number: ctrl.number.toString(),
title: ctrl.short_description.toString(),
state: ctrl.state.getDisplayValue(),
effectiveness: ctrl.effectiveness.getDisplayValue() || '',
objective: obj.number.toString(),
owner: ctrl.owner.getDisplayValue()
});
}
}
gs.info('AFFECTED CONTROLS AND OBJECTIVES:\n' + JSON.stringify(affected, null, 2));
description: "GRC: Identify controls and objectives affected by a regulatory change"
步骤 5:生成影响评估
为合规团队生成结构化的影响评估:
Tool: SN-Execute-Background-Script
Parameters:
script: |
var alertNumber = 'REG0001234'; // Replace with target alert
var gr = new GlideRecord('sn_regulatory_alert');
gr.addQuery('number', alertNumber);
gr.query();
if (gr.next()) {
var assessment = {
alert: {
number: gr.number.toString(),
title: gr.short_description.toString(),
description: gr.description.toString(),
regulation: gr.regulation.getDisplayValue() || gr.regulation.toString(),
authority: gr.authority.getDisplayValue() || gr.authority.toString(),
effective_date: gr.effective_date.toString(),
priority: gr.priority.getDisplayValue(),
impact_level: gr.impact_level.getDisplayValue() || ''
},
impact_analysis: {
affected_citations: 0,
affected_policies: 0,
affected_controls: 0,
affected_objectives: 0,
affected_profiles: 0
},
affected_citations: [],
affected_policies: [],
compliance_gaps: [],
recommended_actions: [],
timeline: {}
};
var regName = gr.regulation.toString() || gr.short_description.toString();
// Count affected citations
var cite = new GlideRecord('sn_compliance_citation');
cite.addEncodedQuery('regulationLIKE' + regName + '^ORauthorityLIKE' + regName);
cite.addQuery('active', true);
cite.query();
while (cite.next()) {
assessment.impact_analysis.affected_citations++;
assessment.affected_citations.push({
number: cite.number.toString(),
reference: cite.reference.toString(),
title: cite.short_description.toString()
});
}
// Count affected policies
var pol = new GlideRecord('sn_compliance_policy');
pol.addEncodedQuery('short_descriptionLIKE' + regName + '^ORdescriptionLIKE' + regName);
pol.addQuery('active', true);
pol.query();
while (pol.next()) {
assessment.impact_analysis.affected_policies++;
assessment.affected_policies.push({
number: pol.number.toString(),
title: pol.short_description.toString(),
owner: pol.owner.getDisplayValue(),
state: pol.state.getDisplayValue()
});
}
// Count affected controls
var ctrl = new GlideAggregate('sn_compliance_control');
ctrl.addEncodedQuery('short_descriptionLIKE' + regName + '^ORdescriptionLIKE' + regName);
ctrl.addQuery('active', true);
ctrl.addAggregate('COUNT');
ctrl.query();
if (ctrl.next()) assessment.impact_analysis.affected_controls = parseInt(ctrl.getAggregate('COUNT'));
// Determine impact level and timeline
var priority = parseInt(gr.priority) || 3;
var effectiveDate = gr.effective_date.toString();
if (priority <= 2 || assessment.impact_analysis.affected_policies >= 3) {
assessment.timeline = {
impact_level: 'HIGH',
initial_review_days: 5,
policy_update_days: 30,
control_update_days: 60,
full_compliance_days: 90,
escalation: 'Immediate notification to Chief Compliance Officer and General Counsel'
};
} else if (priority == 3) {
assessment.timeline = {
impact_level: 'MEDIUM',
initial_review_days: 10,
policy_update_days: 60,
control_update_days: 90,
full_compliance_days: 120,
escalation: 'Include in next compliance committee agenda'
};
} else {
assessment.timeline = {
impact_level: 'LOW',
initial_review_days: 30,
policy_update_days: 90,
control_update_days: 120,
full_compliance_days: 180,
escalation: 'Standard quarterly reporting'
};
}
// Generate recommended actions
if (assessment.impact_analysis.affected_citations > 0) {
assessment.recommended_actions.push('Review and update ' + assessment.impact_analysis.affected_citations + ' affected citations to reflect new regulatory language');
}
if (assessment.impact_analysis.affected_policies > 0) {
assessment.recommended_actions.push('Revise ' + assessment.impact_analysis.affected_policies + ' policies to align with updated regulatory requirements');
}
if (assessment.impact_analysis.affected_controls > 0) {
assessment.recommended_actions.push('Reassess ' + assessment.impact_analysis.affected_controls + ' controls for continued effectiveness under new requirements');
}
if (assessment.impact_analysis.affected_citations === 0) {
assessment.recommended_actions.push('Create new compliance citations to capture this regulatory requirement');
}
assessment.recommended_actions.push('Conduct training and awareness for affected control owners');
assessment.recommended_actions.push('Schedule post-implementation review to verify compliance');
gs.info('REGULATORY IMPACT ASSESSMENT:\n' + JSON.stringify(assessment, null, 2));
}
description: "GRC: Generate regulatory alert impact assessment"
步骤 6:创建法规变更任务
创建任务以跟踪合规响应活动:
使用 MCP:
Tool: SN-Create-Record
Parameters:
table_name: sn_regulatory_change_task
fields:
short_description: "Update data privacy policies for GDPR amendment on AI processing"
description: "Review and update all data privacy policies to address new GDPR requirements for AI-based data processing. Ensure updated policies reference new Article 22a requirements for algorithmic transparency."
assigned_to: [compliance_manager_sys_id]
due_date: 2026-05-15
priority: 2
state: 1
alert: [regulatory_alert_sys_id]
change_type: policy_update
使用 REST API:
POST /api/now/table/sn_regulatory_change_task
Content-Type: application/json
{
"short_description": "Update data privacy policies for GDPR amendment on AI processing",
"description": "Review and update data privacy policies for new GDPR AI processing requirements.",
"assigned_to": "[user_sys_id]",
"due_date": "2026-05-15",
"priority": "2",
"state": "1",
"alert": "[alert_sys_id]"
}
为控制措施更新创建其他任务:
Tool: SN-Create-Record
Parameters:
table_name: sn_regulatory_change_task
fields:
short_description: "Reassess access controls for updated GDPR AI transparency requirements"
description: "Evaluate existing access controls and data processing controls against new GDPR AI requirements. Design additional controls if gaps are identified. Update control testing procedures."
assigned_to: [control_owner_sys_id]
due_date: 2026-06-30
priority: 2
state: 1
alert: [regulatory_alert_sys_id]
change_type: control_update
步骤 7:使用评估结果更新警报
使用 MCP:
Tool: SN-Update-Record
Parameters:
table_name: sn_regulatory_alert
sys_id: [alert_sys_id]
fields:
work_notes: |
=== IMPACT ASSESSMENT COMPLETED ===
Assessment Date: 2026-03-19
Impact Level: HIGH
Affected Components:
- Citations: 4 existing citations require update
- Policies: 2 policies require revision
- Controls: 8 controls require reassessment
- Objectives: 3 control objectives may need update
Regulatory Change Tasks Created: 3
Target Compliance Date: 2026-06-30
Escalation: CCO and General Counsel notified
Recommended Actions:
1. Update citations with new regulatory language
2. Revise affected policies within 30 days
3. Reassess controls within 60 days
4. Conduct control owner training
state: 3
使用 REST API:
PATCH /api/now/table/sn_regulatory_alert/[sys_id]
Content-Type: application/json
{
"work_notes": "Impact assessment completed. HIGH impact. 3 change tasks created.",
"state": "3"
}
步骤 8:生成法规环境仪表板数据
为合规仪表板生成汇总数据:
Tool: SN-Execute-Background-Script
Parameters:
script: |
var dashboard = {
generated_date: new GlideDateTime().toString(),
alert_summary: { total_open: 0, high_impact: 0, medium_impact: 0, low_impact: 0, overdue: 0 },
by_regulation: {},
by_authority: {},
pending_tasks: { total: 0, overdue: 0 },
recent_alerts: []
};
var now = new GlideDateTime();
// Alert overview
var gr = new GlideRecord('sn_regulatory_alert');
gr.addQuery('active', true);
gr.orderByDesc('sys_created_on');
gr.query();
while (gr.next()) {
dashboard.alert_summary.total_open++;
var pri = parseInt(gr.priority) || 3;
if (pri <= 2) dashboard.alert_summary.high_impact++;
else if (pri == 3) dashboard.alert_summary.medium_impact++;
else dashboard.alert_summary.low_impact++;
// Regulation breakdown
var reg = gr.regulation.getDisplayValue() || 'Unspecified';
dashboard.by_regulation[reg] = (dashboard.by_regulation[reg] || 0) + 1;
// Authority breakdown
var auth = gr.authority.getDisplayValue() || 'Unspecified';
dashboard.by_authority[auth] = (dashboard.by_authority[auth] || 0) + 1;
// Recent alerts (top 5)
if (dashboard.recent_alerts.length < 5) {
dashboard.recent_alerts.push({
number: gr.number.toString(),
title: gr.short_description.toString(),
regulation: reg,
priority: gr.priority.getDisplayValue(),
effective_date: gr.effective_date.toString(),
created: gr.sys_created_on.toString()
});
}
}
// Pending regulatory change tasks
var task = new GlideRecord('sn_regulatory_change_task');
task.addQuery('active', true);
task.query();
while (task.next()) {
dashboard.pending_tasks.total++;
if (task.due_date.toString() && new GlideDateTime(task.due_date.toString()).compareTo(now) < 0) {
dashboard.pending_tasks.overdue++;
}
}
gs.info('REGULATORY LANDSCAPE DASHBOARD:\n' + JSON.stringify(dashboard, null, 2));
description: "GRC: Generate regulatory landscape dashboard data"
工具使用
| 操作 | MCP 工具 | REST 端点 |
|---|---|---|
| 查询警报 | SN-Query-Table | GET /api/now/table/sn_regulatory_alert |
| 搜索警报 | SN-Natural-Language-Search | N/A |
| 查询引文 | SN-Query-Table | GET /api/now/table/sn_compliance_citation |
| 查询政策 | SN-Query-Table | GET /api/now/table/sn_compliance_policy |
| 创建变更任务 | SN-Create-Record | POST /api/now/table/sn_regulatory_change_task |
| 更新警报 | SN-Update-Record | PATCH /api/now/table/sn_regulatory_alert |
| 影响分析 | SN-Execute-Background-Script | POST /api/now/table/sys_trigger |
| 架构发现 | SN-Discover-Table-Schema | GET /api/now/table/sys_dictionary |
最佳实践
- 及时分流: 在收到监管警报后 48 小时内处理;对于影响较大的警报,应在 24 小时内处理
- 监管映射: 始终将警报映射到具体引文和政策,而不只是通用框架引用
- 生效日期跟踪: 根据合规截止日期的临近程度确定优先级,而不只是考虑严重性
- 利益相关方沟通: 完成影响评估后,立即通知受影响的政策和控制负责人
- 跨法规分析: 检查一项监管变更是否会影响多个合规框架
- 证据保留: 在工作备注中记录警报原文和评估依据,以便审计追踪
- 反馈闭环: 实施变更后,请法律顾问确认响应是否充分满足监管要求
故障排除
找不到监管警报表
症状: 查询 sn_regulatory_alert 时返回找不到表
原因: 该表可能使用了不同的名称,或需要额外的插件
解决方案:
Tool: SN-Discover-Table-Schema
Parameters:
table_name: sn_regulatory_alert
如果未找到,请检查 sn_compliance_alert、sn_grc_regulatory_alert 或 sn_reg_change_alert。监管变更管理模块可能需要 com.sn_compliance_regulatory 插件。
警报没有匹配的引文
症状: 影响分析未找到与监管警报匹配的引文 原因: 新法规可能尚无对应引文,或命名约定不同 解决方案: 扩大搜索范围,使用警报描述中的关键词,而不是法规的确切名称。如果没有引文,建议采取的措施应包括创建新的引文记录。
监管变更任务表不可用
症状: 无法在 sn_regulatory_change_task 中创建记录
原因: 该表可能需要启用额外的插件,或应使用其他表
解决方案: 改用 sn_compliance_task 跟踪监管变更活动。设置类别或标签字段,以便将监管变更任务与其他合规任务区分开来。
警报生效日期解析问题
症状: 生效日期比较失败或返回错误结果
原因: 警报来源中的日期格式与 ServiceNow 内部格式不一致
解决方案: 所有日期比较均使用 GlideDateTime。如果 effective_date 字段是字符串而非日期类型,请先解析再进行比较。
示例
示例 1:GDPR 修正案影响分析
场景: 需要分析 GDPR 关于 AI 透明度的新修正案
Tool: SN-Query-Table
Parameters:
table_name: sn_regulatory_alert
query: 123TEXTQUERY321=GDPR artificial intelligence automated processing
limit: 10
影响评估输出:
- 警报: REG0002341 - GDPR 修正案:AI 透明度要求
- 主管机构: 欧洲数据保护委员会
- 生效日期: 2026-09-01
- 影响级别: 高
- 受影响的引文: 4(第 13、14、15、22 条)
- 受影响的政策: 2(数据隐私政策、AI 道德政策)
- 受影响的控制措施: 6(同意管理、算法透明度、数据主体访问)
- 建议采取的行动:
- 更新隐私声明,纳入 AI 处理披露(截止日期:2026 年 6 月)
- 实施算法影响评估流程(截止日期:2026 年 7 月)
- 修订有关 AI 决策的数据主体访问请求工作流(截止日期:2026 年 8 月)
- 为数据处理团队提供新要求方面的培训(截止日期:2026 年 8 月)
示例 2:多法规警报分类处理
场景: 合规团队需要对一批近期法规警报进行分类处理
Tool: SN-Query-Table
Parameters:
table_name: sn_regulatory_alert
query: active=true^state=1^ORDERBYpriority
fields: sys_id,number,short_description,regulation,authority,priority,effective_date
limit: 20
分类处理输出:
| 警报 | 法规 | 优先级 | 生效日期 | 行动 |
|---|---|---|---|---|
| REG0002341 | GDPR | 紧急 | 2026-09-01 | 需要进行全面影响评估 |
| REG0002342 | SOX | 高 | 2026-07-01 | 审查 ICFR 控制措施 |
| REG0002343 | HIPAA | 高 | 2026-08-15 | 更新 PHI 处理规程 |
| REG0002344 | PCI-DSS | 中 | 2026-12-01 | 安排第三季度控制措施审查 |
| REG0002345 | Local Privacy | 低 | 2027-01-01 | 持续监控;纳入季度审查 |
相关技能
grc/control-objective-management- 更新受法规变更影响的控制目标grc/issue-action-plan- 针对法规差距导致的合规问题制定行动计划grc/issue-summarization- 总结法规警报调查结果所产生的问题grc/risk-assessment-summarization- 评估法规变更的风险影响security/audit-compliance- 记录法规响应活动的审计轨迹