安全性

安全对 Flynn 来说尤其重要。

Flynn 是一个用于控制端到端的集成平台,因而我们可以内置了许多最佳实践,用户可直接使用,无需用户自定义实现这些较难的技术。

当然,我们觉得稳定性是第一位的。我们将很快完成一个足够稳定的 Flynn 版本,它能满足大多数用户对生产环境需求。详细请看 stability 页面。当该项工作告一段落,我们将会为 Flynn 添加更多安全方面功能。

在那之前,我们认为解释一下Flynn 当前具备哪些安全特性是非常必要的。

分发的安全性

我们提供的所有的二进制文件,包括flynn-hostflynn命令行工具,以及 container 镜像,都是通过The Update Framework 保障安全的分发。TUF 包含了一个鲁棒的、基于角色的签名系统,它可以防御许多攻击,包括降级攻击、CDN compromise 等。除了 TUF 之外,只能通过 HTTPS 来访问所需内容。

我们的 Vagrant 虚拟机镜像通过 HTTPS 提供服务,但并没有被署名,所以 Vagrant 不支持签名。

内部通信

Flynn 使用多个端口来进行内部通信,当前对于内部通信是没有认证的,所以绝对不可以将这些访问的端口暴露在外网上。主机必须配置防火墙,使得唯有 80 和 443 端口 Flynn 的端口可以访问,以防止被攻击。访问这些内部的 Flynn 端口需要 root 权限,所以请务必小心。

可以在 443 端口上通过 HTTPS 来访问控制器和仪表板,并生成一个 bearer token 进行认证。TLS 用于通信的证书在安装时就被生成了。证书的 hash 值作为命令行配置的一部分,以防止中间人攻击。

CA 证书仪表盘

在 Flynn 安装过程中,CA 证书会自动安装,并同时完成控制器和仪表板显示证书签署。CA 证书对应的私钥将立马被弃用,以防被滥用。CA 证书的作用是,让浏览器知道如何去处理多个用自己签署的证书连接到服务器的链接。CA 证书是仪表板提供给浏览器的,用来允许浏览器和仪表板、控制器之间的TLS通信加密。如果使用了 Flynn 安装器,CA 证书会在安装时通过 SSH 安全传输,防止在访问仪表板时被攻击。如果没有使用安装器,证书可能会在第一次访问仪表板时通过不安全的链接进行传输,请不要在不安全的链接上安装证书。未来我们将使用Let's Encrypt,这样既无需生成证书,也不用安装证书。

应用

在 Flynn 中运行的应用并非全是沙盒,这些应用可通过访问内部 Flynn API 来获取服务器的 root 权限,所以请不要在 Flynn 环境下运行不可信的代码。

Flynn 中可能存在一些其他未知的安全漏洞。若你的服务包含敏感数据,暂时我们不推荐通过 Flynn 托管。

未来几个月内将推出重要的更新,来提高 Flynn 的基础安全性。在那之后,可用性会被限制。未来 Flynn 将打造业内领先的安全策略。

报告问题

如果在使用 Flynn 过程中发现了一个没有被明确确认的安全漏洞,请立即security@flynn.io">邮件告知我们。

