2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
FAPI (全1記事)
提供:LINE株式会社
リンクをコピー
記事をブックマーク
野田誠人氏:今日は、FAPIについて大まかに説明をいたします。
FAPIをご存じの方はいらっしゃいますか? (挙手を見て)ありがとうございます。
FAPIの正式名称は、Financial-grade APIです。OpenID Foundationが策定しているOAuthとOpenID Connectのプロファイルの上に載せるプロファイルですね。
ファイナンシャルという名称がついているとおり、金融分野で使用されるOAuth、OpenID Connectのプロファイルを定義したものがFAPIです。
FAPIを採用している企業やプロダクトを紹介します。みんなの銀行、SBI(SBI DigiTrust)……Authleteから下は、プロダクトですね。「Authlete」や「Keycloak」などがあります。
みんなの銀行は企業ですが、Authleteを利用してFAPIに対応しています。そのため、今この分野では、Authleteが有名であることが数字的に言えるかなと思います。
「OAuthって何ぞや?」というところを少しおさらいしたいと思います。これは認可と呼ばれる分野で、自分のデータを第三者が利用していいですよという時に使用するフローを定義したものです。
1.0と2.0がありますが、今は基本的に2.0を使用するものと思って差し支えないと思います。Access Tokenとかがよく出てくるところで、あとは、Authorization: Bearerヘッダーとかでよく見かけるのが今では、だいたいこのOAuthです。
OAuthは、OpenID Foundationではなく、IETF(The Internet Engineering Task Force)のRFCで公開しています。
この簡単なフローは、全体がOAuthのフローではなく、上半分がOAuthのフローで、下半分は利用フローです。Introspectionと合わせると、3つのRFCを1つの流れで利用した図になっています。
次に、「OpenID Connectって何ぞや?」について。これはOAuthに被せて、ユーザーの認証情報をやり取りするための規格、仕様になっています。OpenID Foundationというところが定めています。
OAuthは、本当はIDの連携をしたり、「OAuthで認証されているからこのユーザーは正しい」とみなしたりしてはダメなのですが、それらを回避するID連携を実現するために、OAuthに載せた仕様になっています。
(スライドの)上のところがOAuthフローです。OAuthと一部違っているのはAccess Token だけではなくID Token も返ってきます。その下のID Token、User Infoは、Access Tokenを使ってデータを取得するところと同じですが、その途中にPublic Keyを取ってくることで、このOpenID Providerが発行したものだよということが検証できるようになっています。
このため、Access Tokenはどんな文字列でもよかったのですが、ID Tokenは基本的に、JWT(JSON Web Token)と決められています。
もう少しFAPIを見ていこうと思います。BaselineとAdvancedという2つのプロファイルがあります。Baselineは、中程度のリスクを持つAPI向けで、Advancedは、より機密性の高い情報へアクセスするAPI向けです。
Baselineは、Read Onlyプロファイル、AdvancedはRead and Writeプロファイルと呼ばれているので、それをイメージすると使い方の切り替えがイメージしやすいかもしれません。
その一例として、Baselineは、Access Tokenの送信元が、Issuerが送ったユーザーであるということを検知するロールはなく、正当性のチェックはしていません。
Baselineの中から抜粋した部分なんですが、こんなふうにshallとかshouldとかでリストになっているんですね。FAPIは、箇条書きみたいになっているんです。
その中の一番下を見ると、クライアント認証では、client_secret_jwtとprivate_key_jwtの2つのどちらかを使うようにしましょうと定められています。
Advancedになると、もう少し厳しくなり、private_key_jwtだけにしなさいとなっています。そこまでに、client_secret_jwtっていうのは、クライアントに発行したシークレットを使った共通鍵での署名ですね。
private_key_jwtは、公開鍵と秘密鍵を使った非対称性の署名の検証で、より強いセキュリティのところでしか認めません。
「どうやってFAPIを使っていこうか?」となると、何十項目もあるので、これに完全対応していくのは大変ですし、すでにある機能とバッティングする可能性もあります。
例えばFAPIには、x-fapi-interaction-idというヘッダーをつけて送信してきた場合には、それをそのまま返す。ヘッダーをつけて送信してこなかった場合には、ヘッダーにそれをつけてレスポンスを返す、というものがあります。
要は、内部の処理をトレーシングできるようにと、そういうのが定義されているのですが、そういうヘッダーはすでにあるといえばあったんですね。わざわざFAPIに対応するためにそれを書き替えるのはナンセンスじゃないですか。
なんでもかんでも全部対応していくのは、ナンセンスだしコストも高いのですが、チェックリストのように箇条書きになっているので、「これはやってみるとコストが低いけれども効果はあるな」と一つひとつ判断ができると思います。
一部を参考にするだけでも、自身が提供しているOAuthであれOpenID Connectであれ、セキュリティをより高めることができます。
次は、FAPI's Future。今まで紹介したのはFAPI 1.0の概要なんですが、実は2.0のディスカッションは2022年3月ぐらいから始まっています。
(スライドを示して)こちらはFAPI 2.0のBaselineで、Advancedと同等のセキュリティを実現するという目標のもと議論されています。
ただ、こんな感じで、認可レスポンスの検証なんかはissというフィールド、レスポンスのフィールドだけでやるという感じで、少し簡略化されていたりもします。
セキュリティを高めるために、これを使ってもいいですよというのがFAPIの1.0でも出ていたのですが、そのあたりをなるべくシンプルにしているのが2.0のBaselineです。
DPoPなどは、まだRFCでドラフト状態ですが、(スライドを示して)このように積極的に仕様に盛り込むような変更が加えられています。
最後に。FAPIは、セキュアなOAuthやOpenID Connectを提供するために進化し続けるチェックリストという扱いで使っていけるといいかなと思います。
段階的に適用してもいいし、一部分だけ採用してみても効果があると思います。ぜひ検討してみてください。
以上で、私の発表に代えさせていただきます。
(スライドを示して)こういうところにいろいろな資料が載っています。わからないところがあったら、ぜひ参考にしてください。
どうもありがとうございました。
(会場拍手)
LINE株式会社
関連タグ:
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.11.29
「明日までにお願いできますか?」ちょっとカチンとくる一言 頭がいい人に見える上品な言い方に変えるコツ
2024.12.04
いつも遅刻や自慢話…自分勝手な人にイラっとした時の切り返し 不平等な関係を打開する「相手の期待」を裏切る技
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
2024.12.03
職場の同僚にイライラ…ストレスを最小限に抑える方法 臨床心理士が語る、「いい人でいなきゃ」と自分を追い込むタイプへの処方箋
2024.12.05
「今日こそやろう」と決めたのに…自己嫌悪でイライラする日々を変えるには
PR | 2024.12.04
攻撃者はVPNを狙っている ゼロトラストならランサムウェア攻撃を防げる理由と仕組み