鳩小屋

落書き帳

2021年度:読書

去年度買った本の感想です。

インフラ技術は、物理サーバで動かすベアメタル、計算リソースをエミュレートする仮想化、物理リソースをアウトソースするクラウド化、OSのリソースを効率よくサイロ化するコンテナ化といった具合で進化してきました。
特にクラウドやコンテナの利点をアプリレイヤまで最適化するクラウドネイティブ分野では、従来型の開発モデル、アーキテクチャ、コア技術が一気にパラダイムシフトしてきています。
セキュリティ側もこれらに追随していく必要があり、例を挙げるだけでも頭が痛くなりそうなボリュームですがこればかりは地道に理解していくしかありません。
・DevOpsに合わせたセキュリティガバナンス、プロセスの実装
アジャイル開発おけるセキュリティ実装プロセス
クラウド・コンテナセキュリティ
・マイクロサービスやゼロトラストモデル
・CICDやソフトウェアサプライチェーン

個人的には、国防総省のDevSecOpsリファレンスやCNCFのソフトウェアサプライチェーンに興味があり、ここら辺を理解するのが当面の目標です。
そういった背景もあり、なんとなくクラウドネイティブチックな書籍が並んでいる状況です。

software.af.mil
github.com

読んだ本

実践入門 Kubernetesカスタムコントローラーへの道

k8sカスタムリソースやカスタムコントローラの貴重な日本語資料。オペレータまわりの基礎知識をさっと学ぶにはいい本でした。
k8s拡張機能の中枢を担っている機能なので大雑把に理解しているだけでも視野が広がるようになりました。
ただ、カスタムコントローラ自体が難しいので読んだ次の日には頭から抜けていたような感じです。

入門 監視

そもそも運用者さんて何やってるんだっけ?という状態だったので読みました。
監視の基本的な考え方・心構えがしっかりと書かれていて参考になりました。
DevOpsやマイクロサービスまわりへの言及もありSREにもつながりそうな知識が得られました。

OpenShift徹底入門

OpenShiftはエンタープライズ向けに魔改造されたk8sですが、公式ドキュメントがわかりづらく苦しんでいたのでtwitterで見かけて即購入しました。
開発者、運用者、セキュリティ担当者の視点から幅広く機能が紹介されていて、OperatorHubや最近買収したstackroxの機能など、初めて知った機能もたくさんありました。
まだまだ乏しい日本語書籍の中でも素晴らしい出来です。OpenShiftわかんねーという方は買って損はないと思います。

Effective DevOps

なんとなく言葉は知っていても何がDevOpsで何がDevOpsじゃないのかまったく分かっていなかったので読みました。
4本柱としてコラボレーション、アフィニティ、ツール、スケーリングの説明と実践的な話が書かれているところが中心です。
特に組織の文化づくりのところが頭から欠けていたので勉強になりました。「うーん、これはDevOps!w」みたいなことが言えるようにはなりそうです。
ただ、日本(特にSIer依存のユーザ企業)ではまだまだウォータフォールが根強く、普及するのがもう少し先になりそうな気がしました。
個人的には、ウォータフォールは局所的な自動化はできても本質的に成長が頭打ちな面があるため、国外のように内製化と併せて浸透していくといいなーと思いました。

解体 kubeadm

k8sの構築ツールはいろいろありますが、そもそもどうやって構築されてるんだっけ、どうやって動いてるんだっけ。そんな疑問を劇的に解決してくれる書籍です。
k8s脳死で構築したり触っていたりすると、これ何の証明書だっけ?これ何の鍵だっけ?この設定ファイルとあの設定ファイルの違い何だっけ?みたいなことがよく起こります。
この書籍ではkubeadmによる構築処理が丁寧に解説されているため、上記のようなファイルがいつ生成されてどこで使われるのか把握できるようになります。

アジャイルサムライ

業務的に滝の呼吸に触れることが多いのでアジャイル開発は1ミリも分からない、そんな状態から読み始めました。
内容がフランクで読みやすく、アジャイル開発の考え方やワークフローが飽きずに頭に入ってくるような内容でした。
アジャイル開発のなんたるかがエアプレベルですが理解できたので、DevOpsとの違いやなんちゃってアジャイルとの区別もついてきた気がします。
セキュリティ実装のプロセスを考えると、滝の呼吸の手法どおりにはいかず、なかなか頭の痛いところがあるなと感じました。

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版

私はWebというよりアプリケーション周りの知識が壊滅的なので、基礎から勉強し直しました。
HTTPヘッダ、CORSなど前提知識も説明があり、実装レベルの話も書いてあるのでポンコツな私でもさくさく読み進められました。
改版されたらまた買うぐらいの良書です。

Web API

Web APIの話も当たり前になってきているのでさすがに理解していないのはまずいと思い読みました。
WebAPIのことが体系的に書かれていて勉強になりました。
開発者には遠く及びませんが、インフラ周りに関わる身としてはいい塩梅のボリューム感でした。

Kubeletから読み解くKubernetesのコンテナ管理の裏側

techbookfest.org

Kubeletって何してるんだっけ。それを日本語で解説している貴重な書籍です。
ユーザには抽象化されているのでk8sを使う分にはほとんど必要ありませんが、k8sの内部挙動を追う際に重宝しそうです。

Kube API Server ~Kubernetes API Serverの内部実装を見てみよう~

techbookfest.org