如果你可以使用 PGP,将你的邮件用下面的公钥加密:

  1. pub 4096R/6913B2EF 2015-11-04 [expires: 2016-11-03]
  2. Key fingerprint = C334 DB91 6744 BD00 B347 0A86 0281 AD75 6913 B2EF
  3. uid Flynn Security Team <security@flynn.io>
  4. sub 4096R/38F74B09 2015-11-04 [expires: 2016-11-03]
  5. -----BEGIN PGP PUBLIC KEY BLOCK-----
  6. mQINBFY6QowBEADgRoqA7rwYc54npNAweozzylx4jIIFf6JcwxaCzc+zeHw9iAk+
  7. PFMw7IdkWIA8A+2/sa11vPufCAa7OVzsk/YOYaZUPWv0khm1fO/CR0dmWoGB56jH
  8. IWPUjtJpcEXp5j76qNp6U9VRcP/pfE5kTpwa8dFvOmtiwF1mDMAiMYedlz1eYfNW
  9. hZbwJ6etMTd8SaAU/AP0rM+tDoRXtli6LOpkxRT3Bi4ykTwnhY1e2WYEvKPGqBvL
  10. 4YvxP1X+ZON7mgxbRwX01KyrhkLdks6nXmXltEewTy9uutz2oLiFWQyY+JC5C4PO
  11. pLgTiaY+bXwow5SF52Ztc1bETdfYUbAfLWQ3bONjniGRGNSm3zT5mnc4x4eUXAf1
  12. 9XGvX7N3mWXzA+fHZF+WSuyDYGK8n8TsT9/rOaZryNSFWtjLxwXft8I4V5Sfm2hF
  13. ljc/50fHAf39jAwTZwF8aAFqFSsNt5o0TWMt5fbYaOZA53zBEdOGT0+6HyoK7wRE
  14. wdcRDLSHkoCSkzr8jTMs29ln/Dk79xFOyte3Pp5jDlm5biLeoF6dYYCUs/P2QiCE
  15. j1ZSfvIdRd1Nl7OdtNblMSVboiJfGf0UTnqc6CWz3WnNNuL6D1GiyZgY0eenbzik
  16. pVIqq+/EdarIu5RgP25ONkaZf8IVMI6Xwhx6HQTDlQCPpY39IQUS7StUywARAQAB
  17. tCdGbHlubiBTZWN1cml0eSBUZWFtIDxzZWN1cml0eUBmbHlubi5pbz6JAj4EEwEC
  18. ACgFAlY6QowCGwMFCQHhM4AGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEAKB
  19. rXVpE7LvRUEQAK4cX9lTSABXvlA9Ur7EUy5QnUOXgLjA3g125P4daLWQLjKGIjYF
  20. Qengl+T/HED8QSiNF6au4Om3KbYutSqOEe3eyi1krnIILhLXp2p7eNVSmWic8Img
  21. J2GDCfDxNxzaHKiuIy9cRmVLD9+nQBF7c3IHj5cvXHSROWKq4wgJUljuOs9s9VDN
  22. GjCExWeeG5pF5J9HnmS1F+N21BK8E2KTzouRhVmJ8fpaxJy7Ofr9N6WyxbZCwwwD
  23. QMamo1mczo0p/+cUeQik92D2tz1Pn+RiF/Ooq16RKsls8N8poR9ffQ0rkE2hksjB
  24. 3+OIaZ3Q0vKUBowUu6pmPSfkorq29zy45V3nku9Ly8K0B/t1Xl/wUQaY/OBm9Iiy
  25. eJ6p2NBc8U8Xcl33Xe7t5r9nCVrhzEDoggcbCo6YjcGQJwzgwhgbwtO0HDIcax3z
  26. y2j7pfmABwJifmyMAD6UxAqftXcBxKXT9+jxa6skqFAid2zceqn1V/M83tQ28gLa
  27. /IssVSJ0DbjPpoPOSjFV+b0lKzre12EcsTVvDsm9u0jUSH+XVJA5o8cZFU8WCAs7
  28. h9x6yhrE+n3AX3ZP8zUSv8mSH1Eh1EAolsnqBBA3qiC+b6l/KcVbYjo3bv2jw0IZ
  29. 5xSG8hOdUShKpKkPc4CiY5Z5c75TibA4+UaAvDELXUsOkU0eBoD/fbUJuQINBFY6
  30. QowBEADMK3ES9lEjDyhV43WB8oNizzA0fbf3k3giyOneAZz7VgP8BPy8xvI5zkjU
  31. tjDJfCKc5Yk+3pDJRgi+7u2O0KdF7VVJ+YnHRfPib4YB033fbhDTa15qa7Mr3uDr
  32. EyTyUzZ0tVuDAnvSz8To6Z2HWOynBFB7N31plhN/xubMCfqH20l6ZtgKszdZ6pVR
  33. xD0BZ47JhD9JcZF1Xa1tgASAQ286XCVkOwxRnSGmnNCc+HjAqepbKMbJgtTCOLRK
  34. Zx1I9jIikAakwxbzXtv7gFzYWrsGWPEKEtKCdmhD2V6Zvl5nwBkr7nS/JQQgzWXM
  35. /ltcG3Np0qJRkXA2ZSlhh21bOgfjHvfijRuxAPWlJv21qzN0nzBpLXtu3XntnzFP
  36. BR1u7HW5hfGXIbRUbmkiJ/5j29QpbXn+beYmGUH0ukvGpAqIyHDIgiTqLYMErePZ
  37. aY97tx/XTVsBKJmnGnsYUe2TIdIEpcKe0JSijOC8AVPBjm3A8Mna8169q3s7ARxC
  38. NfpBOelExfdxWcBprTUkqwK13vX3X2FgOHXH3LPqMzwuuh9QMtr0tvyG+g/8KsAP
  39. 1+va1Zi4gBUxB2PeTdxkSbue4apctKEOsEhbMjvBKWQ/Ip3hSUAvFiUwBK0IsP1k
  40. sv8T1vIpYBInHtkUUSDgKwn2X7KQ/khTKtwmNjHFGbnyCOdUVwARAQABiQIlBBgB
  41. AgAPBQJWOkKMAhsMBQkB4TOAAAoJEAKBrXVpE7Lvlq8P/2RwDa47yQO31eP0cYyf
  42. l8SdJFkTvPx8hy6IOgm5p1xOOGXHkVWioG8R8KQMNPLAdu7g6hTmboE69XNuLox/
  43. 9T9YyTN5TkUxh/9uJmupahN/hbS9aomZsznIBIan6I6QzSk17UNXm8rY5hIKB9qb
  44. 4JLKZq8tSMTGhUAyKbqeLbClvRM/LTFrq+J+FKMOrBdW5BjfdNTYLf7w1yAVLThI
  45. TDsu6epdKpV2kG1/cp0QJQssbePxe6xvZ9PeWI5axGN0A74pIKWSn5K5tP9DpDf1
  46. FfJcx9obzIzOAffO6ID6mn1Rc20Yu3NSW0cvB3TOv97jdviSoq3eP1v7pgqfJtc2
  47. ZWXa9hIlIYv6bx0ukkSYuERHoi3SVFZMiVeOTddOPKAKy2vWzQRt9S/mIDh32PmD
  48. oNvPfTIdRGivYzKqTzIkjB73Vq4Jn2BflQoyAoEu8BzI9/oYATke2TpYmcsYgh9r
  49. 03zbex98lF/rIhySMuJDp20/FHsJUMZMnfxv/NgN/A2wotSA5/idvrBUwVkdNsKU
  50. MpVfhFfhxSvkMXofbcSSAsRX1+r8S3BAQrnqV2fDzBnJqmAQ8CUTYQheZ8iMDdzJ
  51. 47wRWTZBgqCCedNOBN6TSmQGiwGhZKVKxMfIORp+1FgLEl/2FiJVoi3736SagKGG
  52. aOmKnAD2rS4Lu4+Ez2pTZFz9
  53. =yreI
  54. -----END PGP PUBLIC KEY BLOCK-----

原文: http://doc.oschina.net/flynn?t=54104