自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

采用ASP. NET Core構(gòu)建零信任API的開發(fā)人員指南

譯文 精選
安全 零信任
采用零信任模型保護(hù)ASP. NET Core API,可以通過對(duì)每個(gè)請(qǐng)求進(jìn)行身份驗(yàn)證,實(shí)施最小權(quán)限原則,并持續(xù)監(jiān)控以防范威脅。

譯者 | 李睿

審校 | 重樓

在當(dāng)今這個(gè)網(wǎng)絡(luò)威脅無處不在(或只需掃描二維碼就被攻擊)的世界傳統(tǒng)的“城堡與護(hù)城河安全策略已遠(yuǎn)遠(yuǎn)不夠。零信任(Zero Trust)安全模型應(yīng)運(yùn)而生,它顛覆了傳統(tǒng)模式,要求每個(gè)請(qǐng)求都必須經(jīng)過驗(yàn)證、認(rèn)證和監(jiān)控,無論它來自何處。對(duì)于處理敏感數(shù)據(jù)的ASP.NET Core API開發(fā)者來說,這不僅僅是一種趨勢(shì),更是一種必要的措施。

以下將深入了解在ASP. NET Core API實(shí)現(xiàn)零信任的原因、內(nèi)容和方法。

什么是零信任,為什么它很重要?

除了作為流行語之外,“零信任”的意思就像其名稱一樣: 不信任任何人、任何事,并且始終進(jìn)行驗(yàn)證。你可以將自己的家想象成為一個(gè)零信任的環(huán)境。在傳統(tǒng)的安全設(shè)置中,一旦有人獲得房子大門鑰匙,就可以進(jìn)入家中任何房間。零信任則顛覆了這一模式:即使有人打開房子大門他們?nèi)匀恍枰@得每個(gè)房間、衣柜和抽屜的個(gè)人權(quán)限才能進(jìn)入。

在零信任的房子里:

  • 每一步都進(jìn)行身份驗(yàn)證:即使進(jìn)入房子大門之后,也必須反復(fù)驗(yàn)證訪客身份。想進(jìn)入廚房?需要證明你是誰。從保險(xiǎn)箱里拿東西?再次證明你的訪問權(quán)限。想打開酒窖?必須年滿21歲。
  • 權(quán)限訪問:每個(gè)房間都有不同的訪問級(jí)別。例如,快遞員只能進(jìn)入門廊,不能進(jìn)入客廳;水管工可以進(jìn)入浴室,但不能進(jìn)入其他房間。他們沒有全面的訪問權(quán)限——每個(gè)人只在需要的時(shí)候獲得訪問權(quán)限。
  • 持續(xù)監(jiān)控:每個(gè)房間都安裝了安全攝像頭和運(yùn)動(dòng)探測(cè)器,跟蹤誰在何處以及何時(shí)出現(xiàn),如果有人試圖進(jìn)入他們不應(yīng)該去的地方,就會(huì)提醒房主

零信任意味著從不假設(shè)基于先前訪問的信任。從房主到訪客的每個(gè)人,都會(huì)不斷進(jìn)行驗(yàn)證,每次互動(dòng)都是安全的,可以讓房子免受他人非法進(jìn)入。

簡(jiǎn)而言之,零信任是人們對(duì)安全觀念的根本轉(zhuǎn)變。傳統(tǒng)模式依賴于網(wǎng)絡(luò)中的一切都是可信的這一理念。但是當(dāng)威脅已經(jīng)在內(nèi)部存在時(shí),會(huì)發(fā)生什么呢? 零信任說:“永遠(yuǎn)不要信任,永遠(yuǎn)要驗(yàn)證。”每個(gè)用戶、設(shè)備和請(qǐng)求都被視為潛在的惡意,除非另有證明。

利弊一覽:

  • 優(yōu)點(diǎn):更強(qiáng)的安全性,最大限度地減少內(nèi)部威脅,對(duì)訪問進(jìn)行精細(xì)控制,增強(qiáng)合規(guī)性。
  • 缺點(diǎn):實(shí)現(xiàn)起來可能很復(fù)雜,特別是在原有系統(tǒng)中,需要持續(xù)的管理。

零信任不僅適用于銀行或醫(yī)療保健等高安全環(huán)境,它正迅速成為任何構(gòu)建處理敏感數(shù)據(jù)、提供遠(yuǎn)程訪問或連接微服務(wù)的API的標(biāo)準(zhǔn)。

因此,可以建立一個(gè)零信任的房子來進(jìn)一步推進(jìn)這個(gè)想法。

