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

使用Deno增強(qiáng)AWS Lambda的安全性

開發(fā) 前端 應(yīng)用安全
Deno是一種替代JavaScript運(yùn)行時(shí)的方案,于2020年發(fā)布。最近我注意到對(duì)它的興趣越來越多,它具有一些吸引人的特點(diǎn)。

Deno是一種替代JavaScript運(yùn)行時(shí)的方案,于2020年發(fā)布。最近我注意到對(duì)它的興趣越來越多,它具有一些吸引人的特點(diǎn):

  • 避免安裝依賴項(xiàng)的需求
  • 廣泛支持Web標(biāo)準(zhǔn)API
  • 開箱即用的TypeScript支持
  • 全功能工具集
  • 精細(xì)的權(quán)限檢查
  • 更安全的NPM包
  • 高性能

其中吸引我注意的特性是精細(xì)的權(quán)限檢查和更安全的NPM包的概念。軟件供應(yīng)鏈攻擊在過去幾年變得越來越頻繁,并且引起了更多關(guān)注。在JavaScript生態(tài)系統(tǒng)中,NPM是一個(gè)重要的目標(biāo)。我試圖找到最近公開的NPM包數(shù)量,但沒有成功。NPM的主頁聲稱有1700萬開發(fā)者在使用它,這個(gè)數(shù)字我一點(diǎn)也不感到意外。

許多惡意包和代碼片段的共同特點(diǎn)是需要下載額外的依賴項(xiàng)或可執(zhí)行文件。在這一點(diǎn)上,Deno可以發(fā)揮作用!除非經(jīng)過允許,否則Deno不允許訪問環(huán)境變量、操作系統(tǒng)、文件系統(tǒng)、子進(jìn)程或網(wǎng)絡(luò)。更好的是,對(duì)于其中的一些權(quán)限,您可以允許具體的訪問。例如,您可以允許訪問您的應(yīng)用程序域名,但不允許其他訪問。如果您安裝了一個(gè)惡意包,它將很難下載其額外的依賴項(xiàng)或?qū)?shù)據(jù)泄漏出去。僅憑增加的安全性,Deno就成為一個(gè)有吸引力的選擇,也是我目前關(guān)注的重點(diǎn)。

在惡意包中隱藏的加密礦工對(duì)Lambda函數(shù)的影響有限;Lambda函數(shù)執(zhí)行時(shí)間很短,很難獲得顯著的好處。數(shù)據(jù)泄漏和來自遠(yuǎn)程源的腳本執(zhí)行更可能成為問題。這兩者都需要訪問互聯(lián)網(wǎng),而使用Deno,您有可能阻止這種訪問。

在AWS Lambda函數(shù)中使用Deno需要使用自定義運(yùn)行時(shí)。您可以構(gòu)建自己的運(yùn)行時(shí),也可以使用已經(jīng)存在的運(yùn)行時(shí)。如果您關(guān)注安全性,我建議保留一個(gè)現(xiàn)有運(yùn)行時(shí)的副本,并仔細(xì)檢查更新或創(chuàng)建自己的運(yùn)行時(shí)。對(duì)于這個(gè)概念驗(yàn)證,我在我的AWS賬戶中部署了Deno的Serverless Application Repository (SAR)應(yīng)用。我使用了提供的Lambda層和提供的.al2 Lambda運(yùn)行時(shí)來創(chuàng)建我的Deno Lambda函數(shù)。我創(chuàng)建了一個(gè)名為index.ts的文件,其中包含一些基本的JavaScript代碼,用于請(qǐng)求兩個(gè)不同的網(wǎng)站并返回響應(yīng)的HTTP狀態(tài)碼或捕獲的錯(cuò)誤。然后,我更新了函數(shù)的配置以引用導(dǎo)出的handler函數(shù)。

