セキュリティのためのログ分析入門を読み終わりました

セキュリティのためのログ分析入門を一通り読み終えたので書評です。

セキュリティのためのログ分析入門 サイバー攻撃の痕跡を見つける技術:書籍案内|技術評論社

評価

★★★★★☆☆☆☆☆(5/10)
評価の目安はこちら

オススメできる人

  • サーバの管理業務を行う人

オススメできない人

  • アプリケーション開発者

知っておいた方が良い内容ではありますが、
セキュリティのためにどういうログ設計をすべきかという話はないです。

感想

ApacheやOSが出しているログからどのようにして攻撃検知するか、
ログを分析した結果をどのように使うかというのが載っています。

想定読者がシステム担当者や情報セキュリティ部門なので、
どのようにログを出すのかといったところはあまりないです。
基本的にはOSコマンドによる解析がメインで何かしらのツールに限定している内容ではないです。

私自身はサーバサイドのエンジニアで開発よりなので想定されている読者ではないかと思います。
それでもセキュリティ部門の人たちはこういうことをやるのかというのが何となくわかった気がします。

[改訂新版]内部構造から学ぶPostgreSQLを読み終わりました

データ分析基盤構築入門を一通り読み終えたので書評です。

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則

評価

★★★★★★★☆☆☆(7/10)
評価の目安はこちら

オススメできる人

PostgreSQL9系を触って人にとっても
PostgreSQLの復習と10によって変わった部分の把握としてはお勧めできると思います。

オススメできない人

タイトルにもある通り内部構造に注力しているので
SQLの基本的な部分を把握していないと読むには苦労すると思います。

感想

「内部構造から」とある通り下記のようなことが説明されており、
その上でどのように設計・運用していけばいいのかが書かれています

  • プロセスやメモリがどうのように管理されているのか
  • ファイルの置き場所や内部構造はどうなっているのか

PostgreSQLを使ってシステムを開発する際の
インストールから設計、運用までの一通りのライフサイクルは網羅していると思います。

PostgreSQL 10ベースということで、
9.6以降で変わった設定内容の説明があったり、レプリケーションの話題が入っていたりと
新しい部分についても説明があるのが良かったです。

PostgreSQLユーザには一読の価値があると思います。

データ分析基盤構築入門を読み終わりました

データ分析基盤構築入門を一通り読み終えたので書評です。

データ分析基盤構築入門[Fluentd,Elasticsearch,Kibanaによるログ収集と可視化]:書籍案内|技術評論社

評価

★★★★★☆☆☆☆☆(5/10)
評価の目安はこちら

オススメできる人

  • データ分析についての基礎を学びたい人
  • Fluentd/Elasticsearch/Kibanaの使い方を知りたい人

オススメできない人

  • データ分析の運用について学びたい人

範囲が基礎部分なので運用周りは少ないと感じました。

感想

Fluentd/Elasticsearch/Kibanaのインストール/基本的の設定をし、データ分析基盤構築を構築するといった内容です。
構築するための前提知識となるデータ分析の基礎については序盤の章で説明されています。
各ライブラリのインストール方法と基本的な設定は詳細に書かれているので、
自分で試して構築してみるということができると思います。

個人的には読みたい内容と本に書かれている内容がミスマッチしたなという感想です。
データ分析としてどういったものを取得すれば良いのか、
取得したものをどのように提供するのが良いのかといったものはもう少し踏み込んだ内容が欲しかったです。
ただ、そこまでいくと本のタイトルとして「入門」ではなくなってしまうなとも思います。

私個人としてはミスマッチしてしまいましたが、
「まずは構築してみたい」というところに目的にした場合は最適な本だと思います。

pospomeのサーバサイドアーキテクチャ(PDF版)を読み終わりました

pospomeのサーバサイドアーキテクチャ(PDF版)を一通り読み終えたので書評です。

pospomeのサーバサイドアーキテクチャ(PDF版) - pospomeの本屋さん - BOOTH(同人誌通販・ダウンロード)

評価

★★★★★★★★★☆(9/10)
評価の目安はこちら

オススメできる人

  • サーバサイドエンジニア

クライアントサイドでもレイヤ周りの話は考えると思うので、
クライアントサイドエンジニアの人でも参考になる内容だと思います。

オススメできない人

  • インフラエンジニア

書籍自体はWebアプリケーションアーキテクチャを範囲にしているので、
インフラエンジニアの人にはお勧めできないかもしれません。

感想

世の中でよく出てくるレイヤパターンごとの概要とそれぞれのメリット/デメリットについての説明から始まり、
実際のプロジェクトではどうやって適用していくべきかを
Goのサンプルプログラムをみながら学べる書籍です。
サンプルはGoですが、Goにしか適用できない内容はなかったです。

レイヤパターンについてはWeb記事で説明されることは多いです。
ただ、この書籍ではメリット/デメリットが書かれているので、
それぞれのパターンがどういう時に適用しやすいのかを考えながら読むことができました。
レイヤパターンも適材適所でカスタマイズして使うべきだなと普段から思っていて、
この書籍はその道標として使えそうな気がします。