步驟1:鎖上房門——身份驗(yàn)證

在零信任的房子里,第一道防線是房子的門鎖。在這里,每個(gè)訪客(無論是家人、朋友還是快遞員)都必須證明自己的身份才能獲準(zhǔn)進(jìn)入。同樣,ASP. NET Core API在其中充當(dāng)這個(gè)門鎖,用戶在獲得任何級(jí)別的訪問權(quán)限之前必須驗(yàn)證他們的身份。這意味著使用基于令牌的身份驗(yàn)證(如JWT(JSON Web Tokens)等)來實(shí)現(xiàn)強(qiáng)大的身份驗(yàn)證機(jī)制,以驗(yàn)證每個(gè)訪問者——無論他們是新客戶還是回頭客。但需要記住,僅僅因?yàn)槟橙擞需€匙并不意味著他們可以訪問一切。

  • 令牌作為各個(gè)房間鑰匙: 正如每位客人都會(huì)收到一個(gè)唯一的密鑰一樣,API的用戶也會(huì)收到驗(yàn)證其身份的令牌(如JWT)。這些令牌是在成功登錄后發(fā)放的,必須在每個(gè)訪問點(diǎn)出示,反復(fù)驗(yàn)證用戶。
  • 多因素身份驗(yàn)證(MFA):除了基本的鑰匙之外,多因素身份驗(yàn)證(MFA)就像擁有鑰匙和安全警報(bào)代碼一樣——增加了另一層安全保障,以確保是正確的人進(jìn)入。這一額外步驟可防止未經(jīng)授權(quán)的訪問,即使有人設(shè)法竊取了密鑰(令牌))。

實(shí)施示例:

C#

 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
 .AddJwtBearer(options =>
 {
 options.TokenValidationParameters = new TokenValidationParameters
 {
 ValidateIssuer = true,
 ValidateAudience = true,
 ValidateLifetime = true,
 ValidateIssuerSigningKey = true,
 ValidIssuer = Configuration["Jwt:Issuer"],
 ValidAudience = Configuration["Jwt:Audience"],
 IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
 };
 });

這段代碼將API設(shè)置為在房門檢查令牌,確保沒有人在沒有正確標(biāo)識(shí)的情況下進(jìn)入。使用像Microsoft.AspNetCore.Authentication.JwtBearer這樣的庫來輕松集成JWT身份驗(yàn)證。確保對(duì)每個(gè)請(qǐng)求安全地生成、簽名和驗(yàn)證令牌。

步驟2:逐個(gè)房間訪問——授權(quán)

在傳統(tǒng)的房子里,一旦有人進(jìn)入,就可以進(jìn)入內(nèi)部任何房間。零信任改變了這一點(diǎn):每個(gè)房間都需要單獨(dú)的鑰匙才能打開——無論是廚房、臥室還是車庫。同樣,API應(yīng)該對(duì)每個(gè)請(qǐng)求執(zhí)行授權(quán)檢查,確保用戶只能訪問他們被明確允許授權(quán)的內(nèi)容。

  • 細(xì)粒度訪問控制:就像不同的房間只對(duì)特定的人開放一樣(廚房對(duì)家人開放,地下室對(duì)修理工開放),API資源也會(huì)根據(jù)角色和權(quán)限進(jìn)行限制。這可以防止用戶訪問他們不需要的敏感數(shù)據(jù)或功能。
  • 動(dòng)態(tài)訪問策略:房間訪問不是靜態(tài)的;權(quán)限可以根據(jù)一天中的時(shí)間、用戶角色甚至場(chǎng)景而改變——例如在主人不在家時(shí)限制他人進(jìn)入某些房間。同樣,API中的授權(quán)策略應(yīng)該是動(dòng)態(tài)的,適應(yīng)用戶角色和當(dāng)前場(chǎng)景以確保安全。

基于策略的授權(quán)示例:

C#

 services.AddAuthorization(options =>
 {
 options.AddPolicy("CanEnterKitchen", policy => policy.RequireClaim("RoomAccess", "Kitchen"));
 });

在ASP.NET Core中實(shí)施基于策略或基于角色的訪問控制,使用AuthorizeAttribute和策略定義。設(shè)計(jì)策略時(shí)要盡可能具體,只授予每個(gè)操作所需的最小訪問權(quán)限。在這個(gè)例子中,上述策略確保了只有具有正確聲明的用戶才能訪問特定的API端點(diǎn),這類似于每個(gè)房間都有單獨(dú)的鑰匙。

步驟3:最小權(quán)限原則——僅授予必要的權(quán)限

