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

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

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

來源: 責(zé)編: 時間:2024-05-24 08:46:06 170觀看
導(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ò)展。MaD28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

需求說明

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

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

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

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

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

配置權(quán)限

配置角色

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

分配權(quán)限

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

權(quán)限驗(yàn)證

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

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

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

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

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

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

配置Pipeline權(quán)限

需求說明

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

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

權(quán)限配置:MaD28資訊網(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)限:MaD28資訊網(wǎng)——每日最新資訊28at.com

DeployDev階段(修改submitter配置):MaD28資訊網(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配置):MaD28資訊網(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配置):MaD28資訊網(wǎng)——每日最新資訊28at.com

stage('DeployGray'){            steps {                echo "部署灰度環(huán)境"                 script {                    def GraysMode = input (                        message: '確定要灰度驗(yàn)證嗎?',                        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配置):MaD28資訊網(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)
  • 石頭智能洗地機(jī)A10 Plus體驗(yàn):雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機(jī)A10 Plus。從這個產(chǎn)品名上就不難看出,這次石頭推出的并不是常見的掃地機(jī)器
  • 掘力計(jì)劃第 20 期:Flutter 混合開發(fā)的混亂之治

    在掘力計(jì)劃系列活動第20場,《Flutter 開發(fā)實(shí)戰(zhàn)詳解》作者,掘金優(yōu)秀作者,Github GSY 系列目負(fù)責(zé)人戀貓的小郭分享了Flutter 混合開發(fā)的混亂之治。Flutter 基于自研的 Skia 引擎
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學(xué)弟,最近學(xué)習(xí)的怎么樣啊 了不起學(xué)弟:最近學(xué)習(xí)的還不錯,每天都在學(xué)習(xí),每天都在進(jìn)步! 了不起:那你最近學(xué)習(xí)的什么呢? 了不起學(xué)弟:最近在學(xué)習(xí)C
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報告。ESG是“環(huán)境保
  • 半導(dǎo)體需求下滑 三星電子DS業(yè)務(wù)部門今年?duì)I業(yè)虧損預(yù)計(jì)超10萬億韓元

    7月17日消息,據(jù)外媒報道,去年下半年開始的半導(dǎo)體需求下滑,影響到了三星電子、SK海力士、英特爾等諸多廠商,營收明顯下滑,部分廠商甚至出現(xiàn)了虧損。作為
  • 英特爾Xe-HP項(xiàng)目終止,將專注Xe-HPC/HPG系列顯卡

    據(jù)10 月 31 日消息報道,英特爾高級副總裁兼加速計(jì)算系統(tǒng)和圖形事業(yè)部總經(jīng)理 表示,Xe-HP“ Arctic Sound” 系列服務(wù)器 GPU 已經(jīng)應(yīng)用于 oneAPI devcloud 云服
  • DRAM存儲器10月價格下跌,NAND閃存本月價格與上月持平

    10月30日,據(jù)韓國媒體消息,自今年年初以來一直在上漲的 DRAM 存儲器的交易價格僅在本月就下跌了近 10%,此次是全年首次降價,而NAND 閃存本月價格與上月持平。市
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內(nèi)容審核等。此前,T
Top