安全声明

Travis CI GmbH (Travis) 关于 Travis CI 软件的安全声明

在涉及您的源代码时,安全是我们最关心的问题。在 Travis CI,我们确保我们的基础设施得到保护和安全,以便您的最有价值的资产得到安全保护,免受未经授权的访问。

系统安全 #

您的代码,取决于您使用的平台或语言运行时,将在运行于以下位置的虚拟化服务器上运行:

  • 美国弗吉尼亚州阿什本的 Amazon EC2 数据中心。
  • 美国佐治亚州亚特兰大的 MacStadium 数据中心。
  • 美国南卡罗来纳州伯克利县和爱荷华州卡унсил布拉夫斯的 Google Compute Engine 数据中心。

您的测试在隔离的环境中运行。它们运行所在的虚拟化服务器在每次运行后都会被销毁,并且始终从快照映像恢复,该映像不了解任何其他源代码,只了解创建构建环境所需的代码。

到 Travis CI 及其内部的所有流量都使用 SSL/TLS 进行保护和加密。

我们保留随时更改 Travis CI 底层基础设施的权利。

使用的服务和其中存储的数据 #

我们使用以下服务来运行 Travis CI:

  • Amazon Web Services EC2(安全策略)和 Heroku(安全策略)来运行构成 Travis CI 服务的所有组件,并存储构建日志、OAuth 令牌和用户数据等数据。
  • RedisGreen 用于存储非关键数据,以便实时跟踪通过我们系统的构建请求,以及用于功能切换。
  • CloudAMQP 用于接收和发布有关构建和测试日志的信息。访问完全经过身份验证并使用 SSL 加密。

我们以匿名形式将与 Travis 相关的数据存储在以下服务中:

  • Librato Metrics 用于收集有关系统运行时数据,以便我们能够确保服务的可用性和可靠性。
  • Papertrail 用于存储 Travis 所有组件的日志,以便我们调查问题。日志可能包含使用的用户和存储库的名称,但会删除任何类型的敏感信息。
  • Google Analytics 用于跟踪对我们网站的访问。

我们保留随时更改用于运行 Travis CI 的服务的权利。

我们对上述服务的使用受其各自的安全预防措施及其可用性的约束。

信用卡数据 #

Travis 不会存储或接收任何类型的信用卡数据,除了允许我们与我们的支付提供商 Stripe(一家获得 PCI 1 级认证的支付提供商)创建支付的参考令牌之外。有关更多详细信息,请参阅其安全策略:https://stripe.com/help/security。

Travis 如何访问我的 GitHub 帐户? #

当您注册 Travis 时,我们会从 GitHub 收集 OAuth 令牌,这使我们能够代表您请求 GitHub API 的数据。此 OAuth 令牌安全地存储在我们的数据库中,并受到保护,防止未经授权的访问。

该令牌绑定到 GitHub 上设置的权限,因此请确保您已阅读其有关访问控制和 API 访问权限的文档。

我们在以下情况下使用此令牌,并且仅在以下所述情况下使用,不会在任何其他情况下使用。

  • 同步您有权访问的存储库。我们使用此信息在您的个人资料页面上向您显示可用的存储库,以便您可以在 Travis 上启用或禁用构建它们。
  • 在您配置为在 Travis 上运行的存储库上配置服务钩子。
  • 在 GitHub 上生成和存储 SSH 密钥,用于在构建机器上访问您的源代码。我们安全地存储此密钥,并在每次从 GitHub 收到构建通知时使用它来访问我们机器上的源代码。
  • 更新提交的构建状态。
  • 从您的 GitHub 存储库访问项目配置文件 .travis.yml。

在任何情况下,Travis CI 都不会写入或修改您的 GitHub 存储库中的源代码或 Git 元数据,仅出于自动执行测试或任何其他请求的构建命令的目的,以只读方式访问存储库中的源代码。

但是,为了允许我们自动指定 SSH 密钥、服务钩子配置和您的 GitHub 存储库上的提交状态,我们必须请求对它们的写入访问权限。