“零信任”的運(yùn)作原則是最小特權(quán)原則,例如只允許水管工進(jìn)入浴室,而不是其他房間。通過確保每個(gè)用戶都具有執(zhí)行任務(wù)所需的最低級(jí)別訪問級(jí)別,并將這一原則應(yīng)用于API。最小特權(quán)原則是零信任制度的基石之一??梢赃@樣想:每個(gè)用戶、服務(wù)和設(shè)備只獲得他們需要的最低權(quán)限。ASP.NET Core基于策略的授權(quán)使其易于使用[Authority]和基于角色的策略等屬性進(jìn)行管理。

  • 減少攻擊面:通過限制訪問,減少入侵者可以利用系統(tǒng)的途徑。就像可訪問的房間越少,入侵者可以隱藏的地方就越少一樣,最小權(quán)限原則降低了數(shù)據(jù)泄露或未經(jīng)授權(quán)操作的風(fēng)險(xiǎn)。
  • 臨時(shí)訪問:在某些情況下,可能會(huì)暫時(shí)授予某個(gè)房間的訪問權(quán)限,就像讓水管工工作一個(gè)小時(shí)后再鎖上門一樣。同樣地,API中的臨時(shí)或限時(shí)訪問可以確保權(quán)限不會(huì)在需要之后仍然保持開放狀態(tài)。
  • 分段:另一個(gè)應(yīng)該記住的專業(yè)術(shù)語是微分段。這個(gè)想法是將API劃分為孤立的段,每段都由自己的一套規(guī)則保護(hù)。可以將其想象成將應(yīng)用程序拆分成更小、更易管理的部分,這樣更容易確保安全。假設(shè)水管工來修理壞掉的水槽;他可以進(jìn)入廚房,然后修理水槽,因此提供足夠完成工作的訪問權(quán)限。

示例:

C#

 [Authorize(Policy = "CanEnterKitchen")]
 [Authorize(Policy = "CanAccessSink")]
 public IActionResult FixSink()
 {
 // Kitchen and sink specific logic
 }

使用基于聲明的授權(quán)來指定用戶可以執(zhí)行的操作,并確保在不再需要時(shí)撤銷權(quán)限。通過在細(xì)粒度級(jí)別上限制訪問,可以減少系統(tǒng)中未經(jīng)授權(quán)操作的風(fēng)險(xiǎn)。

步驟4:持續(xù)監(jiān)控——密切關(guān)注每個(gè)房間

想象一下,每個(gè)房間都有安全攝像頭(在現(xiàn)實(shí)生活中不應(yīng)該這樣做……),跟蹤每一個(gè)動(dòng)作,并在出現(xiàn)異?;顒?dòng)時(shí)向房主發(fā)出警報(bào)。這是零信任設(shè)置中持續(xù)監(jiān)控的核心——時(shí)刻監(jiān)視,時(shí)刻驗(yàn)證。在零信任API中,這體現(xiàn)為持續(xù)的監(jiān)控和日志記錄。實(shí)施像Application Insights或Serilog這樣的解決方案來密切關(guān)注API中發(fā)生的事情,實(shí)時(shí)識(shí)別潛在的威脅。在零信任架構(gòu)中,監(jiān)控不是事后才考慮的事情;它是一個(gè)核心原則。持續(xù)監(jiān)控有助于及早發(fā)現(xiàn)異常行為,并在其演變成全面安全漏洞之前采取行動(dòng)。

  • 實(shí)時(shí)警報(bào):就像攝像頭可能會(huì)在有人進(jìn)入受到限制的房間時(shí)通知房主一樣,API中的監(jiān)控工具在發(fā)生可疑操作(例如多次失敗的登錄嘗試或訪問受限制的數(shù)據(jù))時(shí)提供實(shí)時(shí)警報(bào)。
  • 審計(jì)跟蹤:除了即時(shí)警報(bào)之外,記錄每次訪問嘗試就像記錄每個(gè)訪客在房子里的活動(dòng)一樣。這有助于事后分析,并通過識(shí)別薄弱環(huán)節(jié)加強(qiáng)安全態(tài)勢(shì)。

Serilog示例:

C#

Log.Information("User {UserId} accessed {Endpoint} at {Time}", userId, endpoint, DateTime.UtcNow);

記錄每個(gè)操作可以發(fā)現(xiàn)的模式,檢測(cè)異常,并在問題升級(jí)之前快速采取行動(dòng)。除了日志記錄之外,還可以對(duì)異常設(shè)置自動(dòng)警報(bào),以實(shí)現(xiàn)快速響應(yīng)。

