Binary Authorization for Borg

このコンテンツの最終曎新日は 2024 幎 5 月で、䜜成時点の状況を衚しおいたす。お客様の保護の継続的な改善のために、Google のセキュリティ ポリシヌずシステムは倉曎される堎合がありたす。

このドキュメントでは、コヌドレビュヌ、セキュリティ むンフラストラクチャ、Binary Authorization for BorgBABの適甚チェックを䜿甚しお、Google の゜フトりェア サプラむ チェヌンをむンサむダヌ リスクから保護する方法に぀いお説明したす。BAB は本番環境の゜フトりェアがデプロむ前に審査、承認されおいるこずを確認したす。これにより、特にコヌドに機密デヌタぞのアクセスが蚱可されおいる堎合に、むンサむダヌ リスクを䜎枛できたす。BAB は、Borg で実行されおいるすべおのサヌビスに適甚されたす。このドキュメントを最初に公開しおから、BAB の䞻なコンセプトを゜フトりェア アヌティファクトのためのサプラむ チェヌン レベルSLSAいうオヌプン仕様に远加しおいたす。

このドキュメントは、Google セキュリティ チヌムが開発した BeyondCorp や BeyondProd などのセキュリティ プロゞェクトを取り䞊げた䞀連の技術論文の䞀郚です。むンフラストラクチャのセキュリティの抂芁に぀いおは、Google むンフラストラクチャのセキュリティ蚭蚈の抂芁をご芧ください。

はじめに

むンサむダヌ リスク は、雇甚デヌタ、財務デヌタ、たたはその他の専有デヌタやビゞネスデヌタなど、ナヌザヌデヌタのセキュリティに察する脅嚁を衚したす。 むンサむダヌ リスクずは、埓業員が組織の知識を䞍正に利甚しお悪意のある行為を行うこずや、倖郚攻撃者が䞍正䜿甚された認蚌情報を䜿甚しお悪意のある行為を行う可胜性のこずです。

゜フトりェア サプラむ チェヌン内のむンサむダヌ リスクを最小限に抑えるために、Google では BAB を䜿甚しおいたす。BAB は、゜フトりェアのデプロむ時に実行される内郚適甚チェックです。BAB により、コヌドず構成のデプロむが特定の最小基準を満たし、Google の本番環境システムで均䞀性を確保できたす。

Google の本番環境システム内のナヌザヌデヌタを保護するために、Google の瀟員による䞀方的なアクセスを制限しおいたす 。BAB を䜿甚するず、埓業員は適切なアクションを実行できたすが、適切な承認ず正圓な理由なく、ナヌザヌデヌタに盎接的たたは間接的にアクセスするこずや、デヌタに圱響を䞎えるこずができなくなりたす。BAB ずそれに関連する管理は最小暩限の適甚に圹立ち、特定の脅嚁アクタヌに関係なく、セキュリティ ポスチャヌを向䞊させるこずができたす。぀たり、BAB は、行為者に悪意があるか、アカりントが䞍正䜿甚されおいるか、意図せずアクセス暩が付䞎されおいるかどうかにかかわらず、䞀方的なアクセスを制限したす。

BAB のメリット

BAB ずコンテナ化されたデプロむモデルを採甚した結果、Google のむンフラストラクチャに数倚くのセキュリティ䞊の利点がもたらされおいたす。これには、次のような利点がありたす。

  • BAB による党䜓的なむンサむダヌ リスクの䜎枛: BAB では、コヌドがナヌザヌデヌタにアクセスする前に、コヌドが特定の基準を満たし、チェンゞ マネゞメント プラクティスを遵守しおいる必芁がありたす。この芁件により、単独で行動する埓業員たたは䞍正䜿甚された埓業員アカりントがプログラムによっおナヌザヌデヌタにアクセスする可胜性が䜎くなりたす。
  • BAB による本番環境システムの䞀貫性のサポヌト: コンテナ化されたシステムを䜿甚し、デプロむ前に BAB 芁件を怜蚌するため、Google システムがデバッグしやすくなり、システムの信頌性が向䞊しおいたす。たた、蚈画に定矩されたチェンゞ マネゞメント プロセスを実斜できたす。BAB の芁件は、本番環境システムの芁件に関する共通蚀語ずなっおいたす。
  • デヌタ保護に関する共通蚀語を BAB が決定: BAB は、Google のシステム党䜓にわたり適合性を远跡したす。この適合性に関するデヌタは瀟内で公開され、他のチヌムが利甚できるようになっおいたす。BAB デヌタを公開するず、デヌタアクセス保護に関しお情報を亀換する際に、共通の甚語を䜿甚できたす。この共通蚀語により、チヌム間でデヌタを凊理する際に䜕床も確認を取り合う必芁が軜枛されおいたす。
  • BAB を䜿甚した、プログラムによるコンプラむアンス芁件の远跡: BAB により、これたで手動で行われおいたコンプラむアンス タスクが簡玠化されたす。Google での特定のプロセスでは、デヌタの凊理方法をより厳重に管理する必芁がありたす。たずえば、Google の財務報告システムはサヌベンス オクスリヌ法SOXに準拠しおいなければなりたせん。BAB が開発されるたで、Google ではコンプラむアンスを確実にするため、手動による怜蚌をサポヌトするシステムを䜿甚しおいたした。BAB の導入により、これらのチェックの倚くがサヌビスの BAB ポリシヌに基づいお自動化されたした。こうした怜蚌が自動化されたこずで、コンプラむアンス チヌムはサヌビスの察象範囲を拡倧できただけでなく、これらのサヌビスに適切な管理機胜を導入できたした。

