Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クラウドネイティブアプリケーションのセキュリティ戦略: Jakarta Security最新動...
Search
tnagao7
November 15, 2025
Programming
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラウドネイティブアプリケーションのセキュリティ戦略: Jakarta Security最新動向と実践的適用 (JJUG CCC 2025 Fall)
tnagao7
November 15, 2025
More Decks by tnagao7
See All by tnagao7
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
97
Starter特集: Getting started with Jakarta EE Today ~GlassFish編~ (JJUGナイトセミナー)
tnagao7
0
130
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
1k
Other Decks in Programming
See All in Programming
The NotImplementedError Problem in Ruby
koic
1
670
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4k
JavaDoc 再入門
nagise
0
310
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
A2UI という光を覗いてみる
satohjohn
1
120
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
180
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
320
Swiftのレキシカルスコープ管理
kntkymt
0
220
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
5.1k
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
4
2.8k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
380
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.2k
The Limits of Empathy - UXLibs8
cassininazir
1
350
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Claude Code のすすめ
schroneko
67
230k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
Mind Mapping
helmedeiros
PRO
1
240
We Have a Design System, Now What?
morganepeng
55
8.2k
Agile that works and the tools we love
rasmusluckow
331
21k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Transcript
© 2025 Fujitsu Limited クラウドネイティブアプリケーションの セキュリティ戦略: Jakarta Security 最新動向と実践的適用 2025/11/15
長尾 貴浩 JJUG CCC 2025 Fall #jjug_ccc #jjug_ccc_f
自己紹介 © 2025 Fujitsu Limited ⚫ 富士通株式会社 ソフトウェアエンジニア ⚫ アプリケーションサーバー製品の開発・保守
⚫ Jakarta EE/MicroProfile関連のOSS開発 ⚫ MicroProfileステコミ委員 ⚫ X (Twitter): @tnagao7 ⚫ JJUG CCC 2024 Fallなどで登壇 長尾 貴浩 2
目次 ⚫ エンタープライズシステムとJakarta EEセキュリティの動向 ⚫ Jakarta EEのセキュリティAPI: Jakarta Security ⚫
Jakarta Securityとは ⚫ Jakarta Securityの基本的な使い方/OpenID Connect連携 ⚫ クラウドネイティブアプリケーションへのJakarta Securityの適用 ⚫ MicroProfile JWTとの組合せ ⚫ Jakarta Security & MicroProfile JWTの適用例 © 2025 Fujitsu Limited 3
エンタープライズシステムのセキュリティ動向 (1/3) © 2025 Fujitsu Limited ⚫境界型セキュリティがこれまで典型的なセキュリティモデルとされてきた ⚫エンタープライズシステムの形態の変化により境界型セキュリティが限界に ⚫ビジネス要件に対応するため、各種サービスと接続した分散システムを構築したり、 多様なデバイスと接続するケースが増え、外部からの脅威に晒されやすくなった
⚫ひとたび侵入されれば、組織内ネットワーク全体が直ちに侵害されてしまう 外部ネットワーク DMZ 組織内ネットワーク ファイアウォール ファイアウォール 4
エンタープライズシステムのセキュリティ動向 (2/3) © 2025 Fujitsu Limited ⚫新しいセキュリティモデルであるゼロトラストアーキテクチャへの対応が エンタープライズシステムおよびビジネスの継続可能性のために重要な課題 ⚫ネットワークの場所に関わらずすべてのリソースを保護することに焦点 ⚫各国でゼロトラスト対応が推進されている
(米国大統領令14028号など) ネットワークの場所に関わらず すべてのリソースを保護 5
エンタープライズシステムのセキュリティ動向 (3/3) © 2025 Fujitsu Limited ⚫すべてのデータソースとコンピューティングサービスをリソースとみなす ⚫ネットワークの場所に関係なくすべての通信を保護する ⚫企業リソースへのアクセスはセッション単位で付与する ⚫リソースへのアクセスは(中略)動的ポリシーにより決定する
⚫すべての資産の整合性とセキュリティ動作を監視し測定する ⚫アクセスを許可する前にすべてのリソースの認証と認可を 動的かつ厳格に実施する ⚫資産、ネットワークインフラ、通信の現状について 可能な限り情報を収集しセキュリティ態勢の改善に利用する ゼロトラストアーキテクチャの基本思想(NIST SP 800-207から) 今回のトピック 6
Jakarta EEにおける認証・認可の実現 (1/2) © 2025 Fujitsu Limited Jakarta EEを利用して構成するシステムで いかにして動的かつ厳格な認証・認可を実現するか?
アプリケーション (サービス1) アプリケーション (サービス2) エンドユーザー 外部サービス 7
Jakarta EEにおける認証・認可の実現 (2/2) © 2025 Fujitsu Limited アプリケーション (サービス1) IDプロバイダ
(IDaaS等) アプリケーション (サービス2) エンドユーザー 外部サービス Jakarta Security IDプロバイダを利用して リクエストを認証・認可 MicroProfile JWT HTTPリクエスト内の トークンにより認証・認可 外部サービス固有 の認証・認可 OpenID Connect (OIDC) エンドユーザーを認証 動的な認証・認可に対応したIDプロバイダ (IDaaS等) を Jakarta EEアプリケーションサーバーのセキュリティ機能と連携 8
Jakarta EEのセキュリティ機能の動向 (1/2) ⚫ Jakarta Security登場以前の状況 ⚫認証・認可に関する既存の低レベルAPIは強力な一方で利用方法が複雑 ⚫Java Authorization Contract
for Containers (JACC) ⚫Java Authentication SPI for Containers (JASPIC) ⚫セキュリティデータへのアクセス方法がコンポーネント仕様(*)ごとに異なる ⚫セキュリティ関連の設定方法がアプリケーションサーバーごとに異なる © 2025 Fujitsu Limited 2003 2009 2017 JACC 1.0 (J2EE 1.4) JASPIC 1.0 (Java EE 6) Java EE Security API 1.0 (Java EE 8) MicroProfile JWT 1.0 (MicroProfile 1.2) (*) コンポーネント仕様: Servlet, Facesなどの仕様 9
Jakarta EEのセキュリティ機能の動向 (2/2) ⚫ Jakarta Security (旧称 Java EE Security
API) の登場 ⚫認証・認可のためのシンプルに扱える統合的なAPIを提供 ⚫OpenID Connectによる認証に対応 (Jakarta EE 10以降) ⚫ MicroProfile JWTの登場 ⚫JSON Web Tokenによる分散システム向けのアクセス制御の仕組みを提供 © 2025 Fujitsu Limited 2003 2009 2017 JACC 1.0 (J2EE 1.4) JASPIC 1.0 (Java EE 6) Java EE Security API 1.0 (Java EE 8) MicroProfile JWT 1.0 (MicroProfile 1.2) 10
目次 ⚫ エンタープライズシステムとJakarta EEセキュリティの動向 ⚫ Jakarta EEのセキュリティAPI: Jakarta Security ⚫
Jakarta Securityとは ⚫ Jakarta Securityの基本的な使い方/OpenID Connect連携 ⚫ クラウドネイティブアプリケーションへのJakarta Securityの適用 ⚫ MicroProfile JWTとの組合せ ⚫ Jakarta Security & MicroProfile JWTの適用例 © 2025 Fujitsu Limited 11
Jakarta Securityとは ⚫Jakarta EEのWebアプリケーション向けのセキュリティ標準 ⚫認証・認可のためのシンプルに扱える統合的なAPIを提供 © 2025 Fujitsu Limited Jakarta
Security仕様 https://jakarta.ee/ja/specifications/security/ 12
Jakarta Securityが提供する機能 (1/2) ⚫認証メカニズム (Authentication Mechanism) ⚫アプリケーションへのリクエストを認証するコンポーネント ⚫標準で利用可能な認証メカニズム: BASIC, FORM,
Custom FORM, OpenID Connect ⚫アイデンティティストア (Identity Store) ⚫セキュリティデータのリポジトリにアクセスするコンポーネント ⚫標準で利用可能なアイデンティティストア: LDAP, Database, In-memory ⚫セキュリティコンテキスト (Security Context) ⚫現在のリクエストの認証・認可データをアプリケーションに提供するインターフェース © 2025 Fujitsu Limited 13
Jakarta Securityが提供する機能 (2/2) © 2025 Fujitsu Limited リクエスト クライアント リクエストを認証
リクエストを認証 リクエストを認可 認証・認可に関する データにアクセス Jakarta EEコンテナ 認証 メカニズム アプリケーション リクエスト処理 モジュール 認可 モジュール セキュリティ コンテキスト Jakarta Security ディレクトリ サービス等 アイデンティティ ストア 14
Jakarta Securityの基本的な使い方 (1/2) © 2025 Fujitsu Limited @BasicAuthenticationMechanismDefinition // BASIC認証を利用
@InMemoryIdentityStoreDefinition({ // インメモリアイデンティティストアを利用 @Credentials(callerName = "foo", password = "pw1", groups = { "user", "admin" }) }) @ApplicationScoped public class SampleAppliactionConfig { } 1. Webアプリケーションで使用する認証メカニズムを指定する 15
Jakarta Securityの基本的な使い方 (2/2) © 2025 Fujitsu Limited @WebServlet("/sample") @DeclareRoles({ "user",
"admin" }) // ロールを宣言 @ServletSecurity(@HttpConstraint( rolesAllowed = "admin" // adminロールにアクセスを許可 )) public class SampleServlet extends HttpServlet { ... } 2. Webアプリケーションのリソースを保護する (許可するロールの指定など) Jakarta EEアプリケーションのコード例 https://github.com/eclipse-ee4j/jakartaee-examples 参考 16
© 2025 Fujitsu Limited ⚫認証メカニズムとしてOpenID Connectが標準で利用可能 (Jakarta EE 10以降で利用可能) @OpenIdAuthenticationMechanismDefinition(
providerURI = "https://sample-openid-povider/", clientId = "sample-client-id", clientSecret = "AAAAAAAA" ) Jakarta SecurityでのOpenID Connectの利用 (1/2) 17
Jakarta SecurityでのOpenID Connectの利用 (2/2) © 2025 Fujitsu Limited エンドユーザー Jakarta
EEコンテナ IDプロバイダ (IDaaS等) 資格情報を要求 認証 ⚫OpenID Connectに対応したIDプロバイダ (IDaaS等) を用意する ⚫IDプロバイダを活用することで動的かつ厳格な認証と認可を実現できる Webアプリケーションに アクセス Jakarta Securityによる保護 18
目次 ⚫ エンタープライズシステムとJakarta EEセキュリティの動向 ⚫ Jakarta EEのセキュリティAPI: Jakarta Security ⚫
Jakarta Securityとは ⚫ Jakarta Securityの基本的な使い方/OpenID Connect連携 ⚫ クラウドネイティブアプリケーションへのJakarta Securityの適用 ⚫ MicroProfile JWTとの組合せ ⚫ Jakarta Security & MicroProfile JWTの適用例 © 2025 Fujitsu Limited 19
分散システムで各システムを保護するには? © 2025 Fujitsu Limited マイクロサービスアーキテクチャのような分散システムでは どのようにすれば各システム (サービス) を保護できるか? アプリケーション
(サービス1) IDプロバイダ ? ? ? ? ? アプリケーション (サービス2) エンドユーザー OpenID Connect, Jakarta Security, MicroProfile JWTの組合せで分散システムの保護を実現できる 20
MicroProfile JWT (MP-JWT) について ⚫OpenID Connectで一般的に使用されるJSON形式のトークン JSON Web Token (JWT)
でRESTリソースへのアクセスを制御する仕様 © 2025 Fujitsu Limited MicroProfile JWT仕様 https://microprofile.io/specifications/jwt/ アプリケーション MicroProfile JWT クライアント JWT 21
JSON Web Token (JWT) とは ⚫OpenID Connectで一般的に使用されるJSON形式のトークン ⚫JWTの受信者はJWTのデジタル署名を検証してJWTの正当性を確認する ⚫IDプロバイダに問い合わせなくてもJWTの内容を見て認可が可能 ⚫マイクロサービスアーキテクチャなどの分散システムでの利用に適している
© 2025 Fujitsu Limited eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJI UzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJ leHAiOjEzMDA4MTkzODAsDQogImh0dHA 6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp 0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbU JU1p1r_wW1gFWFOEjXk JWTの例(RFC 7519から) {"typ":"JWT", "alg":"HS256"} {"iss":"joe", "exp":1300819380, ...} 署名 ペイロード ヘッダ Base64URL符号化前 22
Jakarta SecurityとMicroProfile JWTの違い © 2025 Fujitsu Limited アプリケーション Jakarta Security
Jakarta SecurityのOIDC認証 MicroProfile JWT エンド ユーザー IDプロバイダ JWT 認証 アプリケーション MicroProfile JWT フロント側 アプリ JWT 提供機能 認証されていないクライアントを IDプロバイダにリダイレクトして認証 HTTPリクエストに含まれるJWT (Bearerトークン) を検証 典型的な 利用シーン Webアプリケーションへの エンドユーザーからのアクセスを保護 マイクロサービスアーキテクチャで サービス間通信のアクセスを保護 23
© 2025 Fujitsu Limited Jakarta SecurityとMP-JWTの適用例 ⚫フロントエンド側の通信はJakarta Securityで認証・認可し バックエンド側の通信はトークンを伝播させてMP-JWTで認証・認可する エンド
ユーザー IDプロバイダ JWT 認証 セッションID アプリケーション Jakarta Security アプリケーション MP-JWT JWT JWT 通信不要 アプリケーション MP-JWT リクエスト 24
© 2025 Fujitsu Limited public class SampleService { @Inject private
OpenIdContext context; // コンテキストを取得 public void callAnotherService() { String token = context.getAccessToken().getToken(); // トークンを取得 WebTarget target = ClientBuilder.newClient().target(TARGET_URI); Response response = target.request() .header("Authorization", "Bearer " + token) // トークンを設定 .get(); // ... } } JWT アプリケーション Jakarta Security アプリケーション MicroProfile JWT ⚫OpenIdContextからトークンを取得して後段の通信に利用できる Jakarta Securityのトークンを後段の通信に利用するには 25
© 2025 Fujitsu Limited ⚫JWTは有効期限が切れるまでアクセス許可を取り消すことができない ⚫JWTの受信者はIDプロバイダを介さずにJWTを検証できてしまう ⚫OAuth/OIDCでは短命のアクセストークンをリフレッシュトークンで更新して対応 ⚫Jakarta Securityでもアクセストークンを定期的に更新する設定が利用可能 ⚫OpenIdAuthenticationMechanismDefinition
#tokenAutoRefresh: trueの場合、期限が切れたトークンを自動的に更新する ⚫IDプロバイダの通信負荷とトレードオフの関係にあるので 有効化は要件に合わせて検討する IDプロバイダが発行するトークンの有効期限に関する注意 クライアント IDプロバイダ アプリケーション Jakarta Security アクセス トークン リフレッシュ トークン リクエスト 26
その他のポイント ⚫サービスメッシュで提供される認証機構との関係について ⚫サービスメッシュで提供される相互TLSはネットワークレベルの保護、 Jakarta Securityはアプリケーションレベルの保護を提供する ⚫相互補完的な関係にあるので片方が他方を代替するものではない ⚫その他のセキュリティ対策について ⚫Jakarta Securityが提供するのはセキュリティ対策の特定の側面だけ ⚫今回取り上げたJakarta
Securityの利用方法は一例 ⚫脆弱性対策やシステム監視など様々な側面も考慮して システムの要件に合わせたセキュリティ対策をとることが大切 © 2025 Fujitsu Limited 27
まとめ © 2025 Fujitsu Limited Jakarta Securityが提供する統合的なAPIによって シンプルな方法でセキュアなアプリケーションを作成できる Jakarta SecurityをIDプロバイダと連携することで
ゼロトラストの動的かつ厳格な認証と認可を実現できる Jakarta SecurityとMicroProfile JWTを組み合わせて マイクロサービスアーキテクチャなど分散システムを保護できる 28
Thank you © 2025 Fujitsu Limited