Amazon Macie 是一項管理服務,利用機器學習(ML)和確定性模式匹配來幫助發現存儲在 Amazon 簡單存儲服務(Amazon S3)桶中的敏感數據。Macie 可以檢測多種格式的敏感數據,包括常用的壓縮和存檔格式。然而,Macie 不支持在圖像、音頻、視頻或其他類型的多媒體內容中發現敏感數據。客戶經常詢問如何有效地檢測圖像中是否存在敏感數據。這對於那些在高度受監管行業中運營並有嚴格數據保護要求的組織來說,可能是一個重大挑戰。
在本文中,我們將向您展示如何通過添加額外的轉換層來將圖像中的數據提取為 Macie 支持的格式,從而提高對存儲在 S3 桶中的圖像中嵌入的敏感數據的可見性。該解決方案還使用 Macie 支持的推薦管理標識符集和自定義數據標識符來涵蓋大多數用例。
解決方案概述
在本節中,我們將介紹解決方案的組成部分。該解決方案使用 AWS 無服務應用程序模型(AWS SAM)部署,這是一個用於構建無服務應用程序的開源框架。AWS SAM 有助於組織相關組件並在單個堆棧上運行。與 AWS SAM CLI 一起使用時,它是一個用於在 AWS 上開發、測試和構建無服務應用程序的有用工具。我們提供了一個 AWS SAM 模板,您可以使用它來設置所需的服務和 AWS Lambda 函數。圖 1 顯示了解決方案的架構。
解決方案的工作流程如下:
用戶將可能包含敏感數據的圖像上傳到 S3 桶中。
在您確認可能的敏感數據已上傳到 S3 桶後,您可以手動調用 Lambda 函數 textract-trigger 以開始該過程。此函數異步調用 Amazon Textract 處理 S3 桶中的文件,文件名擴展名如 .png、.jpg 和 .jpeg。Amazon Textract 為每個圖像創建一個作業並提取每個圖像中找到的文本。
由於操作是異步的,每次調用的作業 ID 和狀態都存儲在 Amazon DynamoDB 表中,以跟踪作業狀態並確保在 Macie 被觸發掃描 S3 桶之前所有作業都已完成。
Amazon Textract 作業的結果 JSON 文件存儲在與原始圖像相同的 S3 桶中。
對於每個分析作業,Amazon Textract 向註冊的 Amazon 簡單通知服務(Amazon SNS)主題 AmazonTextractJobSNSTopic 發送作業完成通知。Lambda 函數 macie-trigger 訂閱 SNS 主題,每次收到完成的 Amazon Textract 分析作業的 SNS 消息時觸發。
Lambda 函數 macie-trigger 進一步後處理,將 JSON 文件中的值提取到文本文件中。然後將此文本文件上傳到相同的 S3 桶中。
然後該函數檢查 DynamoDB 表中其他正在進行的 Amazon Textract 作業。如果有待處理的作業,則函數退出並等待再次觸發。
在 DynamoDB 表中所有 Amazon Textract 作業都標記為完成後,Lambda 函數 macie-trigger 創建一個 Macie 分類作業。
然後,Macie 根據管理標識符和您的自定義數據標識符掃描桶中的敏感數據。
Macie 將持續將分類作業狀態發布到 Amazon CloudWatch 日誌。
可能需要一些時間來掃描 S3 桶中的所有文件,當 Macie 作業完成時,您將通過 SNS 電子郵件收到通知。Lambda 函數 MacieCompletedSNSLambda 將篩選完成的作業狀態並使用 SNS 主題 MacieSnsTopic 發送電子郵件通知。
部署解決方案時,您可以指定 AWS 帳戶中已經存儲可能敏感數據的現有 S3 桶,或者作為設置的一部分部署新的 S3 桶。如果您指定現有的 S3 桶,請確保桶策略或 KMS 密鑰策略中沒有其他語句會拒絕相關解決方案組件訪問 S3 桶。如果未指定現有的 S3 桶,將創建一個名為 s3-with-sensitive-data-<account-id>–<random-string> 的新 S3 桶。
先決條件
在部署解決方案之前,請確保具備以下先決條件。
在您的帳戶中啟用 Macie。 有關說明,請參閱 Amazon Macie 入門。
確定您希望 Macie 檢測的敏感文本數據的正則表達式(regex)模式。這將允許您創建自定義數據標識符,以補充 Macie 提供的管理數據標識符。 有關詳細信息,請參閱 Amazon Macie 中的構建自定義數據標識符。 在預部署步驟中有一個示例,您可以按照該示例進行操作,並使用解決方案附帶的示例圖像。
確保您有權限部署解決方案中詳細說明的 AWS 服務:Lambda、Amazon S3、Amazon Textract、Amazon SNS、Macie、Amazon CloudWatch 和 DynamoDB。
安裝 AWS SAM CLI,您將使用它來部署解決方案。要了解有關 AWS SAM 如何工作的更多信息,請參閱 AWS SAM 項目和 AWS SAM 模板。
預部署步驟
在具備先決條件的情況下,您需要通過 AWS 管理控制台為 Macie 設置一個或多個自定義標識符,然後才能部署解決方案。使用以下步驟設置本文提供的圖像的示例自定義標識符。
設置自定義標識符:
瀏覽到 Amazon Macie 控制台。
在導航窗格中選擇自定義數據標識符,然後選擇創建。
輸入自定義標識符的名稱和描述,例如以下示例:
名稱:新加坡 NRIC 號碼
描述:此表達式可用於查找或驗證以字母 S、F、T 或 G 開頭,後跟七位數字,並以 A 到 Z 中的任何字符結尾的新加坡 NRIC 號碼。
對於正則表達式,輸入:[SFTG]\d{7}[A-Z]。
對於關鍵字,輸入:Singapore, Identity, Card。關鍵字很重要,因為它們可以幫助提高檢測的準確性並優化結果。
將其他字段保留為默認值,然後選擇提交。
瀏覽到新創建的自定義標識符並記下 ID。此 ID 是部署 AWS SAM 解決方案時所需的輸入。
部署解決方案
在具備先決條件並完成預部署步驟後,您已準備好部署解決方案。
部署解決方案:
打開 CLI 窗口,導航到您首選的本地目錄並運行 git clone https://github.com/aws-samples/enhancing-macie-with-textract。
使用 cd enhancing-macie-with-textract 導航到此目錄。
運行 sam deploy –guided 並按照分步說明指示部署詳細信息,例如所需的 CloudFormation 堆棧名稱、AWS 區域和其他詳細信息。以下是一些請求參數的描述:
ExistingS3BucketName:這是您希望解決方案掃描的 S3 桶的名稱。這是一個可選參數。如果留空,解決方案將為您創建一個 S3 桶來存儲您想要掃描的對象。
MacieCustomCustomIdentifierIDList:這是您在最後一個預部署步驟中記下的 ID。使用此字段輸入 Macie 要檢測的自定義標識符列表。如果有多個 ID,則每個 ID 應以逗號分隔(例如,59fd2814-0ba8-41cc-adb2-1ffec6a0bb3c, 665cf948-ea30-42df-9f63-9a858cbfe1a8)。
EmailAddress:這是您希望在 Macie 作業完成時 Amazon SNS 電子郵件通知發送到的電子郵件地址。
MacieLogGroupExists:這會檢查您是否有現有的 Macie CloudWatch 日誌組(/aws/macie/classificationjobs)。如果這是您第一次運行 Macie 作業,請輸入 No 或 n。否則,輸入 Yes 或 y。
完成後,將出現創建所需資源的確認請求。AWS SAM 創建一個默認 S3 桶來存儲必要的資源,然後繼續到部署提示。輸入 y 以部署並等待部署完成。
部署完成後,您應該會看到以下輸出:成功創建/更新堆棧 – {StackName} in {AWSRegion}。您可以在 CloudFormation 控制台中查看資源和堆棧。
將從 no-reply@sns.amazonaws.com 發送電子郵件到您在步驟 3 中輸入的電子郵件地址。選擇確認訂閱以允許 SNS 向您發送 Macie 作業完成電子郵件。
測試解決方案
部署了解決方案後,使用一組示例圖像來驗證它是否可以檢測圖像中的敏感數據。
測試解決方案:
使用 Amazon S3 控制台導航到您在部署期間指定的桶。如果您沒有指定要掃描的 S3 桶,請查找名為 s3-with-sensitive-data-<account-id>–<random-string> 的新桶。
在您的項目目錄中,有示例圖像在 sample-images.zip 中。解壓縮文件並將示例圖像上傳到 S3 桶中。示例圖像包括美國駕駛執照、社會安全卡、護照和新加坡國家註冊身份證(NRIC)。
瀏覽到 AWS Lambda 控制台並選擇 {StackName}-TextractTriggerLambda-<random-string> 函數。
選擇測試選項卡,然後選擇測試以開始對上傳的圖像進行自動敏感數據發現過程。
整個過程將需要大約 15 分鐘完成。Macie 掃描完成後,您將收到電子郵件通知。
瀏覽到 Amazon Macie 控制台並在導航窗格中選擇作業。您應該會看到作業掃描 [數量] 對象 [日期時間戳],與電子郵件通知中顯示的作業名稱匹配。
在詳細信息面板中,選擇顯示結果按鈕,然後選擇顯示發現。
您將看到與您選擇的 Macie 敏感數據發現作業 ID 相關的發現。
理解發現
在本節中,我們將更仔細地查看每個發現。
在控制台中,查看受影響資源列中以 singapore-pink-nric-postprocessed.txt 結尾的發現並選擇它。發現類型 SensitiveData:S3Object/CustomIdentifier 意味著資源包含與自定義數據標識符的檢測標準匹配的文本。此示例中的其他發現類型來自管理數據標識符。 有關 Macie 發現類型的更多信息,請參閱敏感數據發現類型。
在發現信息面板中,您還可以看到:
在概覽部分,資源指示哪個資源包含敏感數據。資源識別文本文件;然而,您可以識別原始圖像文件,因為它具有相同的對象名稱(除了文件類型)。
在自定義數據標識符部分,您可以看到發現的敏感數據類型。在這種情況下,發現涉及與新加坡 NRIC 的正則表達式匹配的數據。
通過使用此解決方案,您可以使用 Macie 檢測 S3 桶中圖像內的敏感數據以及每個發現對應的圖像。
使用解決方案
在本文中,您已配置了一個自定義數據標識符和一組推薦的管理標識符。然而,您可以通過提供逗號分隔的列表來創建和使用多個自定義數據標識符,如部署解決方案的步驟 3 中所述。
此解決方案旨在實現單個 S3 桶中圖像對象中文本的敏感數據發現。要將範圍擴展到包括多個 S3 桶,需要進行一些額外的代碼和權限更改,以允許 Lambda 函數處理和訪問多個現有的 S3 桶。
需要注意的是 Amazon Textract 的語言能力。Amazon Textract 可以從標準英文字母和 ASCII 符號中提取打印文本和手寫文本。目前,Amazon Textract 支持英語、德語、法語、意大利語和葡萄牙語的提取。 有關 Amazon Textract 可以識別的文本信息的更多信息,請參閱 Amazon Textract 常見問題解答。
清理資源
要清理為此示例創建的資源:
如果您沒有在自己的 S3 桶上設置掃描,請清空作為解決方案一部分創建的 S3 桶。打開 Amazon S3 控制台,搜索桶名 s3-with-sensitive-data-<account-id>–<random-string> 並選擇清空。
使用以下方法之一刪除 CloudFormation 堆棧:
使用 CloudFormation 控制台刪除堆棧。
使用 AWS SAM CLI 在終端中運行 sam delete。按照說明進行操作,並在提示刪除堆棧時輸入 y。
結論
在本文中,您學習了如何增強 Amazon Macie 的功能,以在圖像文件中進行敏感數據發現。通過此解決方案,您可以將 Amazon Macie 的好處擴展到結構化文件格式之外。
如果您想將 Amazon Macie 的好處擴展到掃描數據庫中的敏感數據,您可能會發現這些博客文章有用:
如果您對本文有反饋,請在評論部分提交評論。如果您對本文有疑問,請在 AWS 安全、身份和合規 re:Post 上開啟新線程或聯繫 AWS 支持。
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!