iT邦幫忙

0

關於RD遠端連線資料庫的權限問題

  • 分享至 

  • xImage

情境:
一台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?

powerc iT邦研究生 5 級 ‧ 2023-04-13 09:30:14 檢舉
RDS應該沒有開放SSH吧,還是我記錯了@@
edit: 是我沒看清楚內容,請忽略
believeil iT邦新手 5 級 ‧ 2023-04-13 17:23:52 檢舉
先去了解一下ssh tunnel是什麼東西,謝謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
kw6732
iT邦研究生 4 級 ‧ 2023-04-12 17:28:40

該如何讓RD,連線至RDS的時候只有select的權限而非all privileges?

  • 這個問題,建議你建立一個只有Select權限的帳號,用此帳號去查詢即可。

(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;

參見:MySQL使用者權限設定

看更多先前的回應...收起先前的回應...
believeil iT邦新手 5 級 ‧ 2023-04-12 17:45:07 檢舉

但是RD 進入EC2 還是能夠得知擁有全部權限的sql account
萬一他不用我規定的帳號連線怎辦

kw6732 iT邦研究生 4 級 ‧ 2023-04-12 18:10:44 檢舉

執行開發工作的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應該不會有此問題。

believeil iT邦新手 5 級 ‧ 2023-04-12 18:19:32 檢舉

他可以自己進入EC2之後,去查一下連線RDS的配置
不就知道,擁有所有權限的帳號了麻,為什麼不能自行得知?

話說你是不是誤會了什麼,我現在是兩台機器哦。不是一台

kw6732 iT邦研究生 4 級 ‧ 2023-04-13 08:35:16 檢舉

的確我的回答是兩台"機器",我覺得我有誤會的是RDS的部分,請問你所說的RDS是雲端的兩套RDB,沒有OS(Linux)層?
我的想法是經由OS層來控管,但如你所說看起來是沒有的,這種控管方式要看雲端的供應商能否有解方?

believeil iT邦新手 5 級 ‧ 2023-04-13 17:16:02 檢舉

有講等於沒講。

kw6732 iT邦研究生 4 級 ‧ 2023-04-14 08:36:08 檢舉

有聽沒有懂,自然是有講等於沒講(獎 or 蔣)。
/images/emoticon/emoticon29.gif

sam0407 iT邦大師 1 級 ‧ 2023-04-14 10:27:09 檢舉

believeil我覺得kw6732大寫的很好很專業呀,在iT邦的邦友每個人的Backgroud都不同,對同一句話也都可能會有不同的解讀,若您覺得他沒回答到您的問題點,是否也可有能代表您的問題描述的不夠清楚??

kw6732 iT邦研究生 4 級 ‧ 2023-04-14 11:07:06 檢舉

@sam0407 大大你好,謝謝你的認可,論壇上有些是IT問題,有些事情是素養的問題,也有些是EQ問題,當HelpDesktop日久,各樣的User都看過,其實會有這回應很正常,除非他有認知到問題所在,完全可以不用再理會,我們擔任IT自己不要往心裡去就好。

believeil iT邦新手 5 級 ‧ 2023-04-14 15:39:34 檢舉

不知道我在問什麼還硬要回答,到底誰的問題,
看到一些不明所以又沒建設性的答案,誰看了不會煩,
就去google然後複製貼上答案,我才想說不覺得羞愧麻?
然後來指責別人EQ問題,真的厚臉皮,
不懂我在問什麼就別回答答案阿?真好意思稱呼自己是工程師。

「engineers should abide by strict principle」

kw6732 iT邦研究生 4 級 ‧ 2023-04-14 16:09:32 檢舉

對你 只能說 "磚家" 一位 已認證~

整棟樓回應的我們都互相看得懂,你要做 "權限的限制" 也都給你答案了,只有你自己看不懂,問題是出在誰身上就很清楚了,還可以指鼻子蹬臉的出來胡亂指摘,這種沒程度的見多了,態度還出奇的差。

你以為給你Google你就會用,那你問題怎麼沒解決,笑死人了,怎麼不去用Chat GPT,看你是否有解方,即便他回了你看得懂嗎?

你就是看不懂才來發問的,不是嗎?
沒看過在水裡溺死的魚嗎?
誰說過自己是工程師或不是工程師?
EQ 問題也是自己往臉上貼的,誰說你了?
還會跑出來回,這格調是怎麼工作的?
烙幾句英文就當真想教訓人?
怎麼不去發英文論壇找答案?

believeil iT邦新手 5 級 ‧ 2023-04-14 16:33:22 檢舉

ridiculous.

1
sam0407
iT邦大師 1 級 ‧ 2023-04-13 10:05:34

但是RD 進入EC2 還是能夠得知擁有全部權限的sql account
萬一他不用我規定的帳號連線怎辦

EC2連RDS的連線設定帳號密碼是用明碼存在EC2上??都沒有加密嗎?
這樣資安風險也太高了吧......
您要擔心的不只那個RD工程師吧.....
機敏資料一定要加密啦~~
關鍵字DevSecOps參考一下!!

看更多先前的回應...收起先前的回應...
kw6732 iT邦研究生 4 級 ‧ 2023-04-13 11:44:17 檢舉

這的確是個資安的漏洞,RD都可以掌握整個DB的生殺大權,如果 1.外洩 2.沒有二階登入 就很危險了。

believeil iT邦新手 5 級 ‧ 2023-04-13 17:15:22 檢舉

就算帳號密碼加密了,EC2不也是用這套加密的帳號密碼連線RDS..
RD不也一樣可以用同樣的加密帳號密碼連線RDS..

我也知道帳號密碼要保存要加密,別讓別人知道,不過我現在就在問這個不是麻?
要是能做到,我就能分權限分帳號了,解決問題了
有實際做法?

sam0407 iT邦大師 1 級 ‧ 2023-04-14 10:04:07 檢舉

不能理解您的問題到底在那裡?
EC2上的程式是從設定檔讀取加密過的帳號/密碼,解密後再去連接RDS。
RD SSH連到EC2上,去查設定檔應該只能看到加密過的帳號/密碼,他要怎麼連RDS?

當然如果您說:這位RD大人也同時維護加解密程式,所以他能將加密的資料還原,這是另一個問題。這個問題你必須要找其他人修改現有的加解密程式並維護才能解決。

believeil iT邦新手 5 級 ‧ 2023-04-14 15:41:04 檢舉

那就不要回答了,謝謝配合,我不是來解決你的問題的

sam0407 iT邦大師 1 級 ‧ 2023-04-18 13:30:03 檢舉

我沒有問題呀!有問題的一直是你吧?

2

首先,你要先知道一件事

無法依照連線來設定權限。
只能用資料庫帳號來區分權限。

再來,如果已有最大權限的SSH帳密。(可轉換成root權限的帳號)
基本上來說,確實如你所說的。什麼限制也沒用了。

我知道你想利用連線的方式來限制權限。
但這的確沒辦法做的到。只能從帳號中處理

我目前唯一能建議的方式。你只能從帳號下手。
回收不該給人的最大權限帳號。再重新分配帳號。

如無法回收帳號。你就死心吧。

我要發表回答

立即登入回答