使用使用者名稱/密碼憑證從一個應用程式存取另一個應用程式會帶來巨大的安全風險,原因有很多。 今天,我們宣布 Java 應用程式到 Azure 資料庫和事件服務的無密碼連線預覽版,讓您可以最終擺脫使用密碼的困擾。
密碼的安全性挑戰
使用密碼時應謹慎,開發人員絕不能將密碼放置在不安全的位置。 許多 Java 應用程式使用使用者名稱和密碼,或其他敏感憑證(例如存取權杖或連接字串) 連接到後端資料、快取、訊息傳遞和事件服務。 如果洩露,密碼可用於未經授權地存取敏感資訊,例如您為即將推出的活動建立的銷售目錄,或者只是必須保密的所有客戶資料。
將密碼嵌入應用程式本身會帶來巨大的安全風險,原因有很多,包括透過程式碼儲存庫發現(請參閱下圖 1)。 許多開發人員使用環境變數將這些密碼外部化,以便應用程式可以從不同的環境載入它們。 但是,這只會將風險從程式碼本身轉移到執行環境。 任何有權存取環境的人都可以竊取密碼,進而增加您的資料外洩風險。
圖 1 – 顯示 Java 程式碼,其中嵌入了使用者名稱和密碼以連接到資料庫
我們的客戶可以有嚴格的安全要求,即在不向開發人員、操作員或任何其他人公開密碼的情況下連接到 Azure 服務。 他們通常使用金鑰保存庫來儲存密碼並將其載入到應用程式中,並且他們透過新增密碼輪換要求和程序來進一步降低風險。 反過來,這增加了操作複雜性,並可能導致應用程式連線中斷。
無密碼連線 – 零信任
現在,您可以在應用程式中使用無密碼連線,以程式碼免費的設定連接到基於 Azure 的服務。 您不再需要輪換密碼。 零信任使用「永不信任,始終驗證和無憑證」的原則,透過在授予機器或使用者存取後端服務的權限之前驗證身份來幫助保護所有通訊的安全。
「我們擁有的每個密碼和每個 Key Vault 都是潛在的負債,這會增加更多的管理費用和成本。 我總是很高興看到更多的身份驗證和授權由我們處理,並作為簡單的整合運送到 Azure 上的 Java 和 Spring 生態系統中。 當我刪除我們的 Key Vault 時,我不會流淚,現在 PostgreSQL 支援無密碼連線。」
-Jonathan Jones,Lead Solutions Architect,Swiss Re Management Ltd。(瑞士)
使用受控識別和 Azure RBAC(基於角色的存取控制)組合是從 Java 應用程式安全、無密碼連線到 Azure 服務的建議身份驗證選項。 開發人員或操作員無需手動追蹤和管理受控識別的許多不同密碼,因為這些任務由 Azure 在內部安全地處理。
您可以使用 Service Connector 設定到 Azure 服務的無密碼連線(請參閱下圖 2),也可以手動設定它們。 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” 顯示無密碼連線
讓我們考慮一個連接到 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 粉絲們! 歡迎來到又一期的 This Week in Spring!
已經來到九月的最後一週了! 今年已經過了大半。 白晝漸短。 而南瓜風味拿鐵也上市了。 較黑暗和寒冷的日子有點令人沮喪,但我仍然對這個時節感到興奮和高興。 你知道為什麼嗎?
SpringOne 2022 就要來了! 我覺得這就像是在收到禮物的重要節日之前那種焦慮、興奮的時刻! 並且伴隨著 Spring Boot 3 和 Spring Framework 6。 我們將在 Spring 部落格上發布所有內容,當然,但如果您想有機會從源頭學習,那麼我希望您能在 2022 年 12 月 6 日至 8 日加入我們,就在我的家鄉舊金山,我最喜歡的美國西海岸城市,也是我的家鄉。 (偷偷告訴你:如果您現在註冊,可以使用此代碼 S1VM22_Advocate_200
從通行證價格中獲得 200 美元的折扣…
Spring 團隊一直在努力為 Spring 應用程式提供原生映像支援。 在 Spring Boot 2 中經過 3 年以上的 Spring Native 實驗專案孵化後,原生支援將隨著 Spring Framework 6 和 Spring Boot 3 轉為正式發布!
原生映像為 Java 應用程式提供近乎即時的啟動時間和減少的記憶體消耗。 最近的 Spring Boot 3.0.0-M5
版本標誌著我們第一次要求社群對我們的原生故事提供更廣泛的回饋。 如果您需要了解基礎知識,請參閱 3 月底的 Ahead Of Time 基礎部落格文章。 您也可以學習 如何為 Spring Boot 3.0 準備您的應用程式…
我花了很長時間才欣賞和理解到軟體開發的魔鬼藏在細節中。 編寫快樂路徑業務邏輯並不是最困難的部分! 它是失敗案例、可觀察性、彈性和流程。 它是安全性和其他所謂的非功能需求。 它是為敏捷性而架構。 它是生產。 Spring 是獨一無二的,因為它位於許多令人興奮的應用程式開發討論的交匯點。
Spring 的社群包含多個方面,是其關鍵定義特徵之一。 這種討論的多樣性意味著任何試圖涵蓋所有想法的會議都會面臨挑戰。 我不知道還有其他任何節目 - 我一生中在數千個節目和活動中發言過! - 像 SpringOne 一樣完全涵蓋應用程式開發的不同層面…
領先一步
VMware 提供培訓和認證,以加速您的進度。
瞭解更多獲得支援
Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。
瞭解更多即將舉行的活動
查看 Spring 社群中所有即將舉行的活動。
查看全部