安全性とコンプライアンスを保ちつつ、開発者の作業効率を上げるにはどうしたらいいでしょうか?GitHub Enterprise がどのように役立つかを見てみましょう。
コンプライアンスの基盤整備
Published at January 26, 2023
Category: Enterprise,compliance
Author: Mark Paulsen

コンプライアンスは世界中にソフトウェアを届けるための基礎ですが、ポリシーの強制によってワークフローが遅くなることに開発者が不満を感じる場合もあるかもしれません。
セキュリティ、データ、プライバシーの要件や規制が異なる地域や企業間で世界中のソフトウェアを実行できるようにするのがコンプライアンスなので、私たちGitHubはビジネスのニーズと開発者の幸福のバランスをとることに精通しています。1億人の開発者とFortune 100の90%がGitHub上でソフトウェアを構築しているのですから。
ここでは、開発者が最高の仕事をするためのツールを提供し、かつビジネスのコンプライアンスニーズを満たす方法について深く掘り下げていきましょう。
コンプライアンスの定義
コンプライアンスを辞書で厳密に定義すると、「願望、要求、提案、方式に従うこと」「強制に従うこと」「公式の要件を満たすこと」に焦点が当てられます。 この定義から、柔軟性、開放性、コラボレーションを重視する開発コミュニティで、コンプライアンスがあまり議論されない理由がわかります。
より開発者やクラウドネイティブに優しい定義は、Office of Compliance(OoC) の記述に見ることができます。OoC は、コンプライアンスを "達成すべき望ましい結果一式と、本番環境に配備する前にシステムを検証する必要のあるプロセス" とみなしています。 理想的な状態とその状態に到達するためのプロセスを定義することは、公式の要件に従うよう強制されるよりもずっと良いように聞こえます。
コンプライアンスのための基礎固め
コンプライアンスというと敷居が高いように思われるかもしれませんが、成功するためにまず理解しておくべき、非常に実践的な考え方があります。
母集団を把握する
これは当たり前のことですが、コードがどこにあり、開発者が誰であるかを知らなければ、ソフトウェア開発のコンプライアンスニーズに対応できないことを明記しておきます。
コードがGitHubのようなプラットフォームで一元管理されている場合、この最初のコンセプトはカバーされているはずです。 もしコードを一元管理できるプラットフォームがない場合は、まず使用しているすべてのツールを見つけ、そのツールにアクセスできるすべての開発者のリストを取得する必要があります。 ご想像の通り、これは時間のかかる作業であり、母集団が完全である保証はありません。
アクセスの把握
母集団を理解したら、次に誰が何にアクセスできるかを理解する必要があります。 コードは、おそらく組織内で最も重要な情報の一部であり、開発者が安全に利用できるようにする必要があります。 CIAの三原則は、コードの安全性を確保し、必要な人だけがアクセスできるようにするための仕組みを提供します。
- 機密性:組織は、許可されたユーザーのみが情報にアクセスできるようにするための対策を制定する必要があります。
- 完全性:正確で信頼できるデータが重要であり、権限のないユーザーがアクセス、変更、またはその他の方法で干渉することを許可しない。
- 可用性:許可されたユーザーが必要な時に、信頼できる一貫したデータへのアクセスを保証すること。
GitHubは、個人や企業がコードへのアクセスをコントロールできるようにするために、すべてのリポジトリやその他のリソースにアクセス権限を設定し、各ユーザーが業務に必要なものだけにアクセスできるようにしています(最小権限の原則とも呼ばれる)。エンタープライズアカウントという概念は、GitHubのコアに組み込まれています。これにより、アクセスを総合的に管理し、既存のプロバイダーと統合してチームを同期させ、管理を容易にし、ガードレールを設定してエンジニアリングチームの安全な基盤を確保することができるようになります。
世界中の開発者のうち1億人がGitHubを利用しているため、個人と企業のすべての開発者が必要なときにいつでも利用できるようにします。コミュニティへのコミットメントとして、GitHubの可用性レポートを毎月公開し、必要なときにコードが利用可能であることを確認しています。
GitHub Enterprise のような中央のツールを使うことで、必要な管理のオーバーヘッドを減らすことができます。もし、現在のツール環境が複雑になりすぎていて、何か助けが必要な場合は、最近のブログポスト「ツールキットを統合するための3つのヒント」をご覧ください。
ユーザー認証
この段階では、コードがどこにあるか、ユーザーの人口、CIAの3要素に対処していることを確認するための管理方法を理解しています。次に、ユーザーが持つアクセス権を定期的に証明するプロセスを導入する必要があります。従業員が別の役割に移ったり、会社を辞めたりした場合、そのアクセスを確実に取り消すためのプロセスを導入する必要があります。
今後のブログでは、GitHub Actions による自動化と、プルリクエストによる開発者のワークフローを活用して、ユーザーの認証に関連するコンプライアンスを最適化する方法について説明します。
継続的なコンプライアンス
継続的インテグレーション(CI)/継続的デリバリー(CD)という言葉は誰もが知っていると思いますが、何かを継続的に行うというコンセプトは、コンプライアンスにも適用できます。CI/CDの大きなメリットの1つはスピードです。コンプライアンステストや監査が、DevOpsのCI/CDパイプラインのように高速でシームレスに行われる世界を想像してみてください。
継続的なコンプライアンスは一晩で魔法のように現れるわけではありませんが、コンプライアンスの基礎となる部分を理解し、その下準備を始めていれば、コンプライアンスのテストと監査をより速くするいくつかの大きな利点が得られます。
1.不意打ちを食らわない。
コンプライアンス・テストや監査が始まるときに起こりうる最悪のシナリオの1つは、驚かされたり、準備不足になったりすることです。テスト担当者や監査担当者が新しい成果物を要求してきたからと言って、新しい成果物を作成する必要はありません。
2.共通の理解
DevOps監査防御ツールキットの主な目標は、コミュニケーションを改善し、共通の理解を生み出し、"IT管理者と実務者を監査プロセスについて教育し、監査人に対して、ビジネスリスクを理解し、そのリスクを適切に軽減していることを証明できるようにする "ことでした。ITと監査人のコミュニケーションと情報共有が改善されれば、監査がより効率的になり、Forresterによれば、大幅なコスト削減が可能になります。
3.開発者のワークフローに組み込まれる。
ソフトウェアデリバリーライフサイクルの基礎からコンプライアンスが設計されている場合、開発者は日々のフローの一部として、必要なコントロールを満たし、成果物を収集することになります。
AIで実現するコンプライアンス
GitHubでは、すでに機械学習を活用して、セキュリティやコンプライアンスに重要なセキュリティ脆弱性を発見するための支援を行っています。製造業では、 監査や工程検査の支援にAIが採用され始めています。また、ガートナーは、銀行が 詐欺の検出やリスクのモデリングに近々活用する技術として、ジェネレーティブAIを挙げています。
AIや機械学習を継続的なコンプライアンスに活用することのメリットと可能性は、非常に魅力的です。今後のブログでは、その先にあるものを詳しく見ていきたいと思います。
次のステップ
このようなコンプライアンスの基礎的な側面がよく理解できたら、これらのコンセプトを実装するための次のステップについて考え始めることができます。これが難しいところです。次回の記事では、開発者を満足させながらコンプライアンスの必要性を満たす、いくつかの実用的な方法を紹介します。
Source
Setting the foundations for compliance
While compliance is foundational to delivering software around the world, there may be instances where developers get frustrated with policy enforcement slowing down their workflow.