有关 Code With Me 安全性的常见问题
Code With Me 是一款功能强大的工具,可让您协作编写代码。 这种能力也带来保障代码和访问级别安全的责任。 以下是在 Code With Me 会话中授予他人访问自己计算机权限时可能会遇到的问题。
哪些数据以及如何通过 JetBrains 服务器传输?
您的项目/解决方案数据通过 JetBrains 服务器端到端加密传输。 端到端加密仅在主持人和来宾验证安全代码在双方一致时才是安全的。 否则,端到端加密可能会受到 MitM 攻击的影响。
本地 IP 地址、项目名称和用户名未加密传输,因为 JetBrains 需要这些信息在主持人和来宾之间建立会话。 启动新的 Code With Me 会话时,主持人与 JetBrains 服务器通过 TLS1.2+ 通信。
Code With Me 通过 JetBrains 创建的 开源分布式协议 通信,并使用 TLS 1.3 进行端到端加密。
如果您不希望数据通过 JetBrains 服务器传输,可以配置 本地部署服务器。
JetBrains 访问哪些项目/解决方案数据?
JetBrains 会访问本地 IP 地址、项目名称和用户名。 JetBrains 不会访问与项目内容相关的信息,例如源文件、项目文件、配置文件,因为这些信息是端到端加密通过其服务器传输的。
在实时会话期间会收集哪些数据?
在 Code With Me 会话期间,由于信息是端到端加密传输到 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 提供的中继 进行通信。
语音和视频通话会通过不同的路径传输。 视频/语音通话支持由 Jitsi 视频会议技术 提供。
主持人和来宾正在尝试建立点对点连接。
如果失败,他们将尝试使用第三方提供的 TURN 服务器。
p2p 和 TURN 服务器连接的所有流量均为端到端加密。
对于超过 2 人的通话,视频/语音流量将通过 JetBrains 提供的服务器传输。