Docker Python 進階視覺化 Flask 應用程式 資訊安全 容器

善用QRadar App架構 開發客製化安全監控程式

2018-12-18
本文將介紹如何運用IBM QRadar App架構開發客製化應用程式,先說明何謂應用程式、Flask,然後說明何謂安全工程、如何避免應用程式提交遭到拒絕、那些是造成應用程式驗證審核延長的問題、該如何確保自己的QRadar應用程式安全無虞,以及使用SDK進行應用程式測試。
善用QRadar App架構 開發客製化安全監控程式 攸關資安營運中心運作 程式開發首重測試驗證 @網站用前言: 本文將介紹如何運用IBM QRadar App架構開發客製化應用程式,先說明何謂應用程式、Flask,然後說明何謂安全工程、如何避免應用程式提交遭到拒絕、那些是造成應用程式驗證審核延長的問題、該如何確保自己的QRadar應用程式安全無虞,以及使用SDK進行應用程式測試。 @關鍵字:應用程式;容器; Docker; 進階視覺化; Python; Flask;資訊安全 IBM Security 所謂的QRadar應用程式是指使用QRadar App SDK部署的任何一種程式,同時也可在QRadar Box的Docker容器中運行。

應用程式常透過Flask在QRadar UI中呈現,以便交付應用價值。應用程式也可以輕鬆存取QRadar API,以便輕而易舉地使用儲存在QRadar中的資訊。

值得注意的是,應用程式只是QRadar的其中一種延伸模組,其他的獨立式內容(像自訂規則或屬性)可能包含在應用程式中,但不被認為屬於應用程式的一部分。

應用程式類型包括:儀表板項目、內含進階視覺化或分析的全新標籤、滑鼠右鍵功能、連結供應商API的按鈕、參照集摘要、事件摘要等等。

如何使用Flask

什麼是Flask(圖1)?Flask是用來開發網頁的一種Python架構,可提供URL和Python功能之間的精簡型連結路徑,並協助進行HTML(使用Jinja2)轉譯以簡化開發流程。


▲圖1 Flask標誌。

Flask主要透過route() decorator使用,此語法可繫結一個URL所對應的一個函數。route() decorator的使用方式如下:

@app.route('/hello')
def hello():
     return 'Hello, World'

其中@app.route用來定義URL,並將它與後面接續的DEF繫結。

Flask的最佳做法是命名URL,並盡可能與DEF配對。在此範例中,URL與傳回「Hello, World」字串的函數相繫結。

根據預設配置,URL僅是用來建立POST方法以定義路徑的GET方法,例如:

from flask import request
@app.route('/login', methods=
['GET', 'POST'])
def login():
     if request.method == 'POST':
          do_the_login()
     else:
          show_the_login_form()

此範例顯示如何覆寫路徑上的方法變數,用來賦予POST方法功能。

此外,可能還想要讓URL變數成為自身應用程式當中的一部分,做法如下:

@app.route('/user/')
def show_user_profile(username):
     # show the user profile for
that user
     return 'User %s' % username

使用<>來定義URL中的變數,如此一來,即可根據URL內容改變功能。根據預設配置,變數會被當做字串處理,但可以藉由定義變數類型來變更,例如:

@app.route('/user/')

Flask所提供的強大函數可透過Jinja轉譯HTML範本,這樣更可以掌控應用程式的呈現方式。在Python專案中,必須設定範本資料夾,其中放置想呼叫的範本。若要呼叫範本並透過它傳遞與Jinja2搭配使用的變數,請參照以下的方法:

from flask import render_template
@app.route('/hello/')
@app.route('/hello/')
def hello(name=None):
    return render_template ('hello.
html', name=name)

這會使用render_template函數來捕捉hello.html範本,並使用其中傳遞的變數名稱來轉譯。以下是其中一個Jinja2範本範例:


Hello from Flask\
{% if name %}
  

Hello {{ name }}!

{% else %}

Hello, World!

{% endif %}

Jinja提供一種可控制最終HTML呈現方式的插入邏輯控制項方法。在此案例中,可以看到使用{{}}標籤來呼叫變數的方式,以及在{%%}標籤之間呼叫實際的Python邏輯控制項。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!