使用使用者名稱/密碼憑證從一個應用程式存取另一個應用程式會帶來巨大的安全風險,原因有很多。 今天,我們宣布 Java 應用程式到 Azure 資料庫和事件服務的無密碼連線的預覽版,讓您最終可以擺脫使用密碼。
密碼的安全性挑戰
應謹慎使用密碼,開發人員絕不能將密碼放置在不安全的位置。 許多 Java 應用程式使用使用者名稱和密碼,或其他敏感憑證(例如存取權杖或連線字串)連線到後端資料、快取、訊息傳遞和事件服務。 如果洩露,密碼可用於未經授權地存取敏感資訊,例如您為即將到來的活動建立的銷售目錄,或僅僅是必須保密的所有客戶資料。
將密碼嵌入到應用程式本身中會帶來巨大的安全風險,原因有很多,包括透過程式碼儲存庫進行發現(請參閱下面的圖 1)。 許多開發人員使用環境變數外部化此類密碼,以便應用程式可以從不同的環境載入它們。 但是,這只會將風險從程式碼本身轉移到執行環境。 任何獲得環境存取權限的人都可以竊取密碼,這反過來會增加您的資料外洩風險。
圖 1 – 顯示具有嵌入式使用者名稱和密碼以連線到資料庫的 Java 程式碼
我們的客戶可能有嚴格的安全要求,要求在不向開發人員、運營商或任何其他人暴露密碼的情況下連線到 Azure 服務。 他們經常使用保存庫來儲存密碼並將其載入到應用程式中,並且他們透過新增密碼輪換要求和程序來進一步降低風險。 這反過來又增加了運營複雜性,並可能導致應用程式連線中斷。
無密碼連線 – 零信任
現在,您可以使用應用程式中的無密碼連線,透過免程式碼配置連線到基於 Azure 的服務。 您不再需要輪換密碼。 使用「永不信任,始終驗證且無需憑證」的原則,零信任透過在授予對後端服務的存取權限之前驗證身份來幫助保護所有通訊的安全,無論是機器還是使用者。
「我們擁有的每個密碼和每個金鑰保存庫都是潛在的負債,這增加了更多的管理費用和成本。 我總是很高興看到更多的身份驗證和授權為我們處理,並作為簡單的整合運送到 Azure 上的 Java 和 Spring 生態系統中。 當我刪除我們的金鑰保存庫時,我不會流下任何眼淚,現在 PostgreSQL 支援無密碼連線了。」
-Jonathan Jones,首席解決方案架構師,Swiss Re Management Ltd。(瑞士)
使用受控識別和 Azure RBAC (角色型存取控制) 的組合,是 Java 應用程式安全、無密碼連線至 Azure 服務的建議驗證選項。開發人員或運營人員不需要手動追蹤和管理受控識別的許多不同密碼,因為這些任務由 Azure 在內部安全地處理。
您可以使用服務連接器設定至 Azure 服務的無密碼連線(請參閱下圖 2),或者您可以手動設定它們。服務連接器可在 Azure Spring Apps、App Service 和 Azure Container Apps 等應用程式託管服務中啟用受控識別。它使用受控識別和 Azure RBAC 配置後端服務的無密碼連線,並為應用程式提供必要的連線資訊 – 不再需要密碼。

圖 2 – 服務連接器為 Java 應用程式配置至 PostgreSQL 資料庫的無密碼連線
如果您檢查配置為無密碼連線的應用程式的執行環境,您可以看到完整的連線字串。例如,圖 3 顯示了它如何攜帶資料庫伺服器位址、資料庫名稱以及委派驗證給 Microsoft Azure 的 JDBC 驗證外掛程式的指令。

圖 3 – 資料來源配置 “spring.datasource.url” 顯示無密碼連線
讓我們考慮一個連接到 PostgreSQL 資料庫的 Spring Boot 應用程式,該資料庫使用 Spring Cloud Azure Starter。該 Starter 為 Spring Data JPA 模組組合一個不帶密碼的連線字串。從連線字串中,驅動程式瞭解它必須載入 Azure 的 JDBC 驗證外掛程式,該外掛程式使用 Azure Identity Client Library 來獲取存取權杖。驅動程式使用權杖作為密碼登入資料庫 - 不再需要密碼。
對於本地開發和測試,開發人員可以使用相同的配置來連接到服務,而無需使用密碼。您將通過 Azure CLI、IntelliJ 或任何開發工具進行身份驗證,並使用該身份來保護應用程式的安全存取,以便與 Azure 服務建立無密碼連線。
了解更多資訊並刪除密碼!
您可以逐漸擺脫在應用程式中使用密碼。立即遷移您現有的 Java 應用程式,以使用 Azure 服務的無密碼連線!
閱讀更多關於無密碼連線的資訊 – https://aka.ms/Delete-Passwords
資源
<tbody>
<tr>
<td>Azure Service</td>
<td>Java Quickstart</td>
<td>Spring Quickstart</td>
<td>Migration Guide</td>
</tr>
<tr>
<td> Azure Database for MySQL</td>
<td>
<a href="https://learn.microsoft.com/en-us/azure/mysql/single-server/connect-java?toc=%2Fazure%2Fdeveloper%2Fintro%2Ftoc.json&bc=%2Fazure%2Fdeveloper%2Fintro%2Fbreadcrumb%2Ftoc.json&tabs=passwordless">JDBC</a>
</td>
<td>
<div><a href="https://learn.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-data-jdbc-with-azure-mysql?tabs…
嗨,Spring 愛好者們! 歡迎來到另一期的本週 Spring!
已經來到九月的最後一週了!今年已經過了一大半了。 白晝時間越來越短。 南瓜香料拿鐵也上市了。 越來越黑和冷的天氣有點令人沮喪,但今年這個時候我仍然感到興奮和高興。 知道為什麼嗎?
SpringOne 2022 就要來了! 我感覺這就像是在重要的節日之前那種焦慮、興奮的時刻,你會收到禮物! 同時,Spring Boot 3 和 Spring Framework 6 也會發布。 當然,我們將在 Spring 部落格上宣布所有消息,但如果您想有機會從源頭學習,那麼我希望您能加入我們,在 2022 年 12 月 6-8 日,就在我的家鄉舊金山,我最喜歡的美國西海岸城市。 )Psst.: 如果您現在註冊,可以使用此代碼 S1VM22_Advocate_200
獲得 200 美元的通行證價格折扣…
Spring 團隊一直在研究 Spring 應用程式的原生映像檔支援已有一段時間。經過在 Spring Native 實驗性專案中使用 Spring Boot 2 進行 3 年以上的孵化後,原生支援將與 Spring Framework 6 和 Spring Boot 3 一起轉為正式推出!
原生映像檔為 Java 應用程式提供幾乎即時的啟動時間和減少的記憶體消耗。 最近的 Spring Boot 3.0.0-M5
版本標誌著我們首次要求更廣泛的社群針對我們的原生故事提供回饋。 如果您需要複習基礎知識,請參考 3 月底的 Ahead Of Time 基礎知識部落格文章。 您還可以了解 如何準備您的應用程式以用於 Spring Boot 3.0…
搶先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多取得支援
Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。
了解更多即將舉行的活動
查看 Spring 社群中所有即將舉行的活動。
查看全部