使用 Google Cloud 控制台中的 Web Security Scanner,排定及執行已部署應用程式的自訂掃描。Web Security Scanner 支援掃描不受防火牆保護的公開網址和 IP。
這個頁面。事前準備
如要使用 Web Security Scanner 設定自訂掃描,請按照下列步驟操作:
- 您必須在公開網址或 IP 上部署應用程式。Web Security Scanner 僅支援使用 IPv4 的網站。系統不會掃描使用 IPv6 的網站。
- 您必須啟用 Security Command Center。
開始掃描前,請仔細檢查是否有任何應用程式功能會影響到超出所選掃描範圍以外的資料、使用者或系統。
Web Security Scanner 會填入欄位、推送按鈕、點擊連結及其他互動,因此請謹慎使用。Web Security Scanner 啟用的功能可能會變更資料或系統的狀態,產生非預期的結果。例如:
- 在允許公開留言的網誌應用程式中,Web Security Scanner 可能會於所有網誌文章上留言,以張貼測試字串。
- 在電子郵件註冊頁面中,Web Security Scanner 可能會產生大量的測試電子郵件。
如需進一步瞭解如何盡量降低風險,請參閱最佳做法,避免產生非預期的結果。
啟用 Web Security Scanner
在 Security Command Center 中啟用 Web Security Scanner,即可建立及執行自訂掃描。
如果已啟用 Security Command Center,您可以在 Google Cloud 控制台的 Security Command Center「設定」頁面啟用 Web Security Scanner。
步驟 1:部署測試應用程式
如要完成自訂掃描的 Web Security Scanner 設定,您需要已部署的 Compute Engine、Google Kubernetes Engine (GKE) 或 App Engine 應用程式網址。如果您沒有已部署的應用程式,或是想使用測試應用程式試用 Web Security Scanner,請部署測試 App Engine 應用程式。使用所選語言:
步驟 2:指派 IAM 角色
如要執行 Web Security Scanner 掃描,您必須具備要掃描專案的下列其中一個 Identity and Access Management (IAM) 角色:
- 編輯者
- 擁有者
如要新增這些角色,請按照下列步驟操作:
前往Google Cloud 控制台的「IAM & Admin」(IAM 與管理) 頁面。
按一下「專案選取器」下拉式清單。
在隨即顯示的「Select from」對話方塊中,選取要使用 Web Security Scanner 掃描的專案。
在「IAM」頁面,按一下使用者名稱旁邊的「編輯」。
在顯示的「Edit permissions」(編輯權限) 面板中,按一下「Add another role」(新增其他角色),然後選取下列其中一個角色:
- 「Project」(專案) >「Owner」(擁有者)
- 「Project」(專案) >「Editor」(編輯者)
新增完角色之後,點選 [Save] (儲存)。
進一步瞭解 Web Security Scanner 角色。
步驟 3:執行掃描作業
設定掃描後,系統會將掃描作業排入佇列,稍後執行。視目前的負載量而定,可能需要等待數小時後才會執行掃描。如要建立、儲存及執行掃描作業,請按照下列步驟操作:
前往 Google Cloud 控制台的「Web Security Scanner」(網站安全掃描器) 頁面。
選取要掃描的已部署應用程式所屬專案。
如要設定新的掃描作業,請按一下「New scan」(新掃描作業):
在隨即載入的「建立新掃描」頁面中,設定下列值:
- 在「起始網址」下方,輸入要掃描的應用程式網址。
- 在「時間表」下方,選取「每週」。
- 在「下次執行時間」下方選取日期。
系統會自動勾選「匯出至 Security Command Center」方塊。如果您已啟用 Web Security Scanner 做為 Security Command Center 安全來源,掃描結果會顯示在 Google Cloud 控制台的「發現項目」頁面。
第一次掃描時,請使用預設掃描方式,不要變更「建立新掃描」頁面上的任何其他值。如要進一步瞭解掃描設定,請參閱「掃描應用程式」。
如要建立掃描作業,請按一下「儲存」。
在 Web Security Scanner 頁面中,按一下掃描名稱載入總覽頁面,然後按一下「執行掃描」。
系統會將掃描排入佇列,留待之後執行。掃描作業可能需要數小時才會執行。
掃描完成後,掃描總覽頁面會顯示結果部分。下圖顯示未偵測到任何安全漏洞時的掃描結果範例:
如果您已啟用 Web Security Scanner 做為 Web Security Scanner 安全來源,掃描結果也會顯示在 Google Cloud 控制台中。
如要顯示特定發現項目的詳細資料,請按一下掃描結果中的發現項目名稱。
您已完成基本的 Web Security Scanner 掃描。如果您掃描的是自己的應用程式,請參閱本頁「掃描應用程式」一節,瞭解如何自訂掃描作業。
如果您部署了測試應用程式來執行掃描,請完成本頁的清除步驟,以免應用程式產生 App Engine 費用。
步驟 4:清除
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
掃描應用程式
使用測試帳戶為應用程式設定自訂掃描。
步驟 1:建立測試帳戶
掃描應用程式時,建議使用無法存取機密資料或有害作業的測試帳戶。建立可登入應用程式的測試帳戶,並記下登入憑證,以便在建立掃描時提供驗證資訊。您可以使用憑證,透過測試帳戶掃描資料。
步驟 2:建立掃描作業
前往 Google Cloud 控制台的「Web Security Scanner」(網站安全掃描器) 頁面。
按一下「選取」,然後選取已部署 App Engine、Compute Engine 或 GKE 應用程式的專案。
如要顯示新掃描表單,請按一下「建立掃描」或「新掃描」。
在新的掃描表單中加入值時,請參考下表:
欄位 說明 起始網址 簡易網站通常僅需要一個起始網址,例如網站的首頁、主頁或到達網頁,Web Security Scanner 即可找到其他所有的網站頁面。不過,如果網站有下列情況,Web Security Scanner 可能就無法找到所有頁面:
- 許多網頁
- 未連結的網頁島嶼
- 需要複雜 JavaScript 的導覽,例如滑鼠游標懸停的多層級選單
如遇到此類情況,請指定更多起始網址,以擴大掃描涵蓋範圍。
從掃描作業中排除的網址 如要降低複雜度,請使用簡易的 proto 語言來定義排除內容,其會採用一或多個 * 萬用字元,而無須使用有效的規則運算式。如要進一步瞭解有效模式及相關範例,請參閱本頁後續的「排除網址」。 驗證 > Google 帳戶 您可在 Gmail 中建立測試帳戶,並使用此帳戶來掃描產品。如果您是 Google Workspace 客戶,則可在您的網域中建立測試帳戶,例如
test-account@yourdomain.com
。在 Web Security Scanner 中,這些帳戶的運作效果與 Gmail 帳戶相同。不支援雙重驗證。Google 對 Google 帳戶會強制執行真實姓名政策。如果測試帳戶的名稱疑似為假名,該帳戶可能會遭到封鎖。
「驗證」>「Identity-Aware Proxy alpha」 如要使用 Identity-Aware Proxy 保護資源,請參閱 IAP 指南。
如要搭配使用 Web Security Scanner 與受 IAP 保護的資源,請先授予 Web Security Scanner 服務帳戶存取權:
- 前往 Google Cloud 控制台的「IAP」頁面。
- 選取要搭配 Web Security Scanner 使用的專案。
- 選取要掃描的應用程式資源,然後按一下「資訊面板」上的「新增主體」。
-
在「新增主體」面板的「新增主體」方塊中,以「
service-project-number@gcp-sa-websecurityscanner.iam.gserviceaccount.com
」格式輸入 Web Security Scanner 服務帳戶。 - 在「Select a role」(選取角色) 下拉式清單中,選取「Cloud IAP」>「IAP Secured Web App User」(受 IAP 保護的網路應用程式使用者)。
- 新增完角色之後,點選 [Save] (儲存)。
接著,將 OAuth 用戶端 ID 新增至掃描作業。Web Security Scanner 只能掃描受單一 OAuth 用戶端 ID 保護的應用程式。如要新增 OAuth 用戶端 ID:
- 前往 Google Cloud 控制台的「IAP」頁面。
- 選取要搭配 Web Security Scanner 使用的專案。
- 在溢位選單中,選取「編輯 OAuth 用戶端」。
- 在顯示的「Client ID for web application」(網路應用程式的用戶端 ID) 視窗中,複製「Client ID」(用戶端 ID)。
- 前往 Google Cloud 控制台的「Web Security Scanner」(網頁安全掃描器) 頁面。
- 在「Authentication」(驗證) 下方,選取「Identity-Aware Proxy alpha」(Identity-Aware Proxy Alpha 版)。
- 在「OAuth2 Client ID」(OAuth2 用戶端 ID) 方塊中,貼上您複製的 OAuth 用戶端 ID,然後按一下「Save」(儲存)。
「驗證」>「非 Google 帳戶」 如果您已建立了專屬的驗證系統,且未使用 Google 帳戶服務,請選取此選項。請在登入表單註明網址、使用者名稱和密碼。會使用這些憑證來登入和掃描您的應用程式。
Web Security Scanner 會嘗試使用啟發式方法登入應用程式並掃描。具體來說,這個方法會尋找包含
username
欄位和password
欄位的雙欄位登入表單。登入動作必須產生驗證 Cookie,掃描器才能繼續掃描。導致自訂登入失敗的常見問題包括:
-
使用非標準的 HTML 表單欄位,例如未使用
password
類型。 -
使用複雜的登入表單,例如包含多個
username
和password
欄位的表單。 - 登入成功後,系統不會儲存驗證 Cookie。
- 在某些情況下,掃描器會遭到反制措施拒絕,這些措施旨在防範機器人、DDoS 和其他攻擊。
建議您整合 Identity-Aware Proxy,確保應用程式掃描作業經過驗證,提供最一致的體驗。
排程 您可以設定每日、每週、每兩週或每四週執行一次掃描。建議您建立排程掃描,以確保未來的應用程式版本皆會受到測試。此外,由於我們不時會發行新版掃描工具以找出更多錯誤類型,因此執行排程掃描可讓您掃描的涵蓋範圍更大,而無須手動處理。 從預先定義的一組來源 IP 執行掃描作業 (預覽版) 選取這個選項,即可將掃描流量限制為一組預先定義的 IP 位址。這樣一來,您就能讓掃描工具存取位於防火牆後方的應用程式,不過這麼做可能會限縮掃描作業的範圍。如要修改防火牆規則,允許 Web Security Scanner 流量通過,請參閱本頁稍後的「設定防火牆」。 匯出選項 選取這個選項,即可自動將掃描設定和掃描結果匯出至 Security Command Center。 忽略 HTTP 狀態錯誤 這個選項可控制掃描期間發生大量 HTTP 狀態錯誤 (例如 **400 Bad Request**) 時,是否要將掃描結果回報為失敗。如果選取這個選項,系統會忽略狀態錯誤。如果未選取這個選項,且狀態錯誤的百分比超過預先設定的門檻,掃描作業就會回報為失敗。 將各值新增完畢後,請按一下「儲存」。您現在可以執行新的掃描。
根據預設,Web Security Scanner 每次執行時都會使用隨機指派的 IP 位址。如要讓 Web Security Scanner IP 位址可預測,請完成本頁稍後的步驟,啟用靜態 IP 掃描。
步驟 3:執行掃描
執行掃描:
- 登入建立掃描時所用的測試帳戶。
前往 Google Cloud 控制台的「Web Security Scanner」(網站安全掃描器) 頁面。
按一下「選取」,然後選取您建立掃描的專案。
在「掃描設定」下方,按一下要執行的掃描名稱。
在掃描詳細資料頁面中,按一下「執行」。
系統會將掃描作業排入佇列中,且在執行前可能會有些許延遲。執行掃描可能需要數分鐘,也可能需要數小時,端看系統負載以及以下一些特點,例如:
- 網站複雜度
- 每頁可操作的元素數量
- 連結數量
- 網站上的 JavaScript 數量,包括導覽
您最多可設定並執行 10 項不同的掃描作業。如超出此數目,則須刪除或清除先前儲存的結果。
查看自訂掃描結果
自訂掃描的狀態和結果會顯示在 Google Cloud 控制台的掃描詳細資料頁面。如要查看掃描結果,請按照下列步驟操作:
- 登入建立掃描時所用的測試帳戶。
前往 Google Cloud 控制台的「Web Security Scanner」(網站安全掃描器) 頁面。
按一下「選取」,然後選取要查看掃描結果的專案。
在「掃描設定」下方,按一下要查看的掃描名稱。
系統會載入掃描詳細資料頁面,並顯示最近一次掃描的結果。如果掃描正在進行中,「結果」分頁會顯示目前的完成百分比。如要顯示先前掃描的結果,請從下拉式清單中選取掃描日期和時間。
完成自訂掃描後,您會看到下列詳細資料:
- 「結果」分頁會顯示掃描發現的安全漏洞清單 (如有)。
- 「已檢索的網址」分頁會顯示掃描檢查的網址清單。
「詳細資料」分頁包含:
- 起始網址
- 驗證
- 使用者代理程式
- 以每秒查詢次數 (QPS) 為單位的最大掃描速度
如要進一步瞭解掃描作業,請參閱專案的記錄檔頁面。
編輯自訂掃描作業
如要編輯自訂掃描,請按照下列步驟操作:
- 登入建立掃描時所用的測試帳戶。
前往 Google Cloud 控制台的「Web Security Scanner」(網站安全掃描器) 頁面。
按一下「選取」,然後選取要編輯掃描結果的專案。
在「掃描設定」下方,按一下要編輯的掃描名稱。
在隨即顯示的掃描詳細資料頁面中,按一下「編輯」。
在隨即顯示的「編輯『[掃描名稱]』」頁面中,進行所需變更,然後按一下「儲存」。
編輯後的自訂掃描會在下次排定時間執行,您也可以手動執行掃描,取得最新結果。
刪除自訂掃描
如要刪除一或多個自訂掃描作業,請按照下列步驟操作:
- 登入建立掃描時所用的測試帳戶。
前往 Google Cloud 控制台的「Web Security Scanner」(網站安全掃描器) 頁面。
按一下「選取」,然後選取要編輯掃描結果的專案。
在「掃描設定」下方,勾選要刪除的一或多項掃描。
依序點選「Delete」(刪除) 和「Ok」(確定)。
系統會刪除所有選取的掃描結果。
設定從靜態 IP 掃描
本節說明如何從靜態 IP 位址啟用 Web Security Scanner 自訂掃描。啟用這項功能後,網路安全掃描工具會使用可預測的 IP 位址,掃描公開的 Compute Engine 和 Google Kubernetes Engine 應用程式。這項功能目前為預覽版,網頁安全掃描器 IP 位址可能會在日後版本中變更。
事前準備
如要使用 Web Security Scanner 從靜態 IP 執行自訂掃描的功能,您需要:
- 公開的 Compute Engine 或 GKE 應用程式。這項功能不支援 App Engine 應用程式。
- 未經驗證或透過 Google 帳戶驗證建立的掃描檔。 這項功能不支援使用非 Google 帳戶驗證的掃描。
步驟 1:設定防火牆
前往 Google Cloud 控制台的「防火牆規則」頁面。
按一下「選取」,然後選取專案。
在隨即顯示的「防火牆規則」頁面中,按一下「建立防火牆規則」。
在「Create a firewall rule」(建立防火牆規則) 頁面中,設定下列值:
- 名稱:輸入
web-security-scanner
或類似名稱。 - 優先順序:選取比所有拒絕應用程式輸出流量的規則更高的優先順序 (數值較小)。
- 來源 IP 範圍:輸入
34.66.18.0/26
和34.66.114.64/26
。 - 「Protocols and ports」(通訊協定和通訊埠):選取「Allow all」(全部允許),或為應用程式指定通訊協定和通訊埠。通常可以勾選「tcp」tcp核取方塊,然後輸入
80
和443
做為通訊埠。
- 名稱:輸入
設定完值之後,按一下「建立」。
步驟 2:設定掃描作業
設定防火牆,允許 Web Security Scanner 使用可預測的 IP 位址後,請設定掃描作業,使用預先定義的 IP:
前往 Google Cloud 控制台的「Web Security Scanner」(網站安全掃描器) 頁面。
按一下「選取」,然後選取專案。
建立新的掃描作業或編輯現有掃描作業。
勾選「從預先定義的一組來源 IP 執行掃描作業」核取方塊。
儲存掃描結果。
下次執行掃描時,系統會掃描防火牆後方的公開 Compute Engine 和 GKE 應用程式。
排除網址
您最多可以指定 100 種網址排除模式,在自訂掃描期間避免測試某個網站的一些區塊。Web Security Scanner 不會要求取得符合任何排除條件的資源。以下各節說明 Web Security Scanner 使用的模式比對。
網址模式比對
排除網址模式比對的依據是一組由比對模式定義的網址,比對模式是一個網址,由五個區段構成:
scheme
:例如http
或*
host
:例如www.google.com
、*.google.com
或*
path
:例如/*
、/foo*
或/foo/bar. *
query
:例如?*
、?*foo=bar*
fragment
:例如#*
、#access
基本語法如下:
<exclude-pattern> := <scheme>://<host><path><query><fragment>
<scheme> := '*' | 'http' | 'https'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars except '?' or '#'>
<query> := '?' <any chars except '#'>
<fragment> := '#' <any chars>
各部分的 *
具有下列功能:
scheme
:*
比對 HTTP 或 HTTPS。host
:*
符合任何主機*.hostname
會比對指定主機和任何子網域。
path
:*
會比對 0 個以上的字元。
排除模式不需要所有區隔。
- 如未指定
scheme
區隔,則預設為*://
。 - 請務必指定
host
區隔。 如未指定
path
區隔,則預設為:- 如果未指定
query
和fragment
區隔,則為/*
。這個值會比對任何path
或沒有path
。 /
,或空白的path
,如果指定了query
或fragment
區隔。
- 如果未指定
如未指定
query
區隔,則預設為:?*
(如果未指定fragment
區隔)。這個值會與任何query
或沒有query
相符。?
,或空白的query
(如果指定fragment
)。
如未指定
fragment
區隔,系統預設會使用#*
,這會比對任何fragment
或沒有fragment
。
有效模式比對
下表提供有效模式的範例:
模式 | 行為 | 比對網址範例 |
---|---|---|
http://*/* |
比對使用 HTTP 通訊協定的任何網址。 |
|
http://*/foo* |
比對任何主機上使用 HTTP 通訊協定的所有網址,路徑必須以 /foo 開頭。
|
|
https://*.google.com/foo*bar |
比對使用 HTTPS 通訊協定且位於 google.com 主機 (例如 www.google.com 、docs.google.com 或 google.com ) 的任何網址,路徑必須以 /foo 開頭並以 bar 結尾。 |
|
http://example.org/foo/bar.html |
比對指定的網址。 | http://example.org/foo/bar.html |
http://127.0.0.1/* |
比對使用 HTTP 通訊協定且位於主機 127.0.0.1 的任何網址。 |
|
*://mail.google.com/* |
比對所有以 http://mail.google.com 或 https://mail.google.com 開頭的網址。 |
|
*://*/foo*?*bar=baz* |
比對路徑開頭為 /foo 且具有查詢參數 bar=baz 的任何網址。
|
https://www.google.com/foo/example?bar=baz |
google.com/app#*open* |
比對任何具有 google.com 主機的網址,路徑開頭為 /app ,且含有片段 open 。
|
https://www.google.com/app/example#open |
無效模式比對
下表提供無效模式的範例:
模式 | 原因 |
---|---|
http://www.google.com |
網址不含路徑。 |
http://*foo/bar |
主機中的 * 後方必須加上 . 或 / 。
|
http://foo.*.bar/baz |
如 * 位於主機,則必須是第一個字元。 |
http:/bar |
網址的配置分隔符格式不正確。"/" 應為 "//" 。 |
foo://* |
網址配置無效。 |