Quarkus Security Review
認証、認可、入力検証によってQuarkusアプリケーションを保護するためのベストプラクティス。
When to Activate
- 認証追加(JWT、OIDC、Basic認証)
- @RolesAllowedまたはSecurityIdentityで認可実装
- ユーザー入力検証(Bean Validation、カスタムバリデータ)
- CORS設定またはセキュリティヘッダー構成
- シークレット管理(Vault、環境変数、設定ソース)
- レート制限またはブルートフォース対策追加
- CVEの依存関係スキャン
- MicroProfile JWTまたはSmallRye JWT操作
Authentication
JWT Authentication
// JWT で保護されたリソース
@Path("/api/protected")
@Authenticated
public class ProtectedResource {
@Inject
JsonWebToken jwt;
@Inject
SecurityIdentity securityIdentity;
@GET
public Response getData() {
String username = jwt.getName();
Set<String> roles = jwt.getGroups();
return Response.ok(Map.of(
"username", username,
"roles", roles,
"principal", securityIdentity.getPrincipal().getName()
)).build();
}
}
Configuration (application.properties):
mp.jwt.verify.publickey.location=publicKey.pem
mp.jwt.verify.issuer=https://auth.example.com
# OIDC
quarkus.oidc.auth-server-url=https://auth.example.com/realms/myrealm
quarkus.oidc.client-id=backend-service
quarkus.oidc.credentials.secret=${OIDC_SECRET}
Custom Authentication Filter
@Pro…