AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

Jenkins Pipeline用戶權(quán)限管理新技巧:打造安全高效的流水線!

來源: 責(zé)編: 時間:2024-05-24 08:46:06 156觀看
導(dǎo)讀什么是RBAC基于角色的訪問控制(Role-based access control,簡稱 RBAC),指的是通過用戶的角色(Role)授權(quán)其相關(guān)權(quán)限,這實(shí)現(xiàn)了更靈活的訪問控制,相比直接授予用戶權(quán)限,要更加簡單、高效、可擴(kuò)展。圖片當(dāng)使用 RBAC 時,通過分析系統(tǒng)

什么是RBAC

基于角色的訪問控制(Role-based access control,簡稱 RBAC),指的是通過用戶的角色(Role)授權(quán)其相關(guān)權(quán)限,這實(shí)現(xiàn)了更靈活的訪問控制,相比直接授予用戶權(quán)限,要更加簡單、高效、可擴(kuò)展。xH628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

當(dāng)使用 RBAC 時,通過分析系統(tǒng)用戶的實(shí)際情況,基于共同的職責(zé)和需求,授予他們不同角色。你可以授予給用戶一個或多個角色,每個角色具有一個或多個權(quán)限,這種 用戶-角色、角色-權(quán)限 間的關(guān)系,讓我們可以不用再單獨(dú)管理單個用戶,用戶從授予的角色里面繼承所需的權(quán)限。xH628資訊網(wǎng)——每日最新資訊28at.com

大家可以看一下的案例更容易理解:xH628資訊網(wǎng)——每日最新資訊28at.com

用戶角色分為管理員、開發(fā)、運(yùn)維,各個角色并具備不同的權(quán)限。每個用戶也具備單個與多個角色。xH628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

需求說明

本章節(jié)是通過一個企業(yè)案例進(jìn)行講解,需求如下:xH628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

接下來,我們根據(jù)上圖的組織架構(gòu)來創(chuàng)建用戶與組。xH628資訊網(wǎng)——每日最新資訊28at.com

Jenkins權(quán)限如何分配:xH628資訊網(wǎng)——每日最新資訊28at.com

  • 開發(fā)組:只讀權(quán)限
  • 運(yùn)維組:管理員權(quán)限
  • 測試組:執(zhí)行權(quán)限

配置權(quán)限

配置角色

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

分配權(quán)限

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

權(quán)限驗證

張三(管理員),下圖可以看到什么權(quán)限都有:xH628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

李四(只讀),下圖可以看到只有只讀權(quán)限:xH628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

張三(執(zhí)行權(quán)限),下圖可以看到是有執(zhí)行權(quán)限的:xH628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

配置Pipeline權(quán)限

需求說明

實(shí)際情況中,我們是通過Pipeline進(jìn)行管理流水線的,接下來咱們針對Pipeline進(jìn)行配置權(quán)限控制,詳情如下圖:xH628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xH628資訊網(wǎng)——每日最新資訊28at.com

權(quán)限配置:xH628資訊網(wǎng)——每日最新資訊28at.com

  • 運(yùn)維組:管理員權(quán)限
  • 開發(fā)組:非生產(chǎn)環(huán)境只讀權(quán)限
  • 測試組:非生產(chǎn)環(huán)境執(zhí)行權(quán)限

權(quán)限配置

以Ruoyi- Gateway為例,在Pipeline里配置權(quán)限:xH628資訊網(wǎng)——每日最新資訊28at.com

DeployDev階段(修改submitter配置):xH628資訊網(wǎng)——每日最新資訊28at.com

...    stage('DeployDev'){            steps {                echo "部署開發(fā)環(huán)境"                script {                    def userInput = input (                        message: '確定要發(fā)布到DEV環(huán)境嗎?',                        parameters:[                            choice(name: '操作', choices: ['發(fā)布', '跳過'])                        ],                        ok: '確定',                        submitter: 'ops,qa', // 配置ops,qa組即可                        submitterParameter: 'APPROVER'                    )                    if (userInput['操作'] == '發(fā)布'){                        echo "部署Dev環(huán)境開始"                        ....

DeployUat階段(修改submitter配置):xH628資訊網(wǎng)——每日最新資訊28at.com

....    stage('DeployUat'){            steps {                echo "部署測試環(huán)境"                 script {                    def userInput = input (                        message: '確定要發(fā)布到UAT環(huán)境嗎?',                        parameters:[                            choice(name: '操作', choices: ['發(fā)布', '跳過'])                        ],                        ok: '確定',                        submitter: 'ops,qa', // 配置ops,qa組即可                        submitterParameter: 'APPROVER'                    )                    if (userInput['操作'] == '發(fā)布'){                        echo "發(fā)布"                        ....

DeployGray階段(修改submitter配置):xH628資訊網(wǎng)——每日最新資訊28at.com

stage('DeployGray'){            steps {                echo "部署灰度環(huán)境"                 script {                    def GraysMode = input (                        message: '確定要灰度驗證嗎?',                        parameters:[                            choice(name: 'operation', choices: ['基于權(quán)重灰度','基于請求頭灰度','跳過'])                        ],                        ok: '確定',                        submitter: 'ops',                        submitterParameter: 'APPROVER'                    )                    if (GraysMode['operation'] == '基于權(quán)重灰度'){                        def WeightMode = input (                        message: '請輸入權(quán)重比例!',                        parameters:[                            string(name: 'workload_weight',defaultValue: '',description: ''),                            string(name: 'grayload_weight',defaultValue: '',description: '')                        ],                        ok: '確定',                        submitter: 'ops',                        submitterParameter: 'APPROVER'                    )                    sh """                     echo $pipeline_dir                     echo "打印編排文件詳細(xì)信息"                     if [ -e "$pipeline_dir/prod/$Project_Name/deployment-gray.yml" ]; then                        cat $pipeline_dir/prod/$Project_Name/deployment-gray.yml | sed  "s/TAG/${Tag}/g"                         cat $pipeline_dir/prod/$Project_Name/deployment-gray.yml | sed  "s/TAG/${Tag}/g" | /usr/bin/kubectl apply -f  -                     fi                     echo "配置權(quán)重"                     echo ${WeightMode['grayload_weight']}                     if [ -e "$pipeline_dir/prod/$Project_Name/ingress-gray-weight.yml" ]; then                        cat $pipeline_dir/prod/$Project_Name/ingress-gray-weight.yml | sed  "s/WEIGHT-VALUE/${WeightMode['grayload_weight']}/g"                         cat $pipeline_dir/prod/$Project_Name/ingress-gray-weight.yml | sed  "s/WEIGHT-VALUE/${WeightMode['grayload_weight']}/g" | /usr/bin/kubectl apply -f  -                     fi                    """                    }                    if (GraysMode['operation'] == '基于請求頭灰度'){                        GrayHeaderMode = input (                        message: '請輸入請求頭!',                        parameters:[                            string(name: 'header_key',defaultValue: '',description: ''),                            string(name: 'header_value',defaultValue: '',description: '')                        ],                        ok: '確定',                        submitter: 'ops',                        submitterParameter: 'APPROVER'                    )                                        sh """                     echo ${GrayHeaderMode['header_value']}                     echo $pipeline_dir                     echo "打印編排文件詳細(xì)信息"                     if [ -e "$pipeline_dir/prod/$Project_Name/deployment-gray.yml" ]; then                        cat $pipeline_dir/prod/$Project_Name/deployment-gray.yml | sed  "s/TAG/${Tag}/g"                         cat $pipeline_dir/prod/$Project_Name/deployment-gray.yml | sed  "s/TAG/${Tag}/g" | /usr/bin/kubectl apply -f  -                     fi                                          echo "配置請求頭"                     echo ${GrayHeaderMode['header_key']}                     echo ${GrayHeaderMode['header_value']}                     if [ -e "$pipeline_dir/prod/$Project_Name/ingress-gray-header.yml" ]; then                        cat $pipeline_dir/prod/$Project_Name/ingress-gray-header.yml | sed  "s/header-key/${GrayHeaderMode['header_key']}/g" | sed  "s/header-value/${GrayHeaderMode['header_value']}/g"                        cat $pipeline_dir/prod/$Project_Name/ingress-gray-header.yml | sed  "s/header-value/${GrayHeaderMode['header_key']}/g" | sed  "s/header-value/${GrayHeaderMode['header_value']}/g" | /usr/bin/kubectl apply -f  -                     fi                    """                    }                    // 默認(rèn)模式為yes,如果跳過為no                    if (GraysMode['operation'] == '跳過'){                        GrayEnable='no'                    }                }            }

DeployProd階段(修改submitter配置):xH628資訊網(wǎng)——每日最新資訊28at.com

stage('DeployProd'){            steps {                echo "部署生產(chǎn)環(huán)境"                 script {                    def userInput = input (                        message: '確定要發(fā)布到生產(chǎn)環(huán)境嗎?',                        parameters:[                            choice(name: '操作', choices: ['發(fā)布', '跳過'])                        ],                        ok: '確定',                        submitter: 'ops',                        submitterParameter: 'APPROVER'                    )                    if (userInput['操作'] == '發(fā)布'){                        echo "發(fā)布"                        Namespace_Prod = sh(script: "cat $pipeline_dir/prod/$Project_Name/deployment.yml | grep namespace | awk -F ':' '{print /$2}'", returnStdout: true).trim()                        DeploymentName = sh(script: "cat $pipeline_dir/prod/$Project_Name/deployment.yml | grep name: |  head -n 1 | awk -F ':' '{print /$2}'", returnStdout: true).trim()                        Revsion_Prod = sh(script: "kubectl get deployment $DeploymentName -n ${Namespace_Prod} -o=jsnotallow='{.spec.template.spec.containers[*].image}' | awk -F ':' '{print /$NF}'", returnStdout: true).trim()                        GrayDeploymentName = sh(script: "cat $pipeline_dir/prod/$Project_Name/deployment-gray.yml | grep name: |  head -n 1 | awk -F ':' '{print /$2}'", returnStdout: true).trim()                        GrayServiceName = sh(script: "cat $pipeline_dir/prod/$Project_Name/service-gray.yml | grep name: |  head -n 1 | awk -F ':' '{print /$2}'", returnStdout: true).trim()                        GrayIngressName = sh(script: "cat $pipeline_dir/prod/$Project_Name/ingress-gray-header.yml | grep name: |  head -n 1 | awk -F ':' '{print /$2}'", returnStdout: true).trim()                        sh '''                        echo $pipeline_dir                        echo "開始部署生產(chǎn)環(huán)境"                        echo "打印編排文件詳細(xì)信息"                        if [ -e "$pipeline_dir/prod/$Project_Name/deployment.yml" ]; then                          cat $pipeline_dir/prod/$Project_Name/deployment.yml | sed  "s/TAG/${Tag}/g"                          cat $pipeline_dir/prod/$Project_Name/deployment.yml | sed  "s/TAG/${Tag}/g" | /usr/bin/kubectl apply -f  -                        fi                        if [ -e "$pipeline_dir/prod/$Project_Name/service.yml" ]; then                           cat $pipeline_dir/prod/$Project_Name/service.yml                           cat $pipeline_dir/prod/$Project_Name/service.yml  | /usr/bin/kubectl apply -f  -                        fi                        if [ -e "$pipeline_dir/prod/$Project_Name/ingress.yml" ]; then                          cat $pipeline_dir/prod/$Project_Name/ingress.yml                          cat $pipeline_dir/prod/$Project_Name/ingress.yml  | /usr/bin/kubectl apply -f  -                        fi                        '''                        if (GrayEnable == 'yes'){                            sh """                        kubectl delete deployment ${GrayDeploymentName} -n ${Namespace_Prod}                        kubectl delete service  ${GrayServiceName} -n ${Namespace_Prod}                        kubectl delete ingress  ${GrayIngressName} -n ${Namespace_Prod}                        """                        }                    } else {                        echo "不發(fā)布"                    }                }            }            post {                success {                    wrap([$class: 'BuildUser']) {                    lark (                        robot: "2026ab67-7d07-46ec-a309-bebebaeaffbc",                        type: "CARD",                        title: " 
                

本文鏈接:http://www.tebozhan.com/showinfo-26-90502-0.htmlJenkins Pipeline用戶權(quán)限管理新技巧:打造安全高效的流水線!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Angular 18 正式發(fā)布,一起來看看都有哪些更新

下一篇: 很強(qiáng)!五個 python 高級技巧

標(biāo)簽:
  • 熱門焦點(diǎn)
  • K60 Pro官方停產(chǎn) 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經(jīng)透露了,Redmi K60 Pro已經(jīng)停產(chǎn)且不會補(bǔ)貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機(jī)在停產(chǎn)之后
  • 影音體驗是真的強(qiáng) 簡單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • 小米降噪藍(lán)牙耳機(jī)Necklace分享:聽一首歌 讀懂一個故事

    在今天下午的小米Civi 2新品發(fā)布會上,小米還帶來了一款新的降噪藍(lán)牙耳機(jī)Necklace,我們也在發(fā)布結(jié)束的第一時間給大家?guī)磉@款耳機(jī)的簡單分享。現(xiàn)在大家能見到最多的藍(lán)牙耳機(jī)
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機(jī)的發(fā)布會上,vivo的最新款真無線藍(lán)牙耳機(jī)vivo TWS Air也一同發(fā)布,本次就這款耳機(jī)新品給大家?guī)硪粋€簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產(chǎn)
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數(shù)量是否小于或等于一個數(shù)字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報道 從三強(qiáng)爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進(jìn)制程領(lǐng)先地位的英特爾,甚至初成立不久的新
  • 滴滴違法違規(guī)被罰80.26億 共存在16項違法事實(shí)

    滴滴違法違規(guī)被罰80.26億 存在16項違法事實(shí)開始于2121年7月,歷經(jīng)一年時間,網(wǎng)絡(luò)安全審查辦公室對“滴滴出行”網(wǎng)絡(luò)安全審查終于有了一個暫時的結(jié)束。據(jù)“網(wǎng)信
  • 2021中國國際消費(fèi)電子博覽會與青島國際軟件融合創(chuàng)新博覽會新聞發(fā)布會隆重舉行

    9月18日,2021中國國際消費(fèi)電子博覽會與青島國際軟件融合創(chuàng)新博覽會新聞發(fā)布會在青島國際新聞中心隆重舉行。發(fā)布會上青島市政府領(lǐng)導(dǎo)聯(lián)袂出席,對本次雙展會情
  • 利用職權(quán)私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據(jù)外媒援引知情人士表示,過去一年時間內(nèi),F(xiàn)acebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內(nèi)部系統(tǒng)以不當(dāng)方式重置用戶帳號,其
Top