STNSと連携して公開鍵認証し、gRPCでサーバーに定義した処理を実行させるツールalpette

今年の4月頃にgRPCの独自認証周りを調べて、勉強がてらそれを使ってツールを作っていた。ものとしては、サーバー側でタスクを定義しておくとgRPC経由で実行させられるというもの。リポジトリは takaishi/alpette

挙動としては、まずサーバー側で以下のようにタスクを定義する。

そして、クライアント側からタスクを指定するとgRPCでサーバーと通信、サーバーはタスクを実行、実行結果を返すというもの。

サーバーで何かするときにSSHすることが多いと思う。しかし、SSHだと実行者が持つ権限が結構大きい。適切に権限を設定すればよいのだけど、別のアプローチとして定義した処理しか実行できないようにするのはどうかと思い試しに実装した。また、gRPCの認証部分でSTNSと連携した公開鍵認証を実装している。標準で使えるSSL/TLSやGoogleを使ってもいいのだけど、STNSと連携することでユーザー管理をSTNSにまかせたり、将来的には監査などに活用できるのでは?と思いやってみた。

gRPCで独自の認証機構を利用する(SSH公開鍵認証編) という記事に書いているように、WithTransportCredentialを使うことで独自に認証機構を実装できる。基本的にはSSHと同じなのだが、サーバーはSTNSから公開鍵を取得するのでフローとしては以下の図のようになるはず(間違っている箇所があったら教えてくれるとうれしいです)。

なお、これだけだと認証通過後の通信は暗号化されない。そのため、パケットキャプチャすると処理結果が見えてしまう。例えばSSHのように共通鍵を用いて暗号化するという処理が必要である。

テンプレートからテキストファイルをパッと作れるCLIツール、patt

2017年に思いついてガッと書いたもののその後忘れていて、今朝見つけて「ええやん!」と思ったのでリファクタリングしたりリリースまわり整備したりして使えるようにした。リポジトリは https://github.com/takaishi/patt

これは何かというと、普段僕は日報や1on1のメモやその他いろいろなテキストファイルを扱っているのだけど、テンプレートをコピーして日付やらを変えて…というのが面倒と思うことがある。そこで、テンプレートを一括管理して、日付などからファイルを生成して任意の場所に置いてくれるツールを用意したというわけ。

テンプレートはテキストファイルで、Hugoでおなじみのfront-matterを使う方式。テンプレート名と配置先を情報として持たせる。

テンプレートを一覧表示するとこんなかんじになる。

テンプレート名を指定してnewコマンドを実行すると、ファイルができて便利。

ビルドとかリリースまわりの設定をいろいろやったり、Homebrewでインストールできるようにしたりというのをやっていた。ツール名、今朝見たときは「パッと作れる〜」みたいなギャグかなと思ったけど、いろいろコードとかみてるとpatternからとってた気がする。サブコマンドがちょいわかりにくいのでしばらくブラッシュアップしていこうと思う。

Apple Watch Series 4 40mmを数日使った感想

日曜に買って、数日使っている。基本的にiPhoneを持ち歩いているのが前提で書いていく。

まず、画面を見ると次の予定をパッと確認できるのがいいなと思う。こういうとき、PCやスマホ・手帳を開かなくてよくて、わずらわしさが減ったと感じる。自宅だとスマートスピーカーに教えてもらうという手もあるけど。ちょっとした通知をウォッチから確認できるのも便利だった。小さい画面で確認してもなあと思っていたけど、そこまで読みにくくもない(Series4だからかもしれない)。

活動量計としてももちろん使えるのだけど、記録するだけじゃなくてちょっと動けよ!とせかしてくるのは結構いい。思った以上に動いてるな、というのも可視化できる。寝るときにもつけて、睡眠トラッキングアプリも試し中。目が覚めたタイミングが記録に残っているのである程度睡眠の質はわかりそう。

最近はSpotifyばかり使っていて、ウォッチからどのくらい操作できるかわからなかったのだけど再生・一時停止や曲送りなどはできるようなので、そこは便利だった。iTunes/Apple Musicだともうちょっと複雑な操作もできるのかな。試してみてもいいかもしれない。

時計のテーマがいろいろあるけど、そこはあまり関心がなかったようで、今のところ情報の多いテーマで固定している。

ウォッチをつけてるとMacのロックが自動で解除されるのは便利。他の認証系アプリ・機能はまだ試していない。

ウォッチ用アプリがあまりないように見えるのが残念。GoogleカレンダーやGmailを見られると便利なんだけどな。

サイズとしてもG-Shockと同じくらいかコンパクトなくらいだし、時刻が見えるだけじゃなくていろいろいできるデバイスなのでつけてて損はないなという感じ。いかに長くつけるか、というのは考えず、家でリラックスしている時とかは外していいし、気分によってはつけない・別の時計にしてもいいじゃんという心構えでいくつもりでいる。心拍数など記録できるということもあって、ついつい完全性を意識してしまうので。

 

 

Kubernetes Meetup #13 でKnative Servingの紹介をした

Kubernetes Meetup Tokyo #13 で、Knative Serving 入門という話をしてきた。台風で一度延期になったが、もとは9月頭のイベントでKnativeが発表されて1ヶ月くらいのタイミングだったので、考え方やアーキテクチャについての紹介をした。いくつか質問もいただき、ありがたい限り。今回はたまたま?Kubernetesの拡張に関係するセッションが多かったが、自分はまだまだそこまでいけてないのでやっていかねばという気持ちに。



USB-RJ45コンソールケーブルを購入してRouterboardの設定

これまでRouterboardをDHCPサーバーにしてiMacなどにアドレスを払い出していたのでダイレクトにWebfigにアクセスできていた。しかし、ネットワーク構成を変更しているときにWebfigにアクセスできなくてRouterboardの設定ができなくなることがあるので、常に設定できるようにシリアルコンソールケーブルを購入した。

Amazonで検索してすぐ届くお手頃なものを選択。ドライバいれてHomebrewでc-kermitをいれて接続できる。このへん、SSHでアクセスして設定みたりするくらいしか経験なかったので、繋がるまで結構苦戦した。1回繋がって、SSH/Webfigで繋げるようにしたので後はどうにでもなりそう。USB-RJ45ケー—ブル、CISCOの互換品なら安いんで1本持っておくと役立つと思う。でもこういうのやる人はみんな持ってそうだな…

参考:http://blog.rchapman.org/posts/Getting_shell_on_a_RouterBoard/

 

【CISCO互換ケーブル】FTDI chipset USB RJ45 コンソールケーブル
Lontion Industrial
売り上げランキング: 2,582