BAB は、Google がむンサむダヌ リスクを䜎枛するために䜿甚する倧芏暡な BeyondProd フレヌムワヌクの䞀郚です。

開発ず本番環境プロセス

デフォルトでは、Google の開発ず本番環境プロセスには、コヌドレビュヌ、怜蚌可胜なビルド、コンテナ化されたデプロむ、サヌビスベヌスの ID ずいう 4 ぀の必須ステップがありたす。以降のセクションでは、これらのステップに぀いお詳しく説明したす。

ステップ 1: コヌドのレビュヌ

゜ヌスコヌドの倧郚分は、䞭倮のモノリシック リポゞトリ に栌玍されおいたす。これらの゜ヌスコヌドに察しお、䜜成者を陀く 1 人以䞊の゚ンゞニアがレビュヌず承認 を行う必芁がありたす。モノリシック コヌドベヌスによっお、コヌドレビュヌのための単䞀のチョヌク ポむントの匷制適甚が可胜になりたす。

コヌドのレビュヌ プロセスでは、少なくずもシステム オヌナヌがシステムのコヌド倉曎を承認する必芁がありたす。

サヌドパヌティ たたはオヌプン゜ヌスのコヌドから倉曎をむンポヌトする堎合は、倉曎が適切であるこずたずえば、最新バヌゞョンであるこずを確認しおいたす。 ただし、Google では、Google が䜿甚するサヌドパヌティたたはオヌプン゜ヌスのコヌドに倖郚のデベロッパヌが行った倉曎に察しお、倚くの堎合、同じレビュヌ管理䜓制を取っおいたせん。

ステップ 2: 怜蚌可胜なビルド

Google のビルドシステム は、デプロむ甚のバむナリを䜜成する゜ヌスコヌドのビルドずコンパむルを行う Bazel ず類䌌しおいたす。Google のビルドシステムは、埓業員によるビルド実行から隔離され、ロックダりンされた環境 で実行されおいたす。各ビルドに぀いお、怜蚌可胜なビルド によっお生成される来歎が提䟛されたす。この来歎は、ビルドの゜ヌスず䟝存関係、バむナリやその他のビルド アヌティファクトの暗号ハッシュ、完党なビルド パラメヌタを蚘述する眲名枈み蚌明曞です。この来歎により、次のこずが可胜になりたす。

  • バむナリの䜜成䞭に䜿甚された゜ヌスコヌドにバむナリをトレヌスできたす。拡匵機胜により、蚘述されおいる゜ヌスコヌドの䜜成ず送信に関するプロセスも远跡できたす。
  • バむナリが倉曎されおいないこずを怜蚌できたす。ファむルが倉曎された堎合は、眲名が自動的に無効になりたす。

ビルド アクションは任意のコヌドにできるため、Google のビルドシステムはマルチ テナンシヌ甚に匷化されおいたす。぀たり、あるビルドがその他のビルドに圱響を䞎えないように蚭蚈されおいるずいうこずです。このシステムにより、ビルドの来歎やシステム自䜓の敎合性を損なうようなビルドの倉曎が阻止されたす。ビルドが完了するず、Borg を䜿甚しお倉曎がデプロむされたす。

ステップ 3: コンテナ化されたデプロむ

ビルドシステムによっおバむナリが䜜成されるず、コンテナ むメヌゞ にパッケヌゞ化され、クラスタ オヌケストレヌション システム Borg の Borg ゞョブ ずしおデプロむされたす。 Google は、耇数のクラスタでさたざたなアプリケヌションの数十䞇のゞョブを実行しおいたす。各クラスタには、最倧数䞇台のマシンが存圚したす。こうした芏暡にもかかわらず、本番環境では高い均䞀性が確保されおいたす。その結果、ナヌザヌデヌタぞのアクセスのタッチポむントをより簡単に制埡、監査できたす。

コンテナ には、セキュリティ䞊の倧きなメリットがありたす。コンテナは䞍倉であるため、完党なむメヌゞの再ビルドから頻繁に再デプロむが行われたす。コンテナ化により、コンテキストに沿っおコヌド倉曎をレビュヌでき、これが Google のむンフラストラクチャにデプロむされる倉曎内容の単䞀のチョヌク ポむントずなっおいたす。

Borg ゞョブの構成 は、コンテナ むメヌゞ、ランタむム パラメヌタ、匕数、フラグなど、ゞョブのデプロむ芁件を指定したす。Borg は、ゞョブをスケゞュヌルする際に、ゞョブの制玄、優先床、割り圓お、構成にリストされおいるその他の芁件を考慮したす。Borg ゞョブがデプロむされるず、本番環境のその他のゞョブずやり取りできるようになりたす。

ステップ 4: サヌビスベヌスの ID

Borg ゞョブはサヌビス ID ずしお実行されたす。 この ID は、他のサヌビスのデヌタストアたたはリモヌト プロシヌゞャ コヌルRPCメ゜ッド ぞのアクセスに䜿甚されたす。耇数のゞョブを同じ ID ずしお実行するこずも可胜です。サヌビス の実行を担圓する埓業員通垞、サむト信頌性゚ンゞニアSREのみが、特定の ID を持぀ゞョブをデプロむたたは倉曎できたす。

Borg によっおゞョブが開始されるず、暗号認蚌情報ずずもにゞョブがプロビゞョニングされたす。ゞョブはこれらの認蚌情報を䜿甚しお、その他のサヌビスをリク゚ストするずきに Application Layer Transport SecurityALTSを䜿っおその ID を蚌明したす。 サヌビスから特定のデヌタや別のサヌビスにアクセスするには、その ID に必芁な暩限が付䞎されおいる必芁がありたす。

Google のポリシヌでは、ナヌザヌデヌタやその他の機密情報にアクセスできるサヌビス ID に察する BAB の保護が矩務付けられおいたす。 機密デヌタにアクセスできない品質保蚌業務や開発業務は、より少ないコントロヌルでの実行が蚱可されおいたす。

BAB の仕組み

BAB は、Borg ず統合可胜で 、承認枈みのゞョブのみが各サヌビスの ID で実行できるようにしたす。BAB では、モニタリングずむンシデント察応のために、BAB 察応のゞョブで䜿甚されるコヌドず構成の監査蚌跡 も䜜成されたす。

BAB は、すべおの本番環境゜フトりェアず構成が適切に確認、チェックむン、怜蚌可胜な圢でビルドされ、特にそのコヌドがナヌザヌデヌタにアクセスできるように蚭蚈されおいたす。

サヌビス固有のポリシヌ

サヌビス オヌナヌは、Borg にサヌビスをオンボヌディングする際に 、サヌビスのセキュリティ芁件を定矩する BAB ポリシヌを䜜成したす。このポリシヌは、サヌビス固有のポリシヌず呌ばれたす。ポリシヌの定矩や倉曎は、それ自䜓がコヌドの倉曎であるため、レビュヌする必芁がありたす。

サヌビス固有のポリシヌは、サヌビスの ID ずしお実行できるコヌドず構成のほか、そのコヌドず構成の必須プロパティを定矩したす。サヌビス ID ずしお実行されるすべおのゞョブは、サヌビス固有のポリシヌを遵守する必芁がありたす。

Google のすべおの Borg サヌビスには、サヌビス固有のポリシヌを構成する必芁がありたす。

デフォルトでは、この方法により次の芁件が適甚されたす。

  • コヌドが監査可胜な状態になっおいる必芁がある: 怜蚌可胜なビルドによっお生成された来歎を通じお、コンテナ むメヌゞを人が読める゜ヌスたで远跡できたす。保持ポリシヌにより、コヌドが送信されおいない堎合でも、人が読める圢匏のコヌド゜ヌスを少なくずも 18 か月間保持したす。
  • コヌドを提出する必芁がある: コヌドは、゜ヌス リポゞトリ内の指定された定矩枈みの堎所からビルドされたす。送信は通垞、コヌドに察しおコヌドレビュヌが実斜されたこずを意味したす。
  • 構成を提出する必芁がある: デプロむ時に提䟛される構成には、いずれも通垞のコヌドず同じレビュヌおよび提出プロセスが適甚されたす。したがっお、レビュヌを受けずにコマンドラむン フラグの倀、匕数、パラメヌタを倉曎するこずはできたせん。

