Azure 應用的托管身份與服務主體

Microsoft Entra ID -- 前稱 Azure Active Directory -- 提供強大的身份驗證和授權功能。托管身份和服務主體通過限制憑據暴露的風險來幫助確保對 Azure 資源的訪問安全。

托管身份為Azure原生應用程序自動管理身份,而服務主體則非常適合需要訪問Azure資源的外部應用程序。

托管身份簡化了授予Azure服務訪問其他資源的過程,通過自動管理標識來實現。相比之下,服務主體提供了更詳細的控制級別,對于自動化任務和將外部應用程序集成到Azure資源中至關重要。區分這兩種方法提高了安全性,并簡化了資源管理和運營效率。

在比較 Azure 中的托管身份和服務主體時,出現以下關鍵差異:

  • 身份分配和刪除。
  • 自動與手動憑據管理。
  • 憑據暴露和風險。
  • 在 Azure 原生應用程序與外部應用程序中的使用。

理解這些身份驗證方法對于維護安全和高效的云基礎設施至關重要,無論是配置需要訪問存儲賬戶的虛擬機,還是使用 Azure DevOps 自動化部署。

托管身份(managed identity)

Microsoft Entra ID 中的受管身份使 Azure 服務能夠在不安全地管理憑據的情況下,向其他 Azure 資源進行身份驗證。它自動提供一個可以獲取 Entra ID 令牌的身份。這個過程消除了硬編碼憑據的需要,從而增強了安全性,并簡化了身份驗證和授權。

受管身份有兩種選項可供選擇:

  1. 系統分配的托管身份。
  2. 用戶分配的托管身份。

什么是系統分配的托管身份?

系統分配的托管身份是與 Azure 服務實例(例如 VM 或 Web 應用)一起自動創建的。該身份與該資源綁定,使其易于管理但無法共享。例如,由于該身份與服務共享相同的生命周期,刪除服務也會刪除該身份。這種類型的身份在單個資源需要訪問其他 Azure 資源并且需要最少的管理時效果最好。系統分配的托管身份具有以下屬性:

  • 自動創建。
  • 標識生命周期與服務綁定。
  • 需要最少的管理。
  • 最適用于單個資源。

什么是用戶分配的托管身份?

一個具有用戶分配的托管身份的Azure資源獨立操作,用戶可以將該身份分配給一個或多個服務實例。用戶手動創建該身份作為獨立資源,并與任何服務實例分開管理。該身份在明確刪除之前會一直存在。當多個資源共享相同身份時,這個資源特別有用。當用戶需要對身份的生命周期管理有更多靈活性和控制時,它也是有益的。總之,用戶分配的托管身份具有以下特點:

  • 獨立創建。
  • 可以在多個資源之間共享。
  • 更大的管理控制。
  • 需要手動刪除。?

演示?

讓我們快速演示一個場景,使用虛擬機作為 Azure 資源:

從 Azure 門戶中,選擇虛擬機;在設置中找到身份。

將狀態設置為開啟,并保存更改。

然后切換到 Azure key vault / IAM,我們可以定義這個系統分配的托管身份,擁有reader. role(或其他權限)。例如,讀取 Azure 存儲帳戶的訪問密鑰或類似的東西。在指派的對象中選擇managed identity。

同樣,讓我們在下一個示例中移除虛擬機的系統分配托管身份,使用用戶分配的身份(一個 Azure 資源只能鏈接一個,不能同時鏈接兩個……):從 Azure 虛擬機面板中,導航到身份并將“狀態”切換按鈕關閉。保存設置時會提示您進行確認。

創建一個user managed identity

?然后將該user managed identity指派給這臺web01 vm。

最后在key vault /IAM中為該user identity分配read role。讓它能夠讀取key valut 中的secret。

?保存更改后,結果是現在 Azure 虛擬機以及分配給它們的用戶分配的托管標識的 Web 應用程序都可以從 Azure 密鑰保管庫中讀取我們的secret。

什么是服務主體?

服務主體的定義

服務主體是Microsoft Entra ID中的一種安全身份,使得應用程序、托管服務和自動化工具能夠安全地訪問Azure資源。它的功能類似于用戶身份,但它代表的是一個應用程序或服務,需進行身份驗證并獲得授權以訪問特定資源,而不是人類用戶。

