Implement managed browser security, individual agents and observability
This commit is contained in:
1 parent
ff482ebe23
commit
ea448de2d4
172 files changed
+5404
-347
No files matched your search
@@ -1,7 +1,8 @@
|
||||
// Route permissions are enforced before handlers, including routes installed early.
|
||||
// Permissions from a session payload are never accepted as authority.
|
||||
export const adminRoles=Object.freeze({
|
||||
admin:Object.freeze(['evidence.read','incidents.read','incidents.triage','overview.read','audit.read','policy.read','policy.prepare','policy.write','devices.manage','bookmarks.read','bookmarks.write','teaching.read','teaching.write','integrations.test','sessions.manage']),
|
||||
admin:Object.freeze(['evidence.read','incidents.read','incidents.triage','overview.read','audit.read','policy.read','policy.prepare','policy.write','devices.manage','bookmarks.read','bookmarks.write','teaching.read','teaching.write','integrations.test','integrations.manage','sessions.manage']),
|
||||
analyst:Object.freeze(['evidence.read','incidents.read','incidents.triage','overview.read','audit.read']),
|
||||
operator:Object.freeze(['incidents.read','incidents.triage','overview.read','audit.read','policy.read','policy.prepare','devices.manage','bookmarks.read','bookmarks.write','teaching.read','teaching.write','integrations.test']),
|
||||
auditor:Object.freeze(['incidents.read','overview.read','audit.read','policy.read','teaching.read'])
|
||||
});
|
||||
@@ -15,25 +16,27 @@ export function normalizePrincipal(principal){
|
||||
}
|
||||
export function principalForGroups(identity,groups,config){
|
||||
const list=Array.isArray(groups)?groups:[];
|
||||
const role=list.includes(config.oidcAdminGroup)?'admin':config.oidcOperatorGroup&&list.includes(config.oidcOperatorGroup)?'operator':config.oidcAuditorGroup&&list.includes(config.oidcAuditorGroup)?'auditor':null;
|
||||
const role=list.includes(config.oidcAdminGroup)?'admin':config.oidcOperatorGroup&&list.includes(config.oidcOperatorGroup)?'operator':config.oidcAnalystGroup&&list.includes(config.oidcAnalystGroup)?'analyst':config.oidcAuditorGroup&&list.includes(config.oidcAuditorGroup)?'auditor':null;
|
||||
return role?normalizePrincipal({...identity,role}):{...identity,admin:false};
|
||||
}
|
||||
export function adminRoutePermission(method,url){
|
||||
const path=new URL(url,'http://localhost').pathname;
|
||||
if(method==='GET'){
|
||||
if(/^\/api\/admin\/evidence\/[^/]+$/.test(path))return 'evidence.read';
|
||||
if(/^\/api\/admin\/evidence\/[^/]+$/.test(path)||/^\/api\/admin\/incidents\/[^/]+\/evidence$/.test(path))return 'evidence.read';
|
||||
if(/^\/api\/admin\/incidents(?:\/[^/]+)?$/.test(path))return 'incidents.read';
|
||||
if(path==='/api/admin/user-profiles')return 'policy.read';
|
||||
if(path==='/api/admin/policy-groups')return 'policy.read';
|
||||
if(/^\/api\/admin\/policy-reviews(?:\/[^/]+)?$/.test(path))return 'policy.read';
|
||||
if(path==='/api/admin/policy/history'||/^\/api\/admin\/policy\/history\/\d+$/.test(path)||path==='/api/admin/policy/diff')return 'policy.read';
|
||||
if(path==='/api/admin/sessions')return 'sessions.manage';
|
||||
if(path==='/api/admin/siem')return 'policy.read';
|
||||
if(path==='/api/admin/overview'||path==='/api/admin/session')return 'overview.read';
|
||||
if(path==='/api/admin/events/export')return 'audit.read';
|
||||
if(path==='/api/admin/audit/integrity'||path==='/api/admin/audit/entries'||path==='/api/admin/events/export')return 'audit.read';
|
||||
if(path==='/api/admin/teaching')return 'teaching.read';
|
||||
if(/^\/api\/admin\/devices\/[^/]+\/bookmarks$/.test(path))return 'bookmarks.read';
|
||||
if(['/api/admin/management-channel','/api/admin/presets','/api/admin/integrations'].includes(path))return 'policy.read';
|
||||
}
|
||||
if(method==='PUT'&&path==='/api/admin/siem')return 'integrations.manage';
|
||||
if(method==='POST'&&path==='/api/admin/incidents')return 'incidents.triage';
|
||||
if(method==='PATCH'&&/^\/api\/admin\/incidents\/[^/]+$/.test(path))return 'incidents.triage';
|
||||
if(method==='POST'&&path==='/api/admin/policy-reviews')return 'policy.prepare';
|
||||
|
||||
Reference in new issue
Block a user