Bird
Raised Fist0
Spring Bootframework~5 mins

Securing actuator endpoints in Spring Boot

Choose your learning style10 modes available
Introduction

Actuator endpoints give important info about your app. Securing them stops strangers from seeing or changing this info.

When you want to protect app health and metrics info from public access.
When deploying your app in production and need to limit who can see sensitive data.
When you want to require login or special roles to access management endpoints.
When you want to disable some actuator endpoints for security reasons.
When you want to use HTTPS and authentication for actuator URLs.
Syntax
Spring Boot
management.endpoints.web.exposure.include=health,info,env
management.endpoint.health.show-details=when_authorized
spring.security.user.name=admin
spring.security.user.password=secret
spring.security.user.roles=ADMIN

# In Java config
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
      .authorizeHttpRequests(auth -> auth
        .requestMatchers("/actuator/health", "/actuator/info").permitAll()
        .requestMatchers("/actuator/**").hasRole("ADMIN")
        .anyRequest().authenticated()
      )
      .httpBasic();
    return http.build();
}

You configure which endpoints are exposed using management.endpoints.web.exposure.include.

Use Spring Security to require login or roles for actuator URLs.

Examples
Only health, info, and env endpoints are visible over HTTP.
Spring Boot
management.endpoints.web.exposure.include=health,info,env
Health details show only if user is authorized.
Spring Boot
management.endpoint.health.show-details=when_authorized
Sets a simple ADMIN user with username and password for basic auth.
Spring Boot
spring.security.user.name=admin
spring.security.user.password=secret
spring.security.user.roles=ADMIN
Java config to allow public access to health and info, but require ADMIN role for other actuator endpoints.
Spring Boot
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
      .authorizeHttpRequests(auth -> auth
        .requestMatchers("/actuator/health", "/actuator/info").permitAll()
        .requestMatchers("/actuator/**").hasRole("ADMIN")
        .anyRequest().authenticated()
      )
      .httpBasic();
    return http.build();
}
Sample Program

This Spring Boot app configures security so anyone can see /actuator/health and /actuator/info without login. Other actuator endpoints need login with ADMIN role. Basic auth is used.

Spring Boot
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
          .authorizeHttpRequests(auth -> auth
            .requestMatchers("/actuator/health", "/actuator/info").permitAll()
            .requestMatchers("/actuator/**").hasRole("ADMIN")
            .anyRequest().authenticated()
          )
          .httpBasic();
        return http.build();
    }
}
OutputSuccess
Important Notes

Always test actuator security in your environment before deploying.

Use HTTPS to protect credentials sent with basic auth.

You can customize roles and users with Spring Security for better control.

Summary

Actuator endpoints show app info and need protection.

Use management.endpoints.web.exposure.include to choose visible endpoints.

Use Spring Security to require login or roles for actuator URLs.

Practice

(1/5)
1. What is the main purpose of securing Spring Boot actuator endpoints?
easy
A. To improve application performance by disabling endpoints
B. To automatically update actuator endpoints without manual configuration
C. To enable actuator endpoints for all users without restrictions
D. To protect sensitive application information from unauthorized access

Solution

  1. Step 1: Understand actuator endpoints role

    Actuator endpoints provide information about the app's health, metrics, and configuration.
  2. Step 2: Recognize security importance

    Since these endpoints expose sensitive data, securing them prevents unauthorized users from accessing this info.
  3. Final Answer:

    To protect sensitive application information from unauthorized access -> Option D
  4. Quick Check:

    Actuator security = protect info [OK]
Hint: Actuator endpoints show app info; protect them from strangers [OK]
Common Mistakes:
  • Thinking actuator endpoints improve performance
  • Assuming all endpoints should be open
  • Believing security auto-applies without config
2. Which property correctly exposes only the health and info actuator endpoints in application.properties?
easy
A. management.endpoints.web.expose=health,info
B. management.endpoints.web.exposure.include=health,info
C. management.endpoints.exposure.include=health,info
D. management.web.endpoints.include=health,info

