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

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2024-05-24 08:46:06 141觀看
導讀什么是RBAC基于角色的訪問控制(Role-based access control,簡稱 RBAC),指的是通過用戶的角色(Role)授權其相關權限,這實現了更靈活的訪問控制,相比直接授予用戶權限,要更加簡單、高效、可擴展。圖片當使用 RBAC 時,通過分析系統

什么是RBAC

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

圖片圖片Ywy28資訊網——每日最新資訊28at.com

當使用 RBAC 時,通過分析系統用戶的實際情況,基于共同的職責和需求,授予他們不同角色。你可以授予給用戶一個或多個角色,每個角色具有一個或多個權限,這種 用戶-角色、角色-權限 間的關系,讓我們可以不用再單獨管理單個用戶,用戶從授予的角色里面繼承所需的權限。Ywy28資訊網——每日最新資訊28at.com

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

用戶角色分為管理員、開發、運維,各個角色并具備不同的權限。每個用戶也具備單個與多個角色。Ywy28資訊網——每日最新資訊28at.com

圖片圖片Ywy28資訊網——每日最新資訊28at.com

需求說明

本章節是通過一個企業案例進行講解,需求如下:Ywy28資訊網——每日最新資訊28at.com

圖片圖片Ywy28資訊網——每日最新資訊28at.com

接下來,我們根據上圖的組織架構來創建用戶與組。Ywy28資訊網——每日最新資訊28at.com

Jenkins權限如何分配:Ywy28資訊網——每日最新資訊28at.com

  • 開發組:只讀權限
  • 運維組:管理員權限
  • 測試組:執行權限

配置權限

配置角色

圖片圖片Ywy28資訊網——每日最新資訊28at.com

分配權限

圖片圖片Ywy28資訊網——每日最新資訊28at.com

權限驗證

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

圖片圖片Ywy28資訊網——每日最新資訊28at.com

李四(只讀),下圖可以看到只有只讀權限:Ywy28資訊網——每日最新資訊28at.com

圖片圖片Ywy28資訊網——每日最新資訊28at.com

張三(執行權限),下圖可以看到是有執行權限的:Ywy28資訊網——每日最新資訊28at.com

圖片圖片Ywy28資訊網——每日最新資訊28at.com

配置Pipeline權限

需求說明

實際情況中,我們是通過Pipeline進行管理流水線的,接下來咱們針對Pipeline進行配置權限控制,詳情如下圖:Ywy28資訊網——每日最新資訊28at.com

圖片圖片Ywy28資訊網——每日最新資訊28at.com

權限配置:Ywy28資訊網——每日最新資訊28at.com

  • 運維組:管理員權限
  • 開發組:非生產環境只讀權限
  • 測試組:非生產環境執行權限

權限配置

以Ruoyi- Gateway為例,在Pipeline里配置權限:Ywy28資訊網——每日最新資訊28at.com

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

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

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

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

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

stage('DeployGray'){            steps {                echo "部署灰度環境"                 script {                    def GraysMode = input (                        message: '確定要灰度驗證嗎?',                        parameters:[                            choice(name: 'operation', choices: ['基于權重灰度','基于請求頭灰度','跳過'])                        ],                        ok: '確定',                        submitter: 'ops',                        submitterParameter: 'APPROVER'                    )                    if (GraysMode['operation'] == '基于權重灰度'){                        def WeightMode = input (                        message: '請輸入權重比例!',                        parameters:[                            string(name: 'workload_weight',defaultValue: '',description: ''),                            string(name: 'grayload_weight',defaultValue: '',description: '')                        ],                        ok: '確定',                        submitter: 'ops',                        submitterParameter: 'APPROVER'                    )                    sh """                     echo $pipeline_dir                     echo "打印編排文件詳細信息"                     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 ${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 "打印編排文件詳細信息"                     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                    """                    }                    // 默認模式為yes,如果跳過為no                    if (GraysMode['operation'] == '跳過'){                        GrayEnable='no'                    }                }            }

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

stage('DeployProd'){            steps {                echo "部署生產環境"                 script {                    def userInput = input (                        message: '確定要發布到生產環境嗎?',                        parameters:[                            choice(name: '操作', choices: ['發布', '跳過'])                        ],                        ok: '確定',                        submitter: 'ops',                        submitterParameter: 'APPROVER'                    )                    if (userInput['操作'] == '發布'){                        echo "發布"                        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 "開始部署生產環境"                        echo "打印編排文件詳細信息"                        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 "不發布"                    }                }            }            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用戶權限管理新技巧:打造安全高效的流水線!

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

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

下一篇: 很強!五個 python 高級技巧

標簽:
  • 熱門焦點
  • 影音體驗是真的強 簡單聊聊iQOO Pad

    大公司的好處就是產品線豐富,非常細分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發布會上看到了iQOO的首款平板產品iQOO Pad。雖
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機發布會上,除了兩款手機新品之外,Redmi還帶來了兩款TWS真無線藍牙耳機產品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • 轎車從天而降電動車主被撞身亡 超速搶道所致:現場視頻讓網友吵翻

    近日,上海青浦區法院判決轎車從天而降電動車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當時男子駕駛轎車在上海某路段行駛,前車忽然轉彎提速超車,
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 三星顯示已開始為AR設備研發硅基LED微顯示屏

    7月18日消息,據外媒報道,隨著蘋果首款頭顯產品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top