feat(automation): enforce assessment scope and document activation blockers
This commit is contained in:
@@ -61,8 +61,17 @@ def validate_config(root, config):
|
||||
|
||||
def filesystem_rules(root, config):
|
||||
repo = Path(config['repository']).resolve()
|
||||
rules = {':root':'deny', ':minimal':'read', repo.as_posix():'write',
|
||||
assessment = config.get('assessmentReportDirectory')
|
||||
rules = {':root':'deny', ':minimal':'read', repo.as_posix():'read' if assessment else 'write',
|
||||
Path(config['workerTemp']).resolve().as_posix():'write'}
|
||||
if assessment:
|
||||
if assessment != 'docs/automation/stages/PHASE-10':
|
||||
raise ValueError('Invalid assessment report directory')
|
||||
for name in (assessment, '.artifacts/orchestrator-probes'):
|
||||
path = (repo/name).resolve()
|
||||
if not path.is_relative_to(repo):
|
||||
raise ValueError('Assessment output escapes repository')
|
||||
rules[path.as_posix()] = 'write'
|
||||
for name in config.get('toolReadRoots',[]):
|
||||
path = Path(name).resolve()
|
||||
if path == Path(path.anchor) or path == Path.home():
|
||||
@@ -94,7 +103,7 @@ def permission_args(root, config, command):
|
||||
|
||||
def binding(root,config):
|
||||
value = {k:v for k,v in config.items() if k != 'executionPolicy'}
|
||||
for name in ('local_mode.py','controller.py','Probe-JobjaktSandbox.ps1'):
|
||||
for name in ('local_mode.py','controller.py','assessment_adapter.py','Probe-JobjaktSandbox.ps1'):
|
||||
source = Path(root)/name
|
||||
if source.exists():
|
||||
value[name+'Sha256'] = hashlib.sha256(source.read_bytes()).hexdigest()
|
||||
|
||||
Reference in New Issue
Block a user