服務主體的分類

服務主體使得應用程序能夠以最小權限登錄并執行任務,確保操作的安全性。Azure中有三種主要類型的服務主體:

  • 應用程序服務主體。當應用程序在Microsoft Entra ID中注冊時,會創建應用程序服務主體。它們代表該應用程序在其部署中的身份,使其能夠在Azure或Microsoft Entra ID中進行身份驗證并訪問資源。
  • 托管身份服務主體。在Azure上啟用托管身份時,會創建托管身份服務主體。這種類型的主體通過為應用程序提供身份,簡化了憑證管理,使其能夠連接到支持Azure身份驗證的資源。
  • 傳統服務主體。這些主體是較舊的方法,通常涉及手動管理憑證,例如密碼或證書。組織通常在現代身份驗證機制不可行的環境中使用這些主體。?

演示:?

PS /home/rockwang415> az ad sp create-for-rbac --name "rockdevblogsp"                                                                                

復制這些信息;在 Azure DevOps 服務連接的例子中,這些信息將如下使用:?

您只需在相應的參數字段中復制正確的信息:

Subscription Id =  用“/subscriptions/xxxxxx-xxxx-xxxx” 替換
Subscription Name =  從Azure Portal / Subscriptions中查看
Service Principal Id = 從前面的命令的appId獲得
Service Principal Key = 從前面命令的password 獲得
Tenant ID =  azure ad tenant 標識ID

托管身份與服務主體之間的區別

  • 理解托管身份與服務主體之間的區別對于選擇適當的 Azure 資源身份驗證方法至關重要。雖然兩者都能讓應用程序和服務安全地訪問 Azure 資源,但它們具有不同的特征和使用場景。
  • 托管身份簡化了憑據管理,因為 Azure 會自動處理和輪換它們。服務主體則需要手動處理客戶端密鑰或證書,并必須安全存儲和輪換。
  • 在生命周期和范圍方面,用戶可以將托管身份分配為系統分配(用于單個資源)或用戶分配(可在多個資源之間共享)。與此同時,用戶可以獨立創建和刪除服務主體,從而提供更細致的訪問控制。
  • 托管身份適合 Azure 原生資源,而服務主體適合需要與 Azure 交互的外部應用程序或服務。
  • 在安全性方面,托管身份通過避免憑據暴露來增強安全性,由 Azure 管理輪換。相反,服務主體要求嚴格管理憑據以降低風險。

何時使用

  • 每種方式使用托管身份或服務主體的決定取決于幾個因素。當應用程序或服務在 Azure 內運行時,使用托管身份。Azure 可以自動處理憑據管理,并最大程度地降低憑據暴露的風險。托管身份還簡化了身份驗證過程并自動化身份管理,從而減少了管理工作量。
  • 當應用程序或服務在 Azure 之外運行時,服務主體是最佳選擇。它是自動化與 Azure 資源交互的任務或腳本的必要條件,或者需要對權限和訪問級別進行更細致的控制。服務主體還對于與外部服務或第三方應用程序的集成是必要的。它們需要安全的憑據處理和持續的管理,但為外部應用程序提供了更多靈活性。
  • 這兩種方法都支持 Azure RBAC 進行訪問控制,盡管服務主體更適合外部使用。托管身份通過最低限度的憑據暴露簡化了合規性,而服務主體需要更嚴格的政策以滿足 GDPR 或 HIPAA 等法規。

真實場景示例

  • 管理身份的一個使用案例是當 Azure Functions 需要從 Azure Queue Storage 讀取數據并寫入 Azure Cosmos DB 時。用戶為函數啟用一個系統分配的管理身份,并在 Azure RBAC 中分配必要的角色。這簡化了身份驗證,并消除了憑據管理,由 Azure 處理安全性和憑據輪換。
  • 對于服務主體,想象一下一個在第三方 CI/CD 工具中將代碼部署到 Azure 的 DevOps 管道。用戶可以在 Microsoft Entra ID 中創建一個服務主體,分配諸如貢獻者的角色,并在 CI/CD 工具中安全存儲其憑據。這個設置使工具能夠安全地進行身份驗證并自動化 Azure 資源管理。?

