おふとんの中から

その辺に転がってるエンジニアの備忘録

sorceryを使用した二段階認証を実装した

ゆいなです。

仕事でRailsの認証周りを触ったのですが、あまり見ない組み合わせを使ったのでちょっとブログに書いておこうと思います。

Sorceryに二段階認証を追加する

Sorceryを使っているRailsのシステムに二段階認証を実装してみました。 言ってもとりあえずなんだよってなりそうなので、出てきた言葉からちょこちょこと。

Sorceryって何よ?

Railsで認証周りを取り扱うGem。
https://github.com/Sorcery/sorcery

認証系だとdeviseとかが有名で実装例も多々あるのですが、 sorceryはあんまり使われているところを見たことがないです・・・。

二段階認証って?

通常のログイン処理にプラスした認証のこと。

メールなどで受信して入力するワンタイムパスワードのようなものや、
google authenticatorのようなQRコードをベースにしたコードをアプリケーションに読み込ませてコードを生成するものもある。

どうやって実装したの?

google-authenticator-railsを試してみた - MoneyFoward engineers blog
これを参照しつつ、実装はdeviseで実装しているブログを参考にしながら書きました。

サンプルコードはこちら。
https://github.com/yuina1056/sorcery_twofactor_sample

二段階認証の実装

二段階認証用に別途コントローラーを作成しました。
多分動きはコード見たほうがわかりやすいかな・・・

動作としては、アドレスとパスワードでの認証から二段階認証に情報を渡し、二段階認証時にログイン処理を行う形。 sessions_controllerからuser_mfa_sessionへは一時セッションを使ってアドレスとパスワードを渡してます。

また、初回ログイン時のみQRコードを表示させ、2回目以降は入力欄のみを表示させるようにしています。

特に有効化とかの処理を入れていないのは、この二段階認証を実装したアプリケーションが社内アプリケーションだからw

それにしても、生成されるコードも少なくてsorceryでログイン処理書くとシンプルになりますね。

JAWS DAYS 2019に行ってきた #jawsug #jawsdays

ゆいなです。

なかなかブログに手が出ず、前回のlambdaの話ももうちょい続きがあるのですが、次回にでも・・・

今回は、2/23に JAWS DAYS 2019 に行ってきたので、ちょっとブログにでも。

JAWS DAYS 2019って何よ?

AWSのユーザーグループであるJAWS-UGのイベント。 AWSを使用したいろいろなセッションがたくさんあるよ!!

何の話聞いてきたの?

主にDB周りの話と、今の仕事に関連する話を聞いてきた感じ。 時系列で、Twitterの内容をベースに補完して書いていきます。

メディアによるAI活用(時事クイズの生成と高校野球戦評記事の自動生成)

メディアでのAIが気になったので、ちょっと聞いてみた。

米朝首脳会談米朝を落語家で類義語にしてしまったやつ

内容的にはIT企業の名前が並んでほしかったけれど。。。
これはソフトバンクをクイズの答えとしてしまったから仕方ない気もする。

記者さんの記事を並べて見てもよくわからないレベルでびっくり。 ここまでAIの自動生成でやれるんだ・・・

機械学習を自動生成で活用しようと思うと、ある程度のテンプレートをベースにどのテンプレートを使うかを機械学習で判断させる感じ。

RDBリファクタリングと異種間DB移行の戦い – Amazon DMSを使った止めずにリファクタリングする手法

DB移行の話で、元々聞きたいと思っていた内容。

テーブル分割を実際に行っていくときにタイミングをトリガー設定。
そういえばそんなことできたなぁ・・・と思い出したやつ。

今回の話として、MySQLからPostgresに移行。
この理由が、トリガーの設定個数を考えたときに、MySQLだとトリガー1個しか設定できなくて1SQLで2つのupdateをなんとかするつらみ。
Postgresの複数個設定できるならPostgresでやればいいじゃんって発想。

DMSって内容柄、論理かつ非同期レプリケーションで扱うのすごい怖いな・・・と思っていたので、どうやって使ったのかすごい気になるゆいな。

どのDBを見るようにするかをうまくAPI化して切り出したから非同期レプリケーションでも気にならないようにできたのねと納得。

そしてMySQLあるあるな治安の悪いデータzerodate('0000-00-00')
postgresに入れたときにエラー起こすんですよねこれ・・・

zerodate以外も想定外データは移行なら出るのはあり得るので、その部分は監視しつつ直していく。

EC2からKubernetesへの移行をセキュリティ/モニタリングから考える

