音声書き起こし
1. オープニング
@potato4d
こんにちは、UITのpotato4dです。ユーザーインターフェースとテクノロジーアイスル開発者のためのウィークリーポッドキャストUIT inside。今週も始めていきたいと思います。今回はですねnpmのプロベナンスていう新たにと、登場した機能について、きたさんに語っていただこうかなと思っております。よろしくお願いいたします。
@odan3240
よろしくお願いします。
2. npm provenance とは?
@potato4d
では、早速ですね。npmのプロベナンスについて聞いていきたいなと思うんですけど、最近出たばっかりのやつなので、そんなにこうまだメジャーじゃないのかなと思っていて、まず、概要から教えてもらってもいいですか。
@odan3240
はい、そうですね、なんかま出たのが先月中頃に出たま新機能でしてま。これ何かっていうと、その npmのパッケージとソースコードのま、対応関係をなんか証明するための機能になりますね。例えば、最近だと、なんかサプライチェイン攻撃とかって言われるものがあって、ギターバンスホースコード上にはないんだけど、npuのパッケージ内になんか
@odan3240
悪意やるコードがこっそり混入されてて、セキュリティティ的な問題になるっていうのが、まあ結構話題になったりすると思うんですけど、ま、そういうのをなんか防止するための機能ですね。はい、
@potato4d
あー、パッケージの各リリースも出所がわかるようになる
@odan3240
そうですね。はいですね、
@potato4d
ですね、あ、これまでもあれですよね。npmジェーsのサイトとかで、あと、パッケージェイソンに書いてあるので、リポジトリーのurlとかは貼られてましたけど、それはこうあくまでもあ、そうでパすねケージに紐づくものであって、なんかそれだけだと こう。本当にそのリリースのコードが紐づいてるかがわからないんで、そのリリースごとにどっから持ってきたのかがそ、
@odan3240
そうですね。になるっていう風なバージョン単位で言ってことですね。
@potato4d
おお、なるほど、なるほど、すごいかなりあれですね。最近、問題が起きがちなところでもあるんで、そこに対してnpmが結構対応してきてくれたっていう風な感じ。
@odan3240
そうですね。
@potato4d
なんか、具体的な。このプロベナンスの紐付けって、どういう風な情報と紐付くんですか。リリースっていうのは、
@odan3240
では、そうですね、色々情報あるんですけど、ま、1つは、この今回のプロベナンスの機能って、そのGitHub Actions 上で npm publish する場合 だけ利用できる機能なんですよね。ほうほうはい。なので、まず1個送信ししてる情報としては、その GitHub Actions のメタデータ、そのギッドハブクションズには、そのなんかラnidっていう概念があって、アクションズ実行するたびに、なんか
@odan3240
通し番号こういうの振られてるんですけど、ま、そういうものだとか、あと、どのリボストリで実行されたかとか。あー、なるほどな。あとは、まあ、その 多分、コミットハッシュのは sha1 が送信されてたりとか、その辺のデータが送られてるみたいです。
@potato4d
なるほど、あのギッドハブアクションズがやとギッタハブ上での取り扱いに限定しているからこそ、より詳細な情報と紐づくようになってるっていう風な感じ。
@odan3240
そうですね。一応なんかデータ構造的には、そこはなんか柔軟に変えれて、 今んところ対応は進んでないんですけど、別のCICDサービスだと、まあ、それに近いようなデータが送信されるようにはなるとは
@potato4d
思うんですけど。なるほど、なるほど、じゃ現状は一応ギタブにこうべったり、紐そぺしま
@odan3240
たり、紐づいてるような。なんかデータが送信されてますね。
@potato4d
はいはいはい、今後まそのどのしどのあのギットホスティングサービスで管理されていて、まどのC合から実行されたかみたいなもこうある程度柔軟になる可能性が柔軟
@odan3240
になるとはい思いますね。うん、
@potato4d
うん、じゃああれなんですね。ギターブアクションズに限制することによって、まどのリポジトリのどのCIで、それが実行されて、npmファブリッシュされてきたかがわかるっていう風な感じなんですね。
@odan3240
そうですね、はい、うん、
@potato4d
うん、うん、うんで結構あれですね。なんかあの少し前とかだったら、npmが今って基本2AAにファブリッシュするきはしないといけないみたいなこがあるかなと思うんですけど。 と、その前とかって結構なんかその認証情報取られて、勝手にパブリッシュされてたみたいなのが結構あったかなと思うんですけど、そういうのがこう防げるってか、そういうのがされてないってことを証明できる。そ。
@odan3240
そうですね、はい、
@potato4d
なんですね、なるほど、なるほど、おーかなりなんかあれですね、今の時代、
@odan3240
そう時代そう
@potato4d
機能ですね一応これはなんか特にあれですか。どれかしらをこうなんかの契約が必要とかっていう話ではなくて、シンプルにこのままもう誰でも使えあるそ、
@odan3240
誰でも使えてうん。まあ、そのnpmjsのサイトになんか具体的なギッドハブアクションズのコードも紹介されてて、はいはい、なんか ここをこう変えるだけでいいよみたいなあ、
@potato4d
あー、なるほど、なるほど、
@odan3240
あいやることとしては、なんか、そのギッハブアクションズに、idトークをライトできるパーミッションを をつけるのと、npmパブリッシュを実行するときに、プロペダンスのオプションオプションを追加するっていう、その利点だけで対応できる感じなってますね。
@potato4d
なじゃ、これまでnpmァbリcをギッドハブアクションズとか、ま、あるいは他のCアサービスで使ってたら、それをギッドハブアクションズに移行して。そうですね。最後にオプションをつけて、トークンを載せてやるだけでオう感じ
@odan3240
ますね。ていう感じですね、だから、ほんと開発者にとってはすごいカパンマン簡単に有効化できると思いますね。
@potato4d
おお、なるほど、なるほど、いいなとは思いますねなるほど、なるほど、これnpm側のCLI側もアップデートが必要なん。
@odan3240
あ、そうですね、レイティスト今のレイティストのバージョンなんぼだったら、ちょっと覚えてないんですけど、最新版だけ最版にアップデートする必要はあありますね。はい、
@potato4d
なるほど、ただま最終版にアップデートしてしまえば、そんな感じで、簡単に簡単に。はい、
@odan3240
生きる時間です。
@potato4d
ですね、じゃあなんかあれですね、もうCIでパブリッシュしてるってやつは、もうすぐにでもすぐにでも、はい、プロェナンスつけられるっていうりますね。なるんですね、かなり早速やってみれそうな、これ聞いてる人とかもそうですね、パッケージ持ってたらすぐやりそうですね。 ちなみに、もう1つお聞きしたいんですけど、なんか結構もう最近だとnpm使ってる人もかなり多くなったかなと思うんですけど。まだあのnpm以外のパッケージマネージャー使って、そのpnpmとかやんとか使ってるとかそんなのも多いんでしょうか?
3. すぐにできる利用方法
@odan3240
npmはなんか8.4.0で対応したみたいですね。おお、
@potato4d
じゃあもうもうす。あの、そうですね、アップデートさえすればすぐ使える、
@odan3240
使えるま、先週のリリースで対応したみたいで、やもなんか1周見てる感じだと、1周がた 出て、それに対応する。プロリクも現状ドラフトなんですけど、できてるんで、まあぼち近々近々そう、そのうち対応する未来が見えるなという
@potato4d
あ、なるほどな。
@odan3240
なるほど、気がしますね
@potato4d
じゃあ、ちょっとあれですねや、あの、他のパッケージやとか使ってる人は待ちつつ待ちつつ。そうですね。 npmとかの人は、すぐにやっちゃうっていう風な感じなんですね、ありがとうございます。 次、ちょっとのあの検証、ロベナンスの検証の詳細みたいなところについても、お伺いしたいんですけど、なんか、これって検証してるのは、どの知り合いで実行されたかまでを検証してくれてるっていう風な
4. 裏側の仕組みややれること
@potato4d
状態なんですかね。というのも、パブリッシュする場合の今のその問題や、そのサプライチェーン攻撃とか。 なので、あの問題になり得るケースって、結構そのソースコードが本当に一致してるのかどうかみたいなのが、多分課題感かなと思っ。はいはいて、はい、これもその課題感の解消の一環というか、 どの試合で実行されたかがわかることによって遡って、その本当にちゃんとそのリポジトルに紐づいてるかがわかるみたいな感じになってるかなと
@potato4d
思うんですけど。はい、こうやって、ソースコードの中身というか、例えば、そのハッシュとかまではまだ見てくれないって感じなんですかね。
@odan3240
すそうですね、な
@potato4d
ま、例えば、そのリポジトリにあるソースコードとciで、パブリッシュした時のソースコードがちゃんと同じコードなのか、みたいなまではそこまでは
@odan3240
見てくれてないと思いますね。うん、まただまあ GitHub Actions のまあ、ログ見るとどこでチェックアウトしたかとかま、チェックアウトした後に、まあ、なんか任意のコードが混入 されてないかみたいなのは確認はできると思うので。あーはいはいま一応目視での確認はできるけど、おそらくま。電子署名側には乗ってないは、
@potato4d
はいはいはい、うん、なんか自動的にそこまではやってくれないが、別にあれですよね。問題があるなって思ったら、見に行った見に本当に問題があるかどうかがわかるってそうです。感じなんです じゃ、まだあれなんですね、ほんとに正しいかどうかまでは、自動では判断してくれてない、
@odan3240
話してくれないって感じです。はいうん、
@potato4d
うん、うん、これからっていう風な感じなんですね。ちなみに、なんかそういったなんかまだやってくれてないとことこととかって、なんか他にあったりするんで
@potato4d
あー、その裏側で動いてる
@odan3240
やつかです。そうですなんか、裏側でしょ署名とか署名の検証をやってくれるサービスっていうのは、結構汎用的に構築されてて、はい、元々そのドッカーの リテスト利用に開発されたのが、今回npmでも利用できるみたいな話だったんで、
@potato4d
シグストアってやつが
@odan3240
あ、そうですね、はいすか、cgstoreっていうサービスがまあ、色々やってくれてるんですけど、 ま、多分パイソンのパッケージマネジャーとか、ルビーのパッケージマネージャーとか各言語、無言パッケージマネージャーも、なんか そのギターブアクションズからパブリッシュすれば。こういうなんか、あー、認証がついてくれるってのはある未来かなとは思いますね。
@potato4d
はいはいはい、あ、このsgstoアeをベースに、その署名がパッケージに関しては、署名がそうで常すねあるような常に世界あるよに変わそうでっていう風なところですね。
@odan3240
シグストアの解説で、なんかよく見たのがな。なんか、そのレッツエンクリプトによって、なんかhdtpがhttp。 椅子にそのなんかウェブの世界はなったじゃないですか、はいはい、それと同じような感じで、パッケージにシグネチャがついてくるっていうのは、今後一般的な世界観になってくのかなみたいなあー気はします。
@potato4d
いや、なんかでもそれすごいなんかいいですね。これまでだと、それこそなんか署名とかって、アプリの世界とかだと、ストア用のものとか、署名されてるものがみたいな感じで、企業管理のものだったら、ちゃんとそこって厳密にできてましたけど、やっぱり なんか、オープンソースの文脈とかんの資産だと、あんまりちゃんとこうされてなかったところがあると思うんで、根本の意識から変わっていく、
@odan3240
みたいな感じがありそうですね。
@potato4d
なんかでもあれですよね、こう、意外と著名みたいなところって問題が起きないと意識が芽生えづらいですけど、逆にこう なしょ。悪いことではあるんですけど、まあ、むしろなんかnpm的には問題が先に顕在化してしまったんで、 そのやるべきだよねっていう課題意識がちゃんとあるっていうのは、なんか、こう浸透していくための状況としては、いい状況な気なのかがなのかもしれないですよ。
@odan3240
まあ、失敗から学ぶみたいな、そういう感じなってます。今
@potato4d
ですね、ま、あれですね、なんか、できれば、その署名がオッケーにするまでに、いろんな検証が挟まって、できるだけ厳密になって。そう
@odan3240
ですね。嬉しいでいすね、
@potato4d
なんか、どうしてもそのトランスファイルとかが入る都合上、ファイルまでは見れないにしても、なんか、最低限コミットがちゃんとスタートとなるコミットが完全にしてるのかとかは、見てほしい感じは
@odan3240
ますよ。あー、 あーま、コミットの1ぐらいはまだみ見てくれてるのかな、見てくれてるんですかね。それか、でもまだあれか想定される。ソースコード、リポストリとコミットが存在することを検証できてはないって書いてるから。
@potato4d
あー、じゃあ、もう少しもう。まあ、これからこれ
@odan3240
れからなんですかね。とりなんかまあこの仕組みのかっとけは多分続々アップデートされるはずだからですね。 なんか、恩恵にはどんどん預かれるなという気はしますね。
@potato4d
なんか加えて、別に我々は多分、今後もやることはキーを用意して、コマンドを打つだけそ
@odan3240
お良いで。そうですね、多分
@potato4d
う裏がどんどん良くなって良くなってくるんで、みたいですもんね。いや、これはちょっと期待が期待が。はい、 あの、今回収録に事前にあたあたって、あのー、キタさんがあの全にまとめてもらってるす。あのー、スクラップを見てたんですけど、はい、結構見ても、 やっぱり裏側にある技術のsグストアとかをまずインプットしないといけないないのもあって、結構なんか我々もこのあたりの情報。今後、
@potato4d
キャッチアップしておかないとこう。なんとなく証明してるけど、なんなんでそれがいいことなのかとかがわからないんで、こうちゃんと理解しないといけないよなと思わされましたね。
@odan3240
あー、確かにそうですね、ま、フロントエンドとはまた、ちょっと毛色が違いますよね。なんか
@potato4d
ですよね、
@odan3240
結構暗号技術と言いますか。また、別のお軸のせ、ちょっと話なんで、はい、
@potato4d
うん。なんか、その専用の専門性というか、っていう話にはなるんで、なんか完全に理解する必要はなくても、なんとなく実行してるだけにはならないよう。
@odan3240
そうですね、
@potato4d
理解は深めていきたいな
@odan3240
品川の仕組み
@potato4d
しますね。
@odan3240
それ言うと、今回まあ結構なんか裏側の仕組みを。まあ、追うために、なんか、cーgstoreの。まあ、なんかソースコード公開されてたんで、ま、それを読んだりとかはしましたね。
@potato4d
あー、なるほど、なるほどいいですね、
@odan3240
その署名するってことはどっかで、そのキpiが生成されてるはずで、まあ、はい。どこでキpiが生成されて、それがどう管理されてるかっていうのが 気になってま。ソースコードを読んだりしましたね。あー、なるほど、
@potato4d
あ、これがそのスクラップにも載ってるそう。npmのフェッチで、プットで生成したやつ送ってみたいなつそうを。そうですね、はい、やってる一連の処理のとこなんですよね。 結構今、シグスターの方を読むと、なんか、シグスターとそのえぴnpmcliのこう行動読むと、まお概ね。どういう挙動してるかは理解で
@odan3240
あ、全然理解できると思いますね。お、そんな分厚いコードでもないし、まあ、シstoアの方はpsで実装されてるんで、すごい読みやすいみやすい、はい、
@potato4d
ちょっと読んでみようかなという なんかもしよければ、あのー、これお聞きになってる皆さんもおーシ本の方にですね。スクラップのurlと、リポジトルなurl両方貼っておこうかなと思うんで、読んでみてもらえると いいのかなと思います。ちょ、そんな感じで、今、あの割と外観の話
5. 実際にやってみた話
@potato4d
をえっと聞いていったかなと思うんですけど、なんか実際もうすでにあのプロベナンス機能って使ってみたりしましたか。あーす、
@odan3240
そうですね、この前のゴールデンウィークで、そのちょっとnpu周りのキャッチアップしようって思って、なんか、自分専用のなんか、プリキュアのコンヒグとか、 esリントをネームスペース付きで、そのなんかnpmパッケージ化するってことやってたんですけど、ま、それの一環で。はい、実際に試してみましたね。おお
@potato4d
お、なんかきっ果はもうかなり楽でした
@odan3240
楽あー、でもちゃいました。そうですね、なんか、あのチェンジセット経由でま、今回パブリッシュししたんですよね。その自分のなるほど、そのはいはい、 プリティアコンヒグのパッケージははいで、チェンジセット経由だと、ちょっとnpmパブリッシュではなくて、チェンジセットパブリシュっていうコマンドでまパッケージを公開する必要があって、
@potato4d
あーでそっちからmbパグビッシュがうら
@odan3240
でやってるそう裏でやってるので、なんかオプションを渡すのではなくてま、パッケージェーソンのパブリックコンフ、ヒグにプロベナンストゥルーを
@potato4d
あてる。うん、
@odan3240
追求するっていうま、ちょっと方法が違うんですけど、別の対応が必要でしたね。
@potato4d
あー、でもただなんかそれをあれなんですね。パケジェーソンであったり、書くだけで書くだけそうですね。あとは、もうやってくれるって感じだ
@odan3240
か、チェンジセットとかのアップデートは不要です。いましたね、
@potato4d
おお、なるほどなるほど、じゃあかなりあのー、npmcli直で使ってないっていうシチュエーションでも、簡単に
@odan3240
はそうですね。感じ試してないけど、例えば、ラーナとかラーナライトとかで、ブリッシュされてる方も、同様に、パッケージソンとかを 書き換えれば利用できるかなと。
@potato4d
あ、思いますね。なるほど、なるほど、いや、ちょっと私も手元にパッケージいくつかわれてやってみようかなと。あー、そう
@odan3240
ぜひぜひ、すごい簡単なんで、はい、
@potato4d
やってみます。では、クロージングに移ります。はい
6. クロージング
@potato4d
というわけで、今回はnpmに新たに登場したプロベナース機能について話してい ました。lineのフロントエンド組織、UITでは、このようにフロントエンドに関する議論や、意見交換を日々行っております。社内の勉強会などから始まった企画も、多くありますので、今後もUITインサイドにいて、色々情報を発信していければなと 思っております。また、このコトキャストについてのご意見やご感想があれば、ハッシュ、タグハッシュ、UIT、アンダースコアインサイトにてつぶやいていただきます。とスタッフの方できょ
@potato4d
わせていただきますので。ぜひぜひお気軽にご意見、ご感想などなどついたいただければと思います。それでは、今回はこれで終わりたいと思います。ありがとうございました、
@odan3240
ありがとうございました。