使用使用者名稱/密碼憑據從一個應用訪問另一個應用會帶來巨大的安全風險。今天,我們宣佈推出 Java 應用連線 Azure 資料庫和事件服務的無密碼連線預覽版,讓您最終擺脫使用密碼的方式。
密碼帶來的安全挑戰
應謹慎使用密碼,開發者絕不能將密碼放在不安全的位置。許多 Java 應用使用使用者名稱和密碼,或其他敏感憑據,例如訪問令牌或連線字串,連線到後端資料、快取、訊息和事件服務。如果暴露,密碼可能被用於未經授權地訪問敏感資訊,例如您為即將到來的活動構建的銷售目錄,或僅僅是必須保密的所有客戶資料。
將密碼嵌入應用程式本身會帶來巨大的安全風險,原因有很多,包括透過程式碼倉庫被發現(見圖 1)。許多開發者使用環境變數將密碼外部化,以便應用可以從不同的環境載入密碼。然而,這只是將風險從程式碼本身轉移到了執行環境。任何獲得環境訪問許可權的人都可以竊取密碼,這反過來又增加了您的資料洩露風險。
圖 1 – 顯示了包含嵌入式使用者名稱和密碼連線資料庫的 Java 程式碼
我們的客戶可能有嚴格的安全要求,需要在不向開發者、運維人員或任何其他人暴露密碼的情況下連線 Azure 服務。他們通常使用金鑰保管庫來儲存密碼並將其載入到應用程式中,並透過新增密碼輪換要求和流程來進一步降低風險。這反過來會增加運維複雜性,並可能導致應用程式連線中斷。
無密碼連線 – 零信任
現在您可以在應用程式中使用無密碼連線,透過無程式碼配置連線到基於 Azure 的服務。您不再需要定期輪換密碼。零信任遵循“永不信任,始終驗證且無需憑證”的原則,透過在授予機器或使用者訪問後端服務的許可權之前驗證其身份,幫助確保所有通訊的安全。
“我們擁有的每一個密碼和每一個金鑰保管庫都是潛在的風險,增加了更多的開銷和管理成本。我總是很高興看到有更多的身份驗證和授權工作為我們處理好,並作為簡單的整合方案交付到 Azure 上的 Java 和 Spring 生態系統中。當我現在 PostgreSQL 支援無密碼連線而刪除我們的金鑰保管庫時,我不會流一滴眼淚。”
-Jonathan Jones,首席解決方案架構師,瑞士再保險管理有限公司 (瑞士)
使用託管標識和 Azure RBAC(基於角色的訪問控制)組合是實現 Java 應用程式到 Azure 服務安全無密碼連線的推薦認證選項。開發者或運維人員無需手動跟蹤和管理託管標識的眾多不同金鑰,因為這些任務由 Azure 內部安全處理。
您可以使用 Service Connector(見圖 2)配置與 Azure 服務的無密碼連線,也可以手動配置。Service Connector 在 Azure Spring Apps、App Service 和 Azure Container Apps 等應用託管服務中啟用託管標識。它使用託管標識和 Azure RBAC 為後端服務配置無密碼連線,並嚮應用程式提供必要的連線資訊——不再需要密碼。

圖 2 – Service Connector 為 Java 應用配置與 PostgreSQL 資料庫的無密碼連線
如果您檢查配置了無密碼連線的應用程式的執行環境,您可以看到完整的連線字串。例如,圖 3 顯示了它如何包含資料庫伺服器地址、資料庫名稱以及將身份驗證委託給 Microsoft Azure JDBC 身份驗證外掛的指令。

圖 3 – 資料來源配置“spring.datasource.url”顯示無密碼連線
讓我們考慮一個使用 Spring Cloud Azure starter 連線 PostgreSQL 資料庫的 Spring Boot 應用。starter 為 Spring Data JPA 模組構建了一個不含密碼的連線字串。透過連線字串,驅動程式明白它必須載入使用 Azure Identity Client Library 獲取訪問令牌的 Azure JDBC 身份驗證外掛。驅動程式使用該令牌作為密碼登入資料庫 - 不再需要密碼。
對於本地開發和測試,開發者可以使用相同的配置,無需使用密碼連線到服務。您將透過 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 日,就在我的家鄉舊金山,我最喜歡的美國西海岸城市。 (悄悄告訴你:如果你現在註冊,使用此程式碼 S1VM22_Advocate_200
,通行證價格可享 200 美元折扣…
領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多獲取支援
Tanzu Spring 透過一份簡單的訂閱即可提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。
瞭解更多近期活動
檢視 Spring 社群所有近期活動。
檢視全部