보안 구성
보안 구성 (Configure security)
Grafana 서버 또는 그 로컬 네트워크에서 Grafana가 아닌 웹 서비스를 실행한다면, 그것들이 Grafana 데이터 소스 프록시나 다른 방법을 통해 악용될 수 있을지도 몰라요. 이 문서는 그러한 유형의 악용을 방지하기 위한 보안 주의사항(precautions)들을 정리해 줍니다.
본문
이런 유형의 악용을 방지하려면 아래 나열된 주의사항 중 하나 이상을 적용하는 것을 권장해요.
데이터 소스 URL에 대한 IP/호스트네임 제한
데이터 소스 URL로 사용되고 Grafana 데이터 소스 프록시를 통해 프록시될 수 있는 IP 주소나 호스트네임을 특정 것들만 허용하도록 Grafana를 구성할 수 있어요. 사용 방법은 data_source_proxy_whitelist를 참고하세요.
요청 보안 (Request security)
요청 보안 구성 옵션은 사용자가 Grafana 서버에서 생성하는 요청을 제한할 수 있게 해 줘요. 사용자가 생성한 요청을 대상으로 해요. 자세한 내용은 Request security 문서를 참고하세요.
참고: Request security는 Grafana Enterprise v7.4 이상에서 사용 가능해요.
방화벽 규칙 (Firewall rules)
민감한 내부 웹 서비스에 Grafana가 네트워크 요청을 하지 못하도록 제한하는 방화벽을 구성해요. 많은 방화벽 도구가 있어요. 특정 보안 도구의 문서를 참고하세요. 예를 들어 Linux 사용자는 iptables를 사용할 수 있어요.
프록시 서버 (Proxy server)
Grafana가 만드는 모든 네트워크 요청이 프록시 서버를 거치도록 요구할 수 있어요. 자체 호스팅 리버스 프록시 옵션에는 다음이 포함되지만 이에 국한되지는 않아요.
CORS 구성 (Configure CORS)
Grafana 인스턴스에서 CORS를 활성화하려면 Grafana를 리버스 프록시 뒤에서 실행하고 리버스 프록시에서 CORS 헤더를 구성해요. 자세한 내용은 리버스 프록시 뒤에서 Grafana 실행 문서를 참고하세요.
참고: Grafana는 헤더 값으로 와일드카드(
*)를 사용하는 것을 권장하지 않으며, URL을 사용하는 것을 권장해요.
Viewer 쿼리 권한 제한 (Limit Viewer query permissions)
Viewer 역할을 가진 사용자는 사용자가 Viewer 권한을 가진 대시보드에 정의된 쿼리뿐만 아니라, 조직에서 사용 가능한 어떤 데이터 소스에서든 어떤 쿼리든 입력할 수 있어요.
예를 들어 데이터 소스 하나, 대시보드 하나, 쿼리 하나가 정의된 패널 하나가 있는 Grafana 인스턴스에서 Viewer가 그 패널에 정의된 쿼리 결과만 볼 수 있다고 가정할 수 있어요. 실제로는 Viewer가 데이터 소스에 어떤 쿼리든 보낼 수 있는 접근 권한을 가져요. curl 같은 명령줄 도구(여러 도구가 있음)로 Viewer는 데이터 소스에 자신만의 쿼리를 만들어 잠재적으로 민감한 데이터에 접근할 수 있어요.
이 취약점을 해결하려면 데이터 소스 쿼리 접근을 다음 방식으로 제한할 수 있어요.
- 접근을 제한하는 일부 제한(데이터베이스 이름이나 자격 증명 등)을 데이터 소스 구성에 추가해 여러 데이터 소스를 만들고, Data Source Permissions Enterprise 기능으로 Grafana에서 데이터 소스에 대한 사용자 접근을 제한해요.
- 별도의 Grafana 조직을 만들고 그 조직에 별도의 데이터 소스를 만들어요. 데이터 소스가 데이터의 하위 집합으로 접근을 제한하는 일부 옵션/사용자/자격 증명 설정을 가지도록 해요. 모든 데이터 소스에 접근 제한 옵션이 있는 것은 아니에요.
대시보드 익명 접근 활성화의 영향
Grafana에서 익명 접근을 활성화하면 어떤 방문자나 사용자도 로그인 없이 Viewer로 Grafana를 사용할 수 있어요. 이 섹션은 익명 접근(Anonymous access) 활성화의 보안 영향을 나열해요.
- Viewer 역할이 접근할 수 있는 대시보드의 URL을 아는 사람은 누구나 그 대시보드에 접근할 수 있어요.
- 대시보드 생성자가 모든 Viewer에게 숨기지 않는 한, 새 대시보드는 공개적으로 접근 가능해요.
- Viewer에게 Edit 또는 Admin 능력을 부여한 대시보드는 누구나 편집하거나 삭제할 수 있어요.
- 누구나 API에
view호출을 하고 모든 폴더, 대시보드, 데이터 소스를 나열할 수 있어요. - 누구나 Grafana 인스턴스가 구성된 모든 데이터 소스에 임의 쿼리를 만들 수 있어요.