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 규칙 만들기
- 데이터 소스로 이동하세요.
- permissions 탭으로 이동하세요. 여기에서 LBAC for data sources rules 섹션을 찾을 수 있어요.
- LBAC 규칙을 추가하세요. 해당 팀에 대한 새 규칙을 LBAC for data sources rules 섹션에 추가하세요.
- 규칙에 대한 라벨 선택기(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권한을 추가하고,Admin만Admin권한을 가지도록 권장합니다. - 첫 설정에서는 각 팀에 규칙을 최소한으로 만들고, 단순함을 위해 가산(additive) 방식으로 만드는 것을 권장합니다.
- 규칙 검증은 Explore 뷰에서 테스트해 해당 규칙이 반환할 메트릭·로그를 확인해 보세요.
작업 1: 팀별 단일 규칙 설정
특정 라벨을 가진 로그·메트릭에 대한 접근을 부여하는 일반적인 예입니다. 예를 들어 namespace 라벨을 포함하는 모든 로그 줄·메트릭을 포함하는 라벨 정책을 만들 수 있어요. Query 권한을 가진 Team A(규칙 namespace=\"dev\")와 Team B(규칙 namespace=\"prod\")가 있을 때:
- Team A 사용자는
namespace=\"dev\"에 매칭되는 로그·메트릭에 접근 - Team A와 Team B 양쪽 사용자는
namespace=\"dev\"ORnamespace=\"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\"ORnamespace!=\"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\" }에 매칭되는 로그·메트릭만 접근할 수 있어요.