用 Amazon SageMaker 构建兼顾敏捷与医疗级治理的临时分析平台

2026-09-01 40 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

临时分析平台常陷入两难:放宽权限,分析师可以快速验证想法,却容易造成敏感数据外泄和环境失控;集中审批,则会把一个小时的分析变成数天的工单流转。ZS 在 Amazon SageMaker 上建设了一套经过安全加固的平台,在开发敏捷性与医疗行业所需的严格治理之间取得平衡,并支撑了 200 多个 SageMaker Domain、超过 1,000 名日活跃用户。

这个规模说明,SageMaker 不只是训练模型的托管服务,也可以成为受治理的数据科学与临时分析工作台。真正困难的部分并非创建 Notebook,而是把身份、网络、数据访问、环境配置和审计组合成可持续运营的平台能力。

规模化的关键是把控制面与分析环境分开

当平台只有十几名用户时,管理员可以手工创建环境、分配角色和排查权限。扩展到 200 多个 Domain 后,人工操作会迅速产生配置漂移:有的环境允许公网访问,有的执行角色权限过大,有的 Notebook 镜像数月没有更新。

更稳妥的设计可以把平台拆成两个层次:

  • 控制面负责创建 Domain、用户配置、执行角色、网络策略、镜像和生命周期配置。只有平台团队能够修改。
  • 分析环境提供 Notebook、代码编辑器和计算资源。用户可以启动任务、安装允许的软件包并执行查询,但不能修改底层安全边界。
  • 数据授权层独立管理数据集访问。获得 Notebook 登录权限,不应自动等于获得所有数据权限。
  • 审计层集中采集身份登录、API 调用、作业执行、网络流量和数据访问记录。

这种划分保留了用户的分析自由,同时把高风险操作收进自动化控制面。Domain 数量增长时,团队扩展的是标准化模板,而不是管理员人数。

医疗级治理不能只依赖一条 IAM 策略

处理医疗或生命科学数据时,治理需要覆盖完整路径。IAM 决定谁能调用 API,但它不能单独解决 Notebook 是否连向公网、数据是否被复制到未授权存储桶,以及环境是否运行未经批准的软件。

可以围绕以下边界建立纵深防御:

  1. 身份边界:通过企业身份提供方接入,使用短期会话和角色映射,避免共享账号与长期访问密钥。
  2. 网络边界:将 Domain 放入受控 VPC,按需求禁用直接互联网访问,并通过 VPC Endpoint 访问 S3、CloudWatch、STS、ECR 等服务。
  3. 数据边界:对 S3 和加密密钥实施最小权限;将原始敏感数据、脱敏数据和分析结果分区管理。
  4. 环境边界:发布经过扫描和版本固定的镜像,通过生命周期配置执行必要的启动检查。
  5. 审计边界:使用 CloudTrail、CloudWatch Logs 以及数据服务自身的审计记录,还要明确日志保存周期、告警规则和调查责任人。

加密、私有网络和日志采集只是基础。平台还需要回答更具体的问题:哪些用户能导出数据,临时计算何时自动停止,谁能创建预签名登录链接,异常访问由哪个团队处置。

可以这样实践:盘点 Domain 并拦截配置漂移

下面是一套可改造的基线检查示例。它不是对 ZS 内部实现的复刻,而是根据上述平台目标给出的参考实践。运行前需要安装 AWS CLI 和 jq,并将 AWS_REGION 改为实际区域。当前身份至少要有 sagemaker:ListDomains 权限。

#!/usr/bin/env bash
set -euo pipefail

export AWS_REGION="us-east-1"

echo "Checking SageMaker domains in ${AWS_REGION}..."

aws sagemaker list-domains \
  --region "${AWS_REGION}" \
  --output json \
| jq -r '
  ["DOMAIN_ID", "STATUS", "AUTH_MODE", "APP_NETWORK_ACCESS"],
  (.Domains[] | [
    .DomainId,
    .Status,
    .AuthMode,
    .AppNetworkAccessType
  ])
  | @tsv'

在要求私有网络访问的组织中,可以把检查变成 CI 失败条件:

#!/usr/bin/env bash
set -euo pipefail

export AWS_REGION="us-east-1"

violations="$({
  aws sagemaker list-domains \
    --region "${AWS_REGION}" \
    --output json
} | jq '[.Domains[] | select(.AppNetworkAccessType != "VpcOnly")] | length')"

if [[ "${violations}" -gt 0 ]]; then
  echo "FAILED: ${violations} SageMaker domain(s) are not configured as VpcOnly."
  exit 1
fi

echo "PASSED: all SageMaker domains use VpcOnly network access."

还可以为分析师执行角色增加显式边界,防止其修改平台级资源。以下策略需要结合现有允许策略使用;显式拒绝会覆盖其他角色策略中的允许,因此部署前应在测试账户验证。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenySageMakerPlatformMutation",
      "Effect": "Deny",
      "Action": [
        "sagemaker:CreateDomain",
        "sagemaker:DeleteDomain",
        "sagemaker:UpdateDomain",
        "sagemaker:CreateUserProfile",
        "sagemaker:DeleteUserProfile",
        "sagemaker:UpdateUserProfile",
        "sagemaker:CreateSpace",
        "sagemaker:DeleteSpace",
        "sagemaker:UpdateSpace"
      ],
      "Resource": "*"
    }
  ]
}

这类策略只保护控制面,不能替代 S3 存储桶策略、KMS 密钥策略、网络出口控制和数据分类规则。尤其要谨慎评估用户在 Notebook 中复制、下载或重新上传数据的能力。

自助服务依赖标准化产品,而不是无限权限

临时分析之所以需要自助,是因为问题通常无法提前完整定义。平台不应强迫用户为每条查询提交工单,但可以把常用路径预先产品化:

  • 提供按团队或数据敏感度划分的 Domain 模板。
  • 预置经过批准的 Python、R、SQL 工具和内部数据访问库。
  • 给计算实例设置规格上限、预算标签和空闲关闭策略。
  • 通过自动化流程申请数据集权限,并设置到期时间。
  • 将 Domain、执行角色、VPC、安全组和日志配置纳入基础设施即代码。
  • 持续扫描全部 Domain,而不只检查新建环境。

这里的核心指标不只是环境创建速度。平台团队还应跟踪权限申请耗时、空闲资源成本、策略违规数量、镜像修复周期以及审计事件的调查时间。这样才能判断所谓“敏捷”是否建立在可控风险之上。

落地时从一条完整路径开始

不要一开始就迁移所有团队。先选择一个真实分析场景,打通企业登录、私有网络、数据授权、Notebook 启动、结果存储和审计查询的完整路径,再将其固化成可重复部署的模板。

上线前至少确认:分析角色不能修改 Domain;敏感数据权限与平台登录权限相互独立;环境默认没有不受控的公网出口;日志可以关联到具体用户和会话;计算资源会自动回收;安全团队能够复现一次数据访问事件。

ZS 的规模展示了这类模式的价值:严格治理不必等同于缓慢审批。把安全边界编码进平台、把低风险动作交给用户,才能让上千名开发者和分析师在统一规则下持续开展临时分析。


相关推荐