Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
クラウドネイティブアプリケーションのセキュリティ戦略: Jakarta Security最新動...
Search
tnagao7
November 15, 2025
Programming
250
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
180
Starter特集: Getting started with Jakarta EE Today ~GlassFish編~ (JJUGナイトセミナー)
tnagao7
0
160
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
1.1k
Other Decks in Programming
See All in Programming
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
2
270
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
自分的「カンファレンスの楽しみ方」
syumai
0
200
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
490
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
1k
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
130
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
320
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
180
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
180
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
590
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
120
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
210
Git: the NoSQL Database
bkeepers
PRO
432
67k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
340
The Language of Interfaces
destraynor
162
27k
Paper Plane
katiecoart
PRO
3
53k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Test your architecture with Archunit
thirion
2
2.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
How to build a perfect <img>
jonoalderson
1
6k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
620
Scaling GitHub
holman
464
140k
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