本文由 Addo Zhang 翻譯自 A Reference Architecture for Fine-Grained Access Management on the Cloud
什么是訪問管理?
訪問管理是識(shí)別用戶或一組用戶是否應(yīng)該能夠訪問給定資源(例如主機(jī)潭苞、服務(wù)或數(shù)據(jù)庫)的過程。例如,對(duì)于開發(fā)人員來說是否可以使用 SSH 登錄生產(chǎn)應(yīng)用程序服務(wù)器,如果可以嗅剖,那么可以登錄多長時(shí)間稻据?如果 SRE 在非支持時(shí)間嘗試訪問數(shù)據(jù)庫,他們這樣做尤揣?如果數(shù)據(jù)工程師已轉(zhuǎn)移到其他團(tuán)隊(duì),他們是否應(yīng)該繼續(xù)訪問 ETL 管道的 S3 存儲(chǔ)桶柬祠?
現(xiàn)在如何進(jìn)行訪問管理北戏?
在云上各種基礎(chǔ)設(shè)施和數(shù)據(jù)服務(wù)激增之前,訪問管理是 DevOps 和 Security 團(tuán)隊(duì)要解決的相對(duì)簡單的問題漫蛔。VPN 和堡壘主機(jī)是(現(xiàn)在仍然是)在網(wǎng)絡(luò)級(jí)別封鎖所有關(guān)鍵資源的首選機(jī)制嗜愈。用戶必須先通過 VPN 服務(wù)器進(jìn)行身份驗(yàn)證,或者登錄到堡壘主機(jī)莽龟,然后才能訪問專用網(wǎng)絡(luò)上的所有資源蠕嫁。
當(dāng)資源是靜態(tài)的并且它們的數(shù)量相對(duì)較小時(shí),此方法效果很好毯盈。但是剃毒,隨著越來越多的資源動(dòng)態(tài)地涌入專用網(wǎng)絡(luò)的各處,VPN / 堡壘主機(jī)解決方案變得站不住腳奶镶。
具體來說迟赃,在三個(gè)方面,VPN 和堡壘主機(jī)不足以作為一種有效的訪問管理機(jī)制厂镇。
- 它們作用于網(wǎng)絡(luò)層面:用戶通過 VPN 進(jìn)行身份驗(yàn)證并獲得對(duì)專用網(wǎng)絡(luò)的訪問權(quán)限后纤壁,他們實(shí)際上就可以訪問其上運(yùn)行的所有服務(wù)。無法根據(jù)用戶的身份在基礎(chǔ)架構(gòu)或數(shù)據(jù)服務(wù)的粒度上管理訪問捺信。
- 憑據(jù)是攻擊的媒介:VPN 和堡壘主機(jī)都要求用戶記住并存儲(chǔ)憑據(jù)酌媒。過期和輪換憑證作為安全策略非常困難欠痴,尤其是在涉及大量用戶的情況下,憑證因此成為潛在的攻擊媒介秒咨。
- 不能管理第三方 SaaS 工具:SaaS 工具(如 Looker喇辽、Tableau 和 Periscope Data)需要直接訪問數(shù)據(jù)端點(diǎn)。因此雨席,使用這些工具訪問數(shù)據(jù)的任何人都無法通過使用了相同的機(jī)制和憑據(jù)的基礎(chǔ)設(shè)施進(jìn)行身份驗(yàn)證菩咨。
云上訪問管理的新架構(gòu)
在本文中,我們將定義新的參考架構(gòu)陡厘,為那些正在尋求簡化訪問管理云資源(從 SSH 主機(jī)抽米、數(shù)據(jù)庫、數(shù)據(jù)倉庫到消息管道和云存儲(chǔ)終結(jié)點(diǎn))解決方案的云原生企業(yè)糙置。
它解決了 VPN 和堡壘主機(jī)無法克服的以下特定挑戰(zhàn):
- 在細(xì)粒度的服務(wù)級(jí)別上進(jìn)行訪問鑒權(quán)
- 消除共享憑據(jù)和個(gè)人帳戶管理
- 通過第三方 SaaS 工具控制訪問
此外云茸,它為具有敏感數(shù)據(jù)的組織帶來以下商業(yè)利益:
- 通過跨所有服務(wù)的會(huì)話記錄和活動(dòng)監(jiān)視來滿足 FedRamp 和 SOC2 等合規(guī)性標(biāo)準(zhǔn)的可審核性
- 基于訪問者的身份,通過細(xì)粒度的授權(quán)策略來限制或清除敏感數(shù)據(jù)谤饭,從而實(shí)現(xiàn)隱私和數(shù)據(jù)治理
該架構(gòu)建立在以下三個(gè)核心原則的基礎(chǔ)上标捺,這些原則的實(shí)現(xiàn)使 DevOps 和 Security 團(tuán)隊(duì)可以在對(duì)所有環(huán)境進(jìn)行全面控制的同時(shí),通過簡單而一致的體驗(yàn)來提高用戶的工作效率揉抵。
- 為訪問資源的用戶建立不可否認(rèn)的身份
- 使用短期的短暫令牌和證書代替靜態(tài)憑證和密鑰
- 在一處集中所有資源類型的細(xì)粒度訪問策略
下圖顯示了參考架構(gòu)及其組件亡容。
上圖中的 VPN / 堡壘主機(jī)已替換為接入網(wǎng)關(guān)(Access Gateway)。接入網(wǎng)關(guān)實(shí)際上是微服務(wù)的集合冤今,負(fù)責(zé)驗(yàn)證單個(gè)用戶萍倡、基于特定屬性授權(quán)他們的請(qǐng)求,并最終授予他們?cè)L問專用網(wǎng)絡(luò)中的基礎(chǔ)結(jié)構(gòu)和數(shù)據(jù)服務(wù)的權(quán)限辟汰。
接下來,讓我們看一下各個(gè)組件阱佛,以了解之前概括的核心原理是如何實(shí)現(xiàn)的帖汞。
訪問控制器
支持此體系結(jié)構(gòu)的關(guān)鍵見解是將用戶身份驗(yàn)證委派給單個(gè)服務(wù)(訪問控制器),而不是將責(zé)任分配給用戶可能需要訪問的服務(wù)凑术。這種聯(lián)合在 SaaS 應(yīng)用程序世界中很常見翩蘸。由單一服務(wù)負(fù)責(zé)身份驗(yàn)證,可以簡化應(yīng)用程序所有者的用戶配置和接觸配置淮逊,并加快應(yīng)用程序開發(fā)催首。
對(duì)于實(shí)際的身份驗(yàn)證序列,訪問控制器本身通常會(huì)與身份提供商集成泄鹏,例如 Auth0 或 Okta郎任,因此,可以跨提供者和協(xié)議提供有用的抽象备籽。最終舶治,身份提供商以簽名的 SAML 聲明\JWT 令牌或臨時(shí)證書的形式保證用戶的身份不可否認(rèn)。這樣就無需依賴受信任的子網(wǎng)作為用戶身份的代理。與 VPN 允許用戶訪問網(wǎng)絡(luò)上的所有服務(wù)不同霉猛,它還允許將訪問策略配置到服務(wù)的粒度尺锚。
將身份驗(yàn)證委派給身份提供者的另一個(gè)好處是,可以使用零信任原則對(duì)用戶進(jìn)行身份驗(yàn)證惜浅。 具體來說瘫辩,可以創(chuàng)建身份提供者策略以強(qiáng)制執(zhí)行以下操作:
- 禁止從信譽(yù)不佳的地理位置和 IP 地址訪問
- 禁止從已知漏洞的設(shè)備(未修補(bǔ)的 OS、較舊的瀏覽器等)進(jìn)行訪問
- 成功進(jìn)行 SAML 交換后立即觸發(fā) MFA
身份驗(yàn)證序列如何工作:
- 用戶首先通過訪問控制器進(jìn)行身份驗(yàn)證坛悉,訪問控制器又將身份驗(yàn)證委派給身份提供者伐厌。
- 成功登錄到身份提供者后,訪問控制器將生成一個(gè)短暫的臨時(shí)證書吹散,進(jìn)行簽名并將其返回給用戶弧械。或者空民,它可以代替證書生成令牌刃唐。只要證書或令牌有效,就可以將其用于連接到 接入網(wǎng)關(guān)管理的任何授權(quán)基礎(chǔ)設(shè)施或數(shù)據(jù)服務(wù)界轩。到期后画饥,必須獲取新的證書或令牌。
- 用戶將在步驟(2)中獲得的證書傳遞給他們選擇的工具浊猾,然后連接到接入網(wǎng)關(guān)抖甘。根據(jù)用戶請(qǐng)求訪問的服務(wù),基礎(chǔ)設(shè)施網(wǎng)關(guān)或數(shù)據(jù)網(wǎng)關(guān)將首先允許訪問控制器驗(yàn)證用戶的證書葫慎,然后再允許他們?cè)L問該服務(wù)衔彻。因此,訪問控制器充當(dāng)用戶與其訪問的服務(wù)之間的 CA偷办,因此為每個(gè)用戶提供了不可否認(rèn)的身份艰额。
策略引擎
當(dāng)訪問控制器強(qiáng)制對(duì)用戶進(jìn)行身份驗(yàn)證時(shí),策略引擎會(huì)對(duì)用戶的請(qǐng)求強(qiáng)制進(jìn)行細(xì)粒度的授權(quán)椒涯。它以易于使用的 YAML 語法接受授權(quán)規(guī)則(查看最后的示例)柄沮,并根據(jù)用戶請(qǐng)求和響應(yīng)對(duì)它們進(jìn)行評(píng)估。
開放策略代理(OPA)是一個(gè)開源的 CNCF 項(xiàng)目废岂,是策略引擎的一個(gè)很好的例子祖搓。它可以自己作為微服務(wù)運(yùn)行,也可以用作其他微服務(wù)進(jìn)程空間中的庫湖苞。OPA 中的策略以稱為 Rego 的語言編寫拯欧。另外,也可以在 Rego 之上輕松構(gòu)建一個(gè)簡單的 YAML 界面财骨,以簡化政策規(guī)范哈扮。
具有獨(dú)立于基礎(chǔ)結(jié)構(gòu)和數(shù)據(jù)服務(wù)的安全模型的獨(dú)立策略引擎的優(yōu)點(diǎn)如下:
- 可以以與服務(wù)和位置無關(guān)的方式指定安全策略
- 例如在所有 SSH 服務(wù)器上禁止特權(quán)命令
- 例如強(qiáng)制執(zhí)行 MFA 檢查所有服務(wù)(基礎(chǔ)設(shè)施和數(shù)據(jù))
- 策略可以保存在一個(gè)地方并進(jìn)行版本控制
- 策略可以作為代碼簽入 GitHub 存儲(chǔ)庫
- 每項(xiàng)變更在提交之前都要經(jīng)過協(xié)作審核流程
- 存在版本歷史記錄纬纪,可以輕松地還原策略更改
基礎(chǔ)設(shè)施網(wǎng)關(guān)和數(shù)據(jù)網(wǎng)關(guān)都依賴于策略引擎,以分別評(píng)估用戶的基礎(chǔ)設(shè)施和數(shù)據(jù)活動(dòng)滑肉。
基礎(chǔ)設(shè)施網(wǎng)關(guān)
基礎(chǔ)設(shè)施網(wǎng)關(guān)管理和監(jiān)控對(duì)基礎(chǔ)設(shè)施服務(wù)的訪問包各,例如 SSH 服務(wù)器和 Kubernetes 集群。它與策略引擎連接靶庙,以確定細(xì)化的授權(quán)規(guī)則问畅,并在用戶會(huì)話期間對(duì)所有基礎(chǔ)設(shè)施活動(dòng)強(qiáng)制執(zhí)行這些規(guī)則。 為了實(shí)現(xiàn)負(fù)載平衡六荒,網(wǎng)關(guān)可以包含一組工作節(jié)點(diǎn)护姆,可以在 AWS 上部署為自動(dòng)擴(kuò)展組,也可以在 Kubernetes 集群上作為副本集運(yùn)行掏击。
Hashicorp 邊界 是基礎(chǔ)設(shè)施網(wǎng)關(guān)的示例卵皂。這是一個(gè)開源項(xiàng)目,使開發(fā)人員砚亭、DevOps 和 SRE 可以使用細(xì)粒度的授權(quán)來安全地訪問基礎(chǔ)設(shè)施服務(wù)(SSH 服務(wù)器灯变、Kubernetes 群集),而無需直接訪問網(wǎng)絡(luò)捅膘,同時(shí)又禁止使用 VPN 或堡壘主機(jī)添祸。
基礎(chǔ)設(shè)施網(wǎng)關(guān)支持 SSH 服務(wù)器和 Kubernetes 客戶端使用的各種連接協(xié)議,并提供以下關(guān)鍵功能:
會(huì)話記錄
這涉及復(fù)制用戶在會(huì)話期間執(zhí)行的每個(gè)命令寻仗。捕獲的命令通常會(huì)附加其他信息刃泌,例如用戶的身份、他們所屬的各種身份提供者組署尤、當(dāng)天的時(shí)間耙替、命令的持續(xù)時(shí)間以及響應(yīng)的特征(是否成功、是否有錯(cuò)誤曹体、是否已讀取或?qū)懭霐?shù)據(jù)等)林艘。
活動(dòng)監(jiān)控
監(jiān)控使會(huì)話記錄的概念更進(jìn)一步。除了捕獲所有命令和響應(yīng)混坞,基礎(chǔ)設(shè)施網(wǎng)關(guān)還將安全策略應(yīng)用于用戶的活動(dòng)。在發(fā)生違規(guī)的情況下钢坦,它可以選擇觸發(fā)警報(bào)究孕、阻止有問題的命令及其響應(yīng)或完全終止用戶的會(huì)話。
數(shù)據(jù)網(wǎng)關(guān)
數(shù)據(jù)網(wǎng)關(guān)管理和監(jiān)控對(duì)數(shù)據(jù)服務(wù)的訪問爹凹,例如 MySQL厨诸、PostgreSQL 和 MongoDB 等托管數(shù)據(jù)庫、AWS RDS 等 DBaaS 端點(diǎn)禾酱、Snowflake 和 Bigquery 等數(shù)據(jù)倉庫微酬、AWS S3 等云存儲(chǔ)以及 Kafka 和 Kinesis绘趋。它與策略引擎連接,以確定細(xì)化的授權(quán)規(guī)則颗管,并在用戶會(huì)話期間對(duì)所有數(shù)據(jù)活動(dòng)強(qiáng)制執(zhí)行這些規(guī)則陷遮。
與基礎(chǔ)設(shè)施網(wǎng)關(guān)類似,數(shù)據(jù)網(wǎng)關(guān)可以包含一組工作節(jié)點(diǎn)垦江,可以在 AWS 上部署為自動(dòng)擴(kuò)展組帽馋,也可以在 Kubernetes 集群上作為副本集運(yùn)行。
由于與基礎(chǔ)設(shè)施服務(wù)相比比吭,數(shù)據(jù)服務(wù)的種類更多绽族,因此數(shù)據(jù)網(wǎng)關(guān)通常將支持大量的連接協(xié)議和語法。
此類數(shù)據(jù)網(wǎng)關(guān)的示例是 Cyral衩藤,這是一種輕量級(jí)的攔截服務(wù)吧慢,以邊車(sidecar)的方式部署來監(jiān)控和管理對(duì)現(xiàn)代數(shù)據(jù)終端節(jié)點(diǎn)的訪問,如 AWS RDS赏表、Snowflake检诗、Bigquery,底哗、AWS S3岁诉、Apache Kafka 等。其功能包括:
會(huì)話記錄
這類似于記錄基礎(chǔ)設(shè)施活動(dòng)跋选,并且涉及用戶在會(huì)話期間執(zhí)行的每個(gè)命令的副本涕癣,并使用豐富的審計(jì)信息進(jìn)行注釋。
活動(dòng)監(jiān)控
同樣前标,這類似于監(jiān)視基礎(chǔ)設(shè)施活動(dòng)坠韩。例如,以下策略阻止數(shù)據(jù)分析人員讀取敏感的客戶 PII炼列。
隱私權(quán)執(zhí)行
與基礎(chǔ)設(shè)施服務(wù)不同只搁,數(shù)據(jù)服務(wù)授予用戶對(duì)通常位于數(shù)據(jù)庫、數(shù)據(jù)倉庫俭尖、云存儲(chǔ)和消息管道中的與客戶氢惋、合作伙伴和競爭對(duì)手有關(guān)的敏感數(shù)據(jù)的讀寫訪問權(quán)限。 出于隱私原因稽犁,對(duì)數(shù)據(jù)網(wǎng)關(guān)的一個(gè)非常普遍的要求是能夠清理(也稱為令牌化或屏蔽)PII焰望,例如電子郵件、姓名已亥、社會(huì)保險(xiǎn)號(hào)熊赖、信用卡號(hào)和地址。
那么這種體系結(jié)構(gòu)如何簡化訪問管理虑椎?
讓我們看一些常見的訪問管理方案震鹉,以了解與使用 VPN 和堡壘主機(jī)相比俱笛,接入網(wǎng)關(guān)架構(gòu)如何提供細(xì)粒度的控制。
特權(quán)活動(dòng)監(jiān)控(PAM)
這是一個(gè)簡單的策略传趾,可以在一個(gè)地方監(jiān)視所有基礎(chǔ)設(shè)施和數(shù)據(jù)服務(wù)中的特權(quán)活動(dòng):
- 僅允許屬于 Admins 和 SRE 組的個(gè)人在 SSH 服務(wù)器迎膜、Kubernetes 集群和數(shù)據(jù)庫上運(yùn)行特權(quán)命令。
- 雖然可以運(yùn)行特權(quán)命令墨缘,但是有一些例外形式的限制星虹。具體來說,以下命令是不允許的:
- “sudo” 和 “yum” 命令可能無法在任何 SSH 服務(wù)器上運(yùn)行
- “kubectl delete” 和 “kubectl taint” 命令可能無法在任何 Kubernetes 集群上運(yùn)行
- “drop table” 和 “create user” 命令可能無法在任何數(shù)據(jù)庫上運(yùn)行
零特權(quán)(ZSP)執(zhí)行
The next policy shows an example of enforcing zero standing privileges -- a paradigm where no one has access to an infrastructure or data service by default. Access may be obtained only upon satisfying one or more qualifying criteria:
- Only individuals belonging to the Support group are allowed access
- An individual must be on-call to gain access. On call status may be determined by checking their schedule in an incident response service such as PagerDuty
- A multi-factor authentication (MFA) check is triggered upon successful authentication
- They must use TLS to connect to the infrastructure or data service
- Lastly, if a data service is being accessed, full table scans (e.g. SQL requests lacking a WHERE or a LIMIT clause that end up reading an entire dataset) are disallowed.
下一個(gè)策略顯示了一個(gè)實(shí)施零特權(quán)的示例 -- 一種默認(rèn)情況下沒有人可以訪問基礎(chǔ)設(shè)施或數(shù)據(jù)服務(wù)的范例镊讼。只有滿足一個(gè)或多個(gè)合格標(biāo)準(zhǔn)宽涌,才能獲得訪問權(quán)限:
- 只允許屬于支持組的個(gè)人訪問
- 個(gè)人必須 on-call 才能獲得訪問權(quán)限〉澹可以通過檢查事件響應(yīng)服務(wù)(例如 PagerDuty)中的時(shí)間表來確定通話狀態(tài)
- 成功通過身份驗(yàn)證后會(huì)觸發(fā)多因子身份驗(yàn)證(MFA)檢查
- 他們必須使用 TLS 連接到基礎(chǔ)設(shè)施或數(shù)據(jù)服務(wù)
- 最后卸亮,如果正在訪問數(shù)據(jù)服務(wù),則不允許進(jìn)行全表掃描(例如玩裙,缺少 WHERE 或 LIMIT 子句的 SQL 請(qǐng)求最終將讀取整個(gè)數(shù)據(jù)集)兼贸。
隱私和數(shù)據(jù)保護(hù)
The last policy shows an example of data governance involving data scrubbing:
- If anyone from Marketing is accessing PII (social security number (SSN), credit card number (CCN), age), scrub the data before returning
- If anyone is accessing PII using the Looker or Tableau services, also scrub the data
- Scrubbing rules are defined by the specific type of the PII
- For SSNs, scrub the first 5 digits
- For CCNs, scrub the last 4 digits
- For ages, scrub the last digit i.e., the requestor will know the age brackets but never the actual ages
最后一條策略顯示了涉及數(shù)據(jù)清理的數(shù)據(jù)治理示例:
- 如果市場(chǎng)營銷人員正在訪問 PII(社會(huì)保險(xiǎn)號(hào)(SSN)、信用卡號(hào)(CCN)吃溅、年齡)溶诞,先清洗數(shù)據(jù)然后再返回
- 如果有人正在使用 Looker 或 Tableau 服務(wù)訪問 PII,同時(shí)清洗數(shù)據(jù)
- 清理規(guī)則由 PII 的特定類型定義
- 對(duì)于 SSN决侈,清洗前 5 位數(shù)字
- 對(duì)于 CCN螺垢,清洗最后 4 位數(shù)字
- 對(duì)于年齡,請(qǐng)清洗最后一位數(shù)字赖歌,即請(qǐng)求者將知道年齡段枉圃,但從不知道實(shí)際年齡
概括
我們看到,對(duì)于高度動(dòng)態(tài)的云環(huán)境庐冯,VPN 和堡壘主機(jī)不足以作為高效云環(huán)境中的有效訪問管理機(jī)制孽亲。一種新的訪問管理體系結(jié)構(gòu),其重點(diǎn)是不可否認(rèn)的用戶身份展父,短暫的證書或令牌以及集中的細(xì)粒度授權(quán)引擎返劲,可有效解決 VPN 和堡壘主機(jī)無法解決的難題。除了為訪問關(guān)鍵基礎(chǔ)設(shè)施和數(shù)據(jù)服務(wù)的用戶提供全面的安全性之外栖茉,該體系結(jié)構(gòu)還可以幫助組織實(shí)現(xiàn)其審核篮绿、合規(guī)性、隱私和保護(hù)目標(biāo)衡载。
我們還討論了該架構(gòu)的參考實(shí)現(xiàn),其中使用了以開發(fā)人員為中心的著名開源解決方案隙袁,例如 Hashicorp Boundary 和 OPA 以及 Cyral(一種用于現(xiàn)代數(shù)據(jù)服務(wù)的快速且無狀態(tài)的輔助工具)痰娱。 他們一起可以在云上提供細(xì)粒度且易于使用的訪問管理解決方案弃榨。
關(guān)于作者
Manav Mital 是 Cyral 的聯(lián)合創(chuàng)始人兼首席執(zhí)行官,Cyral 是首個(gè)為數(shù)據(jù)云提供可見性梨睁、訪問控制和保護(hù)的云原生安全服務(wù)鲸睛。Cyral 成立于 2018 年,與各種組織合作 - 從云原生初創(chuàng)企業(yè)到財(cái)富 500 強(qiáng)企業(yè)坡贺,因?yàn)樗鼈儾捎?DevOps 文化和云技術(shù)來管理和分析數(shù)據(jù)官辈。 Manav 擁有 UCLA 的計(jì)算機(jī)科學(xué)碩士學(xué)位和坎普爾的印度理工學(xué)院的計(jì)算機(jī)科學(xué)學(xué)士學(xué)位。
關(guān)于譯者
Addo Zhang 云原生從業(yè)人員遍坟,愛好各種代碼拳亿。更多翻譯: