日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
應(yīng)對(duì)刪庫(kù)跑路方案

開發(fā)人員經(jīng)常需要訪問某些服務(wù)器,做一些檢查應(yīng)用程序日志之類的工作。到目前為止,這還沒什么問題。但是,當(dāng)一名開發(fā)人員離職時(shí)又會(huì)發(fā)生什么事情呢?

樂清網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,樂清網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為樂清1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的樂清做網(wǎng)站的公司定做!

開發(fā)人員經(jīng)常需要訪問某些服務(wù)器,做一些檢查應(yīng)用程序日志之類的工作。

一般來說,訪問過程是使用公私鑰加密來控制的,每位開發(fā)人員都會(huì)生成自己的公私鑰對(duì)。并且,每個(gè)開發(fā)人員的公鑰都會(huì)添加到他們有權(quán)訪問的每臺(tái)服務(wù)器上的 authorized_keys 文件中。

1. 痛苦的手動(dòng)更改

到目前為止,這還沒什么問題。但是,當(dāng)一名開發(fā)人員離職時(shí)又會(huì)發(fā)生什么事情呢?

在這種情況下,應(yīng)該從所有服務(wù)器上刪除這位開發(fā)人員的公鑰。根據(jù)他們有權(quán)訪問的服務(wù)器數(shù)量,這可能會(huì)涉及很多工作。

更糟糕的是,如果這個(gè)環(huán)節(jié)都是手動(dòng)操作的,那么操作員很有可能會(huì)忘了刪除某些服務(wù)器上的公鑰。也就是說,離職員工的訪問權(quán)限仍然保持啟用狀態(tài)。

2. 替代解決方案

有一些商業(yè)和開源解決方案可以幫助我們解決這一問題。這里的基本思想是,你在這類服務(wù)上添加并維護(hù)一個(gè)密鑰和訪問權(quán)限列表,需要?jiǎng)h除某個(gè)密鑰時(shí),該密鑰將從所有服務(wù)器中刪除。

這聽起來不錯(cuò),但這種方案有一個(gè)很大的缺陷:它是潛在的單一故障源。如果某人獲取了對(duì)該服務(wù)的訪問權(quán)限,那就意味著他可以訪問你的所有服務(wù)器。而且,如果你無法訪問這個(gè)服務(wù),在最壞的情況下,甚至?xí)o法訪問所有服務(wù)器。

解決方案:簽名密鑰

當(dāng)我遇到了這個(gè)問題時(shí),我去 HackerNews 上問了問其他人是如何解決它的。

https://news.ycombinator.com/item?id=24157180

社區(qū)提供了一些很棒的建議和見解,而這個(gè)問題的最佳解決方案似乎是對(duì)密鑰進(jìn)行簽名,本文會(huì)詳細(xì)給大家介紹一下。

基本思想

這個(gè)方法的基本思想是:你還是要為每位開發(fā)人員生成一個(gè)公鑰 – 私鑰對(duì)。但是,不要把公鑰上載到服務(wù)器上。

而是使用之前生成的,所謂的證書頒發(fā)機(jī)構(gòu)(CA)密鑰對(duì)公共密鑰進(jìn)行簽名。這個(gè)簽名就是生成了第三個(gè)證書文件,你將它還給開發(fā)人員,然后讓他們放在.ssh/文件夾中,和私鑰、公鑰放在一起。

在服務(wù)器上,你只需告訴服務(wù)器你的 CA 的公鑰,服務(wù)器就可以檢測(cè)用戶是否具有正確簽名的證書,并且僅允許擁有這種簽名證書的開發(fā)人員訪問自己。

優(yōu)點(diǎn)

簽署證書時(shí),可以定義這次簽署有效的時(shí)間。因此,如果你簽署的有效期為 3 個(gè)月,隨后開發(fā)人員離開了公司,那么 3 個(gè)月后,他們肯定將無法訪問任何服務(wù)器。

現(xiàn)在你會(huì)說:好吧,但我不想每 3 個(gè)月就對(duì)每個(gè)人的密鑰簽一次名,這個(gè)抱怨很合理。

一種辦法是讓這個(gè)流程自動(dòng)化,例如,你可以構(gòu)建服務(wù),讓用戶在使用公司的電子郵件和密碼授權(quán)時(shí)可以自動(dòng)獲得簽名證書,但這不在本文的討論范圍之內(nèi)。

另一種簡(jiǎn)單的替代方法是,你可以頒發(fā)有效期更長(zhǎng)的證書。然后,如果有人離開公司,就可以撤消這個(gè)證書,也就是使其失效。你可以在服務(wù)器上放置一個(gè)無效證書列表,它們將不再接受用戶訪問。例如,可以通過 AWS S3 或其他存儲(chǔ)來存放這個(gè)列表,并在每臺(tái)服務(wù)器上定期創(chuàng)建一個(gè) cronjob 來完成這一操作。

該怎么做?

了解了原理后,實(shí)際上做起來非常簡(jiǎn)單。

首先,你要生成一個(gè)證書頒發(fā)機(jī)構(gòu)的公鑰 – 私鑰對(duì),你應(yīng)該把這個(gè)私鑰放在非常安全的地方:

umask 77 # you want it to be private

mkdir ~/my-ca && cd ~/my-ca

ssh-keygen -C CA -f ca -b 4096 # be sure to use a passphrase and store it securely

然后在你的服務(wù)器上,設(shè)置為允許由你的 CA 簽名的所有用戶訪問該服務(wù)器:

將 CA 的公鑰上傳到服務(wù)器上,例如放在/etc/ssh/ca.pub

在/etc/ssh/sshd_config中添加一行,指示服務(wù)器允許訪問由該證書簽名的用戶

TrustedUserCAKeys /etc/ssh/ca.pub # Trust all with a certificate signed by ca.pub

為了使更改生效,你應(yīng)該重新加載 ssh 服務(wù):sudo service ssh reload?,F(xiàn)在,如果一位開發(fā)人員生成了他的公鑰 – 私鑰對(duì)(例如ssh-keygen -t ecdsa -b 521),他們只需向你發(fā)送他們的公鑰(請(qǐng)注意,你永遠(yuǎn)不需要發(fā)送任何私鑰?。H缓?,你只需簽署他們的公鑰就能生成他們的證書:

# Inside your ~/my-ca folder, sign their public key (here: id_ecdsa.pub)

ssh-keygen -s ca -I USER_ID -V +12w -z 1 id_ecdsa.pub

各個(gè)部分的簡(jiǎn)要說明:

-s ca:你要使用 CA 進(jìn)行簽名 -I USER_ID:你的用戶 ID/ 用戶名 -V +12w:證書過期前的有效時(shí)間,這里有效期為 12 周 -z 1:此證書的序列號(hào),以后可用它來讓這個(gè)證書無效,序列號(hào)應(yīng)唯一 id_ecdsa.pub:你要簽名的開發(fā)人員的公鑰 它將生成證書id_ecdsa-cert.pub,你可以將其發(fā)送給開發(fā)人員,然后將其放在?/.ssh文件夾中的公鑰 / 私鑰對(duì)旁邊。

改進(jìn)一下

聽起來不錯(cuò),但是你還可以做得更好!

你的組織里可能有很多擁有不同經(jīng)驗(yàn)水平、身處不同團(tuán)隊(duì)、承擔(dān)不同職責(zé)的開發(fā)人員,并不是每個(gè)人都會(huì)訪問相同的服務(wù)器。

這樣的話,讓我們?cè)诤灻鞒讨刑砑咏巧伞?/p>

這樣,你可以在服務(wù)器上設(shè)置允許哪些角色訪問服務(wù)器,并且在簽名過程中可以指定要簽名的開發(fā)人員的角色。

然后,這位開發(fā)人員就能訪問與其角色匹配的所有服務(wù)器。

當(dāng)你添加新的開發(fā)人員時(shí),只需生成一個(gè)證書即可讓他們獲得授權(quán),訪問所有相關(guān)服務(wù)器,而無需在這些服務(wù)器上添加任何內(nèi)容。

大致上是這樣的:

看完這篇不在擔(dān)心刪庫(kù)跑路看完這篇不在擔(dān)心刪庫(kù)跑路

