BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 集中型モジュールミラープロキシとチェックサムデータベースを提供するGo 1.13

集中型モジュールミラープロキシとチェックサムデータベースを提供するGo 1.13

原文(投稿日:2019/09/06)へのリンク

Go 1.13は、言語はほとんど変更されていないが、ツールチェーンやランタイム、ライブラリに多くの改善が行われている。その中には、比較的議論の余地のあるデフォルトのGoモジュールプロキシや、Googleプライバシーポリシの受け入れを開発者に求めるチェックサムデータベースも含まれている。

言語レベルでのGo 1.13は、2進数の0b、16進数の0x、8進数の0oなど、統一性のある数値リテラルのプレフィックスセットをサポートした。また、演算子<<>>で符号付きシフトカウントを使用できるようになり、uint型にキャストする必要がなくなった。どちらの変更も、従来バージョンとのソース互換性というGo言語の約束は損なっていない。

さらに改善されたのはツールチェーンである。go getがより洗練されて、モジュール対応とGOPATHモードでの一貫性が向上した。さらには、パッケージ取得時のバージョンサフィックス@patchのサポート、バージョン文字列のバリデーションの追加、ヒープではなくスタックに割り当てられる変数と式に関する分析の改善、などが行われている。

特筆すべきなのは、Goモジュールシステムにおいて、Googleが先日ローンチしたモジュールミラーとチェックサムデータベースがアウト・オブ・ボックスでサポートされるようになったことだ。モジュールミラー(module mirror)は、パッケージソースのプロキシとして機能し、Gitなど純粋なバージョン管理システムよりも効率的なフェッチング機構を提供することによって、go getのパフォーマンスを改善しようとするものである。例えば、モジュールミラーでは、リポジトリの完全なコミット履歴をダウンロードする必要はなく、パッケージのバージョンのリスト、パッケージバージョンに関する情報、そのバージョンのmodeとzipファイルといった、パッケージ管理により適したAPIを提供する。チェックサムデータベースは、パッケージの信頼性を確保するためのものだ。従来のGoパッケージマネージャでは、go.sumファイル(基本的にSHA-256ハッシュのリストを含む)を使用してパッケージの信頼性を確保していた。このアプローチでは、パッケージの信頼性は最初のダウンロードで確立され、その後はダウンロード毎にチェックされる。チェックサムデータベースは唯一の真実のソース(single source of truth)である。go.sumをデータベースに格納されている情報と比較することにより、初回のダウンロードにおいても、そのパッケージの正当性を保証することができる。

このチェックサムデータベースを使うことで、goコマンドは、信頼性の低いプロキシを安全に使用することができます。監査可能なセキュリティレイヤが上にあることによって、プロキシサーバやオリジナルのサーバは、意図的にも、無意識にも、あるいは偶然でも、正しくないコードをキャッチされずに提供することはできなくなります。

モジュールミラーとチェックサムデータベースを新たに発表したことは、その反応として、go getのデフォルト設定を変更しない場合、Googleが開発者の使用しているパッケージを追跡可能になるのではないか、という開発者の憂慮を引き出すことになった。

自分の使い方を言語の開発者に報告する言語というのは、私の23年間のプログラミング歴の中で初めてです。前例がありません。

もうひとつの不満は、要件となっているGoogleプライバシポリシが、将来的にいつ変更されるか分からない、ということだ。開発者は、次の環境変数を設定することで、go getのデフォルト動作を無効にすることができる。

go env -w GOPROXY=direct
go env -w GOSUMDB=off

ただし、これは十分に確実であるとは言えない。というのも、新しいマシンのなどで誤って設定されたり、su -を使用する場合など知らずにクリアされる場合があるためだ。

新機能であるモジュールミラーとチェックサムデータベースがGoモジュールシステムのパフォーマンスとセキュリティを改善することは間違いない。しかしながら、特にGoogleのプライバシポリシの受け入れによって複雑な問題の発生する可能性のある企業においては、プライバシを重視する開発者に受け入れられないために、Google Goチームがこの2つの使用をデフォルトで"オフ"にするか、もっと確実に無効にする手段を提供することで、アプローチを見直すようになる可能性もある。InfoQでは、新たな情報が入れば、この件について引き続き報告する予定である。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT