本文討論了將外部安全解決方案與云存儲實例集成的重要性,并提供了與 GCP 集成的解決方案。
隨著企業(yè)云存儲解決方案在全球市場上穩(wěn)步發(fā)展,為保護這些按規(guī)模付費服務而部署的防病毒和惡意軟件安全策略變得越來越強大。當然,城堡墻越高,攀爬的攻城梯就越高,但威脅行為者和云安全從業(yè)者之間的持久戰(zhàn)斗似乎讓我們越來越接近更安全的數字未來。
也就是說,成功的云存儲攻擊所造成的災難性損害不可低估,并且永遠不應低估這種攻擊向量的演變。公共、私有和托管云存儲服務對于威脅參與者來說都是非常有價值的目標,它們托管著在用戶設備之間頻繁移動的有價值的數據,并且定期探索各種有效的攻擊媒介以通過這些位置滲透網絡。威脅行為者可以利用網絡釣魚等眾所周知的技術來誘使用戶在公共位置保存和存儲惡意內容,并且他們可以通過 Office 宏或 PDF 密碼保護等內置文件功能在直接客戶端上傳場景中非常有效地偽裝惡意軟件措施。
如果存儲內威脅檢測策略執(zhí)行掃描的速度不夠快,或者未將其配置為標記偽裝的文件威脅,則惡意文件可能會快速分發(fā)給毫無戒心的用戶,這些用戶在打開這些文件后,會無意中發(fā)起突然且不可預測的攻擊。始終將云存儲安全視為一項多策略工作至關重要,并部署多個集成安全解決方案,以增加在到達存儲實例后快速檢測到文件上傳威脅的可能性。
與競爭對手相比,谷歌云平臺 (GCP) 存儲約占全球云存儲市場份額的 10-13%,是受益于外部威脅檢測策略集成的眾多流行且快速增長的解決方案之一。與競爭對手非常相似,GCP 使開發(fā)人員可以輕松地將額外的安全措施與其內置的安全架構集成在一起。在本文的其余部分中,我將演示一種免費使用的 API 解決方案,該解決方案可以快速集成,以納入針對任何給定 GCP 存儲桶中的文件上傳的各種威脅檢測策略。
示范
下面提供的云存儲掃描 API 旨在與 Google Cloud Storage Bucket 集成,并使用任何 GCP 管理員帳戶中提供的基本信息掃描文件。該解決方案能夠根據經常更新的病毒和惡意軟件簽名列表(目前總共超過 1700 萬個簽名,包括特洛伊木馬、勒索軟件和間諜軟件)來引用文件,并且還能夠通過以下方式檢測各種日益常見的隱藏威脅類型:深入內容驗證。這些隱藏內容威脅類型包括可執(zhí)行文件、無效文件、腳本、受密碼保護的文件、宏、XML 文件(包括XXE 威脅)、不安全反序列化對象和 HTML 輸入,并且可以通過設置自定義策略(使用 API 請求正文中的布爾值)來阻止或允許這些威脅中的每一種。
對于涉及直接將用戶文件上傳到 GCP 存儲桶的存儲用例,您還可以通過在 API 請求中提供以逗號分隔的可接受文件擴展名列表來針對不需要的文件類型設置自定義限制。設置此策略后,將根據您接受的文件擴展名列表驗證每個文件上傳。
要將此 API 與您的 GCP 存儲桶集成,您需要在請求中設置以下信息:
存儲桶名稱: 您的存儲桶在 GCP 存儲中的名稱
對象名稱: GCP 存儲中的對象或文件的名稱
JSON 憑證文件: Google Cloud 的服務帳號憑證,存儲在 JSON 文件中
包含病毒或惡意軟件簽名和/或違反 API 請求正文中設置的自定義威脅策略的文件將收到CleanResult: False來自底層安全服務的響應,典型響應時間為亞秒級。CleanResult 例如,此布爾值可用于將干凈的文件和受感染的文件分離到其他 GCP 存儲桶中,以便最終刪除或文件隔離/威脅分析。
您可以使用各種常見的編程語言來構造您的 API 請求,在本文中,我將提供 Go 代碼示例以方便您使用。
要構建您的請求,請使用以下可立即運行的代碼示例,并在帶標簽的標頭中輸入相關的 GCP 存儲桶信息。要授權您的請求,請將免費層 API 密鑰(允許每月 800 次 API 調用,無需額外承諾)復制到 API 密鑰標頭中。
package main import ( "fmt" "bytes" "mime/multipart" "os" "path/filepath" "io" "net/http" "io/ioutil" ) func main() { url := "https://api.cloudmersive.com/virus/scan/cloud-storage/gcp-storage/single/advanced" method := "POST" payload := &bytes.Buffer{} writer := multipart.NewWriter(payload) file, errFile1 := os.Open("/path/to/file") defer file.Close() part1, errFile1 := writer.CreateFormFile("jsonCredentialFile",filepath.Base("/path/to/file")) _, errFile1 = io.Copy(part1, file) if errFile1 != nil { fmt.Println(errFile1) return } err := writer.Close() if err != nil { fmt.Println(err) return } client := &http.Client { } req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } req.Header.Add("bucketName", "<string>") req.Header.Add("objectName", "<string>") req.Header.Add("allowExecutables", "<boolean>") req.Header.Add("allowInvalidFiles", "<boolean>") req.Header.Add("allowScripts", "<boolean>") req.Header.Add("allowPasswordProtectedFiles", "<boolean>") req.Header.Add("allowMacros", "<boolean>") req.Header.Add("allowXmlExternalEntities", "<boolean>") req.Header.Add("restrictFileTypes", "<string>") req.Header.Add("Content-Type", "multipart/form-data") req.Header.Add("Apikey", "YOUR-API-KEY-HERE") req.Header.Set("Content-Type", writer.FormDataContentType()) res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) }
我建議將所有自定義威脅檢測策略設置為“False”,以充分利用此解決方案 - 它可以在改善 GCP 存儲桶的威脅概況方面發(fā)揮巨大作用。
示例一
在當今數字化時代,我們越來越依賴云存儲來保護和管理我們的數據。Google Cloud Platform(GCP)提供了強大的云存儲服務,可以幫助我們存儲和訪問各種類型的文件。然而,隨著威脅越來越多樣化和復雜化,我們需要一種方法來掃描和檢測存儲在 GCP 中的文件是否存在潛在的安全威脅。
本文將介紹如何使用 Go 語言編寫一個簡單的程序來掃描 GCP 存儲文件,并檢測是否存在潛在的威脅。我們將使用 GCP 提供的 Cloud Storage API 和 Google Cloud Storage Go SDK 來實現這個功能。
準備工作
在開始之前,您需要完成以下準備工作:
安裝 Go 編程語言:確保您的系統(tǒng)已經正確安裝了 Go 編程語言。
創(chuàng)建 GCP 項目:在 Google Cloud Console 上創(chuàng)建一個新的 GCP 項目,并啟用 Cloud Storage 服務。
獲取 GCP 憑據:獲取一個具有適當權限的 Service Account JSON 文件,以便您的 Go 程序能夠訪問 GCP 云存儲。
配置 Go 項目
首先,我們需要創(chuàng)建一個新的 Go 項目,并配置所需的依賴項。
1、在命令行中,創(chuàng)建一個新的目錄,并進入該目錄:
mkdir gcp-threat-scan && cd gcp-threat-scan
2、初始化 Go 項目并添加所需的依賴項:
go mod init gcp-threat-scan go get cloud.google.com/go/storage
編寫掃描程序
下面是一個使用 Go 語言編寫的簡單程序,用于掃描 GCP 存儲文件是否存在安全威脅。請在您的項目目錄下創(chuàng)建一個名為 main.go 的文件,并將以下代碼復制到其中:
package main import ( "context" "fmt" "log" "cloud.google.com/go/storage" ) func main() { ctx := context.Background() // 填寫您的 Service Account JSON 文件路徑 serviceAccountKeyFile := "path/to/service-account.json" // 填寫您的 GCP 項目 ID 和存儲桶名稱 projectID := "your-project-id" bucketName := "your-bucket-name" // 創(chuàng)建一個新的 Storage 客戶端 client, err := storage.NewClient(ctx) if err != nil { log.Fatalf("Failed to create client: %v", err) } // 使用 Service Account 憑據進行身份驗證 opt := option.WithCredentialsFile(serviceAccountKeyFile) client, err = storage.NewClient(ctx, opt) if err != nil { log.Fatalf("Failed to create client: %v", err) } // 列出存儲桶中的所有對象 it := client.Bucket(bucketName).Objects(ctx, nil) for { attrs, err := it.Next() if err == iterator.Done { break } if err != nil { log.Fatalf("Failed to iterate objects: %v", err) } // 在此處添加您的威脅掃描邏輯 threatDetected := scanForThreats(attrs.Name) if threatDetected { fmt.Printf("發(fā)現潛在威脅:%s\n", attrs.Name) } } } func scanForThreats(filename string) bool { // 在此處添加您的威脅掃描邏輯 // 返回 true 表示發(fā)現了潛在威脅,false 表示未發(fā)現威脅 return false }
確保替換代碼中的 path/to/service-account.json、your-project-id 和 `your-bucket-name` 為您自己的值。這些值將用于驗證您的身份并指定要掃描的 GCP 存儲桶。
在上面的代碼中,我們首先創(chuàng)建了一個新的 GCP Storage 客戶端,并使用提供的 Service Account 憑據進行身份驗證。然后,我們列出存儲桶中的所有對象,并依次對它們進行威脅掃描。你可以根據需要在 scanForThreats 函數中添加自定義的威脅檢測邏輯。
自定義威脅掃描邏輯
在 scanForThreats 函數中,您可以編寫自己的威脅掃描邏輯。這可能涉及使用第三方威脅情報服務、模式匹配算法、機器學習模型等方法來檢測潛在的威脅。
文章來源地址http://www.zghlxwxcb.cn/article/304.html
以下是一個示例,展示如何使用簡單的模式匹配算法來檢測是否存在包含敏感信息(如社會安全號碼)的文件:
func scanForThreats(filename string) bool { // 使用簡單的模式匹配算法來檢測是否包含社會安全號碼 socialSecurityPattern := "^[0-9]{3}-[0-9]{2}-[0-9]{4}$" if matched, _ := regexp.MatchString(socialSecurityPattern, filename); matched { return true } return false }
請注意,在實際的生產環(huán)境中,您可能需要使用更復雜和準確的威脅檢測技術來確保對潛在威脅的全面掃描。
運行程序
完成代碼編寫后,您可以通過以下命令來運行程序:
go run main.go
程序將遍歷存儲桶中的所有對象,并輸出任何被判定為潛在威脅的文件。根據您自己的需求,可以進一步擴展程序以采取適當的措施來處理或處理這些潛在的威脅。
總結一下,我們使用 Go 編程語言和 GCP 提供的 Cloud Storage API,編寫了一個簡單的程序來掃描 GCP 存儲文件是否存在潛在安全威脅。通過自定義威脅掃描邏輯,您可以根據自己的需求來檢測和應對不同類型的威脅。這個例子只是一個起點,您可以根據具體需求進行擴展和完善,以滿足您的安全要求。
示例二
對于在 Google Cloud Platform (GCP) 上運行的應用程序,確保其存儲的數據安全是至關重要的。在這篇文章中,我們將引導你如何使用 Go 語言來掃描 GCP 存儲中的文件,以檢測是否存在任何潛在的威脅。
首先,你需要設置 GCP 和 Go 環(huán)境。確保你已經安裝了 Go 語言,并且在 GCP 上有一個活躍的項目。你也需要安裝 Google Cloud SDK,并且使用 `gcloud auth login` 命令進行身份驗證。同時,需要確保已經啟用了 Google Cloud Storage (GCS) 和 Cloud Security Scanner API。
接下來,我們將編寫一個 Go 程序,它將連接到 GCP,訪問指定的存儲桶,并掃描其中的文件。
package main import ( "context" "log" "cloud.google.com/go/storage" ) func main() { ctx := context.Background() client, err := storage.NewClient(ctx) if err != nil { log.Fatalf("Failed to create client: %v", err) } bucket := client.Bucket("your-bucket-name") obj := bucket.Object("your-object-name") attrs, err := obj.Attrs(ctx) if err != nil { log.Fatalf("Failed to get attributes: %v", err) } log.Println(attrs.Name, attrs.Size, attrs.ContentType, attrs.Created) }
在這個程序中,我們首先創(chuàng)建了一個上下文和一個新的 GCS 客戶端。然后,我們指定了要掃描的存儲桶和對象。我們獲取并打印出對象的屬性,包括名稱、大小、內容類型和創(chuàng)建時間。
然而,這只是檢查文件屬性的基本步驟。對于真正的威脅掃描,你可能需要使用更復雜的工具或服務,例如 Google Cloud Security Command Center 或者自定義的威脅檢測腳本。
這個示例程序可以作為你構建更復雜掃描工具的基礎。你可以根據自己的需求進行擴展,例如掃描一個存儲桶中的所有文件,或者根據文件的內容類型進行特定的威脅掃描。
總的來說,使用 Go 掃描 GCP 存儲文件是否存在威脅是一種有效的安全措施。如果你對這個主題有任何疑問或者需要進一步的幫助,歡迎留言。我們希望這篇文章能對你有所幫助,讓你能更好地保護你在 GCP 上的數據安全。文章來源:http://www.zghlxwxcb.cn/article/304.html
到此這篇關于如何使用 Go 掃描 GCP 存儲文件是否存在威脅的文章就介紹到這了,更多相關內容可以在右上角搜索或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!