You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Elastic Beanstalk上限制/actuator路径仅管理员可访问

方案1:直接通过Spring Security原生配置实现(最快捷,无需调整EB平台配置)
  • 首先引入Spring Security依赖,Maven项目pom.xml添加配置:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Gradle项目build.gradle添加配置:

implementation 'org.springframework.boot:spring-boot-starter-security'
  • 编写安全配置类,专门拦截/actuator路径,示例代码如下:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class ActuatorSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                // 仅ADMIN角色可访问actuator所有路径
                .requestMatchers("/actuator/**").hasRole("ADMIN")
                // 其余业务路径放行规则可根据自身需求调整
                .anyRequest().permitAll()
            )
            // 启用基础认证,也可替换为表单登录、JWT认证等其他方式
            .httpBasic();
        return http.build();
    }

    // 内存身份源示例,生产环境可对接数据库、LDAP等身份存储
    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails admin = User.withUsername("自定义管理员账号")
            .password(passwordEncoder().encode("自定义管理员密码"))
            .roles("ADMIN")
            .build();
        return new InMemoryUserDetailsManager(admin);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}
  • 可在配置文件中额外收紧actuator暴露规则,application.yml示例:
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics # 按需暴露必要端点,不要全开
  endpoint:
    health:
      show-details: when-authorized # 仅授权用户可查看健康检查详情

注意:生产环境不要硬编码管理员账号密码,可通过EB环境变量注入,代码中用${ADMIN_USER}、${ADMIN_PWD}取值即可。


方案2:结合EB单实例Nginx配置做IP白名单限制(适合管理员IP固定的场景)

单实例EB默认内置Nginx做反向代理,无需改应用代码即可实现路径拦截:

  • 在项目根目录新建.platform/nginx/conf.d/目录
  • 新增actuator_protection.conf配置文件,内容如下:
location /actuator {
    # 按实际需求添加管理员公网IP/IP段,多个规则多行添加即可
    allow 123.123.123.123;
    allow 10.0.0.0/24;
    # 禁止所有其他IP访问
    deny all;
    # 转发请求到后端SpringBoot服务,端口按实际配置调整,EB默认是5000
    proxy_pass http://localhost:5000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}
  • 将整个.platform目录和SpringBoot部署包放在同级目录,打包后重新部署到EB即可生效。

该方案无需修改应用代码,但管理员IP不固定时维护成本较高,可按需选择。

内容的提问来源于stack exchange,提问作者moetez92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:09:03