步驟5:驗(yàn)證、重新驗(yàn)證——信任,但始終驗(yàn)證

即使在這個(gè)房子里,零信任原則也要求時(shí)刻保持警惕。僅僅因?yàn)槟橙艘堰M(jìn)入某個(gè)房間,并不意味著他們可以隨意走動(dòng)。通過不斷重新驗(yàn)證用戶權(quán)限,確保沒有人可以訪問超出其允許范圍的權(quán)限,將同樣的嚴(yán)格性應(yīng)用于API。

  • 自適應(yīng)安全性:就像看門狗一樣,零信任原則確保根據(jù)最新的場(chǎng)景(訪問時(shí)間、位置或用戶行為)不斷檢查權(quán)限和訪問。這種自適應(yīng)方法意味著安全策略可以動(dòng)態(tài)調(diào)整以保持最高級(jí)別的保護(hù)。

上述代碼對(duì)于熟悉ASP.NET Core的開發(fā)者來說,其內(nèi)容清晰易懂。ASP. NET core開發(fā)人員用來保護(hù)API的常用機(jī)制可以在特定的用例中選擇基于角色的授權(quán)(RBAC)和/或基于屬性的授權(quán)(ABAC),而不是基于策略的授權(quán)。

總結(jié):掌握鑰匙,守護(hù)家園

在零信任架構(gòu)中,設(shè)計(jì)的系統(tǒng)最初會(huì)假定每個(gè)人和每件事都是不可信的,然后根據(jù)所呈現(xiàn)的密鑰類型來允許特定的請(qǐng)求進(jìn)入。零信任架構(gòu)旨在重新定義如何保護(hù)數(shù)字空間。通過在每個(gè)環(huán)節(jié)鎖定訪問權(quán)限、持續(xù)驗(yàn)證行為,并確保默認(rèn)情況下不信任任何人,可以創(chuàng)建一個(gè)能夠抵御現(xiàn)代安全威脅的系統(tǒng)。需要記住的是,安全可靠的房子不僅僅依賴于堅(jiān)固的大門;它在各個(gè)層面都受到保護(hù)。

在ASP.NET Core API中實(shí)現(xiàn)零信任架構(gòu),就像升級(jí)家庭安全系統(tǒng)一樣——每個(gè)房間都被鎖住,每個(gè)動(dòng)作都被驗(yàn)證,每個(gè)訪客都在監(jiān)視之下。這不是偏執(zhí)狂的表現(xiàn);而是逐步確認(rèn)房子安全。這個(gè)模型不僅能把入侵者擋在門外;還能讓系統(tǒng)在面對(duì)不斷變化的數(shù)字威脅時(shí)保持彈性、響應(yīng)性和魯棒性,能夠應(yīng)對(duì)不斷變化的數(shù)字威脅。

關(guān)鍵要點(diǎn)是什么?在零信任的房子里,規(guī)則很簡(jiǎn)單:未經(jīng)證明身份和歸屬,誰也不能進(jìn)去,誰也不能移動(dòng),誰也不能行動(dòng)。在ASP.NET Core API中實(shí)現(xiàn)這一點(diǎn),不僅僅是智能安全——如果需要保護(hù)數(shù)字空間中的敏感數(shù)據(jù)和端點(diǎn),這是一個(gè)必要的發(fā)展。

原文標(biāo)題:Building a Zero Trust API With ASP.NET Core: A Developer’s Guide,作者:Aneesh Gopalakrishnan

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2009-05-06 10:53:22

ASP.NET編程開發(fā)

2025-02-08 11:02:57

2009-08-27 12:00:40

ibmdwJava

2022-04-20 10:56:06

JavaJVM參數(shù)

2022-05-16 13:58:52

開發(fā)區(qū)塊鏈Web3

2015-11-23 10:47:27

2022-11-02 14:43:29

2012-05-17 10:03:25

.NET

2020-05-11 09:54:33

JavaScript開發(fā)技術(shù)

2022-06-06 10:30:23

容器鏡像

2021-10-27 10:43:24

開發(fā)技能代碼

2018-10-12 22:50:20

機(jī)器學(xué)習(xí)API人工智能

2020-06-28 09:56:48

.NET開發(fā)工具

2009-12-25 10:11:22

.NET Framew

2013-09-25 09:20:39

iOS開發(fā)iOS7iPhone5s

2018-11-26 09:55:07

MySQL誤刪數(shù)據(jù)數(shù)據(jù)庫

2021-11-16 19:19:07

API接口前端開發(fā)

2010-08-09 16:09:25

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企業(yè)開發(fā)人員提供商
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)