パッケージ構成についても非常に参考になる内容でした。
パッケージ構成でもしっかりとメリット/デメリットが書かれています。
また、デメリットをどうやって改善していくのかというのもの書かれていてとても参考になりました。

サーバサイドのアプリケーションを作るエンジニアには一読の価値がある書籍だと思いました。

進化的アーキテクチャを読み終わりました

進化的アーキテクチャを一通り読み終えたので書評です。

O'Reilly Japan - 進化的アーキテクチャ

評価

★★★★★☆☆☆☆☆(5/10)
評価の目安はこちら

オススメできる人

オススメできない人

感想

この書籍に書かれているのは下記のような内容でした。

書いてある内容自体は参考になるなとは感じたものの
実際のどう行動に移せばいいのかと言うのがあんまりイメージできませんでした。
あまり私がこの書籍の内容を把握できていないためかもしれません・・・

SystemdのCapabilityBoundingSet/AmbientCapabilitiesの挙動

SystemdのCapabilityを調べた時の雑多なメモです。
メモなので結論とかオチとかは全くないです。

更新履歴

2018-10-28 CapInh/CapPrm/CapEff/CapBnd/CapAmbについて調べた内容を追記。

概要

SystemdのserviceファイルにCapabilityBoundingSet/AmbientCapabilitiesをつけた時とそうでない時の
/proc/${pid}/statusの中身の違いを調べてみました。
対象のサービスは8080ポートで起動し、ユーザは一般ユーザで起動しています。

CapabilityBoundingSetとAmbientCapabilitiesの違いってなんだ?
っていうのが気になって調べてみました。

参考サイト

Serviceファイル

実際のサービスファイルは下記のような感じです。

[Unit]
Description=Go Crud Application
After=network.target
After=local-fs.target

[Install]
WantedBy = multi-user.target

[Service]
ExecStart=/usr/lib/go-crud/crud -c=/usr/lib/go-crud/conf -s=/usr/lib/go-crud/static/ -p=8080
User=app

CapabilityBoundingSetありの場合は下記を追加します。

CapabilityBoundingSet=CAP_NET_BIND_SERVICE

AmbientCapabilitiesありの場合は下記を追加します。

AmbientCapabilities=CAP_NET_BIND_SERVICE

実行結果

それぞれの/proc/${pid}/statusの中身です。 [Capabilityなし]

CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000

[CapabilityBoundingSet]

CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000000000000400
CapAmb: 0000000000000000

[AmbientCapabilities]

CapInh: 0000000000000400
CapPrm: 0000000000000400
CapEff: 0000000000000400
CapBnd: 0000001fffffffff
CapAmb: 0000000000000400

設定ごとにこの辺が変わるようです。

それぞれの設定値は以下のようです。 (ドキュメントを読んで書いてはいますが正確に把握できていないです。)

CapInh

このプロセスから新たにプロセスを作成する場合に継承されるセキュリティビットのようです。

CapPrm

Permittedなのでこのプロセスに許可されたセキュリティビットです。

CapEff

最終的に有効となったセキュリティビットのです。
対象のケーパビリティのビットが0の場合は権限なしとして扱われるようです。

CapBnd

CapInhとCapEffで設定されたセキュリティビットに対してマスクをかけるセキュリティビットのです。
起動ユーザのCapInh/CapPrmに設定されものからマスクされ、
CapEffにはマスクされた結果が反映されるようです。

CapAmb

特権を持たない一般ユーザに許可を与えるためのセキュリティビットです。
ここの設定値は連鎖してCapInh/CapPrmに設定されるようです。

おまけ

[Capabilityなし、rootユーザ起動]

CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000

[CapabilityBoundingSet、rootユーザ起動]
audit.logの権限がないと言われてエラー

[AmbientCapabilities、rootユーザ起動]

CapInh: 0000000000000400
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb: 0000000000000400

Goならわかるシステムプログラミングを読み終わりました

Goならわかるシステムプログラミングを一通り読み終えたので書評です。

Goならわかるシステムプログラミング(紙書籍) – 技術書出版と販売のラムダノート

評価

★★★★★★★☆☆☆(7/10)
評価の目安はこちら

オススメできる人

  • OSやアプリケーションの内部的な動きを知りたい人

オススメできない人

  • Go言語を全く触ったことない人

難しい構文は出てこないので最低限A Tour of Goは目を通した方が良いと思います。

感想

OSやアプリケーション内部の動きがわかりやすく説明されているなというのが感想です。

Webアプリケーションを作っているだけだとOS部分はなかなか手が伸びない箇所ですが
パフォーマンスチューニングやバグ解析といった時に必要になると思います。
そういった際に必要になるOS部分についてかなり網羅されていると感じました。

サンプルコードがGo言語なのでGo言語にフォーカスされていますが
他の言語を触っている人も覚えておいた方が良いと思う内容でした。
普段使っている言語ではどのように動いているかを想像しながら読むと良いかもしれません。

日頃出会わない不具合に立ち向かう時のために一冊として、
パフォーマンスチューニングを勉強するための基本的な知識を得るための一冊として
その両方においておすすめです。