关于 product-compliance
面向 SAM 分析师和许可证经理的 ServiceNow Software Asset Management 软件产品合规审查技能。它比较授权与安装及使用情况,并支持差距分析、整改规划和审计报告。
主要功能
- 01获取产品与发现模型详情
- 02比较授权、安装和使用情况
- 03识别授权不足或过量
- 04查看合规与核对结果
- 05制定整改计划并生成审计报告
适用场景
- 01审查软件产品合规情况
- 02准备供应商审计
- 03寻找软件许可证成本优化机会
- 04生成定期合规报告
MCP 相关
该技能说明如何使用 SN-Query-Table、SN-Natural-Language-Search 和 SN-Get-Record 等 MCP 工具检索软件、许可证、安装及合规记录。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill product-compliance安装后在 Claude Code 中输入/product-compliance确认已加载。
详细介绍
产品合规性
概述
此技能提供了一套结构化方法,用于汇总 ServiceNow Software Asset Management(SAM)中的软件产品合规性。它可帮助 SAM 分析师和许可证管理员评估企业内软件产品的合规状况。
主要功能:
- 检索软件产品详情及关联的发现模型
- 汇总许可证授权与实际安装情况(权利与使用情况)
- 识别安装数量超过授权数量的合规差距
- 标出授权数量超过使用量的过度许可产品
- 分析合规结果和对账状态
- 为合规违规情况生成整改行动计划
- 生成可用于审计的合规报告
适用场景: SAM 分析师需要审查特定软件产品或发布商的合规情况、准备供应商审计、寻找成本优化机会,或生成定期合规报告时。
前提条件
- 角色:
sam_admin、sam_user、license_admin或asset_manager - 访问权限: 对
samp_sw_product、samp_sw_install、samp_license、samp_compliance_result、samp_entitlement_result和cmdb_sam_sw_discovery_model表具有读取权限 - 插件: 必须启用 Software Asset Management(com.snc.samp),并使用 SAM Professional 或 Enterprise
- 数据: 已完成软件发现和规范化,且许可证记录为最新
操作步骤
步骤 1:检索软件产品详情
获取软件产品记录及其分类。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: samp_sw_product
query: display_name=Microsoft Office 365
fields: sys_id,display_name,manufacturer,version,is_licensable,product_classification,lifecycle_stage,lifecycle_end_date,platform,category
limit: 5
按发布商进行更广泛的搜索:
Tool: SN-Query-Table
Parameters:
table_name: samp_sw_product
query: display_nameLIKEMicrosoft^is_licensable=true
使用 REST API:
GET /api/now/table/samp_sw_product?sysparm_query=display_nameLIKEMicrosoft Office^is_licensable=true&sysparm_fields=sys_id,display_name,manufacturer,version,is_licensable,product_classification,lifecycle_stage,lifecycle_end_date,platform,category&sysparm_limit=10&sysparm_display_value=true
步骤 2:检索合规结果
获取该产品最新的合规计算结果。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: samp_compliance_result
query: software_product=[PRODUCT_SYS_ID]^ORDERBYDESCsys_updated_on
fields: sys_id,software_product,compliance_status,rights_count,install_count,usage_count,compliance_gap,last_compliance_run,license_metric,publisher
limit: 1
使用 REST API:
GET /api/now/table/samp_compliance_result?sysparm_query=software_product=[PRODUCT_SYS_ID]^ORDERBYDESCsys_updated_on&sysparm_fields=sys_id,software_product,compliance_status,rights_count,install_count,usage_count,compliance_gap,last_compliance_run,license_metric,publisher&sysparm_limit=1&sysparm_display_value=true
步骤 3:检索许可证授权
获取与该产品关联的所有许可证记录。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: samp_license
query: software_product=[PRODUCT_SYS_ID]^ORDERBYDESCstart_date
fields: sys_id,display_name,license_metric,rights,used_rights,available_rights,start_date,end_date,contract,vendor,cost,state,license_type,compliance_status
limit: 20
使用 REST API:
GET /api/now/table/samp_license?sysparm_query=software_product=[PRODUCT_SYS_ID]^ORDERBYDESCstart_date&sysparm_fields=sys_id,display_name,license_metric,rights,used_rights,available_rights,start_date,end_date,contract,vendor,cost,state,license_type,compliance_status&sysparm_limit=20&sysparm_display_value=true
步骤 4:检索安装数据
获取当前安装情况,以了解实际部署情况。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: samp_sw_install
query: norm_product=[PRODUCT_SYS_ID]^is_reconciled=true
fields: sys_id,display_name,installed_on,installed_on.location,installed_on.assigned_to,install_date,discovery_source,is_reconciled,last_scanned
limit: 100
按地点统计安装数量:
Tool: SN-Query-Table
Parameters:
table_name: samp_sw_install
query: norm_product=[PRODUCT_SYS_ID]^is_reconciled=true^GROUPBYinstalled_on.location
fields: installed_on.location
limit: 50
使用 REST API:
GET /api/now/table/samp_sw_install?sysparm_query=norm_product=[PRODUCT_SYS_ID]^is_reconciled=true&sysparm_fields=sys_id,display_name,installed_on,install_date,discovery_source,is_reconciled,last_scanned&sysparm_limit=100&sysparm_display_value=true
步骤 5:检索授权分配情况
检查许可证授权的分配方式。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: samp_entitlement_result
query: software_product=[PRODUCT_SYS_ID]^ORDERBYDESCsys_updated_on
fields: sys_id,software_product,license,allocated_rights,consumed_rights,remaining_rights,metric_group,allocation_type
limit: 20
使用 REST API:
GET /api/now/table/samp_entitlement_result?sysparm_query=software_product=[PRODUCT_SYS_ID]^ORDERBYDESCsys_updated_on&sysparm_fields=sys_id,software_product,license,allocated_rights,consumed_rights,remaining_rights,metric_group,allocation_type&sysparm_limit=20&sysparm_display_value=true
步骤 6:识别合规差距和风险
分析合规差距并确定整改需求。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: samp_compliance_result
query: compliance_status=non_compliant^ORDERBYcompliance_gap
fields: sys_id,software_product,publisher,compliance_status,rights_count,install_count,compliance_gap,license_metric,last_compliance_run
limit: 20
使用 REST API:
GET /api/now/table/samp_compliance_result?sysparm_query=compliance_status=non_compliant^ORDERBYcompliance_gap&sysparm_fields=sys_id,software_product,publisher,compliance_status,rights_count,install_count,compliance_gap,license_metric&sysparm_limit=20&sysparm_display_value=true
步骤 7:编制合规摘要
将收集的数据整理为结构化合规报告:
=== SOFTWARE COMPLIANCE SUMMARY ===
Product: [product_name]
Publisher: [manufacturer] | Version: [version]
Lifecycle: [lifecycle_stage] | EOL: [lifecycle_end_date]
Last Compliance Run: [last_compliance_run]
COMPLIANCE STATUS: [COMPLIANT / NON-COMPLIANT / OVER-LICENSED]
LICENSE POSITION:
Total Entitlements (Rights): [rights_count]
Total Installations: [install_count]
Actual Usage: [usage_count]
Compliance Gap: [compliance_gap] ([positive = over-licensed, negative = under-licensed])
LICENSE INVENTORY:
| License | Type | Metric | Rights | Used | Available | Expiry |
|---------|------|--------|--------|------|-----------|--------|
| [name] | [type] | [metric] | [rights] | [used] | [avail] | [end_date] |
INSTALLATION DISTRIBUTION:
| Location | Install Count | % of Total |
|----------|--------------|------------|
| [location] | [count] | [pct]% |
RISK ASSESSMENT:
- Compliance Gap: [gap_description]
- Expiring Licenses: [count] licenses expiring within 90 days
- Unreconciled Installs: [count] installations not matched to entitlements
- Lifecycle Risk: [EOL/EOS warnings]
REMEDIATION ACTIONS:
1. [action_description] - Priority: [High/Medium/Low]
2. [action_description] - Priority: [High/Medium/Low]
COST OPTIMIZATION:
- Over-licensed savings potential: $[amount]
- License consolidation opportunities: [description]
工具使用
MCP 工具参考
| 工具 | 使用场景 |
|---|---|
SN-Natural-Language-Search | 使用自然语言搜索产品(例如,“查找不合规的 Adobe 产品”) |
SN-Query-Table | 对合规、许可证和安装数据执行结构化查询 |
SN-Get-Record | 通过 sys_id 检索特定产品、许可证或合规记录 |
REST API 参考
| 端点 | 方法 | 用途 |
|---|---|---|
/api/now/table/samp_sw_product | GET | 查询软件产品目录 |
/api/now/table/samp_compliance_result | GET | 查询合规计算结果 |
/api/now/table/samp_license | GET | 查询许可证授权记录 |
/api/now/table/samp_sw_install | GET | 查询软件安装记录 |
/api/now/table/samp_entitlement_result | GET | 查询授权分配详情 |
/api/now/table/cmdb_sam_sw_discovery_model | GET | 查询发现模型映射 |
最佳实践
- 首先运行合规性计算: 生成报告前,确保最近一次合规性作业已完成
- 使用标准化产品: 始终引用
samp_sw_product(标准化后的产品),而不是原始发现记录 - 检查许可证到期时间: 标记将在 90 天内到期的许可证,因为它们会影响未来的合规性
- 区分使用量与安装量: 对于按使用量计费的产品,安装数量与实际使用数量可能有显著差异
- 考虑许可证指标: 不同指标(按设备、按用户、按核心)需要采用不同的比较方法
- 验证发现数据: 过时的发现记录会抬高安装数量;请检查
last_scanned日期 - 记录补救措施: 始终为合规性差距配套具体、可执行的补救步骤
- 考虑许可证流动性: 某些许可证允许重新分配;评估合规性时应考虑流动规则
故障排除
“合规性结果显示权利数量和安装数量均为零”
原因: 尚未运行合规性计算,或者该产品未映射到任何发现模型。
解决方案: 确认该产品在 cmdb_sam_sw_discovery_model 中关联了发现模型。在 SAM Workspace 中触发合规性计算。
“安装数量异常偏高”
原因: 多个发现源可能报告了重复安装,或者标准化规则范围过宽。
解决方案: 检查是否存在重复的 samp_sw_install 记录。检查将发现模型映射到产品的标准化规则。按 is_reconciled=true 筛选。
“许可证记录未关联到产品”
原因: 许可证记录可能引用了不同的产品版本,或者使用了不同的产品引用字段。
解决方案: 检查许可证上的 software_product 和 software_model 字段。确认产品标准化涵盖所有相关版本。
“合规性状态显示合规,但差额为负数”
原因: 合规性计算可能使用了与预期不同的指标,或者适用了分容量规则。
解决方案: 检查合规性结果中的 license_metric 字段。确认该产品是否使用处理器价值单位(PVU)或其他分容量指标。
示例
示例 1:Microsoft Office 365 合规性审查
场景: SAM 分析师为即将到来的 Microsoft 审计准备合规性摘要。
步骤 1 - 查找产品:
Tool: SN-Query-Table
Parameters:
table_name: samp_sw_product
query: display_nameLIKEOffice 365^manufacturer.nameLIKEMicrosoft
fields: sys_id,display_name,manufacturer,version,is_licensable
limit: 5
步骤 2 - 获取合规性数据:
Tool: SN-Query-Table
Parameters:
table_name: samp_compliance_result
query: software_product=<sys_id>
fields: compliance_status,rights_count,install_count,usage_count,compliance_gap,last_compliance_run
limit: 1
输出摘要:
COMPLIANCE SUMMARY - Microsoft Office 365 E3
Publisher: Microsoft | Metric: Per User
Last Run: Mar 18, 2026
STATUS: NON-COMPLIANT
Rights: 2,500 licenses | Installs: 2,847 | Active Users: 2,712
Gap: -212 licenses (under-licensed)
LICENSES:
- EA Agreement EA-2024-001: 2,000 rights (exp Dec 2026)
- CSP Monthly: 500 rights (active, monthly)
REMEDIATION:
1. Purchase 212 additional E3 licenses - Priority: High
2. Review 135 installed but inactive users for removal - Priority: Medium
3. Evaluate E3 to E1 downgrade for 340 light users - Priority: Medium
ESTIMATED COST: $212 x $23/user/mo = $4,876/mo additional
SAVINGS OPPORTUNITY: Downgrade 340 users = $5,440/mo savings
示例 2:发布商范围的合规性仪表板
场景: SAM 经理需要了解所有 Adobe 产品的合规性概况。
Tool: SN-Query-Table
Parameters:
table_name: samp_compliance_result
query: publisher.nameLIKEAdobe^ORDERBYcompliance_status
fields: software_product,compliance_status,rights_count,install_count,compliance_gap,license_metric
limit: 20
输出:
ADOBE COMPLIANCE OVERVIEW
Total Products: 8 | Compliant: 5 | Non-Compliant: 2 | Over-Licensed: 1
NON-COMPLIANT:
1. Adobe Acrobat Pro DC
Rights: 450 | Installs: 623 | Gap: -173
Action: Harvest unused installs, purchase delta
2. Adobe Illustrator CC
Rights: 50 | Installs: 78 | Gap: -28
Action: Verify business need for 28 excess installs
OVER-LICENSED:
1. Adobe Photoshop CC
Rights: 200 | Installs: 89 | Gap: +111
Action: Reduce licenses at next renewal (-$6,660/yr)
TOTAL RISK EXPOSURE: ~$48,000 (est. true-up cost)
SAVINGS OPPORTUNITY: ~$6,660/yr (Photoshop right-sizing)
相关技能
sam/saas-user-resolution- 解决 SaaS 用户差异并优化许可证procurement/invoice-management- 跟踪许可证采购和开票admin/configuration-validation- 验证 SAM 插件配置reporting/executive-dashboard- 生成高管合规性仪表板