freeeさんのセッション。

freeeさんの場合、匿名化が難しい画像データを持つ必要な出てくるので私からするとガクブル・・・。

止められる場所で事前に止める。セキュリティ的には一般的な考え方ですね・・・。

freeeさんの場合、EC2運用ではWAF,DeepSecurity,GuardDutyで検知させているみたい。

この後のk8s部分はよくわからなすぎてメモも取れてません・・・。

数十億レコードのRDS MySQL5.6を1週間程でAurora MySQL5.7へ移行した時の話

DMSの話ではなかったけどね!!!!!

サービスの内容柄、絵文字を保持する必要があるけれど、DMSでdumpすると、絵文字がつぶれてしまう。 後になって絵文字周りの4バイト文字も問題なく抜けるようになったようです。

最初はmysqldumpでやろうとしていたが、遅いので構成とデータは別で移行する動き。 データはselectして取得したデータをspritしてファイル化。古典的な方法だけれど、ある意味安定してやれそう。

今回の移行はスキーマ統合も必要。またDB依存のダウンタイムを少なくするためのレプリカを使用した3段階レプリケーション

間違いない。

医療ビッグデータAWSとオンプレ基幹システムで共存運用

完全にお仕事周りの話だったので聞いてきました。

現在だと医療情報を扱うために3省3ガイドラインがあり、それをAWSでどう解釈するか書いてある感じ。

日本の医療情報ガイドライン

  • 医療データのクラウド化を進めるために・・・
    • 監査のために医療データとそれ以外の情報を明確に分けておく
      • クラウドを誤解している取引先がどうしても多い。そのため物理的なデータセンターの監査をやりたがるため。
    • 匿名加工済みデータはS3へ→データレイク構築
    • Direct Connectで直接S3に置く動きをしている。 →データはネットワークに出さない。

    • データレイク f:id:yu1056y:20190227004412j:plain

      • Glue f:id:yu1056y:20190227004420j:plain
        • Athena,Redshift
        • クローラー未使用
        • Job→Parquet 分割数でのパフォーマンスに偏りが出ることがある。
    • RedShift f:id:yu1056y:20190227004426j:plain

      • looker(BI)→傷病分類等をわかりやすくする

    f:id:yu1056y:20190227004428j:plain insightwatchでセキュリティ周りをやっている →項目の取扱ポリシーが怪しいから適宜有効無効を切り替える。

完全にお仕事モードでTwitter書く暇なかったんや・・・

我々はこうして「AWS本」を書いた! 〜十人十色〜

AWSの本を書いている方々のパネルセッション。

すいません最近便秘気味で・・・

クラメソのブログを書いていた方のマサカリ対処法が慣れだったのはびっくり。
でも、そういうもんなのかなとも思う。

どうだった?

とても刺激を貰えました。
今まで大きな技術系イベントも行けていなかったので、それを考えると新たな体験ばかり。

私弱いなぁ・・・。もっと強くなりたいなぁ・・・。

機運がすごく高まってやりたくて仕方がないので、どうやってやろうか考えてます。 多分初回は4月かな。会場をどうしようかとかいろいろ。

lambdaがRubyで動かなくて夜も眠れなかった話

ゆいなです。

先日まで頭を悩ませていたことが解決したので、ブログにしておきます。

何に頭悩ませてたん?

AWS lambdaが動かない...という事象。
先にやった方のQiita通りにやっても動かないなんで・・・?と1週間ほどずっと頭を悩ませておりました。

ところで何をやろうとしていたの?

以前Qiitaに書いた、SlackBotで電車の運行情報を通知してもらうrubyで書き直し、AWS lambdaに載せようとしていました。

書き換えたコードのgithubはこちら→ https://github.com/yuina1056/TrainInfoBot/tree/master/rb/lib

書き換え自体は終わっており動作確認もできていたので、後はlambdaに乗せるだけの状態にしていたのですが・・・

何が起きたの?

単純にlambdaにzipでアップロードしても動かない・・・orz

slackのAPIを扱うので、いくつかの外部gemを使用していました。
bundlerでパッケージした内容を全部zipファイルに入れても動かない・・・うーん・・・・

原因は、フォルダごとzipファイルにしていたためでした。 https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/ruby-package.html

zipコマンドでファイルのみを圧縮してアップロードしたらいけました。

結論

ちゃんとリファレンスは読もうな!!!!!!!

一人鍋のススメ

この記事はmohikanz #cooking Advent Calendar 2018の24日目です。

ゆいなです。