Solution

  1. Step 1: Identify correct property name

    The correct property to expose endpoints is management.endpoints.web.exposure.include.
  2. Step 2: Verify property value format

    Comma-separated list of endpoints like health,info is correct.
  3. Final Answer:

    management.endpoints.web.exposure.include=health,info -> Option B
  4. Quick Check:

    Correct property = management.endpoints.web.exposure.include [OK]
Hint: Use 'management.endpoints.web.exposure.include' to list endpoints [OK]
Common Mistakes:
  • Using 'expose' instead of 'exposure.include'
  • Missing 'web' in the property path
  • Incorrect property structure or spelling
3. Given this Spring Security config snippet, what is the effect on actuator endpoints?
http
  .authorizeHttpRequests(auth -> auth
    .requestMatchers("/actuator/**").hasRole("ADMIN")
    .anyRequest().authenticated()
  )
medium
A. Only users with ADMIN role can access any actuator endpoint
B. All users can access actuator endpoints without login
C. Actuator endpoints are disabled
D. Only unauthenticated users can access actuator endpoints

Solution

  1. Step 1: Analyze requestMatchers rule

    The matcher "/actuator/**" requires users to have role ADMIN to access.
  2. Step 2: Understand anyRequest rule

    All other requests require authentication but no specific role.
  3. Final Answer:

    Only users with ADMIN role can access any actuator endpoint -> Option A
  4. Quick Check:

    Actuator access = ADMIN role required [OK]
Hint: Check role in requestMatchers for actuator URLs [OK]
Common Mistakes:
  • Assuming actuator is open to all
  • Confusing authentication with authorization
  • Ignoring the role requirement
4. What is wrong with this security configuration for actuator endpoints?
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
  http
    .authorizeHttpRequests(auth -> auth
      .requestMatchers("/actuator/**").authenticated()
      .anyRequest().permitAll()
    );
  return http.build();
}
medium
A. The requestMatchers pattern is incorrect syntax
B. The method should return void, not SecurityFilterChain
C. Actuator endpoints require login but other URLs are open, risking security
D. The configuration disables all security

Solution

  1. Step 1: Review authorization rules order

    Actuator endpoints require authentication, but all other requests are permitted without login.
  2. Step 2: Identify security risk

    This means non-actuator URLs are open, which might expose sensitive parts unintentionally.
  3. Final Answer:

    Actuator endpoints require login but other URLs are open, risking security -> Option C
  4. Quick Check:

    PermitAll on anyRequest risks open access [OK]
Hint: Check if anyRequest().permitAll() opens unwanted URLs [OK]
Common Mistakes:
  • Thinking method return type is wrong
  • Assuming requestMatchers syntax is invalid
  • Believing security is fully disabled
5. You want to expose only the health endpoint publicly and secure all other actuator endpoints to ADMIN role. Which configuration achieves this correctly?
hard
A. Expose health only and configure security to permit all on /actuator/health and ADMIN role on /actuator/** except health
B. Expose all endpoints and secure only /actuator/health to ADMIN role
C. Expose health and info endpoints and allow anonymous access to all actuator URLs
D. Expose no endpoints and disable security for actuator URLs

Solution

  1. Step 1: Set exposure property

    Use management.endpoints.web.exposure.include=health to expose only health publicly.
  2. Step 2: Configure security rules

    Permit all access to /actuator/health and require ADMIN role for other actuator endpoints using requestMatchers.
  3. Final Answer:

    Expose health only and configure security to permit all on /actuator/health and ADMIN role on /actuator/** except health -> Option A
  4. Quick Check:

    Expose health public + secure others ADMIN [OK]
Hint: Expose health only, secure others with ADMIN role [OK]
Common Mistakes:
  • Exposing too many endpoints publicly
  • Not securing non-health actuator endpoints
  • Allowing anonymous access to sensitive endpoints
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard