Gitlab 中几种不同的认证机制(Access Tokens,SSH Keys,Deploy Tokens,Deploy Keys)

news2024/12/24 8:43:54

前言

公司主要使用 Go 语言做项目,有一些 Gitlab 私有仓库需要引用,在做 CI 时,要自行配置权限以获取代码。

最近发现各个项目组在做 CI 遇到仓库权限问题时的解决方式不尽相同,有用 Project Token 的,有用 Deploy Keys 的。

了解一下。

使用

原理就两种,一是 SSH 方式拉取代码,二是 http 方式。

SSH 方式

本机生成 SSH Key,将公钥从 Gitlab 页面添加进去,注意选择下过期时间即可。

如何生成 Key?打开终端输入:

# ED25519
ssh-keygen -t ed25519 -C "<comment>"
# 2048-bit RSA
ssh-keygen -t rsa -b 2048 -C "<comment>"

任选其一即可,照着提示,一步步输入回车,就可以看到在你指定的文件夹下生成了两个文件,一个公钥一个私钥文件,例:

ed25519 # 私钥
ed25519.pub # 公钥

克隆仓库,使用 SSH 链接即可

git clone ssh://git@gitlab.com/<namespace>/<project_name>.git

http 方式

打开 Gitlab 网页,新增 Token,注意选择 Token 权限范围,只是拉取代码,read_repository 即可。生成后的 Token 值要自己保存好,因为只能看到一次。

clone 仓库

git clone https://<name>:<token>@gitlab.com/<namespace>/<project_name>.git

每次都要输入 name, token 比较麻烦,可以全局配置 git

git config --global url."https://<name>:<token>@gitlab.com".insteadOf "https://gitlab.com"

不同权限介绍

Gitlab 上有几个入口

  1. Personal Access Tokens
  2. Personal SSH Keys
  3. Group Access Tokens
  4. Group Deploy Tokens
  5. Repository Access Tokens
  6. Repository Deploy Tokens
  7. Repository Deploy Keys

1. Personal Access Tokens

用户个人的 Token,创建时可以选择多种权限,一般建议 token 的权限给小点,够用就行,例如:需要拉取代码,只给 read_repository 权限即可。

入口: User Settings -> Access Tokens

请添加图片描述

2. Personal SSH Keys

SSH 密钥主要用于身份验证,以允许用户通过 SSH 协议访问 Git 仓库。不同于个人访问 TokenSSH 密钥并没有直接的权限范围概念,而是通过用户的 GitLab 账户权限和项目的访问级别来控制访问。

SSH 密钥本身的作用是加密通信的一部分,用来证明你是谁,而具体的仓库访问权限则由 GitLab 的用户和项目设置来决定。

入口: User Settings -> SSH Keys

请添加图片描述

3. Group Access Tokens

同个人的 Token 的使用方式一致,只是其作用域只在当前组内生效。

入口: Group Settings -> Access Tokens

请添加图片描述

4. Group Deploy Tokens

看名字就知道是专门为部署使用的,个人理解跟 Group Access Tokens 差不太多,只是其权限范围少了很多,只有 read_repository, read_registry, write_registry 权限,不能访问 Gitlab API 来执行特定操作。

入口: Group Settings -> Repository -> Deploy Tokens

请添加图片描述

5. Repository Access Tokens

Token 使用方式一致,只是权限范围更小了,其作用域只在当项目内生效。

入口: Project Settings -> Access Tokens

请添加图片描述

6. Repository Deploy Tokens

Group Deploy Tokens 相似,只是权限范围更小了,其作用域只在当项目内生效。

入口: Project Settings -> Repository -> Deploy Tokens

请添加图片描述

7. Repository Deploy Keys

SSH 使用方式一致。部署机器上生成 SSH 密钥对,新增 Deploy Key,将公钥放入即可。

入口: Project Settings -> Repository -> Deploy Keys

请添加图片描述

个人理解:Deploy Key 就相当于一台机器,项目若是允许机器获取代码,在本项目中把它添加进来即可。

Deploy Keys 一个比较特殊的点:在该项目中生成的 Deploy Key,可以被其他项目添加,即使不在组内也可以。

请添加图片描述

CI Docker 镜像中 Go 拉取私有仓库的代码

主要是配置拉取代码的权限,两种方式:

  1. 使用 token
