已经聊了三期和安全相关的话题 涉及安全审计和洞察、源码安全检测、数据备份和恢复 今天我们来聊聊访问控制与数据可信。
互联网这个虚拟的世界 无数的人们在其中交互沟通 创造着海量的数据和信息。在这个世界中 自然也存在居心叵测的恶意用户 希望通过信息攫取利益。因此 服务提供者通常会采取一系列访问控制措施 对不受信任的访问者执行隔离。
那么什么是访问控制
访问控制 就是依据授权 对提出的资源访问请求进行控制 防止未授权的访问 避免未经授权的使用、泄露、销毁和篡改。
防控住访问权限之后 企业还需要关心的是数据本身的安全性 包括数据提交的可信性、提交的合规性和质量 避免风险入库 影响线上安全。
链接针对数据可信 云效 Codeup 提供了代码 GPG 签名 拒绝未签名的提交 支持代码属主验证 约束提交记录属主。
在质量管控上 云效 Codeup 精细化读写权限管控 支持代码提交卡点机制 保障提交质量。
接下来我们一起看看云效 Codeup 的这些安全防护功能如何使用。
访问控制 —— IP白名单
访问控制首先是要让危险进不来 Codeup 支持对仓库的访问 IP 进行限制 包括页面访问限制和部署密钥访问限制。
页面访问限制 包括 Codeup 的全部页面访问、部署密钥访问、代码克隆、下载、提交、合并等行为一致受限 部署密钥访问 完备考虑了部署密钥由于人员管理不善被盗用的风险场景 禁止白名单之外的 IP 使用部署密钥访问企业代码库 加固代码库安全
访问控制 —— 代码不落盘
现代企业常常需要雇佣外包团队支持开发工作 但是由于外包流动性强 规范性相对较弱 企业通常希望能够限制部分人员对代码的下载权限 但是不下载代码怎么进行开发工作呢 云效 Codeup 为这类场景提供了解决方案。
代码不落盘即数据不落本地磁盘 保证代码不被意外或恶意带走泄露 支持设置哪些角色允许下载代码到本地 针对无法下载代码的开发人员允许其使用云端 WebIDE 进行开发工作。
数据可信 —— GPG 签名
GPG 签名可以杜绝提交伪造事件。Git 虽然是密码级安全的 但并不是万无一失的。当用户密码泄露 或者有人想恶意伪造他人的提交 就有可能冒名信任的人 向你的代码仓库提交恶意代码。你可以使用GPG 在本地签署你的提交记录 Commit 或者标签 Tag Codeup 将对这些签名做验证 来确保提交记录或者标签来自受信任的来源。?
数据可信 —— 提交属主检查
在开始使用 git 进行版本管理之前 我们都知道需要先进行用户配置。
git config --global user.name 你的名字 git config --global user.email 你的邮箱
也许你每天都在用 但是清楚提交记录的作者 Author 与提交者 Committer 的区别吗
Git 本身允许重写历史 或代表其他人提交代码。通常 我们在使用 git log 查看历史提交记录时 所展示的便是作者 Author。我们常用 Author 来作为代码统计的归属依据。从这个角度上来说 作者 Author 与代码贡献者直接挂钩。因此 在统计代码贡献等场景下需要规范提交代码属主和服务端当前登录用户的对应关系。
在执行 git commit 时 可以通过 --author 来指定这个提交记录的贡献者是谁。在开源社区也有这样的例子 虽然我并没有使用你的代码 但我使用了你的创意 仍然以你作为作者 以示对原创的尊重。
因此简单地理解 Author 是第一作者 Committer 是生成 Commit 的人。Codeup 支持针对 Author 和 Committer 对当前登录用户已验证的云效主邮箱做检查 若邮箱信息无法匹配 可以警告或禁止其推送 以保证代码贡献属主的准确性 避免由于无法匹配用户导致的贡献量计算失真。
数据安全 —— 提交权限限制
对企业来说 提交到远端库通常是一个比较严肃的过程 为了规范提交格式和限制权限 Codeup 支持了企业和仓库级别的提交规则设置。
首先在提交推送规则上 支持
提交注释检查 Commit Message 必须按照规定的正则格式描述 匹配时才允许推送 提交邮箱检查 提交人 Committer 的邮箱信息需要匹配正则表达式才允许推送 禁止强制推送 代码属主检查 基于提交中的作者和提交者邮箱和云效侧用户绑定主邮箱是否匹配做校验 可以设置警告和禁止推送两个安全级别
另外 在提交权限控制上 通过保护分支设置支持
推送规则 可选择允许哪类角色直接推送代码 可控制不允许用户直接对保护分支进行提交 而必须通过合并请求进行自动化测试和人工审核后合入提交 保证合入重要分支的内容都是可信安全的 合并规则 可设置哪类角色有权限合并代码
在数据安全最严苛的场景下 如果要求每次提交都要经过自动化检查和人工评审 可以设置不允许任何人直接提交代码 所有提交都必须通过合并请求评审后合入。
但这种情况可能会产生非常多的临时开发分支 不太容易管理 别担心 云效 Codeup 对基于主干的研发模式有完备的支持 基于创新的 Agit-Flow 阿里巴巴集中式 Git 工作流 不用新建分支 让创建代码评审就像执行 git push 命令一样的简单。开发者不用切换工具 将原来需要几分钟才能完成的代码评审创建过程 缩短到几秒钟 是不是很酷
云效团队研发的 Agit-Flow 是一套开放的协议 目前已被 Git 官方社区合入 感兴趣的话立即去试试吧 http://t.tb.cn/36VCKdTVaMGVfKFMLFcyuo
更多能力
除了以上丰富的安全特性外 还有更多实用的安全能力等你发现 例如
支持钉钉集成统一的成员权限安全管理 例如钉钉组织成员同步、钉钉组织成员离职后云效侧权限的自动清理等 企业级代码加密即将发布 保证存储层代码数据高度加密 在未授权密钥的情况下 存储内容任何人包括云效服务提供方也无法破译 加固用户数据存储安全
点击了解更多云效