Skip to main content
emnode
Compliance Medium severity

AWS Security Hub · SageMaker

SageMaker.10: Explainability jobs inter-container encryption

Written and reviewed by Emnode · Last reviewed

What does AWS Security Hub SageMaker.10 check?

SageMaker.10 checks model explainability job definitions that run on two or more instances. It fails when such a definition has `EnableInterContainerTrafficEncryption` (inside `MonitoringNetworkConfig`) set to false or unset. The flag is optional, so a definition created without it defaults to unencrypted inter-container traffic. A single-instance definition is not evaluated against this control.

Why does SageMaker.10 matter?

Explainability jobs that run on multiple instances move the data being analysed between containers. Without inter-container encryption that traffic crosses the network unprotected, exposing sensitive feature data, model parameters, and weights mid-job. Setting the flag explicitly keeps those distributed jobs from falling back to the unencrypted default.

How do I fix SageMaker.10?

  1. Audit explainability job definitions and inspect `MonitoringNetworkConfig.EnableInterContainerTrafficEncryption`.
  2. Recreate each failing definition with the flag set to true; it cannot be patched in place.
  3. Set the flag explicitly in your IaC templates so new definitions never inherit the off default.
  4. Clear the related controls (.9, .13, .15) at the same time, since they check the same flag on sibling job types.

Remediation script · bash

# Disable root across every notebook that has it on (mutable on a stopped instance).
for n in $(aws sagemaker list-notebook-instances \
    --query 'NotebookInstances[].NotebookInstanceName' --output text); do
  root=$(aws sagemaker describe-notebook-instance --notebook-instance-name "$n" \
    --query 'RootAccess' --output text)
  if [ "$root" = "Enabled" ]; then
    aws sagemaker stop-notebook-instance --notebook-instance-name "$n"
    aws sagemaker wait notebook-instance-stopped --notebook-instance-name "$n"
    aws sagemaker update-notebook-instance --notebook-instance-name "$n" --root-access Disabled
    aws sagemaker start-notebook-instance --notebook-instance-name "$n"
    echo "$n: root access disabled"
  fi
done

# Immutable settings need a rebuild. Recreate a notebook locked down: private subnet,
# no direct internet. (DirectInternetAccess and SubnetId cannot be changed in place.)
aws sagemaker create-notebook-instance \
  --notebook-instance-name ml-feature-exploration \
  --instance-type ml.t3.medium \
  --role-arn arn:aws:iam::111122223333:role/SageMakerExecution \
  --subnet-id subnet-0ab12cd34ef56 \
  --security-group-ids sg-0aa11bb22cc33 \
  --direct-internet-access Disabled \
  --root-access Disabled

Full walkthrough (console steps, edge cases and verification) in the lesson Harden SageMaker and ML workloads.

Is SageMaker.10 a false positive?

The underlying AWS Config rule (`SAGEMAKER_MODEL_EXPLAINABILITY_JOB_ENCRYPT_IN_TRANSIT`) only evaluates definitions whose instance count is 2 or greater, so a single-instance explainability job definition with the flag off is compliant and should not raise a finding here. If a scanner or downstream report flags a one-instance definition as failing this control, that is a false positive: there is no inter-container traffic to encrypt on a single instance. Confirm the definition's instance count before remediating; if it is genuinely distributed (two or more instances), the finding is real and you should recreate the definition with `EnableInterContainerTrafficEncryption` set to true.

Part of the learning path Lock down access