安全特性

本文概述了安全功能内置到CircleCI及相关集成。

概观

安全是我们的CircleCI头等大事,我们是积极的,我们立即采取行动,在安全问题上。报告安全问题security@www.drag240sx.com使用我们的安全团队的GPG密钥加密消息(ID:0x4013DDA7,指纹:3CD2 A48F 2071 61C0 B9B7 1AE2 6170 15B8 4013 DDA7)。

加密

CircleCI使用HTTPS或SSH对所有网络进出我们的服务,包括从浏览器到我们的服务的应用程序,从服务应用到你的建设者舰队,从我们的制造商车队,你的源代码控制系统和通信的所有其他点。总之,没有你的代码或数据的传播,或从CircleCI没有被加密,除非你有你的代码建立在你的判断认为这样做。运营商还可以选择去解决我们的SSL配置或不使用TLS与底层系统进行通信。

CircleCI的本质是,我们的软件访问您的代码和任何数据与代码交互。在CircleCI所有工作在独自站在所有其他构建,而不是从互联网或从您自己的网络访问的沙箱(具体来讲,多克尔容器或临时VM)上运行。生成代理通过混帐通过SSH拉码。您的特定测试套件或作业配置可在网络中调出到外部服务或集成点,并从这样的调用响应将被拉入你的工作和你的自由裁量权使用你的代码。工作完成后,运行作业的容器被摧毁和重建。所有的环境变量使用加密Hashicorp库。环境变量使用AES256-GCM96加密,对CircleCI员工不可用。

沙箱

随着CircleCI您可以控制分配给运行构建代码的资源。这将通过建立在你的构建将运行容器的营造商箱实例来完成。根据其性质,构建集装箱将拉低源代码并运行任何测试和部署脚本代码库或配置的一部分。容器被沙盒,每个创建和销毁只有一个版本(或一并行构建的一个片),并且它们不能从外面自己。该CircleCI服务提供的能力,SSH直接向特定构建容器。在这样做时,用户将拥有对任何文件或程序的完全访问权限在于构建容器内运行,所以可以访问CircleCI只有那些还相信你的源代码。

集成

一些不同的外部服务和技术集成点涉及到CircleCI。下面的列表列举了这些集成点。

  • 网络套接字我们用推杆式服务器和浏览器之间的WebSocket通信客户端库,但对于安装我们使用称为slanger,所以推服务器有你CircleCI的情况下,也没有你的源代码控制系统没有访问内部服务器。这就是我们如何,例如,更新动态创建列表或因为它发生时表现出构建线,由线的输出。我们发送构建状态,并通过网络套接字服务器(除非您已配置安装运行无SSL使用SSL上相同的证书做)你构建输出线,所以在传输过程中加密。

  • 复制对于CircleCI服务器的专用设备,复制用于管理安装向导,许可密钥,系统审计日志,软件更新等维护和系统任务CircleCI。你CircleCI Server实例与复制服务器进行通信,以发送许可证密钥信息和版本信息来检查更新。复制无法访问您的数据或其他系统,并CircleCI不发送任何数据来复制。

  • 源代码控制系统要使用CircleCI,您需要直接连接您的GitHub企业、GitHub.com或其他源代码控制系统的实例。金宝博娱乐官网网址当您设置CircleCI时,您授权系统签出您的私有存储库。您可以在任何时候通过您的GitHub应用程序设置页面和从您的存储库管理页面移除Circle的部署键和服务挂钩来撤销此权限。CircleCI允许您有选择地构建项目,而GitHub的权限模型是“全有或全无”——CircleCI获得访问用户所有存储库的权限,或者不访问。CircleCI实例将访问任何托管在git存储库,将创建各种事件的人(例如:当代码被推,当用户添加,等等),将调用回CircleCI,触发一个或多个git命令,将拉下代码来构建舰队。

  • 依赖和源缓存大多数CircleCI客户使用S3或等效的基于云的存储他们的私有云基础架构(亚马逊VPC等)内存储的依赖和源缓存。这些存储服务器都受到存储于这些服务,任何正常的安全参数,在大多数情况下,这意味着我们的客户防止任何外部访问。

  • 文物为了帮助防止其他从观察工件时,访问您的浏览器本地存储版本,HTML和XHTML页面都托管在自己的项目特定子域* .circle-artifacts.com。非HTML的文物通常是(302 FOUND)重定向到S3 URL,以允许最高的下载速度。因为这些工件类型驻留在单个S3域上,所以工件可能访问HTML和XHTML页面上的浏览器本地存储,因此您应该避免为这些url在浏览器中输入敏感数据。

  • iOS版本如果你付出运行iOS的基础上CircleCI硬件源代码将被下载到构建盒上我们的MacOS舰队在那里将进行编译和任何测试将会运行。您可以控制类似我们的主要构建集装箱,iOS的构建,我们运行的沙盒,使得它们不能被访问。

  • 搬运工人如果您是使用泊坞的图像,是指公众泊坞窗的Seccomp(安全计算模式)简档用于Docker引擎。CircleCI将下列内容附加到Docker默认值的Seccomp简介:

