数据安全防护盾!Amazon SageMaker Notebook 提供原始文件的下载防护功能

Python
机器学习
Amazon SageMaker
0
0
**[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Notebook 是一个托管的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)的计算实例,上面运行着 Jupyter Notebook 应用程序**。用户可以通过 Jupyter Notebook 运行 Python 代码来进行[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)的模型的开发和训练。Jupyter Notebook 允许用户下载原始 .ipynb 文件,甚至提供了一个下载按钮。企业客户出于安全和合规的考虑,希望数据科学家、模型工程师仅从 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Notebook 实例访问用于[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)训练的数据,并且希望限制他们将数据下载到本地计算机。 ![image.png](https://dev-media.amazoncloud.cn/1bb0e0801d6e4a0886efd641127f1b7d_image.png "image.png") 本文将演示**如何在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Notebook 上禁止用户下载原始文件**。 ### **原理** Jupyter Notebook 的下载功能是由 c.ContentsManager.files_handler_class 实现的,我们只需要对这个函数进行修改,就可以实现禁止下载的功能。由于 **[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Notebook 不会对 /home/ec2-user/SageMaker 目录以外的任何变更持久化,所以我们需要通过生命周期配置,在每次 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Notebook 实例启动的时候进行变更。** ### **操作** 1、在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 的控制面板上选择 Lifecycle Configuration,然后选择 Notebook Instance,并点击 Create configuration 来创建一个新的生命周期配置。 ![image.png](https://dev-media.amazoncloud.cn/b0e672ede7814cd7a012de95d77f7b72_image.png "image.png") 2、将以下内容填到 Start notebook 的脚本中,并点击创建。 ```js 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 ``` ![image.png](https://dev-media.amazoncloud.cn/6846134abc08428aacbcbbfc9f82ae66_image.png "image.png") 3、在创建新的 notebook 实例或者修改现有 notebook 的实例时候,点击 Additional configuration,选择第 2 步创建的 disable-download 生命周期配置。这样上面的脚本就会在每次 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Notebook 启动的时候对 Jupyter Notebook 的配置进行变更。 ![image.png](https://dev-media.amazoncloud.cn/aee00da4df004b418984176cda6c3886_image.png "image.png") ### **测试** 打开 Jupyter Lab 尝试下载原文件,应该会返回 File wasn’t available 的错误: ![image.png](https://dev-media.amazoncloud.cn/ed43e77d62c74c8fbce567e3bd5f55ee_image.png "image.png") ### **权限管理** 如果数据科学家、模型工程师知道管理员是通过修改 Jupyter Notebook 的配置文件来禁止下载功能的,那么就可以**通过修改配置文件的方式将下载功能恢复**。所以在第二部使用的脚本的最后部分,修改了 Jupyter Notebook 的配置文件的访问权限,并且移除了 ec2-user 的无密码 sudo 权限。这样用户就无法更改 Jupyter Notebook 的配置文件。 ### **局限性** 由于数据科学家、模型工程师没有 root 的权限,无法自行安全第三方的插件或者库。需要管理员用同样的方式,通过生命周期的脚本将所需要的插件和库安装到 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Notebook 实例上。 ![image.png](https://dev-media.amazoncloud.cn/02d842ae376248388481c64bff2ceea6_image.png "image.png") ![开发者尾巴.gif](https://dev-media.amazoncloud.cn/b2a9023a81054865b270232516fee059_%E5%BC%80%E5%8F%91%E8%80%85%E5%B0%BE%E5%B7%B4.gif "开发者尾巴.gif")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