azure-aml-job-submit

Submit a training/pipeline/AutoML job whose command or script runs on the cluster as the compute MI.

derived azure emits CanModifyCode

match (effective permission)

{ "action": "Microsoft.MachineLearningServices/workspaces/jobs/write", "scope_type": "resource|resourceGroup|subscription" }

emit

source typeIdentity
source<principal>
target<AML compute cluster or compute instance (BatchJob / VirtualMachine)>
permissionsMicrosoft.MachineLearningServices/workspaces/jobs/write
conditionsservice_state
state logicACTIVE when the target compute has available nodes and the job spec carries an attacker-controlled command / script / notebook reference. CONDITIONAL(service_state) when the cluster is at zero nodes (auto-scale to zero) — the job will run when scale-up occurs. Built-in role AzureML Data Scientist grants this action.

Narrative

{principal.name} can submit a training or pipeline job (workspaces/jobs/write) to cluster {target.name}; the job command or script runs as the cluster's managed identity.

Raw rule rules/derived/azure/machinelearning.yaml

id: azure-aml-job-submit
emits: CanModifyCode
description: Submit a training/pipeline/AutoML job whose command or script runs on the cluster as the
  compute MI.
match_effective_permission:
  action: Microsoft.MachineLearningServices/workspaces/jobs/write
  scope_type: resource|resourceGroup|subscription
emit:
  source_type: Identity
  source: <principal>
  target: <AML compute cluster or compute instance (BatchJob / VirtualMachine)>
  permissions:
  - Microsoft.MachineLearningServices/workspaces/jobs/write
  conditions:
  - service_state
  state_logic: "ACTIVE when the target compute has available nodes and the job spec carries an attacker-controlled\
    \ command / script / notebook reference. CONDITIONAL(service_state) when the cluster is at zero nodes\
    \ (auto-scale to zero) \u2014 the job will run when scale-up occurs. Built-in role AzureML Data Scientist\
    \ grants this action."
  false_positive_note: The job must carry an attacker-controlled command, script, or notebook reference.
    Submitting a job with a trusted, pinned script to a zero-node cluster is CONDITIONAL(service_state).
    Does NOT require compute/write; the job submission alone triggers code execution on the existing compute.
  narrative: '{principal.name} can submit a training or pipeline job (workspaces/jobs/write) to cluster
    {target.name}; the job command or script runs as the cluster''s managed identity.'
move · open · esc close