Financial Grade な API のセキュリティ #webapilt
そのAPIはセキュアですか?Financial Grade な API のセキュリティRyuSA
View Slide
RyuSAFinancial Service EngineerJava & SpringBoot / Typescript & ReactDocker / Kubernetes: RyuSA: ryusa_eng
全国銀行協会よりオープンAPI ≠ OpenAPI (Swagger) なんだぜ、ググラビリティがあかん >
たぶんこんな世界になる……?
※注 あくまでも登壇者の妄想です< サービスしてちょまいどー >< Aくんの口座情報教えてーあの……焼肉屋さんが…… >< 口座情報教えていいですよー< はいどうぞ
知ってる!これ、OAuth2.0で実装できる!
落ち着け、OAuth2.0はシルバーバレットにあらず
• OAuth2.0はリソース制御のための「フレームワーク」• OAuth2.0で認可を実装した ≠ セキュアなAPI• SNSの認可に要求されるセキュリティレベル≠ 銀行や証券の認可に要求されるセキュリティレベル• 近年はオープンAPIも叫ばれており、金融向けのセキュアな認可の整備が急がれている• 一方で「セキュアな認証認可」をどこまでやるべきかのガイドラインが必要そして究極のセキュリティ「APIを公開しない」が生まれる認可に困ったらOAuth2.0に頼ろうとしてない?
Financial Grade API略して”FAPI” 読み方は「ふぁぴ」だって、かわいいね >
• FinTechサービスにOAuthプロファイルを導入するためのガイドライン• Part1/Part2/Part3の3部作で構成されており「ReadOnly API」「Read&Write API」などについてそれぞれ実装すべき項目が記載されている• 金融に限らず、高いセキュリティが要求される認可システムの管理者・実装者は参照すべきドキュメント• チェックリスト方式になっている• 実装すべきこと、設定すべきことが一覧化• たまに「実装すべきでない」ことも書いてある• CIS Benchmarkのような感じFAPIは”OAuth2.0実装のガイドライン”
• Part1 (Read Only)• 認可サーバは LoA 2 相当のユーザ認証を実装しなければならない• ClientはResource Ownerとのセッション中はredirect_uriを保存し、認可レスポンスを受け取った際のredirect_uriと比較しなければならない(5.2.3)• Native Appはカスタムスキーマによるリダイレクトを実装してはいけない(7.5)• HTTPSによるリダイレクトを利用しましょう• Part2 (Read & Write)• 認可サーバは LoA 3 相当のユーザ認証を実装しなければならない• ClientはHolder-of-Key Tokenと実装しなければならない• OAuth 2.0 Token Binding か mTLSかで実装しましょう具体例
• オープンAPI という世界とその認可のガイドラインFAPI• みなさんの身近に迫ってきています• 「認可システムを作る / 設計する」ということがあれば、FAPIを覗いてみては?• 「あ、この設定した方がいいかも」等の思わぬ発見があると思います• セキュリティレベルをビジネスKPIに沿って決定• 焼肉食べたい• コロナで外出・外食がめっきり減ってしまって、正直口元が少しさびしい……まとめ