关于 Code With Me 安全性的常见问题
Code With Me 是一款功能强大的工具,可让您协作处理您的代码。 具备此能力也意味着您有责任确保代码和访问级别的安全。 以下是在 Code With Me 会话中授予对您的计算机的访问权限时可能出现的问题。
有哪些数据会通过 JetBrains 的服务器传输,以及如何传输?
您的项目数据经由 JetBrains 的服务器传输,且为端到端加密。 仅当主机和访客核对双方的安全代码一致时,端到端加密才是安全的。 否则,端到端加密可能遭受中间人攻击(MitM)。
由于需要让 JetBrains 在主机与访客之间建立会话,本地 IP 地址、项目名称和用户名会以未加密的形式共享。 发起新的 Code With Me 会话时,主机通过 TLS 1.2+ 与 JetBrains 的服务器通信。
Code With Me 通过 JetBrains 创建的 开源分布式协议 进行通信,并使用 TLS 1.3 实现端到端加密。
如果您不希望数据通过 JetBrains 的服务器传输,您可以配置 本地部署服务器。
JetBrains 可以访问哪些项目数据?
JetBrains 会访问本地 IP 地址、项目名称和用户名。 JetBrains 不会访问与项目内容相关的信息,如源代码、项目文件、配置文件,因为这些信息通过其服务器传输时为端到端加密。
实时会话期间会收集哪些数据?
在 Code With Me 会话期间共享的代码,JetBrains 不会检查或收集任何数据,因为这些信息通过 JetBrains 的服务器传输时为端到端加密。
是否会在访客的计算机上本地存储任何文件?
不会。共享代码保留在主机的计算机上,不会上传到云端或存储在访客的计算机上。
主机和访客都可以本地收集并存储日志文件,其中包含有关会话的详细信息,例如用户名、建立连接所用的远程地址、插入符号移动、键入的符号、调用的操作、文件内容的部分片段、打开的文件、文件路径等。
访客可以访问哪些文件? 是否限制在特定的工作目录内?
如果主机授予了 权限 ,在活动会话期间访问主机项目的不同部分、执行代码或在终端工具窗口中工作均无任何限制。
如何通过代理使用 Code With Me?
如果您在本地网络中工作,您可以通过使用 私有本地部署服务器 来绕过代理限制。
或者,您可以将以下 URL 添加到允许列表:
https://code-with-me.jetbrains.comhttps://download.jetbrains.comhttps://download-cf.jetbrains.comwss://codewithme-relay-1.europe-north1-gke.intellij.netwss://codewithme-relay-2.europe-north1-gke.intellij.netwss://codewithme-relay-1.us-east1-gke.intellij.netwss://codewithme-relay-2.us-east1-gke.intellij.netwss://codewithme-relay-1.asia-northeast1-gke.intellij.netwss://codewithme-relay-2.asia-northeast1-gke.intellij.netwss://codewithme-relay-1.southamerica-east1-gke.intellij.netwss://codewithme-relay-2.southamerica-east1-gke.intellij.netwss://codewithme-relay-1.asia-south1-gke.intellij.netwss://codewithme-relay-2.asia-south1-gke.intellij.net
作为主机,如何运行安全的 Code With Me 会话?
仅与您信任的人共享 Code With Me 会话的邀请链接。 请勿接受您不认识或不确定身份的访客加入会话。 请勿在代码中硬编码任何敏感信息,例如密码、用户名等。 您在会话中授予的访问级别应与您对访客的信任程度相匹配。
主机如何授权访客加入其会话?
主机为 Code With Me 会话创建邀请链接并将其发送给访客。 当访客接受两端安全代码匹配的链接后,主机会确认其对 Code With Me 会话的访问权限。 仅在确认之后,访客才能加入会话。
主机可以控制什么?
作为主机,您可以控制访客在会话期间能看到什么、能访问什么。 即使访客已访问会话,您也可以将其移除。 您可以隐藏某些文件以限制访问,并控制对您计算机上终端的访问。
创建邀请链接时,您可以在发送前配置所有访客权限。 有关更多信息,请参阅 权限 部分。
Code With Me 提供了一项 隐藏文件 功能,使 IDE 的某些部分能够为特定访客隐藏这些文件(例如,IDE 不会指示或显示这些文件)。 无论访客的访问级别如何,均可使用此功能。 但是,这主要是为了方便,而非提供有保证的限制,并且并不消除与访客使用命令行界面功能相关的访问可能性。
主机是否可以更改会话中部分访客的权限?
是的,即使在会话开始前已为所有访客配置了权限,主机仍可在 Code With Me 会话期间为单个访客更改权限。
在完全访问模式下,主机是否可以限制访客的活动?
是的,主机可以在 Code With Me 会话期间将某些文件设为隐藏,并为单个访客更改权限以限制访问。
主机可以使用 "隐藏" 功能将文件设为隐藏,从而不易通过常规方式访问或找到。 每位访客都会收集自己的日志,但 Code With Me 不提供其他存储功能,不过需要注意,第三方应用可以用于记录编码会话和数据。
音频/视频通话是否加密?
音频和视频通话不采用 端到端加密。
在 Code With Me 会话中,谁可以访问音频或视频?
在 Code With Me 会话期间,只有主机和已被接受的访客可以访问音频和视频。
Code With Me 是否在会话结束后保存视频、音频或聊天记录?
不会。Code With Me 不会保存任何视频或音频通话,也不会在会话结束后保留任何聊天记录。
未授权的访客能否加入 Code With Me 会话?
每位访客都必须等待主机批准后才能加入 Code With Me 会话。
系统会为每位访客向主机提供一个安全代码;但主机仍需负责核实访客的身份。
客户端在会话期间会持久化哪些数据?
Code With Me 客户端及其所选设置会保留在每位访客的计算机上。
通信是如何建立的?
主机和访客通过 https://code-with-me.jetbrains.com 的 API 端点交换 Code With Me 会话信息。
之后,访客和主机会按以下方式尝试连接,直到其中一种方式成功为止:
主机会在 5990-65536 范围内打开第一个可用的 TCP 端口,并等待访客连接(直接连接);
主机和访客会监听一个随机的 UDP 端口,并尝试建立点对点连接(p2p 连接)。
有关一般性说明,请参阅 UDP_hole_punching。
这与任何 VoIP 客户端所使用的方法相同(例如 Skype、Slack、Google Meet 等)。
作为最后的手段,主机和访客会尝试通过 JetBrains 提供的中继。
语音和视频通话将走不同的路径。 视频/语音聊天由 Jitsi 视频会议技术 提供支持。
主机和访客会尝试建立点对点连接。
如果失败,他们将尝试使用第三方提供的 TURN 服务器。
无论是 p2p 还是 TURN 服务器连接,其传输流量均为端到端加密。
对于超过 2 人的通话,视频/语音流量将通过 JetBrains 提供的服务器传输。