我们仅在您明确请求且仅在与您明确同意的情况下手动访问您的代码,并且仅用于调试和帮助解决构建问题。

Travis 如何访问我的 Bitbucket 帐户? #

当您注册 Travis 时,我们会从 Bitbucket 收集 OAuth 令牌,这使我们能够代表您请求 Bitbucket API 的数据。此 OAuth 令牌安全地存储在我们的数据库中,并受到保护,防止未经授权的访问。

该令牌绑定到 Bitbucket 上设置的权限,因此请确保您已阅读其有关访问控制和 API 访问权限的文档。

我们在以下情况下使用此令牌,并且仅在以下所述情况下使用,不会在任何其他情况下使用。

  • 同步您有权访问的存储库和团队。我们使用此信息在您的个人资料页面上向您显示可用的存储库,以便您可以在 Travis 上启用或禁用构建它们。
  • 在您配置为在 Travis 上运行的存储库上配置服务钩子。
  • 在 Bitbucket 上生成和存储 SSH 密钥,用于在构建机器上访问您的源代码。我们安全地存储此密钥,并在每次从 Bitbucket 收到构建通知时使用它来访问我们机器上的源代码。
  • 更新提交的构建状态。
  • 从您的 Bitbucket 存储库访问项目配置文件 .travis.yml。

在任何情况下,Travis CI 都不会写入或修改您的 Bitbucket 存储库中的源代码或 Git 元数据,仅出于自动执行测试或任何其他请求的构建命令的目的,以只读方式访问存储库中的源代码。

但是,为了允许我们自动指定 SSH 密钥、服务钩子配置和您的 Bitbucket 存储库上的提交状态,我们必须请求对它们的写入访问权限。

我们仅在您明确请求且仅在与您明确同意的情况下手动访问您的代码,并且仅用于调试和帮助解决构建问题。

Travis 如何访问我的 GitLab 帐户? #

当您注册 Travis 时,我们会从 GitLab 收集 OAuth 令牌,这使我们能够代表您请求 GitLab API 的数据。此 OAuth 令牌安全地存储在我们的数据库中,并受到保护,防止未经授权的访问。

该令牌绑定到 GitLab 上设置的权限,因此请确保您已阅读其有关访问控制和 API 访问权限的文档。

我们在以下情况下使用此令牌,并且仅在以下所述情况下使用,不会在任何其他情况下使用。

  • 同步您有权访问的存储库和团队。我们使用此信息在您的个人资料页面上向您显示可用的存储库,以便您可以在 Travis 上启用或禁用构建它们。
  • 在您配置为在 Travis 上运行的存储库上配置服务钩子。
  • 在 GitLab 上生成和存储 SSH 密钥,用于在构建机器上访问您的源代码。我们安全地存储此密钥,并在每次从 GitLab 收到构建通知时使用它来访问我们机器上的源代码。
  • 更新提交的构建状态。
  • 从您的 GitLab 存储库访问项目配置文件 .travis.yml。

在任何情况下,Travis CI 都不会写入或修改您的 GitLab 存储库中的源代码或 Git 元数据,仅出于自动执行测试或任何其他请求的构建命令的目的,以只读方式访问存储库中的源代码。

但是,为了允许我们自动指定 SSH 密钥、服务钩子配置和您的 GitLab 存储库上的提交状态,我们必须请求对它们的写入访问权限。

我们仅在您明确请求且仅在与您明确同意的情况下手动访问您的代码,并且仅用于调试和帮助解决构建问题。

Travis 如何访问我的 Assembla 账户? #

当您注册 Travis 时,我们会从 Assembla 收集一个 OAuth 令牌,这允许我们代表您请求 Assembla API 的数据。此 OAuth 令牌安全地存储在我们的数据库中,并受到保护,防止未经授权的访问。

该令牌与 Assembla 上设置的权限绑定,因此请确保您已阅读其关于访问控制和 API 访问权限的文档。