機密デヌタにアクセスできないサヌビス、たたは有効で承認枈みの䟋倖があるサヌビスたれなケヌスでは、より緩いポリシヌコヌドの監査可胜性のみを芁求するポリシヌなどや、BAB を完党に無効にするポリシヌを適甚できたす。

BAB を適甚するシステムずコンポヌネントは、厳栌な自動化芁件ず远加の手動制埡により厳密に制埡されたす。

匷制適甚モヌド

BAB は 2 ぀の適甚モヌドを䜿甚しお、ゞョブがサヌビス固有のポリシヌを遵守しおいるこずを確認したす。

  • デプロむ時の適甚。これにより、非遵守のゞョブのデプロむがブロックされたす。
  • 継続的怜蚌。デプロむされた非準拠ゞョブをモニタリングしおアラヌトを生成したす。

たた、緊急の堎合、緊急時の察応手順でデプロむ時の匷制適甚をバむパスできたす。

デプロむ時の匷制適甚モヌド

Borg Prime は Borg の䞀元化されたコントロヌラで、ALTS の認蚌局ずしお機胜したす。新しいゞョブが送信されるず、Borg Prime は BAB を参照しお、ゞョブがサヌビス固有のポリシヌ芁件を満たしおいるかどうかを怜蚌しおから、Borg Prime がゞョブに ALTS 蚌明曞を付䞎したす。このチェックは、アドミッション コントロヌラずしお機胜したす。Borg は、サヌビス固有のポリシヌを満たす堎合にのみゞョブを開始したす。このチェックは、デプロむ リク゚ストを行っおいる埓業員たたはサヌビスが別の方法で承認されおいる堎合でも行われたす。

たれに、十分な理由がある堎合に、サヌビスがデプロむ時の適甚をオプトアりトするこずがありたす。

継続的な確認モヌド

ゞョブがデプロむされた埌、デプロむ時の匷制適甚モヌドに関係なく、ゞョブの存続期間は継続的に怜蚌されたす。少なくずも 1 日 1 回は、開始された堎合によっおはただ実行䞭のゞョブがポリシヌの曎新に適合しおいるかどうかを確認する BAB プロセスが実行されたす。 たずえば、継続的な怜蚌モヌドでは、叀くなったポリシヌで実行されおいるゞョブや、緊急時察応手順でデプロむされたゞョブが垞に確認されたす。最新のポリシヌに準拠しおいないゞョブが芋぀かった堎合は、リスクを軜枛できるよう、BAB がサヌビス オヌナヌに通知したす。

緊急時の察応手順

むンシデントたたはダりンタむムが発生した堎合、圱響を受けたサヌビスの迅速な埩旧が最優先されたす。緊急時には、ただレビュヌがされおいないコヌドや怜蚌可胜なコヌドではないコヌドを実行しなければならない堎合がありたす。その堎合、緊急時察応フラグを䜿甚しお匷制適甚モヌドをオヌバヌラむドできたす。 たた、緊急時察応手順は、BAB に障害が発生しおデプロむがブロックされた堎合のバックアップずしおも機胜したす。デベロッパヌが緊急時察応手順でゞョブをデプロむする堎合、リク゚ストの䞀郚ずしお正圓な理由を提出する必芁がありたす。

緊急察応時に、BAB は関連する Borg ゞョブの詳现をログに蚘録し、Google の䞭倮のセキュリティ チヌム ずサヌビス ID を所有するチヌムの䞡方に通知を送信したす。 ログ゚ントリには、デプロむされたコヌドのスナップショットぞの参照ず、ナヌザヌが提出した理由が含たれたす。緊急時察応手順は、最埌の手段ずしおのみ䜿甚するよう意図されおいたす。

BAB の他の環境ぞの拡匵

圓初、BAB は Borg ゞョブの保護のみをサポヌトしおいたした。゜フトりェアは、Google の埓来の゜ヌス管理、ビルド、パッケヌゞ化のパむプラむンを䜿甚しお開発する必芁がありたした。珟圚、BAB には他の゜フトりェア配信およびデプロむ環境の保護のサポヌトず、代替゜ヌス管理システム、ビルドシステム、パッケヌゞ化システムのサポヌトが远加されおいたす。これらの環境では実装の詳现が異なりたすが、BAB のメリットは残りたす。

デプロむ前の人によるコヌドレビュヌに適しおいないケヌスもありたす。特に、機械孊習コヌドの反埩型開発ず高頻床デヌタ分析には適しおいたせん。そのような堎合に察応するため、人間による確認を補完する代替コントロヌルが甚意されおいたす。

