关于 rbac-policy-tester
rbac-policy-tester 是用于规划和检查基于角色的访问控制测试的技能,涵盖权限矩阵、各角色的正反向测试、CI 门禁和覆盖率监控。
主要功能
- 01定义角色与资源权限矩阵
- 02为各角色编写正反向测试
- 03通过权限测试设置 CI 门禁
- 04监控测试覆盖率
适用场景
- 01规划 users、orders 和 reports 的访问测试
- 02检查各角色允许与拒绝的操作
- 03将权限检查纳入 CI
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ patricio0312rev/ skills --skill rbac-policy-tester安装后在 Claude Code 中输入/rbac-policy-tester确认已加载。
详细介绍
RBAC/Policy 测试器
全面测试基于角色的访问控制。
权限测试矩阵
type Role = 'ADMIN' | 'MANAGER' | 'USER' | 'GUEST';
type Action = 'create' | 'read' | 'update' | 'delete';
type Resource = 'users' | 'orders' | 'reports';
const permissionMatrix: Record<Role, Record<Resource, Action[]>> = {
ADMIN: {
users: ['create', 'read', 'update', 'delete'],
orders: ['create', 'read', 'update', 'delete'],
reports: ['create', 'read', 'update', 'delete'],
},
MANAGER: {
users: ['read', 'update'],
orders: ['create', 'read', 'update'],
reports: ['read', 'update'],
},
USER: {
users: ['read'], // Only own profile
orders: ['create', 'read'], // Only own orders
reports: ['read'],
},
GUEST: {
users: [],
orders: [],
reports: ['read'],
},
};
describe('RBAC Tests', () => {
Object.entries(permissionMatrix).forEach(([role, resources]) => {
describe(\`Role: \${role}\`, () => {
Object.entries(resources).forEach(([resource, actions]) => {
actions.forEach(action => {
it(\`should allow \${action} on \${resource}\`, async () => {
const token = generateToken({ role });
await request(app)
.post(\`/api/\${resource}/\${action}\`)
.set('Authorization', \`Bearer \${token}\`)
.expect(200);
});
});
// Test forbidden actions
const allActions: Action[] = ['create', 'read', 'update', 'delete'];
const forbidden = allActions.filter(a => !actions.includes(a));
forbidden.forEach(action => {
it(\`should deny \${action} on \${resource}\`, async () => {
const token = generateToken({ role });
await request(app)
.post(\`/api/\${resource}/\${action}\`)
.set('Authorization', \`Bearer \${token}\`)
.expect(403);
});
});
});
});
});
});
输出检查清单
- 已定义权限矩阵
- 已为所有角色编写测试套件
- 已编写正向和负向测试
- 已启用 CI 门禁
- 已监控覆盖率 ENDFILE
评论
支持 Markdown