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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
應(yīng)對“刪庫跑路”的一種解決思路

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

創(chuàng)新互聯(lián)是一家專業(yè)提供鄂爾多斯企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都做網(wǎng)站、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為鄂爾多斯眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。

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

1. 痛苦的手動更改

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

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

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

2. 替代解決方案

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

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

解決方案:簽名密鑰

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

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

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

基本思想

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

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

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

優(yōu)點

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

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

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

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

該怎么做?

了解了原理后,實際上做起來非常簡單。

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

 
 
 
 
  1. umask 77 # you want it to be private 
  2.  
  3. mkdir ~/my-ca && cd ~/my-ca 
  4.  
  5. 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ù)器允許訪問由該證書簽名的用戶

 
 
 
 
  1. 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ā)人員生成了他的公鑰 - 私鑰對(例如ssh-keygen -t ecdsa -b 521),他們只需向你發(fā)送他們的公鑰(請注意,你永遠(yuǎn)不需要發(fā)送任何私鑰?。?。然后,你只需簽署他們的公鑰就能生成他們的證書:

 
 
 
 
  1. # Inside your ~/my-ca folder, sign their public key (here: id_ecdsa.pub) 
  2.  
  3. ssh-keygen -s ca -I USER_ID -V +12w -z 1 id_ecdsa.pub 

各個部分的簡要說明:

  • -s ca:你要使用 CA 進(jìn)行簽名
  • -I USER_ID:你的用戶 ID/ 用戶名
  • -V +12w:證書過期前的有效時間,這里有效期為 12 周
  • -z 1:此證書的序列號,以后可用它來讓這個證書無效,序列號應(yīng)唯一
  • id_ecdsa.pub:你要簽名的開發(fā)人員的公鑰

它將生成證書id_ecdsa-cert.pub,你可以將其發(fā)送給開發(fā)人員,然后將其放在?/.ssh文件夾中的公鑰 / 私鑰對旁邊。

改進(jìn)一下

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

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

這樣的話,讓我們在簽名流程中添加角色吧。

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

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

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

大致上是這樣的:

帶有角色的 ssh 證書簽名

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

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

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

 
 
 
 
  1. admin 
  2.  
  3. senior-developer 

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

 
 
 
 
  1. AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u 

為了使更改生效,你應(yīng)該重新加載 ssh 服務(wù):sudo service ssh reload。

下面是使用角色簽署密鑰的方式(它們已添加到證書中):

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

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

注銷密鑰

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

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

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

 
 
 
 
  1. serial: 1 
  2.  
  3. id: test.user 

這將撤消對序列號為 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 基于角色管理對服務(wù)器的訪問權(quán)限。你只需配置一次服務(wù)器(允許哪些角色訪問服務(wù)器)即可。對于新加入的開發(fā)人員,你只需要生成一個簽名證書,他們就能立即訪問與他們的角色 / 經(jīng)驗相匹配的所有相關(guān)機(jī)器。當(dāng)他們離開公司時,你也可以通過一種簡單的方式撤銷他們的訪問權(quán)限。

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

對小型團(tuán)隊來說,你可以手動執(zhí)行這些步驟,因為這些工作做起來非???;然后隨著你的成長,可以使用基于公司身份驗證詳細(xì)信息的登錄服務(wù)來自動進(jìn)行證書簽名。


名稱欄目:應(yīng)對“刪庫跑路”的一種解決思路
本文網(wǎng)址:http://www.5511xx.com/article/cdegogo.html