如同世界正在经历的疫情,由于网络攻击的大幅增加,许多公司也遭受着“网络疫情”,保障代码安全迫在眉睫。在之前的文章中我们了解了安全使用 GitHub 的21条最佳实践。阅读本文,将带您了解在代码发布到 GitHub 之前如何管理用户权限。

1. 了解您的 GitHub 账户类型

GitHub 有三个帐户类型,其访问控制量不等。

  • 个人帐户:此帐户仅允许一个所有者添加项目协作者。

  • 组织帐户:此帐户类型根据团队结构控制访问权限。它允许跨多个团队成员进行更详细的访问。

  • 企业帐户:此帐户类型包括可跨多个组织的强大访问控制。为了提高安全性,它提供了一个本地托管选项。此选项可确保 GitHub 存储库在没有安全的企业网络虚拟专用网络访问下无法在互联网上进行访问。

了解您的开发团队拥有哪种类型的帐户,以便您可以充分利用所有可用的访问权限。

2. 集中访问管理

将访问权限和权限集中给管理员可以简化外部协作者的管理,还可以降低 GitHub 访问成本。

GitHub 服务器访问

GitHub 为开发提供以下类型的访问权限。根据开发人员角色设置访问级别。

  • 阅读:使开发人员可以查看和 Clone 代码库,同时不能对代码进行更改。

  • 分类:使开发人员能够在没有写入访问权限的情况下管理拉取请求。

  • 写入:使开发人员能够同时将新代码提交到存储库。

  • 维护:无需授予访问敏感操作权限,使项目经理能够监督代码库。

  • 管理:使开发人员能够完全控制代码库,包括保障安全性和删除代码库。

避免根据需求设置访问权限。虽然在短期内很方便,但随着项目的发展和时间的推移,项目中的角色和职位可能会发生变化。为了最大化访问安全,请指定一个人来专门处理和授予项目所需的最低权限。

组织管理访问

如果您拥有组织所有者帐户,则可以将新用户添加到存储库并控制其访问级别。您需要确定组织的基本权限配置文件。当您将新成员添加到 GitHub 存储库时,将自动应用基本权限。默认情况下,为了获得最大的安全性,请确保基本权限仅有读取访问权限。仅在需要时授予更广泛的访问权限。

3. 保护您的代码库

根据2019年发布的一项研究,对公共 GitHub 代码库的全面扫描发现该平台上共有超过57万个敏感数据实例。这些实例包括 API 密钥、私有密钥、OAuth ID、AWS 访问密钥 ID 和各种访问 token。这些类型暴露的主要风险包括经济损失、隐私泄露、数据完整性受损以及信息滥用。尝试执行以下做法来保护您的代码库。

限制代码库可见性

配置不当的服务器或访问权限配置不当的开发人员可能会不小心更改代码库的可见性。要避免这种情况并确保最大安全性,请将代码库可见性更改限制为组织的所有者帐户或项目的管理员级别。

实施单点登录

具有 GitHub Enterprise 的组织可以使用单节点登录(Single Sign-On, SSO)。借助 SSO,组织可以使用自己的帐户和访问权限规则,而无需开发人员使用 GitHub 帐户。SSO 可限制潜在的人为错误和密码重用问题。

禁用分叉(fork)

通过有限的只读访问权限,开发人员可以使用 fork 轻松复制整个代码库。代码仓库最初可能是私有的,但 fork 可以快速将所有内容暴露到公共空间中。风险随着每次 Fork 的发生呈指数级增加,通过暴露的敏感数据创建树状的安全漏洞链。为避免这些情况,请禁用 Fork 以获得最大的安全性。

4. 验证访问权限

若要确保 GitHub 帐户和数据的安全,请要求和管理身份验证访问。

双重身份验证

双重身份验证(2FA)通过在对登录进行身份验证时需要多个凭据来保障安全。为了获得最大的安全性,GitHub 建议使用带有使用时间限制的一次性密码(TOTP)服务,例如 LastPass 身份验证器或 Microsoft 身份验证器。

SSH 身份验证

用户设置安全系数较低的密码或在多个服务之间共享密码,从而产生安全风险。为避免此类风险,请使用 SSH 私有密钥/公有密钥对服务器上的操作进行身份验证。为了提高安全性,GitHub 支持自动 SSH 密钥过期和轮换,即使 SSH 密钥泄露,访问窗口也会受到限制。

个人访问令牌

对于较小的项目,请使用个人访问令牌。个人访问令牌的运作原理类似于 SSH 密钥,但不提供自动轮换,GitHub 帐户所有者需要手动设置。

5. 将访问限制在预批准 IP 地址列表

将 GitHub 服务器的访问锁定在预先批准的静态 IP 地址列表中,这种方法是最简单、最直接的安全访问方式之一。有了IP限制,黑客在试图访问你的 GitHub 代码仓库之前,必须识别并渗透到预先批准的名单上的计算机。即使你的登录凭证被泄露,这对他们来说也是一个重大障碍。

6. 及时撤销权限

为了保持最高的安全标准,需要细化管理访问权限,并在项目开发期间定期对其进行评估。当员工离开项目或企业时,请及时修改或撤销其访问权限。此方法遵循最小特权原则,即授予执行特定任务所需的权限。这样做将确保每个有权访问代码的人都只在其权限范围内工作。

7. 密钥管理解决方案

GitHub 代码库面临的最大安全风险之一是开发人员的粗心大意,而不是恶意组织入侵基础架构。为最大化代码库的安全性,可以考虑密钥管理解决方案。这些解决方案会自动阻止敏感信息到达 GitHub 代码库,并在敏感数据已泄露的情况下清理代码库。 多个 GitHub 工具可处理不同的安全模式,例如:

  • git rebase,用于删除意外提交到代码中的已知敏感信息的命令行工具。

  • truffleHog,是一款功能强大的数据挖掘工具,该工具可以帮助广大研究人员轻松从目标 Git 库中搜索出搜索高熵字符串和敏感数据(如 API 密钥,令牌和访问凭据),可以根据这些信息来提升自己代码库的安全性。

  • Git-Secret,用来加密 git 项目中的文件,防止 git 项目传到网上出现泄密的情况。

密钥管理解决方案需要直接集成到 CI/CD 流水线中,还必须使用 AI 和机器学习算法来进行自动识别和阻止,然后再将其推送到 GitHub 存储库。

若要防止机密首先暴露(即便是意外泄露),请实施 “Secret Vault 机密保险库” 安全策略。Secret Vault 是一个独立的系统,用于存储敏感信息。而 Vault 是一种用于保护高度敏感数据的工具,同时提供统一的访问接口。有了 Secret Vault,可以执行更严格的访问控制和审核跟踪,并能够轻松检测漏洞和违规行为。

8. 制定安全计划保护您的代码

在制定安全计划时,请注意以下几点:

  • 在组织内强制实施安全标准,并将所有敏感信息存储在 Secret Vault 或安全密钥存储中。

  • 对组织中使用的敏感信息进行分类。了解组织可能出现漏洞的地方,无论是数据库密码、API 密钥、token 还是管理面板的 URL。

  • 最重要的是,要意识到人为错误通常是安全漏洞的根源。处理安全漏洞的成本之高可能给企业或组织带来“灭顶之灾”。

企业可以尝试使用这些扫描工具,并将此工具集成到 CI/CD 流水线中,来有效阻止敏感信息提交到 GitHub 代码库。

