当前位置:   article > 正文

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

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

86363b8de223328af385ff0697a77748.gif

Amazon SageMaker Notebook 是一个托管的机器学习的计算实例,上面运行着 Jupyter Notebook 应用程序。用户可以通过 Jupyter Notebook 运行 Python 代码来进行机器学习的模型的开发和训练。Jupyter Notebook 允许用户下载原始 .ipynb 文件,甚至提供了一个下载按钮。企业客户出于安全和合规的考虑,希望数据科学家、模型工程师仅从 Amazon SageMaker Notebook 实例访问用于机器学习训练的数据,并且希望限制他们将数据下载到本地计算机。

0d9606cd3017172ed4c64efe0416c596.png

本文将演示如何在 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 来创建一个新的生命周期配置。

2fc4c5a0b17904c2141a1d56d06463e4.png

2、将以下内容填到 Start notebook 的脚本中,并点击创建。

  1. cat <<END >/home/ec2-user/.jupyter/handlers.py
  2. from tornado import web
  3. from notebook.base.handlers import IPythonHandler
  4. class ForbidFilesHandler(IPythonHandler):
  5.  @web.authenticated
  6.  def head(self, path):
  7.    self.log.info("HEAD: File download forbidden.")
  8.    raise web.HTTPError(403)
  9.  @web.authenticated
  10.  def get(self, path, include_body=True):
  11. self.log.info("GET: File download forbidden.")
  12. raise web.HTTPError(403)
  13. END
  14. cat <<END >>/home/ec2-user/.jupyter/jupyter_notebook_config.py
  15. import os, sys
  16. sys.path.append('/home/ec2-user/.jupyter/')
  17. import handlers
  18. c.ContentsManager.files_handler_class = 'handlers.ForbidFilesHandler'
  19. c.ContentsManager.files_handler_params = {}
  20. END
  21. #change the ownership of the config file and disable passwordless sudo of ec2-user
  22. chown root /home/ec2-user/.jupyter/jupyter_notebook_config.py
  23. chmod 444 /home/ec2-user/.jupyter/jupyter_notebook_config.py
  24. sed --in-place '/ec2-user ALL=(ALL) NOPASSWD:ALL/d' /etc/sudoers.d/90-cloud-init-users
  25. reboot

左右滑动查看完整示意

c6bb2643c7ba9974d6f4c92625f12c75.png

3、在创建新的 notebook 实例或者修改现有 notebook 的实例时候,点击 Additional configuration,选择第 2 步创建的 disable-download 生命周期配置。这样上面的脚本就会在每次 Amazon SageMaker Notebook 启动的时候对 Jupyter Notebook 的配置进行变更。

385c1ae515d66e70e5d847e85f448717.png

测试

打开 Jupyter Lab 尝试下载原文件,应该会返回 File wasn’t available 的错误:

8dc9d49f51374cba6ff01a94aa5f4ca7.png

权限管理

如果数据科学家、模型工程师知道管理员是通过修改 Jupyter Notebook 的配置文件来禁止下载功能的,那么就可以通过修改配置文件的方式将下载功能恢复。所以在第二部使用的脚本的最后部分,修改了 Jupyter Notebook 的配置文件的访问权限,并且移除了 ec2-user 的无密码 sudo 权限。这样用户就无法更改 Jupyter Notebook 的配置文件。

局限性

由于数据科学家、模型工程师没有 root 的权限,无法自行安全第三方的插件或者库。需要管理员用同样的方式,通过生命周期的脚本将所需要的插件和库安装到 Amazon SageMaker Notebook 实例上。

本篇作者

5ef428bc846a319c837706ec47d77c9d.jpeg

谭继聪

亚马逊云科技解决方案架构师,负责基于亚马逊云科技云计算方案架构的咨询和设计,并专注于数据库和数据分析技术方向。

817c73dec72cfa998a40424963c174f2.png

e2c13be1081871ab640259ddbf505540.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

点击阅读原文查看博客,获得更详细内容

听说,点完下面4个按钮

就不会碰到bug了!

73b33ad177195a112c426a7d387e5945.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/868321
推荐阅读
相关标签
  

闽ICP备14008679号