Amazon SageMaker Model Registry should have at least one approved model package
SageMaker Model Registry is evaluated to verify that at least one Model Package Group exists and contains at least one model package with ModelApprovalStatus = Approved. This confirms that the ML governance workflow (register → review → approve → deploy) is actively in use.
Risk
An empty Model Registry, or one with no approved packages, indicates that models are being deployed outside any review process. This breaks provenance and accountability for production ML workloads, making it impossible to enforce governance controls such as auditing, versioning, and approval workflows.
Run this check with Prowler
Run in Prowler Cloudprowler aws --checks sagemaker_models_registry_in_useRecommendation
Register all production models in the SageMaker Model Registry and enforce an approval workflow before deployment. Ensure at least one model package per group reaches Approved status. Use IAM policies to restrict who can approve model packages and integrate with CI/CD pipelines to automate registration.
Remediation
CLI
aws sagemaker list-model-package-groups
aws sagemaker list-model-packages --model-package-group-name <group-name>
aws sagemaker update-model-package --model-package-arn <arn> --model-approval-status ApprovedOther
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.sagemaker.sagemaker_client import sagemaker_client
class sagemaker_models_registry_in_use(Check):
"""Ensure that SageMaker Model Registry has at least one approved model package."""
def execute(self) -> list[Check_Report_AWS]:
"""Execute the check logic.
Returns:
A list of reports indicating whether the SageMaker Model Registry
in each region contains at least one approved model package.
"""
findings = []
for registry in sagemaker_client.sagemaker_model_registries:
report = Check_Report_AWS(metadata=self.metadata(), resource=registry)
if not registry.has_groups:
report.status = "FAIL"
report.status_extended = f"SageMaker Model Registry in region {registry.region} has no Model Package Groups."
elif registry.has_approved_packages:
report.status = "PASS"
report.status_extended = f"SageMaker Model Registry in region {registry.region} has at least one approved model package."
else:
report.status = "FAIL"
report.status_extended = f"SageMaker Model Registry in region {registry.region} has Model Package Groups but no approved model packages."
findings.append(report)
return findingsReferences
- https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html
- https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry-approve.html
- https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListModelPackageGroups.html
- https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListModelPackages.html