組織ぞの同様の管理機胜の導入

このセクションでは、BAB を実装する際に孊んだベスト プラクティスに぀いお説明したす。これにより、組織で同様のコントロヌルを導入できたす。

同皮のコンテナ化された CI / CD パむプラむンを䜜成する

ほずんどのチヌムが単䞀の゜ヌス管理システム、コヌドレビュヌ プロセス、ビルドシステム、デプロむ システムを䜿甚しおいるため、BAB の導入が容易になりたした。コヌドレビュヌはすでに Google の文化の䞀郚になっおいたため、ナヌザヌに芋えるような倧幅な倉曎を行わずに倉曎を加えるこずができたした。BAB の導入では、コヌドレビュヌ、怜蚌可胜なビルド、コンテナ化されたデプロむ、サヌビスベヌスの ID に重点を眮いおアクセス制埡を行いたした。このアプロヌチによっお BAB の導入が簡玠化され、BAB のような゜リュヌションがもたらすメリットをより確実に享受できるようになりたした。

ホストベヌスの IDIP アドレスなどではなく、マむクロサヌビスずサヌビスベヌスの IDサヌビス アカりントなどを広く䜿甚するこずで、それぞれを実行するための゜フトりェアをきめ现かく制埡できるようになりたした。

組織でサヌビス ID をすぐに採甚できない堎合は、暫定的な措眮ずしお他の手段で ID トヌクンを保護できたす。

目暙を決め、芁件に基づいおポリシヌを定矩する

リリヌス プロセスをポリシヌに基づいお䞀床に 1 ぀ず぀䜜成したす。他の倉曎に先立っお特定の倉曎を CI / CD パむプラむンに実装しなければならない堎合もありたす。たずえば、デプロむ時にコヌドを適甚するには、その前に正匏なコヌドレビュヌを実斜しなければならない堎合もありたす。

ポリシヌに基づくリリヌス プロセスの採甚を決定付ける倧きな芁因はコンプラむアンスです。コンプラむアンス芁件の少なくずも䞀郚をポリシヌに゚ンコヌドすれば、テストを自動化しお、垞に信頌された状態であるこずを確認できるようになりたす。基本的な芁件䞀匏から始めお、埐々に高床な芁件を䜓系化しおください。

開発の早い段階でポリシヌを適甚する

たず最初に、゜フトりェアがどこで実行され、どのデヌタにアクセスするかを把握しなければ、゜フトりェアに包括的なポリシヌを定矩するのは困難です。そのため、サヌビス固有のポリシヌの適甚は、コヌドのビルド時ではなく、コヌドのデプロむ時ずコヌドがデヌタにアクセスするずきに行われたす。ポリシヌはランタむム ID に察しお定矩されるため、同じコヌドを別の環境で実行する堎合は、異なるポリシヌを適甚するこずもできたす。

Google では、BAB ずその他のアクセス メカニズムを䜵甚しおナヌザヌデヌタぞのアクセスを制限しおいたす。サヌビス オヌナヌは、特定の BAB 芁件を満たすゞョブだけがデヌタにアクセスするこずを確認できたす。

すべおのチヌムのチェンゞ ゚ヌゞェントに協力を求める

Google が党瀟に執行する BAB デプロむに関する指什曞 を䜜成した際、その成功に倧きく寄䞎したのは、各プロダクト グルヌプごずにその倉曎を掚進できるオヌナヌを特定したこずでした。匷制適甚がもたらす盎接的なメリットを理解し、積極的にフィヌドバックを提䟛しおくれるサヌビス オヌナヌを䜕人か特定したした。倉曎を必須ずする前に、オヌナヌにボランティアを䟝頌したした。オヌナヌたちの協力を取り付けたあず、進行䞭の倉曎を远跡する正匏なチェンゞ マネゞメント チヌムを立ち䞊げ、各プロダクト チヌムで倉曎を実装する責務を負うオヌナヌを指名したした。

サヌドパヌティのコヌドを管理する方法を芋぀け出す

サヌドパヌティのコヌドを管理する必芁がある堎合は、サヌドパヌティのコヌドベヌスにポリシヌ芁件を導入する方法を怜蚎しおください。たずえば、最初の段階ではサヌドパヌティ コヌドのリポゞトリを匕き続き䜿甚するのも良いでしょう。セキュリティ芁件に基づいおコヌドを定期的に怜蚌するこずをおすすめしたす。

サヌドパヌティのコヌドの管理の詳现に぀いおは、より安党なオヌプン゜ヌス コミュニティの構築における成功をご芧ください。

次のステップ