关于 Code With Me 安全性的常见问题解答
Code With Me 是一款功能强大的工具,使您能够协作编写代码。 在具备此能力的同时,您也有责任保障代码和访问权限的安全。 当您允许其他人在 Code With Me 会话中访问您的计算机时,可能会遇到以下问题。
JetBrains 的服务器会传输哪些数据,以及是如何传输的?
您的项目数据通过 JetBrains 的服务器进行端到端加密传输。 只有当主机和来宾验证安全码在两端完全一致时,端到端加密通信才是安全的。 否则,端到端加密将容易受到 MitM 攻击。
本地 IP 地址、项目名称和用户名未加密共享,因为它们用于帮助 JetBrains 在主机与来宾之间建立会话。 启动新的 协作编程 会话时,主机会通过 TLS1.2+ 与 JetBrains 服务器通信。
协作编程 通过 JetBrains 创建的 开源分布式协议 进行通信,并使用 TLS 1.3 实现端到端加密。
如果您不希望数据通过 JetBrains 服务器传输,您可以配置 本地部署服务器。
JetBrains 可以访问哪些项目数据?
JetBrains 可以访问本地 IP 地址、项目名称和用户名。 JetBrains 不会访问项目内容相关的信息,例如源代码、项目文件、配置文件,因为这些信息是通过端到端加密方式流经其服务器的。
实时会话中会收集哪些数据?
JetBrains 不会检查或收集在 协作编程 会话期间共享的代码相关的任何数据,因为这些信息通过 JetBrains 服务器进行端到端加密传输。
是否会在来宾的计算机上本地存储文件?
不会,共享代码保留在主机的计算机上,不会上传或存储在云端或来宾的计算机中。
主机和来宾都可以本地收集和存储日志文件,包含诸如用户名、已建立连接的远程地址、光标移动、输入的符号、调用的操作、文件内容片段、打开的文件、文件路径等详细信息。
来宾可以访问哪些文件? 是否只限制在特定的工作目录中?
如果主机授予了 权限 ,则在活动会话期间,访问主机项目的不同部分、执行代码或在终端工具窗口中工作的行为没有任何限制。
如何在代理服务器后使用 Code With Me?
如果您在局域网中工作,可以使用 私有本地部署服务器 来绕过代理限制。
或者,您可以将以下网址添加到允许列表中:
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-provided relays. 进行通信。
语音和视频通话将通过其他路径进行。 视频/语音聊天由 Jitsi video conferencing technology 提供支持。
主机与来宾正在尝试建立点对点连接。
如果失败,他们将尝试使用第三方提供的 TURN 服务器。
无论是 p2p 还是 TURN 服务器连接,其流量均为端到端加密。
对于两人以上的通话,视频/语音流量将通过 JetBrains 提供的服务器。