原文地址:https://blogs.windows.com/windowsdeveloper/2024/03/06/sandboxing-Python-with-Win32-app-isolation/
该文章发表于 2024 年 3 月 6 日,作者是微软员工 Tian Gao。文章阐述了一种利用 Win32 应用隔离(Win32 App Isolation)技术来实现 python 沙箱化的方法。
沙箱化 Python 对于开发者而言非常有用,尤其是对于需要执行来自不可信来源的代码的场景,如编码练习网站、在线解释器等。同时还可以帮助防止针对大型语言模型(LLM)的攻击。但由于 CPython 实现的灵活性,实现沙箱化一直是个挑战。
Win32 应用隔离技术通过在应用与操作系统之间创建安全边界,结合使用应用容器、虚拟化资源和代理文件系统,从而防止应用破坏操作系统。该技术为沙箱化 Python 提供了一条不同的途径,即在应用程序/操作系统层而非 Python 库层隔离。
文章接下来详细介绍了在最新 Windows Insider 版本上使用 Win32 应用隔离技术对 CPython 进行沙箱化的具体要求和指导,需要时间约 30-60 分钟。
在介绍沙箱化步骤之前,文章列出了相关的准备工作,包括获取合适版本的 Windows Insider 版本、获取 MSIX 打包工具等。
第一步是从 python.org 下载 Python 安装程序(本例使用 3.12.2 版本)。
第二步是按照文档对其进行打包,并添加 isolatedWin32-promptForAccess 能力(用于演示目的,否则将无法访问用户文件)。还需要为程序包签名证书。
第三步是安装打包后的程序包,并使用预设的别名在 PowerShell 中启动 Python 解释器。启动时会提示是否允许访问当前工作目录。
文章接下来演示了几个示例脚本,展示了在沙箱环境下,Python 对网络、文件系统的访问是如何被限制的,并会弹出权限提示框以获得用户同意。
最后,作者指出这项技术还有两个需要注意的问题:一是实际部署时如何避免手动点击提示框;二是如何授权应用访问所需的模块、脚本和数据文件。对此,文章给出了几种可能的解决方案,如将所需文件打包进应用程序、将文件放入应用的个人文件夹或发布者目录、或者使用 icalcs 工具显式设置文件访问权限。
借助这项技术,用户可以在执行不可信代码时创建较为轻量级的解决方案。隔离的 Python 解释器可以作为低权限辅助程序与普通 Python 共存,也可以通过正确配置单独使用,帮助保护系统免受入侵,同时保留了 Python 的所有功能。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved