mcpField
R
rbac-policy-tester

rbac-policy-tester

github.com/patricio0312rev测试与质量63260 次安装41 周前更新
代码仓库

关于 rbac-policy-tester

rbac-policy-tester 是用于规划和检查基于角色的访问控制测试的技能,涵盖权限矩阵、各角色的正反向测试、CI 门禁和覆盖率监控。

主要功能

  1. 01定义角色与资源权限矩阵
  2. 02为各角色编写正反向测试
  3. 03通过权限测试设置 CI 门禁
  4. 04监控测试覆盖率

适用场景

  1. 01规划 users、orders 和 reports 的访问测试
  2. 02检查各角色允许与拒绝的操作
  3. 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