Go モジュールのミラーリング・サービス【正式版】
(この記事は「Go モジュールのミラーリングとインデックス化」を全面改訂したものです)
Google による Go モジュールの公式ミラーリング・サービスが正式リリースした。
モジュール・ミラー
ミラー・サーバ proxy.golang.org
は Go 言語のモジュールをミラーリングする一種のプロキシ・サーバとして機能する。
ただし,単純な透過プロキシではなく必要なバージョンのみ取ってこれるようになっているようだ。
ミラー・サーバは環境変数 GOPROXY
で URL を指定する。
GOPROXY
の既定値は Go 1.13 では以下のようになっている。
$ go env | grep GOPROXY
GOPROXY="https://proxy.golang.org,direct"
ミラー・サーバは複数指定できる(指定する場合はカンマで区切る)。
ミラーリングを無効にする場合は GOPROXY
に direct
のみを指定する。
go env -w GOPROXY=direct
ミラーリングが有効な状態で特定の非公開モジュールを使う場合は GOPRIVATE
に非公開モジュールのパスを指定する。
チェックサム・データベース
Go 言語では利用するモジュールの完全性(integrity)を担保するために go.sum
ファイルにモジュールの SHA-256 チェックサム値を格納しているが,最初にモジュールをフェッチする場合はチェックサム値が分からないため無条件に信頼せざるを得ない。
公開されているモジュールのチェックサム値がデータベース化されていれば未知のモジュールに対しても(チェックサム・データベースを参照することで)ある程度の信頼性を確保できるだろう。
チェックサム・データベースは環境変数 GOSUMDB
で指定する。
GOSUMDB
の既定値は Go 1.13 では以下のようになっている。
$ go env | grep GOSUMDB
GOSUMDB="sum.golang.org"
チェックサム・データベースを無効にする場合は GOSUMDB
に off
をセットする。
go env -w GOSUMDB=off
また特定のモジュールを検索対象から除外する場合は,ミラーリング除外のときと同じく GOPRIVATE
が使える。
公式チェックサム・データベース sum.golang.org
は Trillian による透過ログ(追記型データベース)で改竄に強いという特徴がある。
まぁ,最初から悪意のあるモジュールは排除しようがないが malicious code 混入は検知しやすくなるかも知れない。
【2019-09-06 追記】 バージョンタグの管理に注意
上で述べたように標準の sum.golang.org
は追記型のデータベースで,既存データの変更はできない仕様になっている。
たとえばパッケージ/モジュールのリポジトリにバージョンタグ(v0.1.0
など)を付ける際に,うっかり間違ったコミットにタグを付けたとしても,一度 sum.golang.org
に登録されると取り消すことができない。
手動でタグの位置を変えても,モジュール読み込み時に
SECURITY ERROR
This download does NOT match the one reported by the checksum server.
The bits may have been replaced on the origin server, or an attacker may
have intercepted the download attempt.
For more information, see 'go help module-auth'.
などと表示されビルドに失敗する。
少なくとも公開されているパッケージ/モジュールでは迂闊にバージョンタグを付け換えないよう,管理は慎重に行う必要がある。
ミラーリング・サービスのプライバシー・ポリシー
今回,正式稼働したミラーリング・サービスのプライバシー・ポリシーは以下のページある。
以前はいきなり Google のページに飛ばされて「なんだかなぁ」という感じだったが,多少マシになったようである(笑)
これによると公式サービスでは以下の情報を収集しているようだ。
取得した情報については
ということらしいが,最後の
てのがねぇ。 プライバシーに敵対的な企業のサービスだと思うとあまり利用したくない気分なのだが(もちろん偏見),はてさて1。
ブックマーク
参考図書
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。