コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

脆弱性周りの略語をざっくり整理する

自身の理解のためによく聞くものだけでも、の整理

CVE(Common Vulnerabilities and Exposures)

CVEは脆弱性を識別するための共通脆弱性識別子。要するに個々の脆弱性に関してわかりやすく管理するために振られるユニークなID。

管理しているのはアメリカ政府の支援を受けている非営利団体のMITRE社。またこのCVEを採番する権利がある機関のことをCNA(CVE Numbering Authorities)と呼ぶ。

https://www.cve.org/

JVN(Japan Vulnerability Notes)

日本国内で報告された脆弱性を共有するためのポータルサイト。国内で提供されているソフトウェアの脆弱性情報の流通を目的にしている。

前述のCVEの運用とともパートナーシップを結んでおり、JVN内で報告された脆弱性とCVEで互換性のあるものはわかるように扱わている。

https://jvn.jp/

NVD(National Vulnerability Database)

アメリカ国立標準技術研究所(NIST)が管理している脆弱性管理のデータベース。CVEや後述のCVSSなどが記載されるデータベースだが、2024年時点では運用が停滞している。

KEV(Known Exploited Vulnerabilities catalog)

実際に悪用が確認された脆弱性の一覧。CVEと連動して実際に悪用が発生したものを取り扱っている。

CVSS(Common Vulnerability Scoring System)

CVSSは脆弱性の深刻度に関しての指標を出すための手法。算出すされた指標の値はCVSSスコアと呼ばれる。

このCVSSスコア自体はバージョンによって異なり、現在最新のバージョンはv3となっている。

SSVC(Stakeholder-Specific Vulnerability Categorization)

CVSS同様に脆弱性を図る指標としてカーネギーメロン大学ソフトウェア工学研究所で考えられた指標。CVSSが脆弱性自体を数値化するのに対し、対応すべき方針が提示されるのが特徴

参考リンク

2024年末時点での世の中の横長広告のサイズを調べる

横長のバナーの推奨サイズは各社どうなっているのか雑に調べる。

参照元

今回は日本国内で多く使われるであろう、Google、LINEヤフー、Instagram(Meta)の情報をもとに整理する。

参考にしたものはは以下

Web広告のサイズの多くは1.91:1の1200x628がベース

昔は特定のサイズで名前があったが現在ではアスペクト比と推奨サイズで規定を表現することが多い様子。参照元で登場するサイズで多く登場するのは以下の2パターン

比率名称 推奨サイズ 補足
1:1 1,200 x 1,200 完全な正四角形、スクエアなどと呼称される
1.91: 1 1,200 x 628 横長の四角形、横長のものに使われる

縦長の画像をサポートしているものに関しては各社まばら。

参考サイト

システム開発におけるインピーダンスミスマッチという言葉の意味をざっくり整理する

なぜ急に電気記号の話が?と思ったことがあるのでざっくりまとめる

よく使われる場面

インピーダンスに関しては身近な話では音響機器の話で出てくる。出力のインピーダンスが高いもの(ハイインピーダンス)に対して、受けてである入力のインピーダンスが低いもの(ローインピーダンス)をセットするとロスが多いなどの話で表現される。ここに関しては前提知識がないとイメージがつきづらいので、以下サイトの絵を参照すると理解しやすい。

インピーダンスとインピーダンス・マッチング | アンブレラカンパニー | BUZZ

本来はインピーダンスが同等な者同士で接続すればロスは限りなくゼロだが、現実的にはそうはいかないので、ローインピーダンスからハイインピーダンスのものにつなげることが良いとされている。

転じて、ソフトウェアにおけるインピーダンスミスマッチとは

ソフトウェアにおけるインピーダンスミスマッチは O/R(Obeject/Relation)インピーダンスミスマッチ として表現され、いわゆるオブジェクト指向での Object とリレーショナルデータベースがもつ Relational なデータ間でミスマッチが発生してロスが起きることを指している。

具体的な事象としてはRDBに定義したテーブル定義から、アプリケーション上で取り扱うオブジェクトを起こす特に変換ロスが発生するようなことを指している。そのためRailsActiveRecordなどはRDBのテーブルとアプリケーション上のModelをほぼ同一に取り扱っているので、インピーダンスミスマッチは発生しない設計となっている。

関連リンク

『CQRS+ESカンファレンス』に行ってきたよメモ

CQRS+ESカンファレンス - connpass』に参加してきたのでそのメモです、

各発表の感想

※資料スライドは見つけたら貼ります。


ドメインイベントで描く未来: CQRS/ESが変えるシステムとDXの可能性

スライドは公開予定ではないということなのでブログを…

