Tempo 또는 Cloud Traces용 팀 라벨 기반 접근 제어 구성하기
Tempo 또는 Cloud Traces용 팀 라벨 기반 접근 제어 구성하기 (Configure team label-based access control for Tempo or Cloud Traces)
Cloud Traces 또는 Tempo용 팀 라벨 기반 접근 제어(LBAC)로 트레이스 속성으로 규칙을 정의해 팀이 접근할 수 있는 스팬을 제한할 수 있어요. LBAC는 단일 테넌트 내에서 세밀한 팀 기반 접근 제어를 제공하며, Grafana Cloud의 로그·메트릭 LBAC에서 쓰이던 경험을 그대로 반영합니다.
참고: 트레이스 라벨 기반 접근 제어는 현재 public preview 단계입니다. 제한적인 지원이 제공되며 공개 출시 전에 호환성 깨지는 변경이 있을 수 있어요. 참고: 로그·메트릭은 cloud access policy를 통한 데이터 소스 레벨 LBAC도 지원하지만, 트레이스 LBAC는 현재 팀 레벨에서만 사용할 수 있어요.
출처: 문서
본문
Grafana는 모든 데이터 소스의 라벨 기반 접근 제어를 아우르는 용어로 LBAC를 사용해요. 트레이스는 접근 제어에 라벨이 아닌 **속성(attributes)**을 사용하지만, Grafana UI는 일관성을 위해 이 기능을 LBAC로 표시합니다. 이 기능은 Grafana Cloud Traces, 특히 Cloud-provisioned 트레이싱 데이터 소스에만 적용됩니다.
LBAC 동작 방식
사용자가 트레이싱 데이터 소스를 쿼리하면 Grafana가 사용자의 팀 멤버십과 그 팀에 할당된 LBAC 규칙을 평가합니다. 이 규칙이 요청에 추가되어 Cloud Traces 데이터 소스가 허용된 스팬·속성만 반환해요. LBAC 규칙은 **속성 선택기(attribute selectors)**를 사용합니다:
{ resource.service.name="checkout", resource.env="prod" }
같은 규칙의 여러 조건은 AND(,)를, 팀 전체의 여러 규칙은 OR를 사용해요.
시작하기 전에
- Grafana Cloud에서 Tempo/Cloud Traces 테넌트를 만들 권한
- Grafana 관리자 권한
- Grafana에 팀 설정
알려진 제한 사항
- 트레이스 LBAC는 팀 레벨에서만 사용 가능. 데이터 소스 레벨 LBAC(cloud access policy로 구성)는 현재 트레이스에서 지원하지 않아요(로그·메트릭 LBAC는 팀·데이터 소스 레벨 모두 지원).
- 검색 자동완성이 개발 중
- LBAC는 리소스 범위 속성만 포함하도록 제한
- 여러 규칙이 있는 사용자는 약간의 성능 저하
트레이스용 팀 LBAC 구성
새 데이터 소스를 추가할 때 이 워크플로를 따르세요. 데이터 소스는 Grafana 호스팅이어야 하고 자체 관리가 아니어야 해요.
- Grafana Cloud 인스턴스 시작
- 스택의 Tempo/Cloud Traces 데이터 소스 상세 접근
- Tempo/Cloud Traces 상세 복사 후 Cloud Access Policy 생성. 설정 상세 복사
- Grafana Cloud에서 Administration > Users and access > Cloud Access Policies로 이동해 트레이스용 접근 정책 생성.
traces:read권한 포함,labels규칙은 포함하지 말 것(데이터 소스 레벨 LBAC가 트레이스에서 지원되지 않으므로 무시됨) - Grafana에서 Tempo/Cloud Traces 선택 또는 새 데이터 소스 생성
- Tempo/Cloud Traces 데이터 소스로 돌아가 기본 인증(basic authentication)으로 설정. userID/tenantID를 username, 접근 정책 토큰을 password로 → Save and connect
- 새 데이터 소스의 Permissions 탭에서 LBAC for data sources rules 섹션 찾기
- Team 드롭다운에서 팀 선택
- 속성 선택기 입력(예:
{ resource.service.name="checkout", resource.env="prod" }) - Save 클릭
LBAC 규칙 예시
LBAC 규칙은 라벨 기반으로 로그·메트릭을 필터링하는 logql 쿼리이며, 트레이스 LBAC 규칙도 속성 선택에 일부 TraceQL 문법을 사용합니다. 각 규칙은 팀 내 다른 규칙과 독립적으로 동작해요.
규칙 지침:
- 리소스 범위 속성만 사용, 예:
{ resource.env="prod" } - 문자열 값만 지원
- 문자열 값에 큰따옴표 사용, 예:
{ resource.env="prod" } =~연산자로 정규 표현식 매칭, 예:{ resource.team =~ "team-a|team-b" }- 같은 규칙에 최대 두 조건. 콤마(
,)를AND연산자로 사용, 예:{ resource.env="prod", resource.team="frontend" }
상세 내용은 LBAC 규칙 만들기를 참고하세요.
단일 규칙
payments API의 스팬만 보도록 제한:
{ resource.service.name="payments-api" }
여러 라벨 매칭은 단일 규칙으로 조합(여러 규칙보다 빠름):
{ resource.team =~ "team-a|team-b" }
여러 규칙
prod 환경 또는 billing 팀의 스팬 접근을 주는 두 규칙:
{ resource.env="prod" }
{ resource.team="billing" }
콤마(,)는 같은 규칙 안에서 AND 연산자로 동작:
{ resource.env="prod", resource.team="frontend" }
{ resource.team="checkout" }
여러 팀의 사용자
여러 팀의 사용자는 각 팀에 할당된 모든 LBAC 규칙을 합산해 접근 권한을 받아요. 예: Team A → { resource.cluster="us-east-1" }, Team B → { resource.service.name="frontend" }.
LBAC이 반환 데이터에 미치는 영향
Cloud Traces는 trace by ID 검색 응답에서 허가되지 않은 스팬을 처리하는 세 가지 redaction 모드를 지원하며, 활성 모드는 테넌트별로 구성됩니다. 조직의 모드를 바꾸려면 Grafana 지원에 문의하세요.
속성 모드 (기본)
비매칭 스팬이 응답에 포함되지만 속성·내재(intrinsics)가 redact됩니다. redact된 스팬에는 최소 필드만 남습니다: traceId, spanId, parentId, name, kind, timestamps, status. 항상 보이는 필드 집합을 넓히려면 allowed_attributes를 구성하세요(예: span:name, resource.service.name, event:name, scope.version). 조직의 allowed_attributes 구성은 Grafana 지원에 문의하세요.
스팬 모드
비매칭 스팬이 응답에서 완전히 제거됩니다. 반환된 스팬에 일치하는 부모가 없어 깨진 트레이스가 생길 수 있어요(스팬 트리 간격).
오류 모드
요청된 트레이스의 어떤 스팬이든 LBAC 정책과 일치하지 않으면 전체 요청이 404 오류를 반환합니다. 가장 엄격한 모드이며 부분적 트레이스 가시성이 허용되지 않는 환경에 적합해요.
Search, metrics, autocomplete 엔드포인트에서는 redaction 모드와 무관하게 LBAC 규칙과 일치하는 스팬만 나타납니다.
LBAC 규칙 관리
편집: 스택 열기 → Tempo/Cloud Traces 데이터 소스 선택 → Permissions → Data access 스크롤 → 편집할 규칙 선택 후 연필(Edit) 아이콘 클릭 → Attribute filters 수정 → Save 삭제: Permissions → Data access → 삭제할 규칙 선택 → X(Delete) 아이콘 → 삭제 확인