安全

概要

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

加密

Circleci使用HTTPS或SSH在我们的服务中使用HTTPS或SSH,包括从浏览器到我们的服务应用程序,从服务应用程序到您的建筑物舰队,从我们的建筑机队到您的源码控制系统以及所有其他沟通点。简而言之,除非您在您的构建中有代码,否则您的代码或数据都没有传播或来自Circleci而不被加密,以便您自行决定。操作员也可以选择绕过SSL配置或不使用TLS来与基础系统进行通信。

Circleci的性质是我们的软件可以访问您的代码以及代码交互的任何数据。Circleci上的所有作业都在沙箱中运行(特别是码头容器或截止局部VM),这些驻扎在所有其他构建中独立,无法从互联网或您自己的网络访问。构建代理通过Git通过SSH提出代码。您的特定测试套件或作业配置可能会呼叫网络内的外部服务或集成点,并且此类呼叫的响应将被拉入您的作业并由您的代码以自行决定使用。作业完成后,将作业的容器被销毁并重建。所有环境变量都使用hashicorp金库。环境变量使用AES256-GCM96加密,并且不可用来Circleci员工。

沙箱

使用Circleci,您可以控制分配的资源以运行代码的构建。这将通过我们的Builder框的实例完成设置您的构建将运行的容器。通过他们的性质,构建容器将拉下源代码并运行任何测试和部署脚本是代码库或配置的一部分。容器是沙箱,每个都是为一个构建而被创建和销毁的(或一片并行构建),它们无法从外部自行使用。Circleci服务提供了直接SSH直接到特定构建容器的能力。执行此操作时,用户将完全访问在构建容器中运行的任何文件或进程,因此仅提供对Circleci的访问,仅适用于您的源代码。

一体化

一些不同的外部服务和技术集成点触摸Circleci。以下列表枚举这些集成点。

  • 网套我们用推动客户端库用于服务器和浏览器之间的WebSocket通信,但是安装我们使用名为SLANGER的内部服务器,因此PUSHER服务器无法访问CIRCLECI和源控制系统的实例。例如,这是我们如何动态更新构建列表,或显示它发生的构建线路的输出。我们通过Web套接字服务器发送构建状态和构建状态和线路(除非您已配置安装在没有SSL的情况下使用SSL的相同证书完成),因此它在运输过程中加密。

  • 复制我们用复制要管理Circleci的安装向导,许可键,系统审核日志,软件更新以及其他维护和系统任务。Circleci的实例与复制服务器通信,以发送许可证密钥信息和版本信息以检查更新。复制无权访问您的数据或其他系统,并且我们不会将任何数据发送到复制。

  • 源控制系统要使用Circleci,您将与Github Enterprise或Github.com的实例设置直接连接。金宝博娱乐官网网址设置Circleci时,您授权系统查看您的私人存储库。您可以通过GitHub应用程序设置页面随时撤消此权限,并从存储库管理页面中删除Circle的Deploy键和服务挂钩。虽然Circleci允许您选择性地构建您的项目,但GitHub的权限模型是“全部或全无” - Circleci获取访问所有用户的存储库或者都不是的权限。您的Circleci实例将访问这些Git存储库中托管的任何内容,并将为各种事件创建Webhook(例如:当按下代码时,添加用户时等)将调用回Circleci,触发一个或更多Git命令将在构建舰队中向下提交代码。

  • 依赖关系和源缓存大多数Circleci客户在其私有云基础架构(Amazon VPC等)内使用S3或同等基于云的存储来存储其依赖关系和源缓存。这些存储服务器受到在此类服务上存储的正常安全参数的影响,在大多数情况下,我们的客户可以防止任何外部访问权限。

  • 伪影通常使用S3或类似的托管存储器进行伪影。假设根据您的正常政策确保这些资源,它们与您在那里存储的任何其他数据一样安全。

  • 支持捆绑我们用蜂窝处理和分析从发送给我们的支持捆绑包中的分布式跟踪数据。迹线包含关于实例中的活动的元数据,但没有包含秘密,源代码或构建输出。数据最多保留60天。

