Можно ли отключить безопасность в приложениях Spring Cloud Streamter? - PullRequest
0 голосов
/ 02 июля 2018

Я играю с Spring Cloud Data Flow. Я успешно развернул SCDF в Kubernetes, используя соответствующую документацию . При регистрации начальных приложений на основе 1.5.x все работает должным образом, дальнейшая настройка начальных приложений во время развертывания определения потока не требуется.

При использовании начальных приложений 2.x при переходе на Spring Boot 2.0 вносятся некоторые изменения, которые необходимо учитывать, например, конечные точки привода изменены. Для справки, вот свойства, которые я предоставляю при развертывании потока:

app.*.management.endpoints.web.exposure.include=health,info,binders
deployer.*.cpu=2
deployer.*.memory=4096
deployer.http.count=2
deployer.*.kubernetes.livenessProbePath=/actuator/health
deployer.*.kubernetes.readinessProbePath=/actuator/info

Однако проверка готовности не удалась, так как конечная точка health и info теперь, по-видимому, защищены по умолчанию. Таким образом, стручки заканчиваются аварийными кругами, так как с точки зрения Kubernetes они никогда не готовы.

Я обошел ситуацию, следуя руководству по исправлению начальных приложений , на которое опирается мое определение потока (например, throughput сток), например:

@SpringBootApplication
@Import({org.springframework.cloud.stream.app.throughput.sink.ThroughputSinkConfiguration.class})
public class DemoApplication {

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

    @Configuration
    protected static class ThroughputSinkSecurityConfiguration extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                .requestMatchers(EndpointRequest.to("health", "info")).permitAll();
        }

    }
}

Есть ли способ указать этот тип конфигурации безопасности с помощью флагов или свойств? Разве такой WebSecurityConfigurerAdapter не должен быть там по умолчанию, чтобы сделать конечные точки health и info доступными для Kubernetes?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Ответ Артема очень актуален. Я также хотел поделиться несколькими другими подходами, специфичными для приложений безопасности и OOTB.

  1. В 1.6 SNAPSHOT мы недавно добавили поддержку через spring-cloud / spring-cloud-deployer-kubernetes # 236 , чтобы подключить базовую область аутентификации для взаимодействия с защищенными конечными точками привода. Они применимы как к зондам живучести, так и к готовности Вот справочник commit / docs .

  2. Если вы вообще не хотите обеспечивать безопасность, хотя это и не рекомендуется, вы можете явно отключить настройку безопасности.

dataflow:> stream create foo - определение "http | throughput"

dataflow:> stream deploy foo --properties app. *. Spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration "

(т.е. все приложения в определении потока foo начнутся с SecurityAutoConfiguration исключено)

0 голосов
/ 02 июля 2018

Я бы посоветовал взглянуть на ситуацию под другим углом и предоставить учетные данные из Kubernetes, чтобы получить доступ к вашему защищенному микросервису.

Проблема текущего статус-кво в том, что все ресурсы должны быть защищены.

Вы можете создать свой собственный статический пароль и сохранить его в application.properties. Не переконфигурируйте Kubernetes для каждого перезапуска приложения: https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#boot-features-security

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...