typescript
export async function handler() {
const r1 = await makeRequest('https://deno.com');
const r2 = await makeRequest('https://example.com');
return { r1, r2 };
}
async function makeRequest(url: string) {
try {
const res = await fetch(url);
return res.status;
} catch (error) {
return error;
}
}

部署后,我從控制臺(tái)調(diào)用了我的Lambda函數(shù),并收到了兩個(gè)HTTP 200的響應(yīng)。由于自定義運(yùn)行時(shí)的要求,Deno Lambda運(yùn)行時(shí)默認(rèn)允許所有的網(wǎng)絡(luò)和環(huán)境變量請(qǐng)求。Lambda自定義運(yùn)行時(shí)通過與本地主機(jī)通信并通過環(huán)境變量接收初始化信息來工作。盡管有這個(gè)默認(rèn)設(shè)置,我們可以縮小Deno的權(quán)限范圍并更嚴(yán)格地限制訪問。我使用的自定義運(yùn)行時(shí)允許您通過修改DENO_PERMISSIONS環(huán)境變量來指定傳遞給Deno運(yùn)行時(shí)的權(quán)限。默認(rèn)值是--allow-env --allow-net。如果Lambda函數(shù)在應(yīng)用程序中不需要任何網(wǎng)絡(luò)訪問,您可以使用如--allow-env --allow-net=127.0.0.1:9001的值,以僅允許所需的Lambda Runtime API通信。對(duì)于我的概念驗(yàn)證,我將DENO_PERMISSIONS設(shè)置為--allow-env --allow-net=127.0.0.1:9001,deno.com,允許訪問deno.com但不允許訪問example.com。調(diào)用我的Lambda函數(shù),我得到了以下結(jié)果:

json
{
"r1": 200,
"r2": {
"name": "PermissionDenied"
}
}

在本地運(yùn)行Deno時(shí),您將被要求允許訪問,但在Lambda函數(shù)中,當(dāng)嘗試未授權(quán)的訪問時(shí),將拋出錯(cuò)誤。如果執(zhí)行了一個(gè)惡意包,您可能會(huì)注意到意外的失敗或日志消息,但代碼的影響將受到限制。

使用這種方法需要開發(fā)人員額外付出努力,以確??紤]到所有所需的權(quán)限。如果您擔(dān)心惡意包和供應(yīng)鏈攻擊,這個(gè)努力可能是值得的。到目前為止,我僅在概念驗(yàn)證中使用了這種方法,沒有在生產(chǎn)環(huán)境中使用過。使用Deno這樣做并不替代代碼和依賴項(xiàng)掃描工具,但它可能成為一種及早發(fā)現(xiàn)問題的預(yù)警系統(tǒng)。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-10-21 18:03:38

無服務(wù)器

2014-12-08 10:41:05

亞馬遜AWS服務(wù)加密密鑰管理服務(wù)

2023-09-26 08:21:30

2022-09-28 11:10:22

區(qū)塊鏈數(shù)據(jù)安全

2022-08-18 17:07:00

sopsGitOps

2015-09-25 10:17:01

AWS合規(guī)性安全風(fēng)險(xiǎn)

2016-11-04 13:27:25

AWS安全性失誤

2012-05-30 09:34:57

2020-07-26 00:34:21

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2011-05-24 09:15:52

SSH

2022-08-09 13:29:25

云計(jì)算安全工具

2016-11-23 14:00:32

AWS安全性提升

2021-12-14 10:05:45

VMware災(zāi)難恢復(fù)虛擬化

2012-06-05 13:31:05

2010-11-24 11:37:51

2009-07-01 15:25:16

Servlet和JSP

2020-09-10 16:30:05

AI人工智能

2022-03-29 23:59:03

Linux安全發(fā)行版

2022-06-27 15:07:32

安全意識(shí)終端用戶行為網(wǎng)絡(luò)安全

2020-10-08 10:15:15

LynisLinux系統(tǒng)安全
點(diǎn)贊
收藏

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