审核日志

审核日志功能仅适用于您在服务器或私有云上安装的Circleci。

Circleci在系统中记录重要事件以进行审计和取证分析目的。审核日志与跟踪性能和网络指标的系统日志分开。

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

注意:在某些情况下,内部机械可以在审核日志中生成重复事件。该ID下载日志的字段是每个事件的唯一,可用于识别重复条目。

审核日志事件

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

  • context.Create.

  • context.delete.

  • context.env_var.delete.

  • context.env_var.store.

  • project.env_var.create.

  • project.env_var.delete.

  • project.settings.update.

  • 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和和类型并且可能包含名称

  • 目标:实体实例用于此事件,例如项目,ORG,帐户或构建。此数据是一个json blob,它将始终包含ID和和类型并且可能包含名称

  • 有效载荷:特定于特定于动制信息的JSON斑驳。有效载荷的架构预计将为所有具有相同事件的事件一致行动

  • 发生了:当在UTC中发生的事件以ISO-8601格式表示时,最多九位的分数精度,例如'2017-12-21T13:50:54.474z'。

  • 元数据:一组可以附加到任何事件的键/值对。所有键和值都是字符串。这可用于向某些类型的事件添加其他信息。

  • ID:唯一标识此事件的UUID。这旨在允许事件的使用者识别重复交付。

  • 版本:事件模式的版本。目前,该值将始终为1.以后的版本可能具有不同的值以适应架构更改。

  • 范围:如果目标由Circleci域模型中的帐户拥有,则应使用帐户名和ID填充帐户字段。此数据是一个json blob,它将始终包含ID类型并且可能包含名称

  • 成功:一个标志,用于指示操作是否成功。

  • 请求:如果通过外部请求触发此事件,则将填充此数据,可用于连接源自同一外部请求的事件。格式是包含的JSON BLOBID(Circleci分配给此请求的请求ID),IP地址(IPv4中的原始IP地址点点向注释请求,例如。127.0.0.1),和client_trace_id.(如果在原始请求的“X-Client-Trace-ID”HTTP标题中,则客户端跟踪ID标头(如果存在)。

清单以安全地使用Circleci作为客户

如果您入门Circleci,您可以要求您的团队考虑安全最佳实践用户CircleCI:

  • 最大限度地减少构建需求和定期旋转秘密的秘密数量(私钥/环境变量)。

  • 在您的组织中定期旋转秘密是重要的,特别是随着团队成员来并进入。

  • 定期旋转秘密意味着您的秘密仅在一定时间内存处,有助于减少可能的风险,如果键受到损害。

  • 确保你的秘密使用的范围有限 - 仅具有足够的权限,以便您的构建目的。考虑仔细裁定您在Circleci之外使用的其他平台的角色和许可系统;例如,在使用AWS或GitHub上的IAM权限等内容时机用户特征。

  • 有时,用户滥用某些工具可能会意外打印到STDOUT的秘密,这将降落在您的日志中。请注意:

  • 跑步env.要么printenv.它将将所有环境变量打印到stdout。

  • 字面上打印了Codebase或Shell中的秘密回声

  • 打印错误秘密的程序或调试工具。

  • 请咨询VCS提供商的组织权限(如果您在组织中)并尝试遵循最小特权原则

  • 使用与团队使用的受限上下文共享环境变量与选择安全组。阅读背景文档以了解更多信息。

  • 确保您审核谁可以访问组织中的SSH密钥。

  • 确保您的团队正在使用VCS使用双因素身份验证(2FA)(Github 2足总Bitbucket.)。如果用户的GitHub或Bitbucket帐户受到损害,则邪恶的演员可以推送代码或潜在窃取秘密。

  • 如果您的项目是开源和公共的,请注意您是否要共享环境变量。在Circleci上,您可以更改项目的设置以控制您的环境变量是否可以传递给你的回购的分叉版本。这是未启用默认。您可以了解有关这些设置的更多信息和开放源安全性开源项目文件