aws-sagemaker-update-pipeline-config

UpdatePipeline can also change the pipeline's RoleArn (with PassRole), swapping the execution identity for all future pipeline executions.

derived aws emits CanModifyConfiguration

match (effective permission)

{ "action": "sagemaker:UpdatePipeline", "resource_type": "AWS::SageMaker::Pipeline" }

emit

source typeIdentity
target typeWorkflow
source<principal>
target<SageMaker Pipeline>
permissionssagemaker:UpdatePipeline
conditionsiam_permission

Narrative

{principal.name} can also swap {pipeline.name}'s execution role via sagemaker:UpdatePipeline, redirecting all future executions to a different (possibly more privileged) identity.

Raw rule rules/derived/aws/sagemaker.yaml

id: aws-sagemaker-update-pipeline-config
emits: CanModifyConfiguration
description: UpdatePipeline can also change the pipeline's RoleArn (with PassRole), swapping the execution
  identity for all future pipeline executions.
match_effective_permission:
  action: sagemaker:UpdatePipeline
  resource_type: AWS::SageMaker::Pipeline
emit:
  source_type: Identity
  target_type: Workflow
  source: <principal>
  target: <SageMaker Pipeline>
  permissions:
  - sagemaker:UpdatePipeline
  conditions:
  - iam_permission
  false_positive_note: 'This overlaps with aws-sagemaker-update-pipeline-definition (CanModifyCode). When
    UpdatePipeline changes the RoleArn with PassRole, it is a config-identity swap (CanModifyConfiguration
    + CanPassIdentity -> CanExecuteAs via can-execute-as execute-as-via-config-identity-swap). The de-duplication
    of the two matching rules on the same action is intentional: code-injection and role-swap are distinct
    attack paths off the same permission.'
  narrative: '{principal.name} can also swap {pipeline.name}''s execution role via sagemaker:UpdatePipeline,
    redirecting all future executions to a different (possibly more privileged) identity.'
move · open · esc close