pytm 使用教程

pytm 使用教程

pytm A Pythonic framework for threat modeling pytm 项目地址: https://gitcode.com/gh_mirrors/py/pytm

1. 项目介绍

pytm 是一个基于 Python 的威胁模型框架,旨在将威胁模型的过程自动化并左移,使其更贴近开发流程。通过输入和定义架构设计,pytm 可以自动生成数据流程图(DFD)、序列图以及与系统相关的威胁列表。

2. 项目快速启动

在开始之前,请确保您的系统满足以下要求:

  • 操作系统:Linux/MacOS
  • Python 版本:Python 3.x
  • 安装 Graphviz 包
  • 安装 Java(OpenJDK 10 或 11)
  • 安装 plantuml.jar

以下是快速启动 pytm 的步骤:

首先,创建一个名为 tm 的目录,并运行 tm.py 脚本生成报告和图示文件:

mkdir -p tm
./tm.py --report docs/basic_template.md | pandoc -f markdown -t html > tm/report.html
./tm.py --dfd | dot -Tpng -o tm/dfd.png
./tm.py --seq | java -Djava.awt.headless=true -jar $PLANTUML_PATH -tpng -pipe > tm/seq.png

如果您有 GNU make 安装,可以使用 Makefile 简化上述步骤。只需运行以下命令:

make MODEL=the_name_of_your_model_minus_.py

确保 plantuml.jar 与您的模型在同一个目录下,或者设置了 PLANTUML_PATH

为了避免安装所有依赖,如 pandocJava,可以在容器内运行脚本:

# 仅需执行一次
export USE_DOCKER=true
make image
# 模型更改后调用
make

3. 应用案例和最佳实践

以下是一个简单的应用案例:

创建一个名为 tm.py 的文件,描述一个简单的应用程序,用户登录并发布评论,应用服务器将评论存储到数据库中。有一个 AWS Lambda 定期清理数据库。

from pytm.pytm import TM, Server, Datastore, Dataflow, Boundary, Actor, Lambda, Data, Classification

tm = TM("my test tm")
tm.description = "another test tm"
tm.isOrdered = True

User_Web = Boundary("User/Web")
Web_DB = Boundary("Web/DB")

user = Actor("User")
user.inBoundary = User_Web

web = Server("Web Server")
web.OS = "CloudOS"
web.isHardened = True
web.sourceCode = "server/web.cc"

db = Datastore("SQL Database (*)")
db.OS = "CentOS"
db.isHardened = False
db.inBoundary = Web_DB
db.isSql = True
db.inScope = False
db.sourceCode = "model/schema.sql"

comments = Data(
    name="Comments",
    description="Comments in HTML or Markdown",
    classification=Classification.PUBLIC,
    isPII=False,
    isCredentials=False,
    isStored=True,
    isSourceEncryptedAtRest=False,
    isDestEncryptedAtRest=True
)

results = Data(
    name="results",
    description="Results of insert op",
    classification=Classification.SENSITIVE,
    isPII=False,
    isCredentials=False,
    isStored=True,
    isSourceEncryptedAtRest=False,
    isDestEncryptedAtRest=True
)

my_lambda = Lambda("cleanDBevery6hours")
my_lambda.hasAccess = ...

在上述代码中,您需要根据实际情况填写 my_lambda.hasAccess 的具体内容。

4. 典型生态项目

目前 pytm 的生态项目还比较有限,但您可以参考以下项目:

  • pytm: 官方 Python 威胁模型框架
  • pytm-templates: 提供了多种威胁模型报告模板

随着 pytm 的发展,会有更多的生态项目出现,以丰富其功能和用途。

pytm A Pythonic framework for threat modeling pytm 项目地址: https://gitcode.com/gh_mirrors/py/pytm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁烈廷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值