? Anda dapat menggunakan Tindakan GitHub ini untuk menghasilkan konten unggulan AI untuk pemodelan ancaman dan tinjauan keamanan. Ia menggunakan xvnpw/ai-threat-modeling di bawahnya.
️ Ini adalah proyek eksperimental
Fitur yang didukung:
Fitur | Keterangan |
---|---|
Persyaratan Keamanan dan Privasi Tingkat Tinggi | Tindakan akan mengambil deskripsi proyek dan akan menggunakan LLM untuk menghasilkan persyaratan tingkat tinggi mengenai keamanan dan privasi |
Model Arsitektur Ancaman | Tindakan akan mengambil deskripsi arsitektur dan akan menggunakan LLM untuk menghasilkan model ancaman untuknya |
Kriteria Penerimaan Keamanan untuk Kisah Pengguna | Tindakan akan mengambil cerita pengguna tertentu dan menghasilkan kriteria penerimaan terkait keamanan |
Tinjauan file masukan | Tindakan akan mengambil file input (misalnya Deskripsi Arsitektur) yang meninjaunya menggunakan LLM |
Gunakan versi di bawah ini untuk model tertentu:
Model | Versi | Catatan |
---|---|---|
OpenAI GPT-3.5, Antropik Claude 2 | v1.2.6.1 | |
OpenAI GPT-4 | Terbaru | |
Claude 3 | Terbaru |
Model | Masukan | Keluaran |
---|---|---|
OpenAI GPT-3.5 | PROYEK.md | PROJECT_SECURITY.md atau sebagai permintaan tarik |
Claude antropik 2 | PROYEK.md | PROJECT_SECURITY.md atau sebagai permintaan tarik |
OpenAI GPT-4 | PROYEK.md | PROJECT_SECURITY.md atau sebagai permintaan tarik |
Karya Antropik Claude 3 | PROYEK.md | PROJECT_SECURITY.md atau sebagai permintaan tarik |
Model | Masukan | Keluaran |
---|---|---|
OpenAI GPT-3.5 | ARSITEKTUR.md | ARSITEKTUR_SECURITY.md |
Claude antropik 2 | ARSITEKTUR.md | ARSITEKTUR_SECURITY.md |
OpenAI GPT-4 | ARSITEKTUR.md | ARSITEKTUR_SECURITY.md |
Karya Antropis Claude 3 | ARSITEKTUR.md | ARSITEKTUR_SECURITY.md |
Model | Masukan | Keluaran |
---|---|---|
OpenAI GPT-3.5 | 0001_STORE_DIET_INTRODUCTIONS.md atau masalah | 0001_STORE_DIET_INTRODUCTIONS_SECURITY.md atau sebagai komentar masalah |
Claude antropik 2 | 0001_STORE_DIET_INTRODUCTIONS.md atau masalah | 0001_STORE_DIET_INTRODUCTIONS_SECURITY.md atau sebagai komentar masalah |
OpenAI GPT-4 | 0001_STORE_DIET_INTRODUCTIONS.md atau masalah | 0001_STORE_DIET_INTRODUCTIONS_SECURITY.md atau sebagai komentar masalah |
Karya Antropis Claude 3 | 0001_STORE_DIET_INTRODUCTIONS.md atau masalah | 0001_STORE_DIET_INTRODUCTIONS_SECURITY.md atau sebagai komentar masalah |
Model | Masukan | Keluaran |
---|---|---|
OpenAI GPT-4 | ARSITEKTUR.md | ARSITEKTUR_REVIEW.md |
Karya Antropis Claude 3 | ARSITEKTUR.md | ARSITEKTUR_REVIEW.md |
Tambahkan langkah seperti ini ke alur kerja Anda:
- uses : xvnpw/[email protected] # You can change this to use a specific version.
with :
# Type of feature, one of: project, architecture, user-story
# Default: ''
# Required
type : ' project '
# Provider name, one of: openai, openrouter
# Default: 'openai'
provider : ' openai '
# Paths to input files formatted as json array
# Default: ''
input_files : ' ["PROJECT.md"] '
# Path to output file
# Default: ''
output_file : ' PROJECT_SECURITY.md '
# For USER STORY only! paths to architecture files formatted as json array
# Default: ''
input_architecture_files : ' ["ARCHITECTURE.md"] '
# For USER STORY only! path to architecture threat model
# Default: ''
input_architecture_threat_model_file : ' ARCHITECTURE_SECURITY.md '
# For USER STORY only! suffix that will be added to input file name to create output file
# Default: '_SECURITY'
user_story_output_suffix : ' _SECURITY '
# Type of OpenAI GPT model
# Default: gpt-4
# For openai models check: https://platform.openai.com/account/rate-limits
# For openrouter models check: https://openrouter.ai/docs#models
model : ' gpt-3.5-turbo-16k '
# Sampling temperature for a model
# Default: 0
temperature : ' 0.3 '
# Review input files using LLM
# Default: false
review : true
# Verbose log messages
# Default: false
verbose : true
# Debug log messages
# Default: false
debug : true
# Prompt templates directory
# Default: '/app/templates'
# By default action will use prompt templates build-in docker image. You can specify your own without forking action.
templates_dir : ' ./templates '
env :
# OpenAI API key
# Optional. Only if want to use openai provider
# Get a key from https://platform.openai.com/account/api-keys
# Add it to secrets in your repository settings
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
# Open Router API key
# Optional. Only if want to use openrouter provider
# Get a key from https://openrouter.ai/keys
# Add it to secrets in your repository settings
OPENROUTER_API_KEY : ${{ secrets.OPENROUTER_API_KEY }}
Saat ini mendukung:
Tindakan akan menghasilkan output_file
berdasarkan input. Dengan menggunakan tindakan lain, Anda dapat:
Jika file masukan Anda cukup besar, Anda perlu mengubah model
ke model dengan konteks lebih besar, misalnya gpt-3.5-turbo-16k
.
Jika Anda mengubah file masukan, ingatlah untuk mengubah pemicunya:
on :
push :
branches :
- main
paths :
- ' project-desc-1.md '
- ' project-desc-2.md '
Contoh (pendekatan permintaan tarik):
on :
push :
branches :
- main
paths :
- ' PROJECT.md '
jobs :
project_ai_devsecops_job :
runs-on : ubuntu-latest
permissions :
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository. Also permission to create/update
# pull requests.
contents : write
pull-requests : write
name : Run ai threat modeling action for project analysis
steps :
- name : Checkout repo
uses : actions/checkout@v3
- name : Generate project security requirements
uses : xvnpw/[email protected]
with :
type : ' project '
input_files : ' ["PROJECT.md"] '
output_file : ' PROJECT_SECURITY.md '
temperature : 0
verbose : true
env :
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
# Will use peter-evans/create-pull-request to create or update pull request
- name : Create Pull Request
uses : peter-evans/create-pull-request@v5
with :
branch : create-pull-request/project
title : (AI Generated) High Level Security and Privacy Requirements
body : Automated pull request based on your changes to project. Please review it carefully.
labels : ' security, ai '
Periksa Persyaratan Keamanan dan Privasi Tingkat Tinggi untuk detail tentang pemicu dan model.
Contoh (mendorong langsung ke repositori):
on :
push :
branches :
- main
paths :
- ' ARCHITECTURE.md '
jobs :
architecture_ai_tm_job :
runs-on : ubuntu-latest
permissions :
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents : write
name : Will run ai threat modeling action for architecture analysis
steps :
- name : Checkout repo
uses : actions/checkout@v3
- name : Generate architecture threat model
uses : xvnpw/[email protected]
with :
type : ' architecture '
input_files : ' ["ARCHITECTURE.md"] '
output_file : ' ARCHITECTURE_SECURITY.md '
temperature : 0
verbose : true
env :
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
# Will use add-and-commit action to push output_file directly into repository
- name : Commit changes
uses : EndBug/add-and-commit@v9
with :
message : ' Project architecture threat model '
add : ' ARCHITECTURE_SECURITY.md '
Penggunaan yang paling berguna adalah dengan masalah github. Tetapi Anda juga dapat menghasilkan keluaran berdasarkan perubahan pada direktori tertentu (saya melakukannya dalam penelitian).
Fitur Cerita Pengguna memerlukan dua parameter baru:
input_architecture_files
- json array jalur file arsitektur input misalnya ["arch-1.md","arch-2.md"]
input_architecture_threat_model_file
- jalur ke model ancaman arsitektur, misalnya ARCHITECTURE_SECURITY.md
dan satu opsional:
user_story_output_suffix
- akhiran yang akan ditambahkan ke nama file input untuk membuat file output, misalnya _SECURITY
Dalam kasus cerita pengguna, build dipicu oleh perubahan pada direktori tertentu. Pertama, ia perlu mencari tahu file mana yang diubah dan memprosesnya satu per satu.
Seperti yang Anda lihat, kami tidak menggunakan parameter input_files
. Kali ini kita melihat seluruh direktori untuk perubahan:
on :
push :
branches :
- main
paths :
- ' user-stories/*.md '
- ' !user-stories/*_SECURITY.md '
Untuk direktori Anda sendiri, Anda perlu menyesuaikan konfigurasi paths
. Hal yang sama berlaku untuk melakukan perubahan dengan add: 'user-stories/'
.
Contoh (mendorong langsung ke repositori):
on :
push :
branches :
- main
paths :
- ' user-stories/*.md '
- ' !user-stories/*_SECURITY.md '
jobs :
user_story_ai_tm_job :
runs-on : ubuntu-latest
permissions :
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents : write
name : Will run ai threat modeling action for user story analysis
steps :
- name : Checkout repo
uses : actions/checkout@v3
- name : Check which files were changed
id : files_check
uses : lots0logs/[email protected]
with :
token : ${{ secrets.GITHUB_TOKEN }}
- name : Printing
run : |
echo "${{ steps.files_check.outputs.all }}"
- name : Generate user story security acceptance criteria
uses : xvnpw/[email protected]
with :
type : ' user-story '
input_files : " ${{ steps.files_check.outputs.all }} "
input_architecture_files : ' ["ARCHITECTURE.md"] '
input_architecture_threat_model_file : " ARCHITECTURE_SECURITY.md "
user_story_output_suffix : " _SECURITY "
temperature : 0
verbose : true
model : " gpt-3.5-turbo-16k "
env :
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
- name : Commit changes
uses : EndBug/add-and-commit@v9
with :
message : ' User stories: security acceptance criteria '
add : ' user-stories/ '
Dalam hal ini kami hanya mempertimbangkan cerita dengan label tertentu:
if : contains(github.event.issue.labels.*.name, 'ai-threat-modeling')
Komentar ditambahkan (atau diperbarui) menggunakan tindakan peter-evans/find-comment dan peter-evans/create-or-update-comment.
Contoh (komentar pada masalah):
name : Run ai threat modeling action for user story in issue analysis
on :
issues :
types :
- labeled
- edited
jobs :
user_story_issue_ai_devsecops :
name : Run ai threat modeling action for user story in issue analysis
if : contains(github.event.issue.labels.*.name, 'ai-threat-modeling')
runs-on : ubuntu-latest
permissions :
issues : write
contents : write
steps :
- name : Checkout repo
uses : actions/checkout@v3
- uses : actions/github-script@v6
id : set-result
with :
result-encoding : string
retries : 3
script : |
const issue = await github.rest.issues.get({
issue_number: ${{ github.event.issue.number }},
owner: "${{ github.repository_owner }}",
repo: "${{ github.event.repository.name }}",
});
const body = issue.data.body;
const fs = require('fs');
fs.writeFile('${{ github.workspace }}/issue_body.md', body, (err) => {
if (err) throw err;
console.log('Data written to file');
});
return JSON.stringify(body);
- name : Generate user story security acceptance criteria
uses : xvnpw/[email protected]
with :
type : ' user-story '
input_files : ' ["issue_body.md"] '
input_architecture_files : ' ["ARCHITECTURE.md"] '
input_architecture_threat_model_file : " ARCHITECTURE_SECURITY.md "
temperature : 0
verbose : true
model : " gpt-3.5-turbo-16k "
env :
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
- name : Find Comment
uses : peter-evans/find-comment@v2
id : fc
with :
issue-number : ${{ github.event.issue.number }}
comment-author : ' github-actions[bot] '
body-includes : (AI Generated) Security Related Acceptance Criteria
- name : Add comment
uses : peter-evans/create-or-update-comment@v3
with :
comment-id : ${{ steps.fc.outputs.comment-id }}
issue-number : ${{ github.event.issue.number }}
body-path : ${{ github.workspace }}/issue_body_SECURITY.md
edit-mode : replace
Contoh (mendorong langsung ke repositori):
on :
push :
branches :
- main
paths :
- ' ARCHITECTURE.md '
workflow_dispatch :
jobs :
architecture_ai_review_job :
runs-on : ubuntu-latest
permissions :
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents : write
name : Run ai threat modeling action for architecture review
steps :
- name : Checkout repo
uses : actions/checkout@v3
- name : Generate architecture review
uses : xvnpw/[email protected]
with :
type : ' architecture ' # will create threat model
input_files : ' ARCHITECTURE.md '
output_file : ' ARCHITECTURE_REVIEW.md '
review : true
temperature : 0.2
verbose : true
model : ' gpt-4 '
env :
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
- name : Commit changes
uses : EndBug/add-and-commit@v9
with :
message : ' Project architecture review '
add : ' ARCHITECTURE_REVIEW.md '
pull : ' --rebase --autostash '
Dengan Add & Commit Anda bisa mendapatkan output_file
dengan mudah dikomit ke dalam repositori:
- name : Commit changes
uses : EndBug/add-and-commit@v9
with :
message : ' Project architecture threat model '
add : ' ARCHITECTURE_SECURITY.md '
Jika Anda mengubah file keluaran, ingatlah untuk mengubah file komit:
- name : Commit changes
uses : EndBug/add-and-commit@v9
with :
message : ' Project security requirements '
add : ' project-sec-reqs.md '
Dengan Buat Permintaan Tarik Anda dapat membuat permintaan tarik baru dengan output_file
:
- name : Create Pull Request
uses : peter-evans/create-pull-request@v5
with :
branch : create-pull-request/project
title : (AI Generated) High Level Security and Privacy Requirements
body : Automated pull request based on your changes to project. Please review it carefully.
labels : ' security, ai '
Dalam mode ini, Anda juga perlu menyesuaikan izin untuk alur kerja:
permissions :
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
# It has also permission to pull requests
contents : write
pull-requests : write
Ubah juga pengaturan tindakan.
Anda mungkin ingin menyesuaikan petunjuknya. Untuk melakukannya, Anda tidak perlu melakukan tindakan fork, tetapi menyediakan direktori templat ke dalam repositori target Anda:
cd $HOME / < projects > # your directory with repositories
git clone [email protected]:xvnpw/ai-threat-modeling-action.git
cp -r ai-threat-modeling-action/templates < target-repo > /
cd < target-repo > /templates
# edit templates
Dalam file alur kerja tambahkan:
uses : xvnpw/[email protected]
with :
...
templates_dir : ' ./templates '
./templates
- adalah direktori yang berhubungan dengan root
.
Proyek ini dimulai sebagai penelitian kemampuan LLM, namun berkembang seiring waktu melampaui PoC sederhana. Dengan versi 1, dapat digunakan untuk mereview dokumen di github menggunakan direct push, pr atau issue. Pengembangan atau perbaikan lebih lanjut tidak dijamin . Jika Anda berencana untuk menggunakannya di perusahaan Anda, yang terbaik adalah membaginya dan menyesuaikan dengan kebutuhan Anda.
Garpu proyek ini. Edit file dan lepaskan tindakan:
git add .
git commit -m "My first action is ready"
git tag -a -m "My first action release" v1
git push --follow-tags
Proyek ini menggunakan OpenAI API. Secara default, data Anda tidak akan digunakan untuk pembelajaran, sesuai dengan kebijakan penggunaan data API:
OpenAI tidak akan menggunakan data yang dikirimkan oleh pelanggan melalui API kami untuk melatih atau meningkatkan model kami, kecuali Anda secara eksplisit memutuskan untuk membagikan data Anda kepada kami untuk tujuan ini. Anda dapat ikut serta untuk berbagi data.
OpenRouter menjelaskan privasi dan pemfilteran dalam pengaturan untuk setiap model.