8个方法管理 GitHub 用户权限的更多相关文章

  1. linux 用户管理,用户权限管理,用户组管理

    linux 用户管理,用户权限管理,用户组管理 一:ls -l 命令 解释 第个d表示是目录,如果是文件是-,如果是连接是l 第2到4个 rwx 表示创建者的操作权限 r 读,w 写,x 执行 第5到 ...

  2. Linux运维六:用户管理及用户权限设置

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  3. RabbitMQ :常用命令与图形管理及用户权限

    RabbitMQ 安装 安装 RabbitMQ 前要先安装 Erlang,可以去 Erlang 官网下载,接着去 RabbitMQ 官网下载安装包,解压缩即可 Mac 用户可以通过 HomeBrew ...

  4. Linux_CentOS用户管理 和 用户权限管理 chmod、ACL、 visudo

    一.用户管理 Linux 系统同时可以支持多个用户,每个用户对自己的文件设备有特殊的权利,能够保 证用户之间互不干扰.就像手机开了助手一样,同时登陆多个 qq 账号,当硬件配置非常高 时,每个用户还可 ...

  5. 详解管理root用户权限的sudo服务程序

    在你想要使用超级权限临时运行一条命令时,sudo 命令非常方便,但是当它不能如你期望的工作时,你也会遇到一些麻烦.比如说你想在某些日志文件结尾添加一些重要的信息,你可能会尝试这样做: $ echo & ...

  6. “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第五篇(用户管理之“用户权限分配”)

    一.在做权限分配之前,首先先了解“ZTree”这个插件,我的这个系统没有用Jquery-EasyUI的Tree.用的是”ZTree“朋友们可以试试,也很强大.点击下载ZTree插件.       1. ...

  7. Linux用户组管理及用户权限4

    权限管理:    ls -l        rwxrwxrwx:            左三位:定义user(owner)的权限            中三位:定义group的权限           ...

  8. Linux用户组管理及用户权限3

    用户.组管理命令 安全上下文:        进程以其发起者的身份运行:            进程对文件的访问权限,取决于发此进程的用户的权限 系统用户:为了能够让那些后台进程或服务类进程以非管理员 ...

  9. Linux用户组管理及用户权限2

    用户.组和权限管理    Multi-tasks,Multi-Users,多任务,多用户的计算机    每个使用者:        用户标识.密码:            Authentication ...

  10. Linux用户组管理及用户权限1

    bash的基础特性:    globbing:文件名通配(整体文件名匹配,而非部分)        匹配模式:元字符            *:匹配任意长度的任意字符                例 ...

随机推荐

  1. mysql 表级锁之一lock table

    1.lock table t1 read: 1.1.当前线程: 读/写当前表/其他表: unlock tables; lock table t1 read; select * from t1; INS ...

  2. VUE首屏加载优化 性能优化分析插件安装分享

    优化背景: 项目上线后 第一次进入项目要等待接近50s才能进入页面.一开始觉得是电脑配置问题或者网络问题.F12后发现加载资源过慢 其中一个chunk-***js文件有10m 加载了45s .我们使用 ...

  3. 手撕Vue-Router-添加全局$router属性

    前言 经过上一篇文章的介绍,完成了初始化路由相关信息的内容,接下来我们需要将路由信息挂载到Vue实例上,这样我们就可以在Vue实例中使用路由信息了. 简而言之就是给每一个Vue实例添加一个$route ...

  4. 【Android Studio】 SQLite 数据库 增删改查

    今日目标:参照标题 实现效果: 实现过程: 1.创建实现页面 页面设计思路: 最外层垂直线性布局.内部使用三个线性布局.后两个用的水平排版,用来显示数值. 实例化四个Button,两个EditText ...

  5. C#中HttpWebQuest发起HTTP请求,如何设置才能达到最大并发和性能

    在C#中使用HttpWebRequest发起HTTP请求时,达到最大并发和性能可以从以下几个方面改进: 1. ServicePointManager设置 ServicePointManager 类是一 ...

  6. JavaWeb开发-HTML基础学习

    1.HTML的基本语法 HTML是什么?:HTML是一种超文本标记语言,负责网页的结构,设计页面的元素内容等 超文本:超越文本限制,除了文本信息,还可以定义图片,音频,视频等 标记语言:由标签构成的语 ...

  7. Go 获取 IP 地址

    1. 获取本地IP地址 使用 net 包可以获取本地机器的 IP 地址.以下是一个获取本地 IP 地址的简单示例: package main import ( "fmt" &quo ...

  8. GHOST 系统安装教程 轻松一键,系统恢复到最佳状态

    硬盘安装系统 安装前准备 1.保证能够正常进入系统: 2.下载Ghost系统镜像文件: 3.下载镜像安装器: 安装步骤 1.下载Ghost系统镜像"Win7_x64_Pure_5.07.GH ...

  9. RabbitMQ入门到进阶

    1.MQ简介 MQ 全称为 Message Queue,是在消息的传输过程中保存消息的容器.多用于分布式系统 之间进行通信. 2.为什么要用 MQ 1.流量消峰 没使用MQ 使用了MQ 2.应用解耦 ...

  10. 【最佳实践】京东小程序-LBS业务场景的性能提升

    一.前言 1.1 京东LBS门详业务介绍 京东LBS门详目前已经支持了仓网.药急送.天选.小时达POP多种业务,并且具备了多端的能力,一套代码可以在京东app.健康app.微信小程序中运行,一定程度上 ...