首頁 > 後端開發 > Python教學 > 使用託管識別在 Azure 中實現安全的跨服務通信

使用託管識別在 Azure 中實現安全的跨服務通信

Susan Sarandon
發布: 2024-12-23 00:40:01
原創
622 人瀏覽過

託管身分對於 Azure 中的安全跨服務通訊至關重要。它們消除了管理秘密、金鑰或連接字串的需要,從而實現了應用程式元件的無縫整合。在本部落格中,我將示範如何使用託管識別碼將 Azure SQL 資料庫連接到在 Azure 應用程式服務上執行的 Python 後端。


微軟身份驗證庫

要使用 Entra 身分連接到 Azure 服務,您需要 Microsoft 驗證程式庫 (MSAL)。在此範例中,我使用的是 Python 庫,但不用擔心,每種主要程式語言都存在 MSAL。

這是一個連接到 Azure SQL 資料庫的簡單函數:

滿足這些先決條件後,您可以在程式碼中建立資料庫連線並執行查詢,而無需處理機密或連接字串。


示範 Python 後端

為了演示,我創建了一個簡單的 Python Flask API,它會傳回員工數據,例如姓名、職位和薪水。注意如何使用 get_db_connection() 函數開啟資料庫連線並查詢資料。

這種簡單的方法可確保您的後端使用託管身分與資料庫安全地互動。


Dockerfile

如果您要在 Docker 容器中部署應用程序,這裡是用於安裝 SQL Server 的 ODBC 驅動程式的 Dockerfile:

此設定可確保您的容器已準備好安全連線至 Azure SQL。


SQL Server 與資料庫部署

部署 Azure SQL 伺服器時,設定僅 Azure AD 驗證。這是託管身分的要求。以下是部署 SQL 伺服器和資料庫的 Bicep 範本:

此範本確保資料庫已安全配置並可供使用。


授予託管身分資料庫角色

要讓您的應用程式服務能夠在沒有機密的情況下存取資料庫,請將必要的資料庫角色指派給託管識別碼。您無法使用 Bicep 或 Terraform 執行此步驟。建立自訂腳本或透過 Azure 入口網站存取資料庫。

這些角色允許託管身分根據需要執行讀取、寫入和架構更改操作。


GitHub 上的公開模板

有關完整的程式碼,包括 CI/CD 集成,請查看 GitHub 上的公開模板。此儲存庫包含複製本部落格中所述的設定所需的一切。

Using Managed Identities for Secure Cross-Service Communication in Azure 拉佐克斯 / 帶有 sql 資料庫的快速啟動後端

用於測試新應用程式功能的輕量級後端環境。它包括從託管應用程式到管理資料持久性的所有內容,並整合 CI/CD 以方便測試和迭代。

使用 SQL 資料庫連線快速啟動後端

此用例涉及使用 Azure SQL 資料庫部署 Azure 應用程式服務,以提供用於測試新應用程式功能的輕量級後端環境。它包括從託管應用程式到管理資料持久性的所有內容,並整合 CI/CD 以方便測試和迭代。

目標

  • 在 Azure 上部署可擴充且安全的 Web 後端,用於測試新的應用程式功能。
  • 使用 Bicep 自動設定基礎架構。
  • 整合應用程式的持續部署,以便頻繁測試和輕鬆更新。

組件概述

  • Azure 應用程式服務 - 部署簡單的後端 API。
  • Azure SQL 資料庫 - 設定 SQL 資料庫以實現持久性。
  • Azure 容器註冊表(可選)- 儲存容器映像以進行版本控制(如果您使用的是容器化版本)。
  • 持續整合/持續部署 (CI/CD) - 使用 GitHub Actions 自動部署。



在 GitHub 上查看



使用託管身分可以簡化跨服務通信,並透過消除對機密的需求來增強安全性。強烈建議任何在 Azure 中建立安全且可擴展的應用程式的人使用此方法。

以上是使用託管識別在 Azure 中實現安全的跨服務通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板