You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS SageMaker Studio JupyterLab(4.x版本)中阻止文件下载

阻止AWS SageMaker Studio JupyterLab 4.x下载指定文件类型的方案

1. 强制绑定生命周期配置,禁用“无脚本”启动选项

用户能跳过生命周期配置是因为可以选择“无脚本”启动会话,通过IAM策略限制该行为,强制用户必须使用指定的生命周期配置:

创建IAM策略,拒绝用户在调用CreateApp API时不指定生命周期配置:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "sagemaker:CreateApp",
            "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:user-profile/*/app/*",
            "Condition": {
                "Null": {
                    "sagemaker:LifecycleConfigName": "true"
                }
            }
        }
    ]
}

将该策略附加到相关的IAM角色/用户,这样用户启动JupyterLab会话时必须选择指定的生命周期配置,无法跳过。

2. 通过生命周期配置修改JupyterLab行为,拦截下载

在强制启用的生命周期配置中,添加启动脚本修改JupyterLab的设置,阻止特定文件类型的下载:

方案A:添加服务器中间件拦截下载请求

创建on-start.sh脚本,在Jupyter服务器中注入中间件,拦截.csv、.ipynb文件的下载请求:

#!/bin/bash
set -e

# 创建自定义服务器扩展文件
cat > /home/sagemaker-user/.jupyter/block_download.py << EOF
from notebook.base.handlers import IPythonHandler
import tornado.web
import re

class BlockDownloadHandler(IPythonHandler):
    def prepare(self):
        # 匹配请求路径中的文件后缀
        file_pattern = re.compile(r'\.(csv|ipynb)$', re.IGNORECASE)
        if file_pattern.search(self.request.path):
            raise tornado.web.HTTPError(403, "Download of CSV/IPYNB files is prohibited")

def _jupyter_server_extension_points():
    return [{
        'module': 'block_download',
        'handler': BlockDownloadHandler,
        'url': '/files/(.*)',
    }]

def load_jupyter_server_extension(nbapp):
    nbapp.log.info("BlockDownload extension loaded successfully")
EOF

# 修改Jupyter配置文件加载扩展
echo "c.ServerApp.extra_extensions = ['block_download']" >> /home/sagemaker-user/.jupyter/jupyter_server_config.py

# 确保权限正确
chown -R sagemaker-user:sagemaker-user /home/sagemaker-user/.jupyter

方案B:修改JupyterLab UI隐藏下载选项

如果需要从UI层面禁用下载按钮,可在生命周期脚本中修改JupyterLab的配置:

#!/bin/bash
set -e

# 创建JupyterLab配置目录
mkdir -p /home/sagemaker-user/.jupyter/labconfig

# 添加配置隐藏下载菜单
cat > /home/sagemaker-user/.jupyter/labconfig/page_config.json << EOF
{
  "disabledExtensions": ["@jupyterlab/filebrowser-extension:download"],
  "settings": {
    "@jupyterlab/filebrowser-extension:browser": {
      "showDownloadButton": false
    }
  }
}
EOF

chown -R sagemaker-user:sagemaker-user /home/sagemaker-user/.jupyter/labconfig

这个方法会隐藏文件浏览器中的下载按钮,但需要注意部分用户可能通过其他方式(比如API请求)下载,建议结合方案A使用。

3. 补充:限制S3数据源的访问(如果文件来自S3)

如果Studio中的文件存储在S3桶中,可通过S3桶策略限制用户直接下载:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::YOUR_BUCKET/*",
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["*.csv", "*.ipynb"]
                }
            }
        }
    ]
}

但该策略仅针对S3中的文件,对Studio本地创建的文件无效,需配合前面的方法使用。

内容的提问来源于stack exchange,提问作者Kalana Madusanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:27:45