메인 콘텐츠로 건너뛰기

ELK

casdoor/elk-auth-casdoor 개요

ELK(Elasticsearch, Logstash, Kibana)의 가장 큰 단점 중 하나는 원래 이러한 제품들이 인증 메커니즘이 없었다는 것입니다. 결과적으로, Kibana 또는 Elasticsearch의 URL을 가진 누구나 Kibana 대시보드에 접근할 수 있었습니다. 나중에 ELK는 'Xpack'이라는 내장 인증 시스템을 통합했습니다. 그러나 그것의 고급 기능들(예: OAuth, OIDC, LDAP, SAML)은 무료가 아닙니다. 계정과 비밀번호 세트를 사용하는 일반적인 인증만이 무료로 제공되며, 이는 상당히 불편합니다. 이 접근 방식은 우리가 기업 내의 모든 사람에게 고유한 계정을 제공할 수 없게 합니다.

이 문제를 해결하기 위해, 우리는 Casdoor를 기반으로 한 elk 인증 솔루션을 개발했습니다. 이 솔루션은 무료이며, 오픈 소스이며, 지속적인 유지 보수가 이루어지며, 다양한 고급 기능을 지원합니다. Casdoor는 OAuth 2.0/OIDC를 기반으로 한 중앙 집중식 인증/싱글 사인온 플랫폼입니다. Casdoor/elk-auth-casdoor는 ELK/Kibana 스택으로의 모든 HTTP 데이터 흐름을 가로채는 역할을 하는 리버스 프록시로 작동합니다. 로그인하지 않은 사용자들을 로그인하도록 안내합니다. 이 리버스 프록시는 사용자가 로그인한 경우 투명하게 작동합니다.

사용자가 제대로 인증되지 않은 경우, 요청은 일시적으로 캐시되고 사용자는 Casdoor 로그인 페이지로 리디렉션됩니다. 사용자가 Casdoor를 통해 로그인하면 캐시된 요청이 복원되어 Kibana로 전송됩니다. 따라서 POST 요청(또는 GET 이외의 다른 요청 유형)이 가로채진 경우, 사용자는 양식을 다시 채우고 요청을 다시 보낼 필요가 없습니다. 리버스 프록시가 그것을 기억해줄 것입니다.

casdoor/elk-auth-casdoor 저장소는 https://github.com/casdoor/elk-auth-casdoor에 위치해 있습니다.

어떻게 실행하나요?

  1. Go 프로그래밍 언어 환경이 설치되어 있는지 확인하십시오.

  2. casdoor/elk-auth-casdoor로 이동하여 코드를 가져옵니다.

  3. 프록시를 Casdoor와 함께 앱으로 등록합니다.

  4. 구성을 수정합니다.

    구성 파일은 "conf/app.conf"에 위치해 있습니다. 다음은 예시이며, 특정 요구 사항에 따라 사용자 정의해야 합니다.

    appname = .
    # port on which the reverse proxy shall be run
    httpport = 8080
    runmode = dev
    # EDIT IT IF NECESSARY. The URL of this reverse proxy.
    pluginEndpoint = "http://localhost:8080"
    # EDIT IT IF NECESSARY. The URL of the Kibana.
    targetEndpoint = "http://localhost:5601"
    # EDIT IT. The URL of Casdoor.
    casdoorEndpoint = "http://localhost:8000"
    # EDIT IT. The clientID of your reverse proxy in Casdoor.
    clientID = ceb6eb261ab20174548d
    # EDIT IT. The clientSecret of your reverse proxy in Casdoor.
    clientSecret = af928f0ef1abc1b1195ca58e0e609e9001e134f4
    # EDIT IT. The application name of your reverse proxy in Casdoor.
    appName = ELKProxy
    # EDIT IT. The organization to which your reverse proxy belongs in Casdoor.
    organization = built-in
  5. 위의 예시에서와 같이 http://localhost:8080을 방문하고 리디렉션 지침에 따라 로그인합니다. 그런 다음 Casdoor에 의해 보호되고 인증된 Kibana를 볼 수 있어야 합니다.

  6. 모든 것이 잘 작동한다면, 방화벽(또는 다른 방법)을 구성하여 원래의 Kibana 포트에 대한 외부 접근을 차단하는 것을 잊지 마십시오. 이렇게 하면 외부인들은 이 리버스 프록시를 통해서만 Kibana에 접근할 수 있습니다.