RUN git config --global url."https://$name:$token@gitlab.com".insteadOf "https://gitlab.com"

RUN go env -w GOPRIVATE=gitlab.com && go mod tidy
  1. 使用 ssh key
# ssh key 安全考虑,一般放在环境变量中传入
RUN mkdir ~/.ssh && echo $id_rsa > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
# 处理错误:Host key verification failed.
RUN echo "Host *\n\tStrictHostKeyChecking no\n\tCheckHostIP no\n" > ~/.ssh/config

RUN git config --global url."ssh://git@gitlab.com".insteadOf "https://gitlab.com"

RUN go env -w GOPRIVATE=gitlab.com && go mod tidy

其他

GPG(GNU Privacy Guard) Keys 密钥主要用于签名和验证 Git 提交,而不是直接用于拉取代码。GPG 密钥的主要作用是确保提交的完整性和来源的真实性,而不是作为访问控制机制。

总结

本篇介绍了 Gitlab 的几种认证方式,其入口虽然不同,但原理基本一致,就两种方式:SSHToken

使用 Token 时需注意权限最小化(尽量为 Token 分配最小必要的权限,避免不必要的安全风险)。

不管使用哪种方式,定期审查很重要,需要定期审查 令牌/Key 的使用情况,确保它们仍然符合需求,并及时撤销不再需要的令牌。

最后简单介绍了一下在做 CIDocker 镜像中如何用 Go 拉取私有仓库的代码,环境配好即可。需要注意 TokenSSH Key 不要以明文方式输入,通常使用环境变量。

参考

  • gitlab官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2130105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】OpenCV—Augmented Reality Using Aruco Markers

文章目录 1、任务描述2、Aruco Markers3、代码实现4、更多例子展示5、涉及到的库cv2.findHomography 6、参考 1、任务描述 借助 Aruco Markers&#xff0c;替换墙面上画面中的内容 2、Aruco Markers OpenCV 中的 aruco 模块共有 25 个预定义的标记字典。字典中的所有标记包含…

新代机床采集数据

新代集團1995年成立於台灣新竹,事業版圖遍布全球,以台灣為中心向外發展,據點橫跨歐洲、美洲、亞洲三大洲。新代長期深耕於機床控制器的軟體及硬體技術研發,專注於運動控制領域,目前已成為亞太市場中深具影響力的控制器領導品牌之一。主營產品包括:機床數控系統、伺服驅動…

Java虚拟机 - 高级篇

一、GraalVM 1. 什么是GraalVM 2. GraalVM的两种运行模式 &#xff08;1&#xff09;JIT即时编译模式 &#xff08;2&#xff09;AOT提前编译模式 3. 应用场景 4. 参数优化和故障诊断 二、新一代的GC 1. 垃圾回收器的技术演进 2. Shenandoah GC 测试代码&#xff1a; /** C…

Ubuntu 20.04/22.04无法连接网络(网络图标丢失、找不到网卡)的解决方案

问题复述&#xff1a; Ubuntu 20.04无法连接到网络&#xff0c;网络连接图标丢失&#xff0c;网络设置中无网络设置选项。 解决方案 对于Ubuntu 20.04而言&#xff1a;逐条执行 sudo service network-manager stopsudo rm /var/lib/NetworkManager/NetworkManager.statesudo…

《深度学习》OpenCV轮廓检测 模版匹配 解析及实现

目录 一、模型匹配 1、什么是模型匹配 2、步骤 1&#xff09;提取模型的特征 2&#xff09;在图像中查找特征点 3&#xff09;进行特征匹配 4&#xff09;模型匹配 3、参数及用法 1、用法 2、参数 1&#xff09;image&#xff1a;待搜索对象 2&#xff09;templ&am…

利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(四)

简介 随着生成式人工智能的兴起&#xff0c;传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求&#xff0c;今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight&#xff0c;利用生成式AI的能力来加速业务决策&#xff0c;从而提高业务生产力。…

科技之光,照亮未来之路“2024南京国际人工智能展会”

全球科技产业的版图正以前所未有的速度重构&#xff0c;而位于中国东部沿海经济带的江浙沪地区&#xff0c;作为科技创新与产业升级的高地&#xff0c;始终站在这一浪潮的最前沿。2024年&#xff0c;这一区域的科技盛宴——“2024南京人工智能展会”即将在南京国际博览中心盛大…

