在現代的數據驅動世界中,數據安全和隱私是我們不能忽視的問題。微軟 Azure 提供了一種名為 Always Encrypted 的功能,可以保護您的數據,即使在傳輸和存儲時也能確保其安全。然而,Always Encrypted 有一個限制,那就是它不允許在伺服器端進行數據操作。這就是 Always Encrypted with Secure Enclaves 的用武之地。
Always Encrypted with Secure Enclaves 是 Always Encrypted 的一個擴展,它允許在伺服器端的一個受信任的執行環境中解密敏感數據,這個環境被稱為安全的飛地。這是一個在數據庫系統進程內的受保護的內存區域,對於數據庫系統和主機機器上的其他進程來說,它就像一個黑盒子。
以下是一個使用 Always Encrypted with Secure Enclaves 的步驟:
- 從門戶創建一個 Linux Python Function App。
- 在新的 Function App 中設置 managed identity,並從門戶啟用 Identity 和保存。它將自動為您生成一個 Object (principal) ID。
- 在 Azure SQL 數據庫中分配角色。搜索您自己的帳戶並保存為管理員。
- 到數據庫的 Query editor 中,並確保使用您在上一步設置的帳戶登錄,而不是使用用戶名和密碼。否則,第5步將會失敗,並出現以下異常:“Failed to execute query. Error: Principal ‘xxxx’ could not be created. Only connections established with Active Directory accounts can create other Active Directory users.”
- 執行以下查詢以為 function app 創建用戶並更改角色。您可以根據需求選擇更改這些角色的一部分。
CREATE USER "yourfunctionappname" FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER "yourfunctionappname"
ALTER ROLE db_datawriter ADD MEMBER "yourfunctionappname"
ALTER ROLE db_ddladmin ADD MEMBER "yourfunctionappname"
- 利用以下示例代碼來構建您自己的項目並部署到 function app。
詳情請看:
How to convert Always Encrypted to Always Encrypted with Secure Enclaves