我工作的公司一直在使用Capistrano進行Rails應用程序部署。我們爲每個Web應用程序創建的應用程序用戶(例如foo_app),並且它們都屬於web應用程序組,沒有密碼sudo的特權:Capistrano安全最佳實踐
%webapp ALL=(ALL) NOPASSWD: ALL
在我們蓋deploy.rb我們設置一個SSH密鑰對允許Capistrano的以應用程序用戶的身份登錄服務器並執行所有上限任務。
set :ssh_options, {:username=>'foo_app', :keys => File.join(ENV['HOME'],'.ssh', 'id_rsa_deploy')}
它運作良好,但我覺得有點不舒服有NOPASSWD sudoer運行我的應用程序的過程中,如果應用程序被攻破,攻擊者可以很容易地接管整個服務器。
我的問題是,有沒有辦法讓不同的用戶運行我的應用程序,最好沒有sudo權限?理想我想有一個單獨的「部署」用戶做所有Capistrano的遠程任務:
set :ssh_options, {:username=>'deploy', :keys => File.join(ENV['HOME'],'.ssh', 'id_rsa_deploy')}
,但我希望有Capistrano的使用應用程序特定的用戶運行我的程序像麒麟,耽誤工作等
我玩過:admin_runner,:runner變量,但它們不像我預期的那樣工作。我可以在啓動像獨角獸,延遲工作等流程時將某些第三方食譜更改爲sudo作爲foo_app,但這樣做可以讓他們更新。
任何想法?
謝謝!