概要
Laravelにおいて認証・認可はGate・Policyの仕組みに沿えばイージーに実装が可能です。
しかし、OktaやMicrosoft Entra IDといった外部IDプロパイダーを使用し、認証自体はWebアプリケーションに到達する前に行いたい場合もあります。
このトークでは、AWS ALBと外部IDプロバイダーを使用しOIDCで認証を行いつつ、LaravelではCasbinという複数言語をサポートしているアクセス制御するための認可ライブラリを使ったRBACの実装例を紹介します。
また、ALBの誤った設定によるALBeastと呼ばれる脆弱性についても触れます。
所感
認証認可を外部に任せる、という点で似た状況にあったので、
技術面・手法として参考になりました。
開発って、コードを書いてプログラム組んでシステムにして・・・、
っていう作業なわけですが、既に存在するサービスやライブラリを利用する事で、書かなくてもいいコードも沢山あるわけで。
今はそういう、何と何をどう組み合わせればシステムを作れるか、という観点でエンジニアをするのも、とても大事になりましたね。
これは非常にいい例なのではないかな、と思います。
スライド
受講メモ
## 管理画面のアクセス制限
basci認証
Oauth
アプリレベル
アプリ前段
ネットワークレベル
サービス規模
組織やチームの状況
求められるセキュリティレベル
## 外部IDPとcasbin
ユーザー管理を一括管理
認証をAppの外に出せるので責務が減る
Laravelを使わない他でも応用可能
デメリット
Laravelで完結しない
## ALBとIdPの設定
OIDC準拠のIdPであれば簡単
ALBルールアクション定義に必要な情報を入れるだけ
ALB自体がIdPにリクエストできるようにセキュリティグループの考慮
## 設定の管理
ALB、SCGはTerraform管理
## ALBeastを避ける
設定、検証漏れによる脆弱性
JWTの署名の検証、sigerフィールドに含まれるALBのarnを検証
Appは特定のALBに限定通信
## 注意
Google認証は、gmail.comを含め任意のアカウントを通してしまう