API Serverって何してるんだっけ。それを日本語で解説している貴重な書籍です。
こちらもk8sを使う分にはあまり必要ありませんが、k8sの内部挙動を理解する際に重宝します。

ゼロトラストネットワーク ―境界防御の限界を超えるためのセキュアなシステム設計

ゼロトラストまわりもまだまだバズワード感がありますが、体系的に理解するために読みました。
外部からの侵入ではなく、侵入された後の水平展開や内部犯による脅威を抑制することが大まかな目的ですが、TPMなどから提供された信頼を認証、認可で適用して信頼の連鎖を積み上げたり、開発工程における署名、識別主体のサイロ化などが紹介されていました。マイクロサービスアーキテクチャのセキュリティもゼロトラストとなることが多いのでIstioの機能を理解・納得するのに参考になりました。
ただ、正直ここまでやるか?というぐらい暗号ハッシュや証明書が出てくるので目が回ります。具体的にはmTLSが当然のように登場してきて、まじめに署名書購入していたら破産してしまうぐらいの勢いです。
費用対効果を考えると疑問符が付くこともあるので、ほんとに必要なのかよく考えてから導入すべきかと思います。

Dockerコンテナ開発・環境構築の基本

DockerやKuberntesについてはあまり得るものがありませんでしたがgithub actionsとargo CDを利用したCICD環境構築の手順が説明されていて勉強になりました。CICDホンノチョットデキルぐらいは言えるようになったかもしれません。
テスト自動化とかは全くやったことがないので、実践レベルではもう少し修業が必要そうです。
個人的にはソフトウェアサプライチェーンまわりで話題に上がるのでCICDのセキュリティも興味があります。

イラストでわかるDockerとKubernetes

買った時点でruncやcontainerdのコードリーディングに着手していたので、個人的には読むのが遅すぎました。
低レベルコンテナランタイムの存在やオーケストレータへの言及がありますが、内容が抽象的であまり得るものがなかったというのが正直なところです。
読み直すビジョンが浮かばなかったので、メ〇カリで出荷しました。出荷先で役に立っていることを祈ります。

セキュリティのためのログ分析入門

Hardening競技に参加することになり、精神安定剤として購入しました。勉強にはなりましたが競技で役に立ったかは微妙です。

Kubernetes完全ガイド

Kubernetesの日本語版聖書です。2版は1.18版が対象となり少し古くなってきていますが、まだまだ現役かと思います。
Kubernetesわからんという人はとりあえずこれ買っとけば間違いないです。

Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド

Docker/Kubernetesのセキュリティがバランスよく解説されています。日本語書籍としてはトップクラスの出来かと思います。

Container Security: Fundamental Technology Concepts That Protect Containerized Applications

洋書ですが、unshareを使ったnamespaceの分離など、コンテナ技術の本質的な実装に踏み込んだ内容をセキュリティ視点で解説した書籍です。翻訳版が出たらまた買いそうです。
docker runを実行しているだけでは絶対に身につかないようなエンジニアリング的な視点が詰まった書籍なのでエンドユーザの視点よりも踏み込んだ理解をしたい方にはおすすめです。
一方、なんとなくコンテナが使えればいい、なんとなくコンテナセキュリティを理解したいという方には少しヘビーな内容かもしれません。

新版 CISSP CBK公式ガイドブック

CISSPの参考書。エイゴヨメナイノデタスカリマシタ。
独学だとどうしても知識が偏ったり穴が開いたりするので、体系的な勉強という意味では役にたったと思います。あと、米国資格ということもあってNIST文書の用語がすらすらと理解できるようになった気もします。
資格やレギュレーションこそがすべてみたいな思想は大嫌いですが、無いよりはマシなので、また気が向いたら他の資格にもチャレンジするかもしれません。
個人的には既存の知識や技術をうまく扱う技能(テクニック)、道しるべがなかったとしても自力で解決する工学力(エンジニアリング)、両方のバランスが大事だと考えています。

Learn Kubernetes Security: Securely orchestrate, scale, and manage your microservices in Kubernetes deployments

めぼしい日本語書籍を読み終わったので洋書に遠征しました。知っていることも多かったので、知らなそうなところを重点的に読みました。
カバー範囲もしっかりしていたので英語が読めるのであれば悪くない内容だと思います。
日本語書籍でもコアな部分は拾えるので日本人が無理して読むほどの価値はないかもしれません。

読めてない本

実践 Terraform

IaC周りでよく聞くTerraform、いかほどものか勉強するために購入しましたがペンディング状態です。気が向いたら読みます。

ステーティング Go言語

ほとんど勉強せずにGoコード読んだ感想としては、とにかく可読性が高いという印象を持ちました。
最低限のプログラミング言語知識があればノリと雰囲気で読めることも多く、C+のようなオナニー言語と比較すると好印象です。
ただ、理解していないとどうにもならない時もあるため、ちゃんと勉強が必要と考えています。

SRE サイトリライアビリティエンジニアリング

インフラ技術者や運用者のスキルを併せ持ったような技術体系と理解していますが、書籍の分厚さに圧倒され未着手状態です。
前提知識も多く、急がば回れの精神で外堀知識が揃い次第挑戦したいと思います。

分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計

マイクロサービス周りの基礎知識を身に着けるため買いましたが、まだ読めていません。
マイクロサービス自体は銀の弾丸ではないので、極端に需要のある分野とは思っていませんが、クラウドネイティブ分野の範疇としてもう少し基礎を固めておきたいという思いがあります。