nzta/sdlt

NZTA 安全开发生命周期工具配方

维护者

详细信息

github.com/NZTA/SDLT

来源

问题

安装: 190

依赖项: 0

建议者: 0

安全: 0

星标: 16

关注者: 6

分支: 11

公开问题: 11

类型:silverstripe-recipe


README

SDLT是一个支持并加速IT安全专业人士在其组织内变更审批过程中的Web应用程序。

需求

SDLT是用ReactJS和PHP编写的,并基于SilverStripe框架构建的。因此,为了安装该软件,您将需要一个专门的LAMP、LEMP或类似环境。请参考官方的服务器要求文档,以帮助您为SDLT指定合适的配置。

此存储库由三部分组成

  • 基本项目,包括Docker镜像以及有关项目的元数据。
  • SDLT框架,它包括Silverstripe框架和CMS作为依赖项,并支持GraphQL端点。
  • SDLT主题,它是一个前端React框架,旨在通过GraphQL与Silverstripe通信。

基础设施

  • 请参阅服务器要求文档,但典型的设置是在Linux发行版(如Ubuntu)上的Apache httpd或Nginx。
  • 请参阅服务器要求文档,但MySQL或MariaDB将正常工作。PostgreSQL可能也可以工作,但尚未测试。(您需要修改项目的.env文件以适应)
  • 一个最小的.env文件。(您可以修改此代码库根目录下提供的文件)
  • 通过运行以下命令测试设置: ./vendor/bin/sake dev/build(CLI)或通过GUI浏览器指向:https://my-sdlt.dept.govt.nz/dev/build

安装

此说明假设您有一个LAMP环境:Linux(Ubuntu),Apache(v2),MySQL(5.7)和PHP(7.2)。另一个假设是您正在使用Apache的虚拟主机。我们假设您的项目安装在/var/www/example.com/sdlt中,DocumentRoot设置为类似/var/www/example.com/sdlt/public的东西。

cd /var/www/example.com/
#clone most stable version directly from Github. This also runs composer automatically
composer create-project nzta/sdlt sdlt ^3

#change directory
cd sdlt

#make a .env if you haven't yet
cp .env.example .env

#build database tables
vendor/bin/sake dev/build flush=

#(optional) setup default data, see "Data Import" below
vendor/bin/sake dev/tasks/SetupSDLTDataTask 

#(optional) change permissions on homepage to login-only
vendor/bin/sake dev/tasks/HydrateCustomConfig

需要web服务器用户可写public/assets文件夹。您可能还需要使public/assets/.htaccesspublic/assets/.protected可写。sudo chown -R www-data:www-data public/assets public/assets/.htaccess public/assets/.protected

数据导入

代码库附带了一个数据导入器,该导入器将配置您运行此工具所需的大部分内容。

  • 在CLI或浏览器中运行:dev/tasks/SetupSDLTDataTask。这可能需要几分钟,并且可能超过服务器脚本的执行时间。如果脚本失败,则只会生成新的数据,直到它停止。
  • 通过使用以下变量登录到SilverStripe管理区域以验证此数据:在https://my-sdlt.dept.govt.nz/admin/?showloginform=1处使用下面的SS_DEFAULT_ADMIN_XXX变量。
  • 此数据来自默认集合,包含一套默认问卷、任务和风险评估,您可以根据自己的需求进行修改。

定制

  • 前端是一个React应用程序,其应用逻辑、模板和CSS位于:"themes/sdlt" 目录中。理论上可以用您自己的GraphQL主题替换该主题。为此,您需要用您自己的实现替换sdlt-theme项目。此功能目前未经过测试且未记录文档。
  • 要添加更多计算算法以在“风险评估问卷”任务中显示,开发者需要继承 app/src/Formulae/RiskFormula.php (以 app/src/Formulae/NztaApproxRepresentation.php 和其测试为例)。

配置

将项目附带的 .env.example 文件重命名为 .env,并确保它位于项目根目录中,并且具有您的web服务器用户的r+x权限。您需要更改文件中的环境变量占位符,以适应您自己的环境。或者,您可以在服务器上创建环境变量以替代.env文件。

为了在认证屏幕后面保护整个项目,运行以下任务

./vendor/bin/sake dev/tasks/HydrateCustomConfig

测试

运行套件(仅限“dev”环境 - 请参阅下面的 .env 文件示例)

./vendor/bin/phpunit

设置Azure Active Directory

此应用程序通常使用SilverStripe的默认认证系统(用户名和密码)。它可以选择配置以支持Azure的Active Directory服务或任何支持OAuth2的服务提供者。

配置SDLT以与Azure和其他OAuth提供者一起工作的说明可以在此找到:https://github.com/NZTA/SDLT/wiki/Installing-Active-Directory

使用Docker设置项目

确保您的机器上已安装docker和docker compose,然后运行以下命令。

克隆仓库

git clone git@github.com:NZTA/SDLT.git

创建.env文件

cp .env.example .env

在后台启动容器并保持运行

docker-compose up -d

显示服务日志输出。

docker logs -f sdlt_php