日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

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

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

什么是RBAC

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

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

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

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

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

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

需求說明

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

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

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

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

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

配置權限

配置角色

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

分配權限

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

權限驗證

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

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

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

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

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

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

配置Pipeline權限

需求說明

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

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

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

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

權限配置

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

DeployDev階段(修改submitter配置):oG928資訊網——每日最新資訊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配置):oG928資訊網——每日最新資訊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配置):oG928資訊網——每日最新資訊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配置):oG928資訊網——每日最新資訊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.www897cc.com/showinfo-26-90502-0.htmlJenkins Pipeline用戶權限管理新技巧:打造安全高效的流水線!

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

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

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

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業務來說可快速實現自動化的上手工作。Selenium IDEKat
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 品牌洞察丨服務本地,美團直播成效幾何?

    來源:17PR7月11日,美團App首頁推薦位出現“美團直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團旅行直播間、美團買菜直播間等均已上線,同時
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創始人俞敏洪帶隊的“7天甘肅行”直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,“7
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 華為HarmonyOS 4升級計劃公布:首批34款機型今日開啟公測

    8月4日消息,今天下午華為正式發布了HarmonyOS 4系統,在更流暢的前提下,還帶來了不少新功能,UI設計也有變化,會讓手機煥然一新。華為宣布,首批機型將會在
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • 由于成本持續增加,筆記本產品價格預計將明顯上漲

    根據知情人士透露,由于材料、物流等成本持續增加,筆記本產品價格預計將在2021年下半年有明顯上漲。進入6月下旬以來,全球半導體芯片缺貨情況加劇,顯卡、處理器
Top 主站蜘蛛池模板: 若尔盖县| 米易县| 外汇| 卓尼县| 和顺县| 邯郸县| 古浪县| 麦盖提县| 衡南县| 邳州市| 青海省| 云和县| 偏关县| 竹山县| 周至县| 乌鲁木齐县| 宜宾县| 锦屏县| 达孜县| 晋州市| 城步| 城固县| 台江县| 镇远县| 临桂县| 长寿区| 云阳县| 恩平市| 亳州市| 遵化市| 仁布县| 吉首市| 龙井市| 拜泉县| 中方县| 阿克| 安多县| 杨浦区| 富民县| 永登县| 行唐县|