遅刻してしまいましたが、今日も料理ネタやってくぞ!

一人鍋のススメ

一人用土鍋って最高ですよね。
ちょっと手が出しづらかった一人鍋のハードルが一気に下がるんですもの!
あと味噌煮込みうどんが家でも土鍋で食えるの最高!

私も今年の冬前に一人用土鍋をGETしたので、既に何回か一人鍋をやっています。

一人鍋のいいところは?

一人鍋ってなかなかやりづらいイメージあるかもしれまれんが、結構単純だったり。

  • ぷちっと鍋みたいな一人用鍋スープが売ってる
  • 野菜を切って肉と共に土鍋に入れるだけ
  • 最悪もやし入れとけばなんとかなる

手間かからずおいしい!って特に一人暮らしだと重要なんですよね。 特に冬場ってキッチン立つのが寒くて辛いこともありますし。

さあゆいな家の一人鍋を見てみよう!

f:id:yu1056y:20181225211919j:plain 白菜とねぎと豚肉を豚骨醤油スープで。 このスープ、シメのおうどんが合うんですよ・・・ f:id:yu1056y:20181225211915j:plain

そしてにらともやしと豚肉のさっぱりお鍋

f:id:yu1056y:20181225211924j:plain

めんどくさがってほんだしで煮ただけ。ポン酢でさらっと食べるのがとっても良き。

そんな私の明日の夕飯はゆるキャン△効果でたら鍋予定です。

これからしがないと思えるために #しがないラジオ

この記事は#しがないラジオ Advent Calendar 201821日目の記事です。

ゆいなです。

これまで書いていませんでしたが、現在退職前の有給消化中です。

私が1年ちょっと転職に至った経緯をちょっと書いてみます。

なんで転職するの?

現職がSESであり、自分の会社への帰属意識が感じられなかったこと。
また、現職との方針の違いにより、決別したため。

そして一番の理由が、前回が逃げの転職であったから。

逃げの転職?

前職は新卒で入った会社です。
これまでのブログで記載している通り、車の制御ECUの開発をしていました。

元々就活の時から業務系システムの開発を希望していましたが、
大企業であったがための希望外配属。

仕事のやり方を覚えるためとまずは3年と決めていた。
正直3年もいる必要なかったんじゃと思うところもありますが、結局2年半しかいなかったので。

現職の詳細はあまり書けないが、少しだけどんな感じだったかと書いておく。

仕事の内容が内容なだけに、外部の情報を調べてなんとかしようにも何も情報がない。
ちょっと仕事以外の勉強会に興味を持ち、行こうとしても、行くだけ無駄と仕事を積まれる。 どんどん外部との接触がなくなっていった。

最後の半年。
炎上しながらもプロジェクトが終わり、チームが解散となった私は新編成されたチームに行くことに。

ここのチームで人格を否定され、デスマに無理矢理突っ込まれた。
精神的にもうやっていけなくなっていき、異動願を出したが受理されず。
そりゃ、デスマするような状態で人を抜くわけにはいかなかったんでしょうね。

この状態から抜け出せればなんでもいいと転職を決意。
しかし、こんな状態では正しい判断なんてできるわけがない。

プロダクトに興味を抱き、入社した現職。
実際にはプロダクトはもうやっていけなくなっており、ただのSESであった。

方針の違い?帰属意識

そんなこんなで現職に入社し、少しずつではあるが精神状態を回復させていく。
業務系システムをやっている会社に常駐であったが、元々やりたかった方面の仕事だったのも回復の要因としてあるかもしれない。

この頃から、少しずつ勉強会等に行き始めた。
精神的に回復したことで出た余裕を使って勉強を始めた。
podcastを知り、しがないラジオを聞き始めたのもこの頃。 外部の世界を知り始めて、現職どうなの?と疑問を抱いた。

半年ほど過ぎた頃、突然社長から全社員宛にメールが届いた。
「社員を常駐させていたら金が稼げない。パートナー会社を入れる。」

単純に、人を派遣するための管理者になれと言われたようなもの。
エンジニアとして開発するために現職にきたのに、管理者になれと言うのか。

この話を受け、私は転職する意思を完全に固めた。

で、次はどうなりそう?

重く話を進め過ぎたので、次の会社についてちょっとだけ書いておきます。

次は名古屋に会社があるスタートアップです。 サーバーサイド、インフラ周りのエンジニアとして入ることになります。

これまでの経験とは一気に方向性が変わり、正直現在も不安しかないですが・・・

しがないエンジニアになりたい!