結論

確保在云計算中獲得資源的訪問權限至關重要。Microsoft Azure 提供了兩種基本的身份驗證方法:托管身份和服務主體。托管身份最適合內部 Azure 資源,它們提供無縫、安全的身份驗證,而無需管理憑據。服務主體則適用于需要詳細訪問控制的外部應用程序或自動化任務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81394.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

16 C 語言布爾類型與 sizeof 運算符詳解:布爾類型的三種聲明方式、執行時間、賦值規則

1 布爾類型 1.1 布爾類型概述 布爾類型用于表示邏輯上的真(true)和假(false)兩種狀態,是編程中條件判斷和邏輯運算的基礎。在 C 語言中,布爾值的表示方式隨著標準的發展而不斷完善。 1.2 布爾類型的三種聲…

【C++詳解】string各種接口如何使用保姆級攻略

文章目錄 一、string介紹二、string使用構造函數析構函數賦值運算符重載string的遍歷修改方法1、下標[]2、迭代器3、范圍for 迭代器使用詳解const迭代器反向迭代器(reverse) Capacity(容量相關)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(縮容)reserve(擴…

回調函數應用示例

回調函數是一種通過函數指針(或引用)調用的函數,它在特定事件或條件發生時被另一個函數調用。回調函數的核心思想是將函數作為參數傳遞,以便在適當的時候執行自定義邏輯,常用于異步編程、事件驅動架構等場景。 業務場景…

linux標準庫頭文件解析

linuxc標準庫 C 標準庫&#xff08;C Standard Library&#xff09;包含了一組頭文件&#xff0c;這些頭文件提供了許多函數和宏&#xff0c;用于處理輸入輸出、字符串操作、數學計算、內存管理等常見編程任務。。 頭文件功能簡介<stdio.h>標準輸入輸出庫&#xff0c;包含…

Unbuntu 命令

Ubuntu 命令速查表? ?分類??命令??功能描述??示例/常用選項????文件與目錄?ls列出目錄內容ls -a&#xff08;顯示隱藏文件&#xff09;; ls -lh&#xff08;詳細列表易讀大小&#xff09; cd切換目錄cd ~&#xff08;主目錄&#xff09;; cd ..&#xff08;上級…

怎么在excel單元格1-5行中在原來內容前面加上固定一個字?

環境&#xff1a; WPS 2024 問題描述&#xff1a; 怎么在excel單元格1-5行中在原來內容前面加上固定一個字&#xff1f; 解決方案&#xff1a; 1.在Excel中&#xff0c;如果您想在單元格的內容前面添加一個固定的字&#xff0c;可以通過以下幾種方法實現&#xff1a; 方法…

Linux zip、unzip 壓縮和解壓

zip 命令用于壓縮文件&#xff0c;壓縮后的文件后綴名為 .zip 。 對應的解壓命令是 unzip 。 測試用的目錄結構如下&#xff0c; userzn:~/test$ tree . ├── folder1 │ ├── folder111 │ │ └── file1.txt │ └── main1.c ├── folder2 │ ├── …

【C語言練習】047. 理解遞歸與循環的轉換

047. 理解遞歸與循環的轉換 047. 理解遞歸與循環的轉換1. 遞歸與循環的基本概念遞歸循環2. 遞歸與循環的轉換示例1:計算階乘示例2:漢諾塔問題3. 遞歸與循環的適用場景遞歸:循環:一、遞歸的適用場景與代碼示例1. 分治問題2. 樹形結構遍歷3. 復雜狀態問題二、循環的適用場景與…

我的創作紀念日——《驚變256天》

我的創作紀念日——《驚變256天》 機緣收獲日常成就憧憬 最近&#xff0c;博主收到了 CSDN 發來的系統消息&#xff0c;這才驚覺&#xff0c;自上次第128天創作紀念日之后&#xff0c;竟又悄然走過了 128 天。站在 256 天這個頗具意義的里程碑前回望&#xff0c;博主在2023 年 …

Redis 事務與管道:原理、區別與應用實踐

在現代分布式系統開發中&#xff0c;Redis 作為高性能的內存數據庫&#xff0c;其事務處理和管道技術是開發者必須掌握的核心知識點。本文將深入探討 Redis 事務和管道的實現原理、使用場景、性能差異以及最佳實踐&#xff0c;幫助開發者根據實際需求選擇合適的技術方案。 一、…

Mysql 8.0.32 union all 創建視圖后中文模糊查詢失效

記錄問題,最近在使用union all聚合了三張表的數據,創建視圖作為查詢主表,發現字段值為中文的篩選無法生效.......... sql示例: CREATE OR REPLACE VIEW test_view AS SELECTid,name,location_address AS address,type,"1" AS data_type,COALESCE ( update_time, cr…

Spatial Transformer Layer

我們知道cnn是無法識別到經過縮放和旋轉的圖片的,但是這個spatial transformer這個neutral network是可以做到的,可以被放到cnn里 接下來就是講解一個空間變換層地例子:我們可以看到,layerl就是layerl-1經過平移得到的,其中,我們layerl中的每一個元素,是上一層每一個元素與權重…

spark-standalone

一、定義&#xff1a;Standalone 模式是一種獨立的集群部署模式&#xff0c;自帶完整服務&#xff0c;可單獨部署到一個集群中&#xff0c;無需依賴任何其他資源管理系統。 二、配置步驟 1.和前面一樣拉到hadoop101的/opt/module這個目錄里面。 2.壓縮 3.重命名為spark-sta…

Vim編輯器命令模式操作指南

Vim 的命令模式&#xff08;即 Normal 模式&#xff09;是 Vim 的核心操作模式&#xff0c;用于執行文本編輯、導航、搜索、保存等操作。以下是命令模式下的常用操作總結&#xff1a; 1. 模式切換 進入命令模式&#xff1a;在任何模式下按 Esc 鍵&#xff08;可能需要多次按&a…

網絡體系結構(OSI,TCP/IP)

網絡體系結構 一、設計分層網絡模型 簡化設計&#xff1a;分層將復雜的大系統分解成小模塊&#xff0c;每一層專注處理特定功能模塊化&#xff1a;每一層獨立&#xff0c;便于開發、調試、更新和維護互操作&#xff1a;不同廠家、不同系統之間可以互相兼容&#xff0c;統一標…

經典 算法

算法 算法&#xff08;Algorithm&#xff09;是指解題方案的準確而完整的描述&#xff0c;是一系列解決問題的清晰指令。簡單來說&#xff0c;算法 就是解決一個問題的具體方法和步驟。在計算機科學中&#xff0c;算法是程序設計的核心&#xff0c;它決定了程序如何執 行特定的…

【Spark】-- DAG 和寬窄依賴的核心

目錄 Spark DAG 和寬窄依賴的核心 一、什么是 DAG? 示例:WordCount 程序的 DAG 二、寬依賴與窄依賴 1. 窄依賴 2. 寬依賴 三、DAG 與寬窄依賴的性能優化 1. 減少 Shuffle 操作 2. 合理劃分 Stage 3. 使用緩存機制 四、實際案例分析:同行車判斷 五、總結 Spark D…

C#中UI線程的切換與后臺線程的使用

文章速覽 UI線程切換示例 后臺線程使用示例 兩者對比適用場景Application.Current.Dispatcher.InvokeTask.Factory.StartNew 執行同步性Application.Current.Dispatcher.InvokeTask.Factory.StartNew 一個贊&#xff0c;專屬于你的足跡&#xff01; UI線程切換 在WPF應用程序…

【HTML】個人博客頁面

目錄 頁面視圖?編輯 頁面代碼 解釋&#xff1a; HTML (<body>): 使用了更加語義化的HTML5標簽&#xff0c;例如<header>, <main>, <article>, <footer>。文章列表使用了<article>包裹&#xff0c;結構清晰。添加了分頁導航。使用了Font…

第J1周:ResNet-50算法實戰與解析

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客 &#x1f356; 原作者&#xff1a;K同學啊 我的環境 語言環境:Python3.8 編譯器:Jupyter Lab 深度學習環境:Pytorchtorch1.12.1cu113 torchvision0.13.1cu113 一、準備工作 二、導入數據 三、劃分數據…