[{ “评论”: “允许创建用户的命名空间”, “名”: “克隆”, “setns”, “停止共享”], “行动”: “SCMP_ACT_ALLOW”, “ARGS”:[], “包括”:{}, “不包括”:{}}]

审计日志

CircleCI服务器的客户可以从UI访问的审计日志功能。云客户可以联系CircleCI支持以请求审核日志。注意:只有组织管理员的用户可以自行审核日志请求。

CircleCI记录在系统中审核和取证分析目的的重要事件。审计日志是从系统日志separarate该曲目的性能和网络指标。

完整的审计日志可以从审计日志页面的应用程序作为一个CSV文件的管理部分中下载。嵌套数据审计日志字段包含JSON斑点。

注意:在某些情况下,机器内部可能会产生在审计日志中的重复事件。该ID下载日志的领域是每个事件唯一的,可以用来识别重复的条目。

审核日志事件

以下是与记录的系统事件。看到行动在下面的字段部分的定义和格式。

  • context.create
  • context.delete
  • context.env_var.delete
  • context.env_var.store
  • project.env_var.create
  • project.env_var.delete
  • project.settings.update
  • project.ssh_key.create
  • project.ssh_key.delete
  • user.create
  • user.logged_in
  • user.logged_out
  • workflow.job.approve
  • workflow.job.finish
  • workflow.job.scheduled
  • workflow.job.start

审计日志字段

  • 行动:采取动作创建事件。格式是用点分隔,与在第一次行动的实体和最后采取的行动ASCII小写单词。在某些情况下,实体是嵌套的,例如,workflow.job.start
  • 演员:谁执行此事件的男主角。在大多数情况下,这将是一个CircleCI用户。这个数据是JSON BLOB,将始终包含ID并与类型并且可能包含名称
  • 目标:为此事件执行操作的实体实例,例如项目、组织、帐户或构建。这个数据是JSON BLOB,将始终包含ID并与类型并且可能包含名称
  • 有效载荷:一个特定于动作的JSON blob。负载的模式应该对具有相同内容的所有事件保持一致行动
  • occurred_at:当事件发生在UTC在ISO-8601格式表示的高达九位数的分数精确度,例如“2017-12-21T13:50:54.474Z”。
  • 元数据:可以附加到任何事件的一组键/值对。所有的键和值都是字符串。这可用于向某些类型的事件添加附加信息。
  • id:UUID的唯一标识此事件。这是为了让事件的消费者识别重复的交付。
  • 版:事件架构的版本。目前,该值始终为1以后的版本可能有不同的价值观,以适应模式更改。
  • 范围:如果目标是通过在CircleCI域模型的帐户所拥有,该帐户领域应与帐户名和ID进行填充。这个数据是JSON BLOB,将始终包含ID类型并且可能包含名称
  • 成功:一个标志,表示如果操作成功。
  • 请求:如果该事件是由外部请求触发这个数据将被填充,并可以用来从相同的外部请求发起连接的事件。格式是含有JSON斑点ID(由CircleCI分配给此请求的请求ID),IP地址(在IPv4中的原始IP地址的点号发出请求作出,例如。127.0.0.1),和client_trace_id(客户端跟踪ID头(如果存在)来自原始请求的“X-Client-Trace-Id”HTTP头)。

清单使用CircleCI安全地为客户

如果您刚开始使用CircleCI,那么您可以要求您的团队考虑一些安全性最佳实践用户CircleCI的:

  • 最小化的秘密(私有密钥/环境变量)你的构建需求和旋转秘密定期的数量。
    • 在你的组织中定期轮换秘密是很重要的,特别是当团队成员来来去去的时候。
    • 旋转秘密经常意味着你的秘密是只有激活一定的时间,从而减少可能的风险,如果密钥被泄露。
    • 确保你的秘密使用的范围有限 - 只有足够的权限为您构建的目的。仔细考虑裁决的使用CircleCI之外的其他平台的角色和权限系统;例如,使用的东西如AWS IAM权限,或GitHub的时机用户特性。
  • 有时候,某些工具用户误操作可能会意外地打印秘密到stdout,这将在日志中降落。请注意:
    • 运行ENVprintenv这将打印所有的环境变量到标准输出。
    • 从字面上印在你的代码库,或与你的shell的秘密回声
    • 打印错误机密的程序或调试工具。
  • 为您的组织咨询VCS提供商的权限(如果您在一个组织中),并尝试遵循原则最小特权
  • 在团队中使用受限制的上下文,以与选择的安全组共享环境变量。阅读的上下文通过文档了解更多信息。
  • 确保您审核谁有权访问SSH密钥在您的组织。
  • 确保您的团队对VCS使用双因素认证(2FA) (Github上2FABitbucket都)。如果用户的GitHub的或到位桶帐户被盗穷凶极恶的演员可能会推代码或潜在的窃取机密。
  • 如果你的项目是开源的,公共的,请记下你是否想分享你的环境变量。在CircleCI,您可以更改项目的设置来控制你的环境变量是否可以传递给你的回购的分叉版本。这是未启用默认。你可以阅读更多有关这些设置,并在开源安全我们开放源码文件

也可以看看

GitHub上和到位桶整合