帶有角色的 ssh 證書簽名

下面是在服務(wù)器上配置角色的方式:

首先,創(chuàng)建用于配置訪問權(quán)限的文件夾:sudo mkdir /etc/ssh/auth_principals。在該文件夾中,你可以用允許登錄服務(wù)器的用戶名創(chuàng)建文件。例如,要對(duì)某些角色授予 root 訪問權(quán)限,請(qǐng)?zhí)砑游募?etc/ssh/auth_principals/root。

在/etc/ssh/auth_principals/root內(nèi)部,你只需列出所有可以用 root 身份登錄的角色,每行一個(gè)角色:

admin

senior-developer

最后,再在/etc/ssh/sshd_config中添加一行,在服務(wù)器上配置為使用角色:

AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u

為了使更改生效,你應(yīng)該重新加載 ssh 服務(wù):sudo service ssh reload。 下面是使用角色簽署密鑰的方式(它們已添加到證書中):

ssh-keygen -s ca -I USER_ID -n ROLE1,ROLE2 -V +12w -z 2 id_ecdsa.pub

這里和之前是一樣的,但帶有-n ROLE1,ROLE2標(biāo)志。重要提示:不同角色的逗號(hào)之間不能有空格!現(xiàn)在,這位開發(fā)人員可以登錄 auth_principals 文件中有ROLE1或ROLE2的任何服務(wù)器,以獲取他們嘗試登錄時(shí)使用的用戶名。

注銷密鑰

最后,如果要使證書無效,可以通過用戶名或證書的序列號(hào)(-z標(biāo)志)來實(shí)現(xiàn)。建議你在 Excel 電子表格中列出生成的證書列表,或者根據(jù)你的具體情況來建立數(shù)據(jù)庫(kù)。

ssh-keygen -k -f revoked-keys -u -s ca list-to-revoke

當(dāng)你已經(jīng)有一個(gè)revoked-keys列表并想要更新它時(shí)(-u標(biāo)志)就這樣做。對(duì)于初始生成,請(qǐng)拿掉更新標(biāo)志。list-to-revoke需要包含用戶名(id)或序列號(hào)(生成期間為-z標(biāo)志),如下所示:

serial: 1

id: test.user

這將撤消對(duì)序列號(hào)為 1 的證書以及 ID 為test.user的所有證書的訪問權(quán)限。

為了讓服務(wù)器知曉已注銷的密鑰,你需要將生成的 / 更新的revoked keys文件添加到/etc/ssh/revoked-keys,并在/etc/ssh/sshd_config中再次配置:

警告:確保revoked-keys文件可訪問且可讀,否則你可能無法訪問服務(wù)器

RevokedKeys /etc/ssh/revoked-keys

3. 小結(jié):ssh 密鑰管理的好方法

我認(rèn)為這種解決方案是最好用的。你可以選擇通過 ssh 基于角色管理對(duì)服務(wù)器的訪問權(quán)限。你只需配置一次服務(wù)器(允許哪些角色訪問服務(wù)器)即可。對(duì)于新加入的開發(fā)人員,你只需要生成一個(gè)簽名證書,他們就能立即訪問與他們的角色 / 經(jīng)驗(yàn)相匹配的所有相關(guān)機(jī)器。當(dāng)他們離開公司時(shí),你也可以通過一種簡(jiǎn)單的方式撤銷他們的訪問權(quán)限。

即使發(fā)生不幸事故,并且開發(fā)人員在未取消訪問權(quán)限的情況下離開,他們的證書也會(huì)在一段時(shí)間后過期,因此他們也將自動(dòng)失去訪問權(quán)限。

對(duì)小型團(tuán)隊(duì)來說,你可以手動(dòng)執(zhí)行這些步驟,因?yàn)檫@些工作做起來非??欤蝗缓箅S著你的成長(zhǎng),可以使用基于公司身份驗(yàn)證詳細(xì)信息的登錄服務(wù)來自動(dòng)進(jìn)行證書簽名。


當(dāng)前文章:應(yīng)對(duì)刪庫(kù)跑路方案
網(wǎng)站路徑:http://www.5511xx.com/article/cdcpsse.html