Board logo

標題: 想比production server自動pull gitlab, 但唔想比太多權限, 可以點set? [打印本頁]

作者: 3ldk    時間: 2020-7-9 19:17     標題: 想比production server自動pull gitlab, 但唔想比太多權限, 可以點set?

想搞自動deploy, 寫左個bat, 每個鐘都會pull一次gitlab上某個branch

但係如果想pull, 就要整個access token,

雖然可以淨係set read_repository, write_repository權限比某個token

但如果得到token, 係可以access晒gitlab全部project

production server無理由可以access唔相關既project, 而且仲要set埋developer個gitlab account落去, 咁唔係好妥當

雖然可以每個server開一個gitlab account, 然後add account落project

但咁就要管理大量account, 又係唔可行

有無方法可以限制server只可以access一個project? 最好連developer account name都唔洗暴露
作者: KamSing    時間: 2020-7-9 21:28

https://docs.gitlab.com/ee/user/ ... _access_tokens.html
有project token

https://docs.gitlab.com/ee/topic ... es.html#auto-deploy
用CI tool 會唔會好D?
作者: hihihi123hk    時間: 2020-7-10 15:13

GitLab CI  Zip 起啲 Source code 再 scp/sftp 上去 production

delete .git folder

ci remote trigger unzip

via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)
作者: rabbit82047    時間: 2020-7-11 12:56

點解唔係 change detect 再 push 上去 server, 而係要 server pull

係要用 pull 形式, 可以考慮 git server 打包個 deployable package 去特定位置
server 定時 pull 果個 package, deploy 完 issue delete / archive command
作者: 3ldk    時間: 2020-7-11 17:17

本帖最後由 3ldk 於 2020-7-11 18:51 編輯

研究過上面幾種方法, 暫時覺得比較可行既只有依個deploy token,
唯一係差一樣, 無write_repository, 如果個網站有config可以set, admin tune完個config無得push返上去

https://docs.gitlab.com/ee/topic ... es.html#auto-deploy



至於其他方法

project token:

porject token要用gitlab console先可以用到, gitlab console要self host先有, 我係用gitlab的service, 所以用唔到

GitLab CICD / Jenkins

依類方法最大問題係要在server開個缺口(22)

我之前set既server經常比人hack, 就算係wordpress hosting(即係os/panel係set好晒比你, 你直接用wordpress果種)
都一樣比人hack, 所以我想做好D security, 所以先諗住由server主動pull
當然, 如果deploy token最後都係無辧法解決最後一個問題, 應該都會改用CICD
作者: macross7ra    時間: 2020-7-11 18:22

本帖最後由 macross7ra 於 2020-7-11 18:23 編輯

You are using Gitlab, so you should use Gitlab CI to setup a deployment job by projects.

You did mention server and project is 1 to 1 pair, the deployment job could just ssh into the target server and use the CI token to pull the repo and then reload you app.

To the SSH credential, you can use the secret CI variable by projects.
作者: macross7ra    時間: 2020-7-11 18:25

You can check how to pass along the CI token to the server via SSH

https://superuser.com/questions/ ... ough-an-ssh-command
作者: macross7ra    時間: 2020-7-11 18:31

https://docs.gitlab.com/ee/user/ ... endent-repositories
作者: louislam    時間: 2020-7-11 20:33

我自己用開 Deploy Keys,係用得tick write access

[attach]2204719[/attach]
作者: hihihi123hk    時間: 2020-7-11 23:50

本帖最後由 hihihi123hk 於 2020-7-11 23:51 編輯
研究過上面幾種方法, 暫時覺得比較可行既只有依個deploy token,
唯一係差一樣, 無write_repository, 如果 ...
3ldk 發表於 2020-7-11 17:17

「成日俾人 Hack」

係唔係因為 ssh 你用 password login?

Btw, 另外一個方法係,喺你 Production Server 裝 GitLab Runner,成為 GitLab CI 嘅一部份直接同 GitLab 溝通

via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)
作者: XML    時間: 2020-7-13 14:57

開個port就會比人hack?
比人hack定係比人掃

如果係比人掃 你用apache都會比人掃
咁係唔係連apache都唔裝

如果係比人hack
咁你就要搵下22比人hack到既原因
作者: 3ldk    時間: 2020-7-13 18:11

開個port就會比人hack?
比人hack定係比人掃

如果係比人掃 你用apache都會比人掃
咁係唔係連apache都唔裝:s ...
XML 發表於 2020-7-13 14:57



唔係話開左port就比人hack
只係試過好多部server都比人hack過, 唯有開少d port, 希望無咁易比人hack
實際上我完全無頭緒D人係點hack入黎, 我的確係用password login, 但個password係好長的
即係要撞都要撞好多年, 而且username亦都唔係common既名, 就當username得一個字母, 理論上都要撞26個好多年先撞得入(更何況我個username唔只一個字母)

係完全唔知佢用咩原理入黎, 好容易就會諗會唔會係SSH有時會出現漏洞, 可以繞過認證(例如你見RDP成日有依D新聞), 然後就會諗住開左ssh有風險

如果話ssh加key login係非常安全, 幾乎無可能hack到, 咁我都會開返試試
作者: rabbit82047    時間: 2020-7-15 08:47

唔係話開左port就比人hack
只係試過好多部server都比人hack過, 唯有開少d port, 希望無咁易比人hack
實 ...
3ldk 發表於 2020-7-13 18:11



    有時 hacker 唔一定要經 ssh 入黎既
作者: KinChungE    時間: 2020-7-15 13:36

唔係話開左port就比人hack
只係試過好多部server都比人hack過, 唯有開少d port, 希望無咁易比人hack
實 ...
3ldk 發表於 2020-7-13 18:11


ssh + key login所謂既安全, 等於你用超長password咁解
作者: Rolf    時間: 2020-7-20 05:56

本帖最後由 Rolf 於 2020-7-20 06:41 編輯

做法調轉左wor

production server跟本唔需要polling loop個gitlab branch
做CI/CD重點係有新野push就trigger runner幫你做你想做既野

假設你有用docker

1. Gitlab trigger CI/CD runner (e.g. new push to master / production branch)
2. Build / package docker image

如果production server用k8s+image registry可以skip埋以下,只要build完放上registry就自動波load image+做deployment

3. Send docker image to production server via SSH (冇用k8s但有用image registry可以直接放image上registry,由production server問registry拎)
4. Run deploy script via SSH

就算冇用docker只要將3.改為用老土ftp send deployment需要的東西就得

搞掂!
唯一security concern只是production server的ssh是否安全
真係驚只要設定成只allow Gitlab IP連接就得

仲係驚而再有條件啲嘅話,production server同gitlab server做同一private network唔直接出街
出街經gateway呀reverses proxy呀lb呀等等,夠哂安全啦

p.s. 個人認為CI/CD做半套不如唔好做,team members 冇人識嘅不如用返大家都熟嘅傳統方法。無奈係而家好多公司膠層盲目跟風,玩死下面啲人





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2