Ein Aktuator ist normalerweise ein Gerät, das einen physikalischen Effekt nutzt, um ein bestimmtes Ziel zu erreichen. Aktuatoren werden in vielen Bereichen eingesetzt, wie z.B. in der Automatisierungstechnik, der Raumfahrt, der Robotik und der Medizintechnik.

In Spring Boot bezieht sich der Begriff Actuator auf ein Framework, das Teil von Spring Boot ist und dazu beiträgt, die Überwachung und Verwaltung deiner Anwendungen zu ermöglichen. Mit den von Hause aus mitgelieferten Actuatoren, kann man Informationen über den Zustand einer Anwendung abrufen, z.B. Informationen über die Ausführung, die Konfiguration und die Ressourcennutzung. Actuatoren können auch verwendet werden, um Funktionen wie Neustarts und automatisierte Überwachung deiner Anwendungen bereitzustellen.

So funktionieren Actuatoren eigentlich ähnlich wie ein physischer Aktuator(siehe oben) in dem Sinne, dass eine bestimmte Funktion ausgeführt wird (Überwachung und Verwaltung), aber Actuatoren in Spring Boot beziehen sich immer auf eine software-basierte Komponente in Spring Boot und nicht auf ein elektromechanisches Gerät. Du kannst die Actuatoren in Spring Boot nutzen indem du den Spring Boot Starter „spring-boot-starter-actuator“ hinzufügst und dann in deiner application.properties hinzufügst:

Die Abhängigkeit für die pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>3.0.2</version>
 </dependency>

der Eintrag für deine application.properties:
management.endpoints.web.exposure.include=*

Mit dieser Einstellung werden alle Actuatoren freigegeben und hier sollte das Thema Sicherheit ein wichtige Rolle einnehmen. Aber zuerst ein paar wichtige Actuatoren in der Übersicht mit den dazugehörigen Links wenn deine Anwendung auf localhost:8080 läuft:

  1. Mit dem Actuator health erhälst du die Info ob das System deine Anwendung gestartet hat der passende Link hier zeigt dir das health: http://localhost:8080/actuator/health
  2. In metrics können eine vielzahl an Daten abgefragt werden über Aufrufe aus der Anwendung mehr dazu findet man bei spring.io eine Übersicht deiner Liste der Aufrufpunkte deiner Anwendung metrics: http://localhost:8080/actuator/metrics
  3. Eine Übersicht über deine Laufzeitumgebung env: http://localhost:8080/actuator/env

Mit Hilfe von Actuatoren kannst du den Zustand der Anwendung(health, metric) und die Systemumgebung(env) geben.

Actuatoren absichern

Es ist wichtig zu beachten, dass du die Zugriffsberechtigungen auf die Actuatoren konfigurieren must, um sicherzustellen, dass nur autorisierte Benutzer auf die entsprechenden Informationen zugreifen können. Dies kann in der Konfigurationsdatei application.properties der Anwendung oder mithilfe von Sicherheitsmechanismen wie Spring Security durchgeführt werden. Dazu ein Beispiel:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      .authorizeRequests()
        .requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("ADMIN")
        .and()
      .httpBasic();
  }
  
  @Autowired
  public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
      .inMemoryAuthentication()
        .withUser("admin").password("{noop}password").roles("ADMIN");
  }
}

Hier werden jetzt alle Endpunkte einfach abgeschaltet. Statt alle Actuatoren zu sperren, könntes du die Zugriffsberechtigungen auf bestimmte Endpunkte beschränken, indem Sie einen Ant-Matcher mit dem Pfad „actuator“ verwenden. Hier ist ein Beispiel als Ersatz für die oben beschriebene Methode configure(HttpSecurity http) dafür:

@Override
protected void configure(HttpSecurity http) throws Exception {
  http
    .authorizeRequests()
      .antMatchers("/actuator/**").hasRole("ADMIN")
      .and()
    .httpBasic();
}

Auf der Seite von Baeldung.com findes du noch weitere Antworten zu Actuatoren.


0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese  Website nutzt Cookys. Wenn Du Sie nicht haben willst, klicke hier. Hier klicken um dich auszutragen.