LBAC for data sources 규칙 만들기

LBAC for data sources 규칙 만들기 (Create LBAC for data source rule)

데이터 소스용 LBAC(Label-Based Access Control, 라벨 기반 접근 제어)는 기본 인증으로 생성된 LBAC 지원 데이터 소스에 사용할 수 있어요. 현재 관리형/provisioned 데이터 소스는 LBAC 규칙을 구성할 수 없어요. 팀 단위로 라벨 선택기를 정의해 로그·메트릭 접근을 세밀하게 통제하는 방법을 알려드릴게요.

출처: 문서

본문

시작하기 전에

  • Grafana Cloud에서 Loki 테넌트를 만들 권한이 설정되어 있는지 확인하세요.
  • Grafana에 대한 admin 데이터 소스 권한이 있는지 확인하세요.
  • Grafana에 팀이 설정되어 있는지 확인하세요.

팀을 위한 LBAC 규칙 만들기

  1. 데이터 소스로 이동하세요.
  2. permissions 탭으로 이동하세요. 여기에서 LBAC for data sources rules 섹션을 찾을 수 있어요.
  3. LBAC 규칙을 추가하세요. 해당 팀에 대한 새 규칙을 LBAC for data sources rules 섹션에 추가하세요.
  4. 규칙에 대한 라벨 선택기(label selector)를 정의하세요. 지정할 수 있는 로그 선택 유형에 대한 지침은 문서를 참고하세요.

LBAC 규칙

LBAC 규칙은 라벨을 기준으로 로그나 메트릭을 필터링하는 logql 쿼리입니다. 각 규칙은 팀 내 다른 규칙과 별개로 독립적인 필터로 동작해요.

예시:

  • 로그: {namespace=\"dev\", cluster=\"us-west-0\"}namespace=\"dev\" cluster=\"us-west-0\" 둘 다 매칭하는 로그 줄 필터링
  • 메트릭: {job=\"api-server\", region=\"europe\"}job=\"api-server\"region=\"europe\"를 매칭하는 메트릭 데이터 포인트 필터링

한 개의 규칙 {namespace=\"dev\", cluster=\"us-west-0\"}namespace=\"dev\" AND cluster=\"us-west-0\"로 해석됩니다. 팀에 대해 만든 두 개의 규칙 {namespace=\"dev\"}, {cluster=\"us-west-0\"}namespace=\"dev\" OR cluster=\"us-west-0\"로 해석돼요.

모범 사례
  • 데이터 소스를 사용해야 할 팀에만 query 권한을 추가하고, AdminAdmin 권한을 가지도록 권장합니다.
  • 첫 설정에서는 각 팀에 규칙을 최소한으로 만들고, 단순함을 위해 가산(additive) 방식으로 만드는 것을 권장합니다.
  • 규칙 검증은 Explore 뷰에서 테스트해 해당 규칙이 반환할 메트릭·로그를 확인해 보세요.

작업 1: 팀별 단일 규칙 설정

특정 라벨을 가진 로그·메트릭에 대한 접근을 부여하는 일반적인 예입니다. 예를 들어 namespace 라벨을 포함하는 모든 로그 줄·메트릭을 포함하는 라벨 정책을 만들 수 있어요. Query 권한을 가진 Team A(규칙 namespace=\"dev\")와 Team B(규칙 namespace=\"prod\")가 있을 때:

  • Team A 사용자는 namespace=\"dev\"에 매칭되는 로그·메트릭에 접근
  • Team A와 Team B 양쪽 사용자는 namespace=\"dev\" OR namespace=\"prod\" 데이터에 접근

작업 2: 팀을 위한 라벨 제외 규칙

특정 라벨을 가진 로그·메트릭을 제외하는 예입니다. secret=true 라벨을 가진 모든 로그를 제외하려면 접근 정책 생성 시 secret!=\"true\" 선택기를 추가하세요. secret!=\"true\" 규칙을 가진 Team A 사용자는 이 라벨을 가진 로그·메트릭에 접근할 수 없습니다.

작업 3: 팀을 위한 여러 규칙 설정

Team A 규칙 cluster=\"us-west-0\", namespace=~\"dev|prod\", Team B 규칙 cluster=\"us-west-0\", namespace=\"staging\" 예시:

  • Team A만: cluster=\"us-west-0\" AND (namespace=\"dev\" OR namespace=\"prod\") 매칭 로그
  • Team B만: cluster=\"us-west-0\" AND namespace=\"staging\" 매칭 로그
  • Team A 사용자는 us-west-0 클러스터에서 namespace dev,prod 로그 접근, Team B 사용자는 us-west-0에서 prod 제외 전부 접근 → 양쪽 모두인 경우 us-west-0 전체 접근
  • 어떤 팀에도 속하지 않은 Editor/Viewer 역할 사용자는 어떤 로그도 쿼리할 수 없음

중요

  • 팀에 속한 Admin 사용자는 그 팀의 로그에만 접근할 수 있음
  • 어떤 팀에도 속하지 않은 Admin 역할 사용자는 모든 로그에 접근할 수 있음

작업 4: 겹치는 규칙

Team A 규칙 namespace=\"dev\", Team B 규칙 namespace!=\"dev\":

  • Team A 사용자: namespace=\"dev\" 로그 접근
  • Team B 사용자: namespace!=\"dev\" 로그 접근
  • Team A와 B 모두인 사용자: namespace=\"dev\" OR namespace!=\"dev\"에 매칭되는 모든 로그 접근

작업 5: 팀 단일 규칙 설정

Editor, Viewer 역할이 Query 권한을 가진 예시에서 Team A가 namespace=\"dev\" 규칙, Team B에는 규칙이 없을 때:

  • Team A 사용자: namespace=\"dev\" 로그 접근
  • Team A와 B 모두인 사용자: namespace=\"dev\" 로그 접근
  • Team A에 속하지 않고 Team B에 속한 Editor/Viewer 사용자: Query 권한으로 인해 모든 로그에 접근

작업 6: Admin이며 Team B 소속인 사용자

Team B에 규칙은 없지만 데이터 소스에 대한 Query 권한이 있고 규칙 { project_id=\"project-dev\" }를 가질 때, Admin 기본 역할이며 Team B에 속한 User A는 { project_id=\"project-dev\" }에 매칭되는 로그·메트릭만 접근할 수 있어요.

더 알아보기 (Learn more)