Token导航 LogoToken导航TokenDH.com
前端设计external-servicegithub未标认证来源可访问clear审计异常

acl-securityACL 安全

Agent Skill

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

总安装

1,297

周安装

53

GitHub Stars

63

下载量

420
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:acl-security(ACL 安全)
来源仓库:https://github.com/groeimetai/snow-flow
仓库路径:skills/acl-security
安装命令:
npx skills add https://github.com/groeimetai/snow-flow --skill acl-security
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/groeimetai/snow-flow --skill acl-security

简介

用于 ServiceNow 环境中访问控制列表(ACL)的安全模式管理与审查。

  • 支持表级、字段级、脚本包含、UI 页面和 REST 端点的 ACL 创建与评估逻辑。
  • 使用时需遵循 ACL 评估顺序,结合具体业务需求配置权限规则和安全策略。
  • 安装前请确认目标环境为 ServiceNow,并具备相应管理权限,避免误操作影响系统安全。
  • acl-security 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

ACL Security Patterns for ServiceNow

Access Control Lists (ACLs) are the foundation of ServiceNow security. They control who can read, write, create, and delete records.

ACL Evaluation Order

ACLs are evaluated in this order (first match wins):

  1. Table.field - Most specific (e.g., incident.assignment_group)
  2. **Table.*` - Table-level field wildcard
  3. Table - Table-level record ACL
  4. Parent table ACLs - If table extends another
  5. * - Global wildcard (catch-all)

ACL Types

TypeControlsExample
recordRow-level accessCan user see this incident?
fieldField-level accessCan user see assignment_group?
client_callable_script_includeScript Include accessCan user call this API?
ui_pageUI Page accessCan user view this page?
rest_endpointREST API accessCan user call this endpoint?

Creating ACLs via MCP

// Table-level READ ACL
snow_create_acl({
  name: "incident",
  operation: "read",
  admin_overrides: true,
  active: true,
  roles: ["itil", "incident_manager"],
  condition: "current.active == true",
  script: "",
})

// Field-level WRITE ACL
snow_create_acl({
  name: "incident.priority",
  operation: "write",
  roles: ["incident_manager"],
  condition: "",
  script: "answer = current.state < 6;", // Only if not resolved
})

Common ACL Patterns

Pattern 1: Role-Based Access

// Condition: (empty - role check only)
// Roles: itil, incident_manager
// Script: (empty)

// Users with itil OR incident_manager role can access

Pattern 2: Ownership-Based Access

// Condition:
current.caller_id == gs.getUserID() || current.assigned_to == gs.getUserID() || current.opened_by == gs.getUserID()

// User can access their own records

Pattern 3: Group-Based Access

// Script:
;(function () {
  var userGroups = gs.getUser().getMyGroups()
  answer = userGroups.indexOf(current.assignment_group.toString()) >= 0
})()

// User can access records assigned to their groups

Pattern 4: Manager Chain Access

// Script:
;(function () {
  var callerManager = current.caller_id.manager
  var currentUser = gs.getUserID()

  // Check if current user is in caller's management chain
  while (callerManager && !callerManager.nil()) {
    if (callerManager.toString() == currentUser) {
      answer = true
      return
    }
    callerManager = callerManager.manager
  }
  answer = false
})()

Pattern 5: Time-Based Access

// Script:
;(function () {
  var now = new GlideDateTime()
  var hour = parseInt(now.getLocalTime().getHourOfDayLocalTime())

  // Only allow access during business hours (8 AM - 6 PM)
  answer = hour >= 8 && hour < 18
})()

Pattern 6: Data Classification

// Script:
;(function () {
  var classification = current.u_data_classification.toString()
  var userClearance = gs.getUser().getRecord().getValue("u_security_clearance")

  var levels = { public: 0, internal: 1, confidential: 2, secret: 3 }
  answer = levels[userClearance] >= levels[classification]
})()

Field-Level Security Patterns

Hide Sensitive Fields

// ACL: incident.u_ssn (Social Security Number)
// Operation: read
// Script:
answer = gs.hasRole("hr_admin")

// Only HR admins can see SSN field

Read-Only After State Change

// ACL: incident.short_description
// Operation: write
// Script:
answer = current.state < 6 // Can't edit after Resolved

// Prevent editing after resolution

Conditional Field Visibility

// ACL: incident.u_internal_notes
// Operation: read
// Condition:
gs.hasRole("itil") || current.caller_id == gs.getUserID()

// ITIL users see all, callers see their own

Security Best Practices

1. Principle of Least Privilege

// ❌ BAD - Too permissive
// Roles: (empty) - allows everyone

// ✅ GOOD - Explicit roles
// Roles: itil, incident_manager

2. Deny by Default

// Create a catch-all deny ACL at lowest priority
// Name: *
// Operation: read
// Condition: false
// This ensures anything not explicitly allowed is denied

3. Avoid Complex Scripts

// ❌ BAD - Complex script ACL (slow)
;(function () {
  var gr = new GlideRecord("sys_user_grmember")
  gr.addQuery("user", gs.getUserID())
  gr.query()
  while (gr.next()) {
    // Complex logic...
  }
})()

// ✅ GOOD - Use conditions when possible
// Condition: gs.getUser().isMemberOf(current.assignment_group)

4. Test ACLs Thoroughly

// Use "Impersonate User" to test ACLs as different users
// Check: Navigation, List views, Forms, Related lists
// Verify: Fields hidden, buttons disabled, records filtered

Debug ACLs

Enable ACL Debugging

// In a background script or temporarily in your code:
gs.setProperty("glide.security.debug", "true")
gs.log("ACL Debug enabled")

// Check System Logs for ACL evaluation details

Check User Permissions

// Check if current user can read a record
var gr = new GlideRecord("incident")
gr.get("sys_id_here")

gs.info("Can Read: " + gr.canRead())
gs.info("Can Write: " + gr.canWrite())
gs.info("Can Delete: " + gr.canDelete())

// Check field-level
gs.info("Can read assignment_group: " + gr.assignment_group.canRead())
gs.info("Can write assignment_group: " + gr.assignment_group.canWrite())

Common Mistakes

MistakeProblemSolution
No ACLs on custom tablesAnyone can accessCreate ACLs immediately
Only role-based ACLsNo row-level securityAdd conditions for data segregation
Scripts that query DBPerformance issuesUse conditions or cache results
Testing only as adminAdmin bypasses ACLsTest as actual end users
Forgetting REST APIsAPIs bypass UI ACLsCreate specific REST ACLs

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

27.81%
按下载量换算117

Antigravity

23.8%
按下载量换算100

Gemini CLI

16.9%
按下载量换算71

windsurf

10.45%
按下载量换算44

Codex

6.52%
按下载量换算27

OpenCode

3.61%
按下载量换算15

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

通过

权限和风险

external-service

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills