🎈

GitHub Copilot導入に向けた取り組み

2023/07/15に公開

はじめに

  • GitHub Copilotを導入することで、エンジニアのコーディングをサポートしてもらえるため、エンジニアの生産性を増加させることができる見込みから、導入を検討している企業も多いと考えられる。
  • ただし、導入に関しては、コード情報流出等、セキュリティ面の不安が大きい。
  • 特に、ISMSを取得している会社では、ソースコード自体をセキュリティ情報資産として厳格に管理し、重要情報として取り扱っている場合が多い。
  • 法的・制度的な面を含めて、クリアできるか、他社動向を踏まえて調査した。

Copilotとは

  • Google翻訳すると副操縦士という意味となる。コードを書くエンジニアのパートナーとして機能する意味合いであろう。
  • 以下、chatGPTさん
    • Copilotは、「GitHub Copilot」と「Microsoft Copilot」の2つの異なるコンテキストで使用される用語である。
    1. GitHub Copilot: 開発者向けの人工知能(AI)ツールである。GitHubとOpenAIが共同開発したプラグインであり、コードの補完や自動生成をサポートする。学習済みのAIモデルを使用して、コードのコンテキストから次の行やブロックを予測し、自動的に補完や提案を行なってくれる。
    2. Microsoft 365 Copilot: GPT-4ベースの大規模言語モデルLLMとMicrosoft製品を統合したサービスのこと。WordやPowerPoint、Teamsなどに組み込まれる。例えば、短い指示でビジネス文章を自動生成したり、Excelのスプレッドシードを分析させて読み取るべきデータの抽出、可視化等ができるようになる。
  • 開発環境に組み込むCopilotとしては、「GitHub Copilot」となる。

Copilot利用に関するリスク

  • Github Copilot利用に関するリスクは以下のまとめ記事が詳しい。

https://zenn.dev/miyajan/scraps/3567cee380280c

  • リスクについては、上記記事より抜粋
  1. 自社のプライベートなコードが GitHub Copilotに送信され、学習モデルとして使われ、外部に流出してしまう。
  2. 自動生成されたコードが学習モデルとなった publicなコードのライセンスを侵害してしまう。
  • 上記の2点がリスクとして考えられる。ただし項目2に関しては、開発メンバがそもそもライセンス侵害のコードを利用してproduction環境のコードとして利用する可能性もあるし、そのコードをレビューするときにライセンス侵害していないか気にしているかというとそういう訳ではないため、GitHub Copilotを利用するしないに関わらずリスクとしては変わらないので、項目1に注目して検討すべきであろう。

  • FAQのGeneralには以下の記載がある。

The GitHub Copilot extension sends your comments and code to the GitHub Copilot service, and it relies on context, as described in Privacy below - i.e., file content both in the file you are editing, as well as neighboring or related files within a project.

  • 保持はされないが、SaaSに対して、ソースコードは送信されることとなる。ここの解釈がどう判断されるかがポイントとなると思われる。
    • 保持されないと規約で記載しているとはいえ、SaaSサービスに自社の情報資産を送信すること自体をNGとする判断もそれはそれで支持できる。

他社事例のユースケース

  • ZOZOテクノロジーの導入事例が記載されていた。

https://techblog.zozo.com/entry/introducing_github_copilot

  • 開発効率の向上を目的とする施策の一環として、GitHub Copilotを導入したとのこと。

  • GitHub Copilot Product Specific Termsの第4項およびGitHub Customer Agreementの第6項、第7項が適用される。それにより第三者からの賠償請求に対してGitHub社から無制限の補償を受けられるとあるが、上記はもう少し確認する必要があるかもしれない。

  • 記事中でのポイントは以下の記載である。

「GitHub Copilot Product Specific Terms」および「GitHub Customer Agreement」は2023/6/22時点のものを参照し確認しています。また、弊社が締結した契約では無制限の補償を受けられることをGitHub社に確認済みですが、保証内容は契約しているプラン、契約時期によって異なります。エンタープライズ契約でも主契約次第で補償内容が異なる可能性もありますので、必ずGitHub社にご確認をお願いいたします。

  • つまり利用にあたり、GitHub社と個別の契約(もしくは契約条件の詳細確認だけかもしれないが)を締結しているみたい。なので、SaaSサービス仕様だけではなく、個別契約で無制限の補償を受けることは可能であると思われる。
  • 後、ZOZOグループはISMS認証を取得ずみ。

https://corp.zozo.com/news/20210811-14926/

  • GitHub Copilotの利用がISMSにおいて、NGとなる可能性は低いが、ソースコードの資産価値をどのレベルで定義しているかによる可能性はある、が、おおむね問題ないと判断できる。

まとめ

  • GitHub Copilotの導入時においては、保証内容は契約しているプラン、契約時期によって異なるため、補償内容を詳細に確認しておく。
  • GitHub Copilotの利用がISMSにおいて、抵触する可能性は低いと思われる。
  • ソースコードは保持されないとSaaS規約で記載しているとはいえ、SaaSサービスに自社の情報資産を送信すること自体をNGとするかどうかの判断が必要になる。

参考情報

  1. Defense of Third Party Claims.
    If your Agreement provides for the defense of third party claims, that provision will apply to your use of GitHub Copilot. Notwithstanding any other language in your Agreement, any GitHub defense obligations related to your use of GitHub Copilot do not apply if (i) the claim is based on Code that differs from a Suggestion provided by GitHub Copilot, or (ii) you have not set the Duplicate Detection filtering feature available in GitHub Copilot to its “Block” setting. You can learn how to enable the Duplicate Detection filter at gh.io/cfb-dd.
  1. 第三者からの賠償請求に対しての防衛
    もし、ご契約に第三者のクレームの防御が規定されている場合、その規定はGitHub Copilotの使用に適用されます。ただし、ご契約の他の規定に関わらず、GitHub Copilotの使用に関連するGitHubの防御義務は、(i) クレームがGitHub Copilotによって提供された提案と異なるコードに基づいている場合、または (ii) GitHub Copilotで利用可能な「ブロック」設定に「重複検出フィルタリング機能」を設定していない場合には適用されません。GitHub Copilotの「重複検出フィルタリング機能」の有効化方法については、gh.io/cfb-ddをご参照ください。
  1. Third party claims
    6.1 The parties will defend each other against third party claims described in this section and will pay the amount of any resulting adverse final judgment or approved settlement, but only if the defending party is promptly notified in writing of the claim and has the right to control the defense and any settlement of it.

6.1 各当事者は、本セクションで説明される第三者のクレームに対して互いに防御し、その結果として生じた不利な最終判決または承認された和解金額を支払います。ただし、防御する当事者には、クレームが書面で適時通知され、防御および和解の権利を行使する権限がある場合に限ります。

6.2 The party being defended must provide the defending party with all requested assistance, information, and authority. The defending party will then reimburse the other party for reasonable out-of-pocket expenses it incurs in providing such assistance.

6.2 被告者は、防御側に必要なすべての支援、情報、および権限を提供する義務があります。その後、防御側は、そのような支援を提供するために負担した合理的な実費を他の当事者に返済します。

6.3 This section describes the parties’ sole remedies and entire liability for such claims, subject to the limitations set out in Section 7 (“Limitation of liability”).
(a) By GitHub. GitHub will defend Customer against any third-party claim that a Product made available by GitHub for a fee and used within the scope of this Agreement (unmodified as provided by GitHub and not combined with anything else), misappropriated a trade secret or directly infringes a patent, copyright, trademark, or other proprietary right of a third party. If GitHub is unable to resolve a claim of misappropriation or infringement, it may, at its option, either (1) modify or replace the Product with a functional equivalent or (2) terminate Customer’s license and refund any license fees, including amounts paid in advance for any usage period after the termination date. GitHub will not be liable for any claims or damages due to Customer’s continued use of a Product after being notified to stop due to a third-party claim.
(b) By Customer. To the extent permitted by applicable law, Customer will defend GitHub and its Affiliates against any third-party claim that: (1) any Customer Content misappropriated a trade secret or directly infringes a patent, copyright, trademark, or other proprietary right of a third party; or (2) Customer’s use of any Product, alone or in combination with anything else, violates the law or harms a third party.

6.3 このセクションでは、当事者の唯一の救済手段およびそのようなクレームに対する全責任を、セクション7(「責任制限」)に定められた制約の範囲内で説明しています。
(a) GitHubによる場合:GitHubは、GitHubが有料で提供し、本契約の範囲内で使用される(GitHubが提供したままであり、他のものと組み合わされていない)製品が、第三者の営業秘密を横領したり、特許、著作権、商標、その他の第三者の所有権を直接侵害したという第三者の主張に対して、顧客を防御します。GitHubが横領または侵害の主張を解決できない場合、選択肢として、(1) 製品を機能的に同等なものに変更または置き換えるか、(2) 顧客のライセンスを終了し、終了日以降の利用期間の事前に支払われたライセンス料金を含む全額を返金することがあります。GitHubは、第三者の主張によって使用の停止が通知された後も、顧客が製品を継続して使用したことに起因するいかなるクレームや損害に対しても責任を負いません。
(b) 顧客による場合:適用法に準拠する範囲で、顧客は、以下のいずれかに該当する場合に、GitHubおよびその関連会社を第三者の主張に対して防御します:(1) 顧客のコンテンツが第三者の営業秘密を横領したり、特許、著作権、商標、その他の第三者の所有権を直接侵害したと主張される場合、または(2) 顧客が製品を単独でまたは他の何かと組み合わせて使用することにより、法律に違反したり第三者に損害を与えたと主張される場合。

  1. Limitation of liability
    7.1 Each party’s maximum, aggregate liability to the other under this Agreement is limited to direct damages finally awarded in an amount not to exceed the following:
    (a) Products. For Products ordered on a subscription basis, GitHub’s maximum liability to Customer for any incident giving rise to a claim will not exceed the amount Customer paid for the Product during the 12 months before the incident.
    (b) Previews. For Previews, GitHub’s maximum liability is limited to US $500.00.
    (c) Exclusions. In no event will either party be liable for indirect, incidental, special, punitive, or
    consequential damages, or loss of use, loss of profits, or interruption of business; however, caused or on any theory of liability.
    (d) Exceptions. No limitation or exclusions will apply to liability arising out of either party’s (1) confidentiality obligations unrelated to Customer Content; (2) defense obligations above; or (3) violation of the other party’s intellectual property rights.
  1. 責任の制限
    7.1 本契約に基づく各当事者の相手方への最大の総合的な責任は、以下の範囲内で直接的な損害についての最終的な賠償に制限されます。
    (a) 製品:定期購読ベースで注文された製品に関して、GitHubの最大の責任は、クレーム発生の根拠となる事故について、その事故の前の12か月間に顧客が製品に支払った金額を上回らない範囲内で顧客に対して制限されます。
    (b) プレビュー:プレビューに関して、GitHubの最大の責任は500.00米ドルに制限されます。
    (c) 除外事項:いかなる場合でも、当事者のいずれも間接的損害、付随的損害、特別損害、懲罰的損害、または結果的な損害、利益の損失、または事業の中断について、何らかの責任の理論に基づいて発生した場合でも、責任を負いません。
    (d) 例外事項:制限や除外は、当事者のいずれかが (1) 顧客コンテンツとは関係のない機密保持義務、(2) 上記の防御義務、または (3) 相手方の知的財産権の侵害に起因する責任には適用されません。

Discussion