(第7回WSA研) マルチクラウド対応の認可アーキテクチャ 見出しへのリンク

2020/11/07 Takumi Takahashi

はじめに 見出しへのリンク

製造業におけるIoTシステム開発など、特殊なシステムアーキテクチャが必要とされる場合において、DevSecOpsを前提とした認証・認可アーキテクチャのあり方を模索してみました。

謝辞とお詫び 見出しへのリンク

  • このような場に迎え入れてくださり、ありがとうございました 🙏
  • 本発表に先立ち、様々な資料や文献、製品等の調査を進める過程で 自身の知識不足であることが明確になりました
  • また、既存製品・研究・規格の調査で時間切れとなってしまい 着想を具現化するに至りませんでした
  • このようなレベルの高い場に出席させていただきながら 個人のメモ書きレベルになってしまったこと、深くお詫びします

背景 見出しへのリンク

  • 一般的な製造業は物理世界との結びつきが強いという特性上 製造業に特化した技術が数多くありますが、昨今IoTなどの キーワードを旗印に、徐々にですがWebに由来する技術が 取り入れられつつあります
  • ですが、近年サイバーセキュリティに関する関連法規の具体化 など、素人がWebシステム開発するには、非常に厳しい世界に なっている現実もあります
  • 以上の背景から、元組み込みエンジニアの観点を取り入れ、 素人でも安心してソフトウェア開発できる、汎用的な認証認可の 仕組みを考案してみました

認証と認可について 見出しへのリンク

  • 認証とは
    • 「通信相手が誰(何)であるか」を確認すること
  • 認可とは
    • 「対象となるリソースへのアクセス制御」を行うこと
  • 本資料では認可に着目し、汎用的な認証認可の仕組みを考案します

対象となるソフトウェアシステム 見出しへのリンク

  • REST APIサーバー
    • OpenAPI等、スキーマ定義が外部化でき、また枯れた実装も多く、初心者でも始めやすい環境が整っていると考えています

関連するソフトウェアシステム 見出しへのリンク

  • API Gateway
    • 上述したOpenAPI等のスキーマ定義を用いて、リソース(API)のルーティング、スループット制限等、システムとは直接関係のないリソース管理を行います
  • OpenID Connect IdP (OP)
    • 一般的な企業ではLDAPやActive Directory等、既存ディレクトリサービスが導入されているケースが多く、また従業員情報や機器情報は一種の資産であり、これらの情報を認可情報源として活用することで、システム開発者とシステム運用者の権限分離を図ります

認可方式 見出しへのリンク

  • 前述した各種情報資産を利活用でき、また将来に対しての拡張性を考慮した上で、ABAC ( Attribute Based Access Control ) の方式とします
  • 例えば従業員情報として、ID, パスワード, メールアドレス, 所属情報等の情報が予め入力されている事が多く、これらの情報をシステムごとに投入せずに活用できることで、設計・開発工数を削減します

既存製品・規格 見出しへのリンク

  • 既存実装としてはパブリッククラウドではAWS, GCP, Azure等、各社製品をリリースされています
  • 国内ではAuthlete社が、FAPI(Financial API)グレードの認証認可に特化した製品をリリースされています
  • いずれの製品で共通している機能として、OpenID Connectを用いた認証認可の仕組みを提供されています

OpenID Connect について 見出しへのリンク

  • OpenID Connectの出自はOAuth 2.0が起源で、SAML 2.0等の既存認証認可の仕組みを取り入れた規格となっています
  • OAuth 2.0やSAML 2.0、OpenID Connect等の規格そのものはとても巨大であり、またWeb上に各種資料がありますので、本資料では規格そのものについては具体的に言及しませんが、本資料のスコープであるABACによる認可を行うにあたり、OpenID Connect Core SpecであるUserInfo Request/Responseにフォーカスをあてます

これまでのまとめ 見出しへのリンク

  • REST APIサーバーを対象としたAPI Gateway, OpenID Connect IdPを用意することで、REST APIサーバー実装担当はCRUD実装に注力することが可能になる
  • 同時にREST APIサーバー等Webシステム開発の経験が浅い開発者でも、コンテナ等の技術を活用することで、OJT形式で技術のキャッチアップが可能になる
  • またAPI Gateway, OpenID Connect IdPを採用することで、中央集約的にセキュリティ対策やコンプライアンス、ガバナンスが可能になる

検討したミニマムアーキテクチャ 見出しへのリンク

bg 60%

API Gateway (Kong) について 見出しへのリンク

  • API Gatewayとしての採用実績が多く、またコアとなるはNGINXであるため、matsumotory/ngx_mrubyなど、ダイナミックなABACが可能になる
  • また、Lua言語による拡張方式や、Go言語による拡張方式、あるいはRust等によるFFIも考慮に入るため、ABACの難しさを考慮した上で採用

OpenID Connect IdP (Keycloak) について 見出しへのリンク

  • 既に金融業界での導入実績等があり、またOCIコンテナを用いると、容易にHAクラスタ展開が可能であることなどから採用

  • 日立製作所 OSSソリューションセンタ 中村 雄一様 オープンAPIに求められる認可認証OSSセキュリティ技術

今後について 見出しへのリンク

  • 本資料では事前調査と構成検討だけで終始してしまったため、今後はABAC認可の実現を目指します

最後に 見出しへのリンク

本記事に書かれている内容は個人的な見解であり、私が所属する組織の見解は含まれず、所属組織とは一切関係ありません