情境:
一台EC2在public subnet
一台RDS在private subnet (例如一台maria db or mysql)
EC2 connet to RDS
已知:
執行開發工作的RD 能夠 ssh to Ec2 by .pem key
執行開發工作的RD 能夠 ssh to RDS by ssh tunnel to EC2
提問:
因為RD 能夠 ssh到EC2 因此能得知設定連線RDS的帳號密碼。
那我該如何讓RD,連線至RDS的時候只有select的權限而非all privileges?
該如何讓RD,連線至RDS的時候只有select的權限而非all privileges?
(1)使用 root 進入 MySQL
mysql> mysql -u root -p
(2)遠端登入
mysql> mysql -u root -h remote_host_ip -p
remote_host_ip 指你要登入的遠端MySQL
(3)建立使用者,並給予權限 (只給一個 select )
grant SELECT on . to 'username'@'localhost' identified by 'yourpassword';
GRANT SELECT ON dbname.* TO 'username'@localhost IDENTIFIED BY 'userpassword';
flush privileges;
但是RD 進入EC2 還是能夠得知擁有全部權限的sql account
萬一他不用我規定的帳號連線怎辦
執行開發工作的RD 能夠 ssh to Ec2 by .pem key
執行開發工作的RD 能夠 ssh to RDS by ssh tunnel to EC2
以上等同是RD使用SSH的SuperUser進入EC2的機器,連線MySql時還是需要提供他MySql(權限為select)的帳號,他無法自行得知具有權限的帳號。
除非RD用SuperUser去重設EC2的MySql的資料庫,但這也會同時影響EC2原有MySQL的root帳號,系統端的管理者可以用MySQL登入去自動追蹤,因此知道怎麼處理的RD應該不會有此問題。
他可以自己進入EC2之後,去查一下連線RDS的配置
不就知道,擁有所有權限的帳號了麻,為什麼不能自行得知?
話說你是不是誤會了什麼,我現在是兩台機器哦。不是一台
的確我的回答是兩台"機器",我覺得我有誤會的是RDS的部分,請問你所說的RDS是雲端的兩套RDB,沒有OS(Linux)層?
我的想法是經由OS層來控管,但如你所說看起來是沒有的,這種控管方式要看雲端的供應商能否有解方?
有講等於沒講。
有聽沒有懂,自然是有講等於沒講(獎 or 蔣)。
believeil我覺得kw6732大寫的很好很專業呀,在iT邦的邦友每個人的Backgroud都不同,對同一句話也都可能會有不同的解讀,若您覺得他沒回答到您的問題點,是否也可有能代表您的問題描述的不夠清楚??
@sam0407 大大你好,謝謝你的認可,論壇上有些是IT問題,有些事情是素養的問題,也有些是EQ問題,當HelpDesktop日久,各樣的User都看過,其實會有這回應很正常,除非他有認知到問題所在,完全可以不用再理會,我們擔任IT自己不要往心裡去就好。
不知道我在問什麼還硬要回答,到底誰的問題,
看到一些不明所以又沒建設性的答案,誰看了不會煩,
就去google然後複製貼上答案,我才想說不覺得羞愧麻?
然後來指責別人EQ問題,真的厚臉皮,
不懂我在問什麼就別回答答案阿?真好意思稱呼自己是工程師。
「engineers should abide by strict principle」
對你 只能說 "磚家" 一位 已認證~
整棟樓回應的我們都互相看得懂,你要做 "權限的限制" 也都給你答案了,只有你自己看不懂,問題是出在誰身上就很清楚了,還可以指鼻子蹬臉的出來胡亂指摘,這種沒程度的見多了,態度還出奇的差。
你以為給你Google你就會用,那你問題怎麼沒解決,笑死人了,怎麼不去用Chat GPT,看你是否有解方,即便他回了你看得懂嗎?
你就是看不懂才來發問的,不是嗎?
沒看過在水裡溺死的魚嗎?
誰說過自己是工程師或不是工程師?
EQ 問題也是自己往臉上貼的,誰說你了?
還會跑出來回,這格調是怎麼工作的?
烙幾句英文就當真想教訓人?
怎麼不去發英文論壇找答案?
ridiculous.
但是RD 進入EC2 還是能夠得知擁有全部權限的sql account
萬一他不用我規定的帳號連線怎辦
EC2連RDS的連線設定帳號密碼是用明碼存在EC2上??都沒有加密嗎?
這樣資安風險也太高了吧......
您要擔心的不只那個RD工程師吧.....
機敏資料一定要加密啦~~
關鍵字DevSecOps參考一下!!
這的確是個資安的漏洞,RD都可以掌握整個DB的生殺大權,如果 1.外洩 2.沒有二階登入 就很危險了。
就算帳號密碼加密了,EC2不也是用這套加密的帳號密碼連線RDS..
RD不也一樣可以用同樣的加密帳號密碼連線RDS..
我也知道帳號密碼要保存要加密,別讓別人知道,不過我現在就在問這個不是麻?
要是能做到,我就能分權限分帳號了,解決問題了
有實際做法?
首先,你要先知道一件事
無法依照連線來設定權限。
只能用資料庫帳號來區分權限。
再來,如果已有最大權限的SSH帳密。(可轉換成root權限的帳號)
基本上來說,確實如你所說的。什麼限制也沒用了。
我知道你想利用連線的方式來限制權限。
但這的確沒辦法做的到。只能從帳號中處理
我目前唯一能建議的方式。你只能從帳號下手。
回收不該給人的最大權限帳號。再重新分配帳號。
如無法回收帳號。你就死心吧。