有机蓝色和绿色形状

GitHub Copilot信任中心

我们在GitHub Copilot上开发和迭代时,通过优先考虑安全性、隐私性、合规性和透明度,使开发人员和组织能够最大限度地发挥其潜力。

GitHub Copilot信任中心

欢迎来到GitHub Copilot信托中心,我们很高兴您能来到这里。

GitHub Copilot和AI

人工智能编码工具已经在重塑软件开发,人工智能在编码中的作用只会继续增长。以下是我们迄今为止学到的知识。

安全

GitHub Copilot和安全

GitHub Copilot使用一流的Azure基础设施和加密,以及基于AI的漏洞预防系统,实时阻止不安全的编码模式。

安全传输/加密

GitHub Copilot将数据传输给GitHub的Azure租户以生成建议,包括关于正在编辑的代码和文件的上下文数据(“提示”)和关于用户操作的数据(“用户参与数据”)。传输的数据在传输过程中和静止时均加密;Copilot相关数据在传输过程中使用传输层安全性(TLS)进行加密,对于我们保留的任何数据,使用Microsoft Azure的数据加密(FIPS出版物140-2标准)。

第三方测试/认证

  • 审核和认证:GitHub Copilot Business和Copilot Enterprise提供合规报告。具体来说,GitHub发布了一份针对Copilot Business的SOC 2 Type I报告(包括IDE中的代码完成,以及IDE、CLI和Mobile中的聊天)。该1类报告表明,Copilot Business拥有保护服务安全所需的控制措施。我们将在2024年末发布的下一份SOC 2类型2报告中纳入Copilot Business和Copilit Enterprise,报告涵盖2024年4月1日至9月30日。

  • 此外,正如我们于2024年5月9日更新的ISO 27001证书所反映的那样,Copilot Business和Cophilot Enterprise现已纳入GitHub信息安全管理系统的范围。该认证表明,Copilot Business和Copilot-Enterprise的开发和运营采用了与GitHub其他产品相同的安全流程和标准。

  • 外部渗透测试:GitHub可以根据保密协议向我们当前的企业客户提供第三方渗透和应用程序测试报告,该报告来自对GitHubCopilot for Business进行的评估。此外,GitHub Copilot还可用于GitHub的Bug Bounty计划.

你如何帮助

  • 您可以通过使用GitHub Copilot并在反馈论坛中共享反馈来提供帮助。还请将事件(例如,攻击性输出、代码漏洞、代码生成中的明显个人信息)直接报告给copilot-safety@github.com这样我们才能改进我们的保障措施。GitHub非常重视安全保障,我们致力于不断改进。 

  • Copilot包含在GitHub Bug Bounty计划。通过现有的漏洞奖励工作流对Copilot提交进行分类和处理。

GitHub Copilot如何帮助安全开发

  • 在生成建议并将其返回给用户之前,Copilot应用了一个基于AI的漏洞预防系统,该系统实时阻止不安全的编码模式,以使Copilot建议更加安全。我们的模型针对最常见的易受攻击的编码模式,包括硬编码凭证、SQL注入和路径注入。

  • 该系统利用LLM来近似静态分析工具的行为,甚至可以在不完整的代码片段中检测到易受攻击的模式。这意味着不安全的编码模式可以被快速阻止,并被替代建议所取代。 

  • 构建安全软件的最佳方法是通过安全软件开发生命周期(SDLC)GitHub提供解决方案来帮助SDLC中的其他安全方面,包括代码扫描(SAST)、秘密扫描和依赖项管理(SCA)。我们建议启用以下功能分支保护以确保代码只有在通过了所需的测试和同行评审后才合并到代码库中。

GitHub Copilot如何与其他安全措施配合使用

  • 用于筛选的代理,例如PII:出站请求包含一个提示,该提示由当前编辑的文件和相关文件中的代码组成。如果此请求是下降,则Copilot将无法提供完成,并可能显示错误消息。如果通过删除个人信息或可疑内容或代码的代理过滤器操作修改请求,则Copilot能够正常处理请求。

  • 充气环境。GitHub Copilot for Business需要用户的IDE和GitHub Copilot Proxy服务之间的主动互联网连接。因此,它在气封环境中不起作用。

GitHub Copilot的局限性

虽然我们的实验表明GitHub Copilot建议的代码质量与普通开发人员相同或更好,但我们无法保证代码没有错误。像任何程序员一样,Copilot有时可能会建议使用不安全的代码。我们建议您对工程师编写的代码采取相同的预防措施(linting、代码扫描、IP扫描等)

资源

隐私

GitHub Copilot和隐私

您的隐私至关重要。我们致力于负责任地处理您的数据,同时提供最佳GitHub Copilot体验。

GitHub Copilot处理哪些个人数据?

GitHub Copilot根据Copilots的访问和使用方式处理个人数据:无论是通过GitHub.com、移动应用程序、扩展或各种IDE扩展之一,还是通过命令行界面(CLI)建议、IDE代码补全或GitHub.com上的个性化聊天等功能。处理的个人数据类型可能包括:

  • 用户参与数据:这包括用户与Copilot交互时捕获的假名标识符,例如接受或拒绝的完成、错误消息、系统日志和产品使用指标。 

  • 提示:这些是聊天或代码的输入,以及上下文,发送到Copilot的AI以生成建议。 

  • 建议:这些是AI生成的代码行或根据用户提示提供给用户的聊天响应。 

  • 反馈数据:这包括实时用户反馈,包括反应(例如,拇指向上/向下)和可选评论,以及来自支持票的反馈。 

GitHub如何使用Copilot数据?

GitHub如何使用Copilot数据取决于用户如何访问Copilit以及出于什么目的。用户可以通过web、扩展、移动应用程序、计算机终端和各种IDE(集成开发环境)访问GitHub Copilot。GitHub通常使用个人数据来:

  • 根据客户的配置和使用交付、维护和更新服务,以确保个性化体验和建议

  • 故障排除,包括通过修复软件错误和维护在线服务的功能和最新性来预防、检测、解决和缓解问题,包括安全事件和产品相关问题

  • 通过保持服务的最新和可操作性,提高用户的生产效率、可靠性、有效性、质量、隐私、可访问性和安全性

GitHub的数据保护协议中概述了这些实践(DPA),其中详细说明了我们对数据控制器客户的数据处理承诺。 

GitHub还根据DPA使用客户授权的某些个人数据,用于以下目的:

  • 账单和账户管理

  • 遵守并解决法律义务

  • 用于滥用检测、预防和保护、病毒扫描以及扫描以检测违反服务条款的行为

  • 生成汇总报告以计算员工佣金和合作伙伴奖励

  • 为内部使用和战略规划生成聚合报告,涵盖预测、收入分析、容量规划和产品战略等领域,

有关GitHub作为控制器的数据处理活动的详细信息,特别是对于Copilot个人客户,请参阅GitHub隐私声明.

GitHub对Copilot Business和Enterprise数据(控制器或处理器)的处理角色是什么?

数据处理器

GitHub主要充当提供Copilot Business and Enterprise服务的数据处理器。在这方面,GitHub代表我们的客户(数据控制器)使用个人数据:

  • 根据客户的配置和使用交付、维护和更新服务,以确保个性化体验和建议

  • 通过修复软件错误并维护在线服务的功能和最新性,进行故障排除,包括预防、检测、解决和缓解问题,包括安全事件和产品相关问题

  • 通过保持服务的最新和可操作性,提高用户的生产效率、可靠性、有效性、质量、隐私、可访问性和安全性

GitHub对Copilot Business和Copilot-Enterprise的数据处理承诺在GitHub's中数据保护协议(DPA)。 

数据控制器

通过DPA授权后,GitHub还可以作为数据控制器处理一些个人数据。以下是这些目的的完整列表:

  • 用于计费和账户管理

  • 生成汇总报告以计算员工佣金和合作伙伴奖励

  • 遵守并解决法律义务

  • 用于滥用检测、预防和保护、病毒扫描以及扫描以检测违反服务条款的行为

  • 为内部使用和战略规划生成聚合报告,涵盖预测、收入分析、容量规划和产品战略等领域,

所涉及的精确数据的细节取决于访问方法和目的。用户可以通过web、扩展、移动应用程序、各种IDE(集成开发环境)以及CLI(命令行界面)聊天、IDE代码补全或GitHub.com上的个性化聊天等功能访问GitHub Copilot。有关GitHu作为数据控制器处理的更多信息(例如,Copilot-个人客户),请参阅GitHub隐私声明。

GitHub Copilot是否支持遵守GDPR和其他数据保护法律?

对。GitHub和客户可以进入数据保护协议支持遵守GDPR和类似立法。

GitHub是否使用Copilot Business或Enterprise数据来训练GitHub的模型?

不是。GitHub既不使用Copilot Business数据也不使用Enterprise数据来训练其模型。 

GitHub为商业和企业客户保留Copilot数据多长时间?

GitHub是否保留Copilot数据以及保留多长时间取决于Copilots用户如何访问Copilit以及出于什么目的。Copilot Business和Enterprise Customers的默认设置如下:

通过IDE访问聊天和代码完成:

  • 提示和建议:未保留

  • 用户参与度数据:保存两年。

  • 反馈数据:根据预期用途的需要保存多长时间。

所有其他GitHub Copilot访问和使用:

  • 提示和建议:保留28天。

  • 用户参与度数据:保存两年。

  • 反馈数据:根据预期用途的需要保存多长时间。

GitHub Copilot是否使用GDPR第22条意义上的自动决策?

不。GitHub Copilot不会让个人仅基于自动处理做出重大决策。

GitHub Copilot是否使用第三方子处理器?

对。GitHub与作为我们的子处理器(如GDPR中所定义)的第三方共享数据,以支持操作。GitHub向其传输个人数据的任何子处理器都将与GitHub签订书面协议,这些协议的保护性不亚于GitHup数据保护协议。所有第三方子处理器都列在https://docs.github.com/en/site-policy/privacy-policies/github-subprocessors网站

GitHub Copilot和数据流

数据是如何流动的,正在用它做什么?

IP和开源

GitHub Copilot和版权

尊重知识产权是软件开发过程的重要组成部分。在此处了解代码所有权、筛选和公共代码的使用。

GitHub Copilot是否“复制/粘贴”?

不,GitHub Copilot使用概率确定生成建议。

  • 在考虑知识产权和开源问题时,了解GitHub Copilot的实际工作方式至关重要。创建Copilot建议的AI模型可以根据公共代码进行训练,但不包含任何代码。当他们生成建议时,并不是从任何代码库“复制和粘贴”。  

  • 为了生成代码建议,Copilot扩展首先检查编辑器中的代码重点放在光标前后的行上,还包括信息,包括在编辑器中打开的其他文件以及存储库的URL或文件路径,以标识相关上下文。这些信息被发送到Copilot的模型,以概率确定接下来可能发生什么,并生成建议。  

  • 为了在代码编辑器中生成聊天建议,Copilot扩展通过将提示与其他上下文(包括活动文档中打开的代码文件、代码选择和一般工作区信息,如框架、语言和依赖项)相结合来创建上下文提示。这些信息被发送到Copilot的模型,以概率确定接下来可能发生什么,并生成建议。

  • 为了在GitHub.com上生成聊天建议,例如从聊天提示符中提供问题的答案,Copilot通过将提示符与其他上下文相结合来创建上下文提示符,包括以前的提示、GitHub.com上打开的页面以及从代码库或Bing搜索中检索的上下文。这些信息被发送到Copilot的模型,以对接下来可能发生的事情进行概率确定,并生成建议。 

使用GitHub Copilot时需要考虑哪些知识产权问题?

GitHub Copilot的主要IP考虑事项与版权有关。为Copilot提供动力的模型是基于广泛的公共可访问代码集合进行训练的,其中可能包括受版权保护的代码,而Copilot的建议(在极少数情况下)可能与其模型所训练的代码类似。以下是关于这些注意事项的一些基本信息:

  • 版权法允许使用受版权保护的作品来训练人工智能模型:世界各国在其版权法中有规定,允许机器学习、理解、提取受版权保护材料(包括软件代码)中的模式和事实。例如,欧盟、日本和新加坡明确规定允许机器学习开发人工智能模型。包括加拿大、印度和美国在内的其他国家也根据其公平使用/公平处理规定允许此类培训。GitHub Copilot的AI模型是使用GitHup公共存储库中的代码进行训练的在允许的版权使用范围内公开访问。

  • 建议中的版权风险如何?在极少数情况下(根据GitHub的研究,不足1%),GitHup的建议可能与用于训练GitHubAI模型的代码示例相匹配。同样,Copilot不是“查找”或“复制并粘贴”代码,而是使用用户工作空间中的上下文来合成和生成建议。我们的经验表明,匹配建议最有可能出现在两种情况下:(i)当Copilot的模型合成的代码编辑器中没有上下文或上下文很少时,或(ii)当匹配建议代表一种常见的方法或方法时。如果代码建议与现有代码匹配,则使用该建议可能会引发侵犯版权的索赔,这取决于所使用代码的数量和性质以及代码的使用背景。从许多方面来说,这与使用开发人员未开发的任何代码时产生的风险相同,例如从在线源复制代码或重用库中的代码。这就是为什么负责任的组织和开发人员建议用户使用代码扫描策略来识别和评估潜在的匹配代码。

开源许可证的注意事项是什么?

当开发人员使用开放源码软件许可证下提供的代码时,他们可能必须满足许可证要求,例如归属代码的作者、披露使用开放源代码的源代码或根据某些许可证分发代码。如果不满足这些要求,代码所有者可以提出索赔,包括侵犯版权或违反适用的开源许可。 

  • 匹配代码的建议是否会自动引发版权或开源考虑?不。匹配代码的存在本身并不决定是否存在问题及其法律风险。这些考虑是否适用以及何时适用取决于许多因素,包括使用的开源代码的数量和性质,以及适用于此类代码的特定开源许可证。与您的开发人员没有编写的任何代码一样,您的组织需要根据其政策并与行业和法律服务提供商协商,来决定何时、使用多少以及在什么上下文中使用任何代码。所有组织都应保持适当的政策和程序,以确保这些许可问题得到妥善解决,如下所述。 

讨论关于开源的所有可能的关注点和保护措施超出了本文档的范围。然而,如果您的组织正在使用GitHub Copilot,那么您可能已经在围绕开源开发代码、策略和过程了。您应该将它们同样应用于Copilot建议的代码。

  • 每个组织都负责制定其开源政策和程序。 

GitHub Copilot是否包含一种过滤机制来降低风险?

是的,GitHub Copilot确实包含一个可选的代码引用过滤器,用于检测和抑制与GitHub上的公共代码匹配的某些建议。

  • GitHub创建了一个重复检测过滤器,用于检测和抑制包含超过特定长度的代码段的建议,这些代码段与GitHup上的公共代码相匹配。此筛选器可以由企业管理员启用,它可以应用于企业内的所有组织,或者管理员可以将控制权推迟到单个组织。 

  • 启用过滤器后,Copilot将根据GitHub上65个或更多词汇(平均150个字符)的公共代码检查代码建议是否匹配或接近匹配。如果匹配,则不会向用户显示建议。

除了离题、有害和冒犯性输出过滤器之外,GitHub Copilot还扫描输出中的易受攻击代码。

GitHub Copilot是否包含一些功能,以便用户更容易识别潜在相关的开放源码许可证以匹配建议?

是的,GitHub Copilot正在预览代码参考功能以帮助用户查找和审查潜在的相关开源许可证。代码引用功能当前处于预览状态。

  • 如果建议与GitHub上公开的代码相匹配,请与组织的开源策略和过程保持一致。谨慎和负责任的步骤应包括调查可用信息,以确定是否使用建议。

  • GitHub Copilot的代码引用功能标识包含与公共代码完全匹配或接近匹配的建议。当找到匹配项时,Copilot会提供一个警报,其中包括指向任何此类匹配代码的存储库的链接,以及有关适用软件许可证的任何可用信息,并记录此信息。Copilot用户可以查看这些信息,以确定适用的建议是否适合使用,以及使用这些建议是否需要其他措施。

  • Copilot用户也可以将此功能用作学习工具。使用代码引用功能提供的信息,开发人员可能会从其他代码库中获得灵感,发现文档,几乎可以肯定地获得信心,认为这个片段适合在他们的项目中使用。他们可能会采取依赖关系,在适当的时候提供归属,甚至可能寻求另一种实现策略。通过帮助开发人员理解其代码的社区上下文,同时保持开发人员的流动性,我们相信Copilot将继续在键盘上提供负责任的创新和真正的快乐。

GitHub Copilot是否旨在完全自动化代码生成并取代开发人员?

不是。Copilot是一个旨在提高开发人员效率的工具。它并不是要取代开发人员,开发人员应该继续对任何来源不明的第三方代码应用同样的保护和勤勉。

  • 该产品被称为“Copilot”而非“Autopilot(自动驾驶仪)”,其目的不是在没有监督的情况下生成建议。对于Copilot的建议,您应该使用与任何第三方代码完全相同的保护和谨慎。

  • 确定使用第三方代码的最佳实践超出了本节的范围。也就是说,无论您的组织目前使用什么实践——严格的功能测试、代码扫描、安全测试等——您都应该根据Copilot的建议继续执行这些策略。此外,您应该确保代码编辑器或编辑器在审阅生成的代码之前不会自动编译或运行它。

GitHub Copilot用户可以毫无顾虑地使用建议吗?

不一定。GitHub Copilot用户应根据各自的风险承受能力调整其对Copilot的使用。 

  • 如上所述,GitHub Copilot无意取代开发人员或他们的个人技能和判断,也无意完全自动化代码开发过程。使用任何第三方代码的风险同样适用于使用Copilot的建议。 

  • 根据您的特定用例,您应该考虑实现上面讨论的保护。你有责任评估什么适合这种情况,并实施适当的保障措施。 

启用Copilot过滤后,您有权从GitHub获得未修改建议的IP赔偿。如果您选择启用此功能,版权责任是我们的,而不是我们的客户。作为我们对负责任AI持续承诺的一部分,GitHub和Microsoft将我们的知识产权赔偿和保护支持扩展到我们的客户,这些客户正在使用GitHubCopilot增强其团队的能力。细节在这里.

GitHub Copilot如何使用您的代码提供建议?

GitHub Copilot根据代码编辑器中正在处理的内容的上下文提供建议。这需要临时将该上下文中各种元素的临时副本传输到GitHub的服务器。

  • 生成性AI工具提供对一般称为“提示”的东西的响应。在GitHub Copilot的情况下,提示由代码编辑器中的各种元素组成。这可能包括正在编辑的文件中的文件内容,以及项目中的相邻文件或相关文件。它还可能包括存储库或文件路径的URL,以标识相关上下文。然后,注释和代码以及此上下文用于合成和建议单行代码和整个函数。 

  • 提示需要传输到GitHub的服务器进行处理。传输的数据在传输中和静止时都经过加密

  • Copilot与其托管在Microsoft Azure服务上的模型进行交互,以生成建议。然后将这些建议发送回用户。如上所述,这些建议在传输和休息时都被加密

  • 提示仅实时传输以返回建议。如果您正在代码编辑器中使用Copilot扩展,那么您的提示、建议和支持上下文将被丢弃。如果您在代码编辑器外使用Copilot,那么您的提示、建议和支持上下文将存储28天。

GitHub Copilot是否保留了作为提供建议基础的任何提示?

代码编辑器中的GitHub Copilot扩展在提供建议后不会出于任何目的保留您的提示,除非您是CopilotIndividual订户并且允许GitHub保留您的提醒和建议。 

  • 如上所述,Copilot确实会将内容从代码编辑器传输到GitHub的服务器,以评估上下文并提供建议。转移的副本纯粹是昙花一现,在Copilot提供建议后不久,副本就被删除了。它不用于任何其他目的。 

代码编辑器扩展之外的GitHub Copilot产品(例如在CLI中)确实保留了您的提示和建议,以便提供服务。有关更多信息,请查看隐私部分。

GitHub Copilot是否使用您的任何代码来训练GitHub的模型(或任何后续模型)?

不会。GitHub既不使用Copilot Business数据也不使用Enterprise数据来训练GitHup模型。

谁拥有GitHub Copilot提供的建议?

我们不确定一个建议是否能够被拥有,但我们很清楚GitHub并没有声明建议的所有权。

  • 人工智能模型生成的建议是否可以拥有取决于许多因素(例如,相关国家的知识产权法、建议的长度、建议被视为“功能性”而非表达性的程度等)。

  • 如果一个建议能够被拥有,我们的条款是明确的:GitHub不主张所有权。

  • 在某些情况下,Copilot可以为不同的用户提供类似的建议。例如,两个不相关的用户都启动新文件,用Java编写快速排序算法,他们可能会得到相同的建议。向多个用户提供类似建议的可能性是生成性人工智能系统的一个常见部分。无论如何,GitHub不主张所有权。

劳动力市场

GitHub Copilot和未来工作

GitHub Copilot并不是为了取代开发人员而设计的,它是为了加强他们的工作并使行业更具包容性。

GitHub Copilot是否赋予开发人员权力并提高生产力?

引入更多智能系统有可能给开发人员的体验带来巨大变化。我们不希望GitHub Copilot取代开发人员。相反,我们希望GitHub Copilot与开发人员合作,增强他们的能力,使他们更有效率,减少手动任务,并帮助他们专注于有趣的工作

GitHub Copilot如何支持包容性开发催化剂?

早期研究关于生成性人工智能和GitHub Copilot的研究特别发现,这些工具有潜力降低进入壁垒,并使更多人成为软件开发人员。github支持程序扩展访问权限Copilot(包括向学生免费提供)和其他开发工具,以帮助有兴趣加入该行业的人。

GitHub Copilot如何改变开发人员的机会?

开发人员生产力的进步并不是什么新鲜事虽然人工智能可能会改变你的工作流程,但历史提供了许多关于工作如何演变和适应的例子,往往会在过程中创造更多机会。编译器、高级编程语言、开源软件、IDE——这些改变了开发人员工作方式的进步是漫长的,而且还在不断扩展。数据表明,随着时间的推移,这些工具降低了软件开发的成本,同时显著增加了对软件和开发人员的需求。结果是:根据美国劳工统计局的数据,开发商比以往任何时候都多,他们的工资也更高(即使在考虑了通货膨胀因素后)。

无障碍

GitHub Copilot和可访问性

GitHub致力于赋予残疾开发人员权力,帮助构建推动人类进步的技术。

GitHub在开发人员协作和残疾人无障碍环境方面的使命和目标是什么?

在GitHub,我们的使命是通过开发人员协作加速人类进步。我们认为,残疾人应该受益于并能够为创造这一进步作出贡献。 

我们的目标是让残疾开发人员能够在GitHub上构建。通过这样做,我们共同增加了所有残疾人获得技术的机会。这包括访问我们的AI对程序员GitHub Copilot,这可以提高开发人员的生产力和幸福感。

GitHub使用什么可访问性标准?

在开发包括GitHub Copilot在内的产品时,我们考虑了全球领先的无障碍标准,其中包括:

  • Web内容无障碍指南(WCAG)

  • 美国第508条

  • EN 301 549标准

GitHub如何在开发过程中包含可访问性?

除了无障碍标准外,我们产品的开发和迭代改进还以我们社区残疾人的生活经历为指导。我们定期安排内部无障碍办公时间,为设计师和开发人员提供直接反馈。

可访问性还通过设计检查表、linting、代码检查、自动可访问性扫描和手动测试集成到我们的开发过程中。用于Visual Studio和Visual Studio代码的GitHub Copilot利用了这些集成开发环境的本机辅助功能。

GitHub如何测试可访问性?

我们的内部可访问性审核由通过美国国土安全部(DHS)可信测试程序认证的测试人员执行。Trusted Tester程序创建了一种通用的测试方法,包括基于代码和UI检查的测试,用于确定软件和网站可访问性是否符合可访问性标准。我们的内部审计流程还包括由残疾人进行测试。

用户在哪里可以找到有关GitHub可访问性的信息?

GitHub Copilot和合同

有一些文档管理GitHub Copilot的使用。在这里了解他们。
GitHub Copilot产品特定术语

不断改进

我们一直在努力改进我们的产品。有关更新或更改的问题,请联系GitHub代表。

联系我们