루커 스튜디오에는 다른 사람에게 대시보드 파일을 공유하는 기능이 있습니다. 이 공유 기능은 특정 사용자의 이메일에 권한을 부여하는 방식으로 작동하며, 간편하고 직관적이라는 장점이 있습니다.
대시보드 파일을 공유하는 기능은 파일의 소유자만 사용할 수 있습니다. 아래 이미지와 같이 대시보드 우측 상단의 ‘공유’ 버튼을 클릭한 뒤, 공유하려는 사람의 이메일을 기입하는 것으로 손쉽게 설정할 수 있습니다.
‘공유’ → 이메일 주소 입력 → ‘완료’ 클릭
하지만 이렇게 대시보드 파일을 공유하게 되면, 보기 권한을 받은 사용자는 대시보드 전체 데이터를 확인할 수 있습니다. 즉, 단순히 필요한 일부 페이지나 항목만 보여주는 것이 아니라 대시보드 전체가 공개되는 것이므로 특정 데이터만 선택적으로 숨기거나 제한하기는 어렵다는 단점이 있습니다. 어떻게 이런 단점을 극복할 수 있을까요?
오늘은 계정별로 데이터의 보안을 설정할 수 있는 2가지 방법을 소개하겠습니다.
1. ‘이메일로 필터링’하기
1-1. ‘이메일로 필터링’이란?
이 기능은 루커 스튜디오 대시보드를 공유할 때, 접근 권한을 가진 사용자라도 자신의 이메일 주소와 일치하는 데이터 행만 볼 수 있도록 데이터를 제한하는 보안 기능입니다.
이 기능은 원본 데이터에 담당자의 이메일 주소가 포함된 컬럼이 있어야 사용할 수 있습니다.
원본 데이터에 이메일이 필요한 이유는 루커 스튜디오가 접속한 사용자의 이메일 주소와 원본 데이터의 이메일 컬럼 값을 비교하여 일치하는 데이터 행만 사용자에게 보여주도록 필터링 규칙을 적용하기 때문입니다.
예를 들어, 아래는 거래처별 매출 정보를 담고 있는 판매 데이터입니다. 우측에는 각 담당자의 이메일이 기입되어있지요.
위 구글 시트 데이터를 참조하여 아래와 같은 루커 스튜디오를 생성하였습니다. 이 대시보드는 모든 담당자별 매출 정보를 보여주고 있습니다. 각 직원이 다른 직원들의 매출 정보까지 볼 수 있는 것이지요.
그럼 ‘이메일로 필터링’ 기능을 한번 사용해볼까요?
1-2. ‘이메일로 필터링’ 기능 설정하기
대시보드의 편집 모드에서 상단의 ‘리소스’ → ‘추가된 데이터 소스 관리’를 클릭합니다.
데이터 소스 관리 화면에서 해당되는 데이터 소스의 ‘수정’ 버튼을 클릭합니다.
필드 관리 화면에서 ‘이메일로 필터링’ 을 클릭합니다.
‘보기 전용 사용자 이메일로 데이터 필터링’ 을 체크합니다. 그러면 하단에 이메일 필드를 선택할 수 있는 ‘이메일 필드 선택’ 버튼이 노출되는데, 이 버튼을 클릭합니다.
그러면 현재 데이터 소스에서 사용중인 필드 목록이 나오는데, 여기서 이메일 정보가 담긴 ‘이메일’ 필드를 선택합니다.
이렇게 설정하면 ‘이메일’ 컬럼과 대시보드에 접속한 사용자 계정을 대조하여 이메일이 일치하는 행만 대시보드에 보여주게 됩니다. 설정을 마쳤으니 우측 상단의 ‘완료’ 버튼을 클릭하겠습니다.
그리고 대시보드를 다시 보면 이메일로 필터링하는 데이터 소스의 차트에 ‘동의가 필요함’ 문구와 함께 ‘데이터를 로드하려면 동의가 필요한 구성요소입니다.’ 라는 문구가 노출됩니다. 현재 로그인한 사용자의 이메일 주소 정보와 데이터 소스 내의 ‘이메일’컬럼과 대조하기 위해서는 사용자의 이메일 정보를 활용해야하는데 이것에 대한 동의가 없었기 때문입니다.
여기서 ‘허용’ 버튼을 클릭하여 대시보드에 접속한 내 이메일 주소를 수집하는 것에 대한 동의를 해주어야 합니다.
‘허용’ 버튼을 클릭하면, 현재 로그인 계정의 이메일 주소가 표시되면서 이 정보를 루커 스튜디오에 제공하는 것에 대해 허용할 것인지 확인하는 안내문구가 표시됩니다. 한번 더 ‘허용’ 버튼을 클릭하겠습니다.
‘허용’버튼을 클릭하니 아래와 같이 대시보드 정보가 잘 나오고 있는 것을 확인할 수 있습니다. 이전에는 모든 담당자의 정보가 나왔지만, 현재 로그인한 김대리(kim@autooffice.io)의 계정에 해당하는 정보만 대시보드에 보이는 것을 확인할 수 있지요.
이과장(lee@autooffice.io)의 계정으로 동일한 대시보드에 로그인하면 그에 맞게 데이터가 필터링 되어있는 것을 볼 수 있습니다.
하지만 실무에서는 더 까다로운 방식으로 보안을 적용해야 하는 경우가 있습니다. 예를 들면, 각 거래처에 담당자가 여러 명일 때에는 어떻게 해야할까요? 이 때에는 맞춤 쿼리와 ‘조회자 이메일 주소 매개변수 사용 설정’ 기능을 사용할 수 있습니다.
2. 맞춤 쿼리에서 이메일 주소 매개변수 사용하기
2-1. 이메일 주소 매개변수란?
이메일 주소 매개변수는 루커 스튜디오와 빅쿼리를 연동한 경우에 현재 로그인한 사용자의 이메일 정보를 맞춤 쿼리에서 사용할 수 있도록 사용자 이메일을 매개변수화하는 기능입니다.
이 기능을 사용하여 보안을 설정하려면 원본 데이터에 담당자의 이메일 주소가 포함된 컬럼이 있어야 사용할 수 있습니다.
2-2. 매출 정보에 이메일 정보를 포함시키는 방법
이번에는 데이터가 아래와 같이 구성되어있다고 생각해보겠습니다. 각 시트는 빅쿼리의 테이블로 연동하였습니다.
•
매출 정보 시트
•
거래처 정보 시트
•
직원 정보 시트
각각의 시트는 빅쿼리 테이블과 연동하여 아래와 같이 세팅해두었습니다.
•
매출 정보 시트 → salesData
•
거래처 정보 시트 → customer
•
직원 정보 시트 → employee
이 데이터로 매출 정보에 담당자와 이메일 정보를 JOIN한 뒤, 맞춤 쿼리에서 이메일로 데이터를 필터링 하는 방법입니다. 이것을 도식화하면 아래와 같습니다.
먼저 매출 정보에 있는 거래처명과 거래처 정보에 있는 거래처명을 JOIN하여 매출 정보에 담당자명을 덧붙입니다.
본 예제는 직관적인 이해를 돕기 위해 ‘거래처명’ 직원명’으로 조인(JOIN) 했습니다. 하지만 실무에서는 동명이인이나 데이터 변경 문제를 방지하기 위해 반드시 고유한 키(Key)값을 기준으로 조인해야 합니다.
그 다음으로 담당자가 포함된 매출 정보에 있는 담당자명과 직원 정보에 있는 직원명을 조인(JOIN)하여 담당자 이메일을 덧붙입니다. 각 이메일은 콤마(,)로 구분하였습니다.
이렇게 데이터가 완성이 되면, 맞춤 쿼리에 있는 이메일 주소 매개변수를 조건문으로 활용하여 필터링을 할 수 있습니다. 이제 이메일 주소 매개변수를 소개하고, 맞춤 쿼리에서 실제로 쿼리를 작성하여 이메일별 보안을 설정해보겠습니다.
2-3. 맞춤 쿼리 생성하기
수정 화면에서 상단 메뉴의 ‘리소스’ → ‘추가된 데이터 소스 관리’를 클릭합니다.
하단의 ‘데이터 소스 추가’ 버튼을 클릭합니다.
다음 화면에 나오듯이 루커 스튜디오는 구글 애널리틱스, MSSQL, MySQL, postgreSQL 등 다양한 데이터와의 연결을 지원합니다. 이번 예시에서는 빅쿼리를 사용할 것이므로 빅쿼리(BigQuery)를 선택하겠습니다.
다음 화면에서 ‘맞춤 검색어’ → 데이터세트 선택 → ‘조회자 이메일 주소 매개변수 사용 설정’을 체크합니다.
‘조회자 이메일 주소 매개변수 사용 설정’을 체크하면 그 아래에 아래와 같은 변수 정보가 나옵니다. SQL식별자인 이제 @DS_USER_EMAIL 을 쿼리에 직접 삽입하여 사용할 수 있게 됩니다.
이제 사용할 쿼리를 작성해볼까요?
WITH joined_data AS (
SELECT
S.salesDate,
S.customerName,
S.productName,
S.amount,
C.employee,
STRING_AGG(E.email, ', ') AS Email
FROM
`autoofficeshare.post.salesData` AS S
LEFT JOIN -- 담당자명을 가져오기 위해 거래처 정보 테이블을 조인(JOIN)
`autoofficeshare.post.customer` AS C
ON S.customerName = C.customerName
LEFT JOIN -- 담당자 이메일을 가져오기 위해 직원 정보 테이블을 조인(JOIN)
`autoofficeshare.post.employee` AS E
ON C.employee LIKE CONCAT('%', E.employeeName, '%')
GROUP BY
S.salesDate,
S.customerName,
S.productName,
S.amount,
C.employee
)
SELECT * FROM joined_data
WHERE Email LIKE CONCAT('%', @DS_USER_EMAIL, '%')
SQL
복사
이 쿼리는 판매 데이터(salesData)와 고객(customer), 직원(employee) 정보를 연결하여 각 판매 기록마다 담당 직원 이메일을 합쳐 보여줍니다. 그리고 현재 루커 스튜디오에 접속한 계정의 이메일 매개변수를 활용하여 조건문에서 필터링하는 구조입니다.
여기서 사용한 STRING_AGG(DISTINCT E.email, ', ') AS Email은 여러 행의 이메일 값을 하나의 문자열로 합치는 함수입니다. 즉, 여러 직원 이메일을 “email1, email2, email3” 형태로 한 줄로 만들어 주는 역할을 합니다.
STRING_AGG() 문법은 어떻게 사용할까요?
STRING_AGG(컬럼명, '구분자') AS 결과컬럼명
SQL
복사
•
컬럼명: 합치고 싶은 값이 들어 있는 컬럼
•
구분자: 각 값을 구분할 문자열 (예: ', ')
•
AS 결과컬럼명: 합쳐진 결과를 저장할 컬럼 이름
쿼리를 작성하였으니 우측 하단의 ‘추가’ 버튼을 클릭하겠습니다.
이렇게 추가한 데이터 소스는 아래와 같이 ‘매출통합정보’로 수정하였습니다.
기존 차트의 데이터 소스를 새롭게 추가한 ‘매출통합정보’로 변경하였습니다.
각 계정별로 로그인할 때 차트 데이터가 어떻게 바뀌는지 테스트해볼까요? 각 담당자별 담당 거래처를 기억해주세요.
먼저 이과장(lee@autooffice.io) 계정으로 로그인해볼까요? 이과장은 모든 거래처를 담당하고 있습니다. 차트에 전체 거래처의 정보가 잘 반영되고 있지요?
그 다음은 김대리(kim@autooffice.io) 계정으로 로그인해보겠습니다. 김대리는 AAA판매점~DDD판매점까지 관리하고 있지요.
다음은 최대리(choi@autooffice.io) 계정입니다. 최대리는 EEE판매점~HHH판매점까지 관리하고 있습니다. 보안이 잘 적용되었죠?
이번에는 아무런 권한이 없는 이메일 계정(share@autooffice.io)으로 로그인해보겠습니다. 구글 시트의 이메일 컬럼에 없는 이메일 계정이지요. 아무런 데이터가 보이지 않습니다.
이메일 주소에 따라 보안이 잘 설정되었습니다.
오늘은 이메일을 활용해 데이터 접근을 제한하는 두 가지 방법을 살펴보았습니다. 맞춤 쿼리에서 이메일 매개변수를 적용하는 방식, 그리고 데이터 소스 단계에서 이메일 기반 필터를 설정하는 방식이었지요. 두 방법 모두 사용자의 이메일을 먼저 확인한 뒤 필요한 데이터만 불러오기 때문에 보안 측면에서 안전합니다. 오늘 살펴본 내용을 상황에 따라 편리한 방법을 선택해 꼭 적용해보시기 바랍니다!




































.png&blockId=2c0b2d8a-486c-80e2-b6fd-c6b79759b3c6)