我们在以下情况下使用此令牌,并且仅在以下所述情况下使用,不会在任何其他情况下使用。

  • 为了同步您有权访问的存储库和空间。我们使用此信息在您的个人资料页面上显示可用的存储库,以便您可以启用或禁用在 Travis 上构建它们。
  • 在您配置为在 Travis 上运行的存储库上配置服务钩子。
  • 在 Assembla 上生成和存储 SSH 密钥,用于访问构建机器上的源代码。我们安全地存储此密钥,并在每次从 Assembla 获取构建通知以访问我们机器上的源代码时使用它。
  • 更新提交的构建状态。
  • 访问 Assembla 存储库中的项目配置文件 .travis.yml

在任何情况下,Travis CI 都不会写入或修改 Assembla 存储库中的源代码或 Git 元数据,仅出于自动执行测试或任何其他请求的构建命令的目的,以只读方式访问存储库中的源代码。

但是,为了让我们能够自动指定 SSH 密钥、服务钩子配置和 Assembla 存储库上的提交状态,我们必须请求对其进行写入访问权限。

我们仅在您明确请求且仅在与您明确同意的情况下手动访问您的代码,并且仅用于调试和帮助解决构建问题。

Travis 如何访问我的源代码? #

除了读取您的 .travis.yml 以确定最佳构建策略之外,我们直接访问您的存储库的唯一时间是在我们的构建机器之一上检出源代码时。

源代码仅通过 SSH 访问,使用 SSH 密钥进行身份验证。在 Travis 上设置的每个项目都会获得自己的 SSH 密钥,当我们将它添加到您的项目时,您会收到一封电子邮件通知。此步骤发生在您首次在 Travis CI 上设置项目时。对于每个分支存储库,对于每个拉取请求到目标存储库,Travis CI 检查并添加来自目标存储库的 SSH 密钥。

我们从 GitHub 存储哪些数据? #

当您将代码推送到 GitHub 用于设置为在 Travis 上运行的存储库时,我们会收到推送通知。对于发送给我们的拉取请求也是如此。

这些通知不包含任何敏感信息,除了提交引用、更改的文件名称以及谁编写和提交了更改。

我们存储这些构建通知用于调试目的,仅用于调试目的。

我们从 Bitbucket 存储哪些数据? #

当您将代码推送到 Bitbucket 用于设置为在 Travis 上运行的存储库时,我们会收到推送通知。对于发送给我们的拉取请求也是如此。

这些通知不包含任何敏感信息,除了提交引用、更改的文件名称以及谁编写和提交了更改。

我们存储这些构建通知用于调试目的,仅用于调试目的。

我们存储用户 OAuth 令牌以调用 Bitbucket API。

我们存储活动用户电子邮件以发送构建通知电子邮件。

我们从 GitLab 存储哪些数据? #

当您将代码推送到 GitLab 用于设置为在 Travis 上运行的存储库时,我们会收到推送通知。对于发送给我们的拉取请求也是如此。

这些通知不包含任何敏感信息,除了提交引用、更改的文件名称以及谁编写和提交了更改。

我们存储这些构建通知用于调试目的,仅用于调试目的。

我们存储用户 OAuth 令牌以调用 GitLab API。

我们存储活动用户电子邮件以发送构建通知电子邮件。

我们从 Assembla 存储哪些数据? #

当您将代码推送到 Assembla 用于设置为在 Travis 上运行的存储库时,我们会收到推送通知。对于发送给我们的拉取请求也是如此。

这些通知不包含任何敏感信息,除了提交引用、更改的文件名称以及谁编写和提交了更改。

我们存储这些构建通知用于调试目的,仅用于调试目的。

我们存储用户 OAuth 令牌以调用 Assembla API。

我们存储活动用户电子邮件以发送构建通知电子邮件。

我对安全性和 Travis 有更多疑问 #

给我们发送电子邮件,我们会立即回复您!

版本 1.2,柏林,2016 年 6 月 7 日:移除 Blue Box

版本 1.1,柏林,2013 年 7 月 2 日:将 Hetzner 替换为 Blue Box

版本 1.0,柏林,2013 年 1 月 3 日