基础的八股

JS this 全局&#xff1a;this指向window 函数&#xff1a;this指向window 对象&#xff1a;this指向调用它的 get、post的区别 1、写的地方不同&#xff1a;get在地址栏里 地址栏有多长就只能写多少、post在请求体里 没有上限 2、关于回退和刷新&#xff1a;get回退和刷新没问…

TCP、UDP、HTTPS、HTTP

前言 OSI七层网络 名称解释协议应用层定义了各种应用协议的数据规范 HTTP、HTTPS、SSL FTP、DNS TFTP、SMTP 表示层不同系统之间通信会话层断点续传传输层 一个电脑有许多端口&#xff0c;根据端口找到发送方与接收方 确保数据包完整性 TCP、UDP网络层 ARP协议&#xff1a;通过…

shopify主题布局layout

一、基本概念 Layout是Shopify主题中的基础结构&#xff0c;它决定了页面的整体框架和布局方式。通过Layout&#xff0c;可以统一管理和控制页面上的公共元素&#xff0c;如页眉&#xff08;Header&#xff09;、页脚&#xff08;Footer&#xff09;等&#xff0c;确保这些元素…

闯关leetcode——20. Valid Parentheses

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/valid-parentheses/description/ 内容 Given a string s containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid. An input st…

批量采集电商商品详情数据接口(上货and数据分析价格库存监控等)

——在成长的路上&#xff0c;我们都是同行者。这篇关于电商API接口的文章&#xff0c;希望能帮助到您。期待与您继续分享更多API接口的知识&#xff0c;请记得关注Anzexi58哦&#xff01; 批量采集电商商品详情数据涉及到多个方面&#xff0c;包括商品的上货、价格监控、库存监…

机器学习--神经网络

神经网络 计算 神经网络非常简单&#xff0c;举个例子就理解了&#xff08;最后一层的那个写错了&#xff0c;应该是 a 1 ( 3 ) a^{(3)}_1 a1(3)​&#xff09;&#xff1a; n o t a t i o n notation notation&#xff1a; a j ( i ) a^{(i)}_j aj(i)​ 表示第 i i i 层的…

SprinBoot+Vue财务管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化&#xff0c;使其看起来更清晰&#xff0c;同时保持尺寸不变&#xff0c;通常涉及到图像处理技术如锐化、降噪、对比度增强…

百度地图SDK Android版开发 11 覆盖物示例 4 线

百度地图SDK Android版开发 11 覆盖物示例 4 线 前言界面布局MapPolyline类常量成员变量初始值创建覆盖物移除覆盖物设置属性加载地图和释放地图 MapPolylineActivity类控件响应事件 运行效果图 前言 文本通过创建多个不同线宽的折线和大地曲线&#xff0c;介绍Polyline的使用…

numpy中的比较运算

目录 比较运算符 比较运算符 有两种情况会普遍使用比较运算符&#xff0c;一个是从数组中查询满足条件的元素&#xff0c;另一个是根据判断的结果执行不同的操作。 示例入下&#xff1a; import numpy as np arr7 np.array([[1,2,10],[10,8,3],[7,6,5]]) arr8 np.array([[2,…

整流器制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

整流器制造行业作为制造业的重要组成部分&#xff0c;也在积极探索数字化转型的新路径。整流器&#xff0c;作为电力电子领域的关键元件&#xff0c;广泛应用于通信、工业控制、新能源等多个领域&#xff0c;其制造过程的智能化升级不仅关乎产品性能的提升&#xff0c;更是推动…

opencv使用videocapture打开视频时,依赖opencv_ffmpeg***.dll,默认必须放到执行目录,自定义目录需要重新编译opencv库

1. 找到modules下opencv_highgui模块的cap_ffmpeg.cpp 2. 找到加载opencv_ffmpeg的接口, 修改接口内opencv_ffmpeg的路径即可.

YOLOv10优改系列一:YOLOv10融合C2f_Ghost网络,让YoloV10实现性能的均衡

&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5;神经网络专栏改进完整目录&#xff1a;点击 &#x1f497; 只需订阅一个专栏即可享用所有网络改进内容&#xff0c;每周定时更新 文章内容&#x…