CQRS+ESカンファレンス(2024)を開催しました - ytake blog](https://blog.ytake.jp.net/entry/2024/12/24/090000)

感想

  • CQRS/ESをなぜ採用すべきか、というところと基本的な考え方を駆け抜けてサマリで説明
  • イベントを記録すれば後に違う角度で見たくなったときにも見えるという話や、機能的結合や時間的結合の話など改めて重要フレーズピックアップしたいような話でした。
  • 「データはイベントの蓄積である」という考え方をどれだけ持てるかが重要という話は頭に入れながら色々作るときに考えるとよいのかなと思いました。

関連リンク


2年間の実運用を経て振り返るイベントソーシングの実際

感想

  • 中小規模システムのためのCQRS+ESのフレームワークであるSekibanの紹介
  • 大きなものでないと恩恵を受けられないのではないか?というところへの1つの解になりそうな話でした。
  • 作ってみると遭遇しそうな疑問に関してのQ&Aはかなり後続で続く人たちのためにもなる情報に思えました。

関連リンク


いろんな機能をCQRS+ESで作ってみたので皆で所感を見てみよう

感想

  • AxonIQを使ったEventSourcingを用いた実システム作り方
  • 題材としてはAPIサーバを取り扱い、イベントがどのように保存しされ、Queryに使われるテーブルはどのような形になるのかという話をコードを追いながら解説されていました。
  • AxonIQがカバーしている部分もあるので、細かいところが気になったが全体感の理解としては進んだ
  • 最後に紹介のあったイベントストーミングをした図からChatGPTでAxonIQのコードがある程度起こせるデモがあり、雛形作成でここまでいけるのかーという驚きがあった。

関連リンク


イベントの使い方を一度身につけてしまったら、もうそれなしでは生きられなくなるだろう

スライドリンクは公開されたら貼ります

感想

  • 既存システムでのつらみ経験から導入していく家庭のお話
  • 「イベントがほしい」というところからCQRSへだんだん行く過程のお話だったので途中で時間切れになってしまい残念
  • イベントが始点で話をすると結果としてCQRS側へ帰結するんだろうなぁと思いました。

関連リンク


アクターシステムに頼らずEvent Sourcingする方法について

感想

  • ESはアクターモデルがないとできないのではないか?というところに対してのアプローチの話
  • AWSが提唱しているモデルのよくないところを交えつつ、実績のあるKJ法(KatoJun)も紹介されていて、実装したいときの参考になりそうな内容だった
  • 練度が低くてまだうわべだけしか見えていない感じがしたので、もう少し実践的な知識をえたら見直したい

関連リンク


パネルディスカッション

ディスカッション内容

Q. 外部インターフェイスとしては何を採用しているか(REST、gRPC、など)

tomohisaさんはsekibanを使っているためRESTスタイル、鈴木さんはgRPCを利用しているという話をされていた。かとじゅんさんはCommand側はRPCスタイル、ReadモデルはRESTスタイルと使い分けの話をされており、RESTはCommandとの相性問題があるのでその形式が多いと話されていました。成瀬さんはAxonを利用しているためそのあたりはフレームワークが勝手にやってくれているので意識していない旨のお話をされていました。

Q. Protocol Buffersのプロトコルはどうやって共有しているか

かとじゅんさんは他のシステムと連携するかどうかの観点で話をされており、クライアントとサーバーどっちで主管をするか決めて、運用する旨の話をしていました。鈴木さんは単一のアプリケーションに閉じているので、専用のディレクトリを用意して運用している旨の話をされていました。

Q.複雑なシステムじゃなければCQRS+ESは不要かと思うんですが、いるいらないの基準があるか

この話においては、パネルディスカッションのメンバー全員がCQRS+ESの実践者なのでどの方も大小かかわらず使いたいという意見でした。その中で出た意見で印象的だったのが以下の話です。

  • 採用しないとCRUDな作りになるので、データベースの考慮を入れると純粋なドメインモデルとのひずみが出る。そのときに手をいれる必要があるので、それであれば最初からやっておいたほうがよい。
  • そうではないものから書き換えてみたが、書く事自体が大変ではなく、新しい概念や知識を取り込むコストが高い。
  • EUのDDD関連のカンファレンスではCQRS+ESの話が多くなるので今後はメインストリームになるのではないかと考えている。

Q. CDC(Change Data Capture)対応のデータベースじゃないと実践できないですか?

イベントの取り扱いに関して言及があり、イベントをRDBに格納すること自体は問題ないがそのイベントをどうやって取り出すかが問題になる。その際にCDCが存在しないものを使うとポーリングするなどデータベースの負荷がかかるやり方になってしまうのでそのあたりが難しい、とのことでした。また、普通のRDBにしてしまうとスケールアウトの難しさが出るなどの問題があるので、ドキュメント指向のものを使うと良いという話もありました。

感想

  • いろいろな角度でなるほどなぁと思わされれる話が多かった。
  • RESTとイベント記録に関しては確かに噛み合わせが悪い、というよりかはCreate専門になってしまうよなという気持ちに
  • ドキュメント指向のデータベースを使う利点に関してもいままであまりユースケースがわかってなかったのですがこの話を聞いて合点が行きました。

関連リンク


CQRS+ES の力を使って効果を感じる

感想

  • AWSでCQRS+ESにチャレンジしてみる話
  • 前段でかとじゅんさんが指摘していたAWSの例を使っていた話だったので見直しの話が入ったのがタイムリーな感じでした

関連リンク


イベントソーシングとドメインモデリング

感想

  • イベントを中心としたモデリングに関してのLT
  • イベントソーシングはやらずとも、イベントを記録することは念頭に置いて実装することをするのがよいんだろうな、という学びになりました。

関連リンク


使いたいから使うんじゃなく「必然として」使うCQRS+ES

感想

  • 古くからあるシステムにCQRS+ESをあてていく話。
  • 個人的にはCQRS+ESの話というよりも、組織を上げてモダナイズすることの難しさを感じた話
    • マイクロサービス化がモダナイズ化です!という話にしないと前進しなかったんだろうな…という苦労がにじみ出ていた

関連リンク


ドメインイベント増えすぎ問題

感想

  • イベントの種類がたくさん増えてしまって困った話
  • すごく実践に即した話という感じがしており、これからやる人向けへの転ばぬ先の杖的なLTでした。
  • 実際問題このあたりは勘所がないと変な方向にやりそうだな…という感じも強く受けました。

関連リンク


Debeziumを活用したRDBMSイベントソーシングの仕組み

感想

  • Debeziumを利用したCQRSパターンの作成の話。
  • 先ほどのパネルディスカッションにあったCDCがないDBへのアプローチの一例として良さそうでした。
  • ただKafkaも必要になるので考えることは増えそう…

関連リンク


全体を通しての感想

  • まったく普段遣いしない知識の話が満載でしたが、なんとなくの理解でもついていけるように配慮されていてよかったです。
    • ただもう少しアクターモデルやベースの理解があったほうが楽しめた感は否めなかったです。
  • 自分自身がRailsメインが続いていたのでCQRS+ESの考え方自体はぼんやり理解しているレベルでしたが、この機会にもうちょっと足を突っ込むといいのかなと思っています。
  • 普段の実装でもイベントを意識する事自体はマイナスに働くことがないので活かしていきたいと思います。

関連リンク

集合知と合議に関して考えるときに見返したいスライド『合議で決めたいわけではないけれど、 集合知で助けてほしい。』

資料スライド

みどころ

人に意見を求めると、どうしても合議のようになってしまいがちな議論に関してを集合知で助けてほしいときにはどういうことを気をつけるべきか、どのようなことを考えるべきかということのヒントがあるスライド。関連リンクの内容含めて動かし方の参考になる部分が多い。

関連リンク

2024年時点のGoogleドキュメントはMarkdown記法での入力ができる。

小ネタ

設定の仕方

メニューの「設定」を開くとチェックボックスがある。

設定内容

これをオンにすると以下のようにmarkdownで入力するとそれに相当するものに変換してくれる。

勝手に置き換わってくれる

参考リンク

Google ドキュメント、スライド、図形描画でマークダウンを使用する - Google ドキュメント エディタ ヘルプ

ロールベースアクセスコントロールに関してざっくりまとめる

ぼんやりとした理解なので整理がてらまとめる

ロールベースアクセスコントロール(Role-based access control)とは

各ユーザに1つ以上のロールを割当て、そのロールに準じてアクセスできる権限を設定する考え方。

登場の背景

NISTによって1992年に提唱されてから広まっていった概念。当時ユーザひとりひとりに権限を設定するやり方に対しセキュリティ上の懸念が増えていたところへ、ユーザではなくロールに権限を与えることでシンプルにするようにした考え方。

当時の資料を見ると、管理者が直接ユーザに権利を割り当てたり、ファイルの所有者が権限の設定を行ったりしていたのが主流だったため、切り口が違う概念となっている。

類似の概念としての属性ベースアクセスコントロール(Attribute-based access control)

類似の概念として属性ベースアクセスコントロールがある、こちらはユーザの属性によって権限を確定させてしまう考え方。ロールに似た考え方ではあるが、権限のためのロールではなく違う意図で振られている属性(たとえば役職)などを使うのが違いとなっている。

参考リンク