フロントとバックエンドの接続時にアクセストークンを使用してセキュアに運用する

フロントとバックエンドの接続時にアクセストークンを使用してセキュアに運用する
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。

【7/5開催】azd+Terraform? ~ポイントを押えてAzure上へのアプリケーション環境をラクチン構築~
ツールの概要説明から、実際の開発におけるポイントをお伝えします!

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!

今回は、セキュリティインシデントにつながりそうな内容について知見を得たので共有していきます。一言で表すならば、「アクセストークンの使用用途をちゃんとわかっていなかった」。認証・認可について軽く勉強をしていたので、問題の重さについては十分に理解できたと思います。アクセストークンを有効活用しよう!

挨拶

どうも、二週間ほどブログの休憩をしていた龍ちゃんです。お仕事は続けていたのですが、ブログを書く元気が起きなかったので思い切ってお休みしていました。プロジェクトのお仕事が急遽入って激しめの修正を加えて、勉強をしていたのでそこで得た知見についてまとめていきたいと思います。

内容としては、「ログイン後のユーザーであれば、成り済まし可能なシステム」だったというショッキング内容になります。それでは初めて行きたいと思います。この話をするためには、認証認可の話が若干入ってきて、半年前の自分ならわからなくて泣いていたなと思います。詰まった点でも成長を感じることができる良い機会でした。

問題のあるシステム

まずは、問題のあるシステムについて話していきます。ざっくりとしたアーキ図としては以下になります。

問題のあるシステム

「Static Web Apps:フロントエンド」から、「Azure AD B2C」を用いて認証をしています。もちろん認証していなければ、自動で認証画面に飛ぶように設計してあり、認証されていないユーザーはアクセスできないようになっています。ここで一つ問題があるのが、フロントエンド側の「userID」を書き換えると、ほかの人のリソースにアクセスすることができるという点です。

「userID」はUUIDという一意に発行されるIDを使用しているので、予測することは難しいです。ですが、もし「userID」が流出してしまった場合、悪意を持った「ログイン後のユーザー」が「userID」を書き換えてアクセスすると、他人のリソースを覗き見ることが可能となります。

userIDを偽造して、他人のリソースを覗き見る

つまりセキュリティインシデントになるということですね。もちろんフロントエンドのリソースはミニファイされており、簡単に解析できないようになっています。それでもアクセスできる可能性があるだけで問題になります。

改善後のシステム

端的に解決法について書くと「アクセストークンを発行させ、検証を行うことでアクセス元を担保する」という方法になります。

Azure AD B2Cからアクセストークンを取得して、Headerにトークンを付与
バックエンド側でアクセストークンを検証する

「Azure AD B2C」からアクセストークンを発行して、API通信時にHeaderとしてアクセストークンを付与して送信することで、APIサーバーにアクセストークンを引き渡します。APIサーバーでは、受け取ったアクセストークンを検証して、発行元と一致しなければリソースを渡さないことでセキュアに保つことができます。

改善後のシステムで追加した機能としては以下になります。

  • Azure AD B2Cからアクセストークン取得
  • API通信時、Headerにアクセストークン付与
  • APIサーバー側でアクセストークンを検証

この三つの対応をするだけで、改善前よりもセキュアになります。

終わりに

具体的な対応方法としては、バックエンド側の対応も併せて勉強しているのでもう少しお待ちください。Azure AD B2Cからアクセストークンを取得するのが手間かかりました。この辺は少し先にブログ化しようと思います。

心持として、「100本ブログを達成」という結果だけ見て若干燃え尽きていましたが、上司の方からのこう言ったアドバイスを受けると、技術力はまだまだだなと思います。これからもブログと検証を重ねて早急に成長しましょう。

がんばりますぅ~( *´艸`)

アバター画像
About 龍:Ryu 109 Articles
2022年入社で主にフロントエンドの業務でTailwindと遊ぶ日々。お酒とうまいご飯が好きで、運動がちょっと嫌いなエンジニアです。しゃべれるエンジニアを目指しておしゃべりとブログ執筆に注力中(業務もね)//
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる