본문 바로가기
ElasticStack

Kibana 대시보드 및 캔버스 Public으로 공유하는 법, 게스트용 인증 사용하는 법(Kibana Anonymous access session)

by Pacloud 2023. 7. 10.
반응형

Kibana로 생성한 대시보드 및 캔버스를 공유 혹은 웹사이트에 임베딩을 하려고 하면 계정 인증 없이는 접근이 불가능하다고 한다.

 

대시보드 및 캔버스를 보기 위해 모든 사람에게 Kibana 계정 정보를 알려줄 수는 없는 법...

 

이러한 문제를 해결하기 위해 로그인 없이 게스트용 계정으로 키바나 대시보드 및 캔버스를 공유하는 법을 소개한다.

 

위를 활용하면 웹사이트에서도 게스트용 인증을 통해 iframe으로 임베딩을 할 수 있다.

 

우선 관련 Kibana 문서를 찾아본다.

 

https://www.elastic.co/guide/en/kibana/current/kibana-authentication.html

 

Authentication in Kibana | Kibana Guide [8.8] | Elastic

Kibana uses SPNEGO, which wraps the Kerberos protocol for use with HTTP, extending it to web applications. At the end of the Kerberos handshake, Kibana forwards the service ticket to Elasticsearch, then Elasticsearch unpacks the service ticket and responds

www.elastic.co

Kibana 인증에 대한 가이드이다.

 

위의 글을 천천히 읽다보면 우리가 해결해야할 문제에 대한 실마리를 얻을 수 있다.

 

Kibana Anonymous authentication

 

위에 대한 내용을 간략하게 설명하자면 불특정 다수가 접근하기 위한 계정 인증 방법에 대해 설명하고 있다.

 

쉽게 이야기하자면 Kibana 접근을 위한 게스트용 계정을 생성한다는 이야기이다.

 

Elastic Cloud User settings

 

Elastic Cloud를 사용한다면 Kibana - Edit user settings에 들어가서 설정할 수 있고, 로컬 환경에서 구축했다면 kibana.yml에서 설정해주면 된다.

 

xpack.security.authc.providers:
  anonymous.anonymous1:
    order: 0
    credentials:
      username: "anonymous_service_account" #설정할 게스트용 계정 아이디
      password: "anonymous_service_account_password" #설정할 게스트용 계정 패스워드

 

게스트로 로그인이 활성화되고 키바나에서 public url로 공유할 수 있게 된다. 하지만 여기서 설정해야 될 부분이 더 있다.

 

게스트용 계정을 활성화 시켜줬으니 그에 맞는 계정(User)역할(Role)을 생성해 줘야 한다.

 

Kibana Edit role

 

이런 식으로 키바나 읽기, 인덱스 읽기 정도만 활성화해주었다.

 

현재는 테스트를 위해 모든 인덱스에 접근할 수 있게 했지만 실제 사용할 때에는 보안을 위해 현재 공유하고 싶은 대시보드의 인덱스와 관련된 최소 권한만 공유하는 것이 좋다.

 

Kibana Edit user

 

앞서 설정한 계정과 패스워드와 동일한 계정을 생성해주고, 새로 만든 역할을 할당해준다.

 

Kibana Dashboard

 

이런 식의 과정을 무리 없이 마무리한다면 Public url 버튼이 활성화된다.

 

위의 링크를 시크릿 모드를 통해 접근해보면

 

Kibana Continue as Guest

 

이런 식으로 게스트 계정으로 인증되고 위와 같은 키바나 대시보드를 볼 수 있다.

 

앞서 이야기했다시피 웹사이트에서도 동일하게 iframe으로 임베딩하여 사용할 수 있고, 권한 관리를 통해 캔버스나 Observability도 공유할 수 있다.

 

++추가적으로 참고할 사항

 

1. 인증 과정 누락 발생

 

Elastic Cloud는 기본적으로 루트 계정인 Elastic Cloud 계정과 Kibana에서 관리할 수 있는 User 계정으로 로그인 할 수 있게 되어 있는데 위와 같이 하면 User 계정으로 로그인 하는 부분이 사라진다.

 

기존에 User 계정으로 로그인 하는 분들이라면 Kibana 가이드에 나와 있듯이 기본 계정 정보를 추가하면 된다.

xpack.security.authc.providers:
  basic.basic1:
    order: 0
    icon: "logoElasticsearch"
    hint: "Typically for administrators"
  anonymous.anonymous1:
    order: 1
    credentials:
      username: "anonymous_service_account" #설정할 게스트용 계정 아이디
      password: "anonymous_service_account_password" #설정할 게스트용 계정 패스워드

여기서 주의할 부분은 order 부분을 동일하게 한다면 오류가 발생한다.

 

2. 웹사이트 iframe 무한로딩

 

웹사이트에서 iframe으로 임베딩하는 부분에서 무한로딩이 발생할 수 있는데 이는 최신 웹 브라우저에서 동일 출처 정책(SOP)을 시행하여 프레임 페이지의 동작을 제한하기 때문이다.

 

이러한 부분을 해결하기 위해 Kibana - Edit user settings 혹은, 로컬 환경에서 구축했다면 kibana.yml에서

 

xpack.security.sameSiteCookies: "None"

 

위와 같이 설정해주면 해결 된다.

 

간단하게 HTML 테스트를 진행해보면 위와 같이 잘 출력되는 것을 알 수 있다.

 

추가적으로 쿼리 옵션으로 크기 및 설정 값을 조정할 수 있다. 

 

막히는 부분이나 추가적으로 궁금한 부분이 있다면 댓글로 남겨주세요.

 

'ElasticStack' 카테고리의 다른 글

Snapshot을 이용한 마이그레이션 진행하기  (0) 2023.04.12