赞
踩
Amazon SageMaker Notebook 是一个托管的机器学习的计算实例,上面运行着 Jupyter Notebook 应用程序。用户可以通过 Jupyter Notebook 运行 Python 代码来进行机器学习的模型的开发和训练。Jupyter Notebook 允许用户下载原始 .ipynb 文件,甚至提供了一个下载按钮。企业客户出于安全和合规的考虑,希望数据科学家、模型工程师仅从 Amazon SageMaker Notebook 实例访问用于机器学习训练的数据,并且希望限制他们将数据下载到本地计算机。
本文将演示如何在 Amazon SageMaker Notebook 上禁止用户下载原始文件。
原理
Jupyter Notebook 的下载功能是由 c.ContentsManager.files_handler_class 实现的,我们只需要对这个函数进行修改,就可以实现禁止下载的功能。由于 Amazon SageMaker Notebook 不会对 /home/ec2-user/SageMaker 目录以外的任何变更持久化,所以我们需要通过生命周期配置,在每次 Amazon SageMaker Notebook 实例启动的时候进行变更。
操作
1、在 Amazon SageMaker 的控制面板上选择 Lifecycle Configuration,然后选择 Notebook Instance,并点击 Create configuration 来创建一个新的生命周期配置。
2、将以下内容填到 Start notebook 的脚本中,并点击创建。
- cat <<END >/home/ec2-user/.jupyter/handlers.py
- from tornado import web
- from notebook.base.handlers import IPythonHandler
-
-
- class ForbidFilesHandler(IPythonHandler):
- @web.authenticated
- def head(self, path):
- self.log.info("HEAD: File download forbidden.")
- raise web.HTTPError(403)
-
-
- @web.authenticated
- def get(self, path, include_body=True):
- self.log.info("GET: File download forbidden.")
- raise web.HTTPError(403)
- END
-
-
- cat <<END >>/home/ec2-user/.jupyter/jupyter_notebook_config.py
- import os, sys
- sys.path.append('/home/ec2-user/.jupyter/')
- import handlers
- c.ContentsManager.files_handler_class = 'handlers.ForbidFilesHandler'
- c.ContentsManager.files_handler_params = {}
- END
-
-
- #change the ownership of the config file and disable passwordless sudo of ec2-user
- chown root /home/ec2-user/.jupyter/jupyter_notebook_config.py
- chmod 444 /home/ec2-user/.jupyter/jupyter_notebook_config.py
- sed --in-place '/ec2-user ALL=(ALL) NOPASSWD:ALL/d' /etc/sudoers.d/90-cloud-init-users
- reboot
左右滑动查看完整示意
3、在创建新的 notebook 实例或者修改现有 notebook 的实例时候,点击 Additional configuration,选择第 2 步创建的 disable-download 生命周期配置。这样上面的脚本就会在每次 Amazon SageMaker Notebook 启动的时候对 Jupyter Notebook 的配置进行变更。
测试
打开 Jupyter Lab 尝试下载原文件,应该会返回 File wasn’t available 的错误:
权限管理
如果数据科学家、模型工程师知道管理员是通过修改 Jupyter Notebook 的配置文件来禁止下载功能的,那么就可以通过修改配置文件的方式将下载功能恢复。所以在第二部使用的脚本的最后部分,修改了 Jupyter Notebook 的配置文件的访问权限,并且移除了 ec2-user 的无密码 sudo 权限。这样用户就无法更改 Jupyter Notebook 的配置文件。
局限性
由于数据科学家、模型工程师没有 root 的权限,无法自行安全第三方的插件或者库。需要管理员用同样的方式,通过生命周期的脚本将所需要的插件和库安装到 Amazon SageMaker Notebook 实例上。
本篇作者
谭继聪
亚马逊云科技解决方案架构师,负责基于亚马逊云科技云计算方案架构的咨询和设计,并专注于数据库和数据分析技术方向。
星标不迷路,开发更极速!
关注后记得星标「亚马逊云开发者」
点击阅读原文查看博客,获得更详细内容
听说,点完下面4个按钮
就不会碰到bug了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。