Home
home
버블박스
home
🔐

Privacy 기능이 뭐죠…?

햇갈리거나 잘 모르는 이론 및 개념이 있다면 아래에 남겨주세요.
버블 활용 질문은 가급적 모두의 노코드에 남겨주세요.
후원 받은 커피는 더 많은 자료를 만드는 원동력이 됩니다.
목차

1. 왜 데이터가 안 보이죠?

아마 버블 초보자라면, do a search for을 잘 설정한 것 같은데 데이터가 이상하게 안 나오는 경험을 해봤을 겁니다. 특히 user table을 설정할 때, 이런 경우가 간혹 발생합니다.
결론부터 말해 데이터가 나오지 않는 이유는 보통 버블의 privacy 설정 때문입니다. 100%는 아닙니다. 저도 해당 기능을 처음에 몰라서 “왜 데이터가 안 나오지?”하는 기억이 있네요. 버블의 [data] 탭을 들어가보면, [privacy] 탭이 있는 걸 볼 수 있습니다. 도대체 이 놈이 뭐길래 우리를 힘들게 만드는 걸까요?

2. Privacy 기능이 필요한 이유

사실 잘 모르시는 분들이 많지만, privacy 기능은 보안 정책에 필수적인 기능입니다. 해당 기능을 쉽게 요약하자면 “권한이 있는 유저에게만 관련 데이터를 보여주는 기능”이라고 보면 됩니다.
보안을 무시한다고?! 꼼짝마! (출처 : MBC)
버블에서 데이터를 불러오는 흐름을 예시로 살펴보겠습니다. 현재 등록된 유저의 정보(ex. 닉네임)을 불러와서 보여줘야 한다고 합시다. 그러면, 당연히 do a search for로 user table을 선택해 레코드를 불러오겠죠? 근데 유저 테이블에 저장된 정보 중에서는 이메일, 전화번호 등 남들에게 보여주지 못하는 정보가 있습니다. do a search for이 불러오는 유저 레코드(a.k.a 행, row)에서 보여줘야 하는 필드는 닉네임 필드만이고, 이메일과 전화번호 필드는 제외해야 합니다. 이때 privacy 기능이 큰 도움이 됩니다. 해당 기능을 이용하면 이메일과 전화번호 필드를 제외하고, 닉네임 필드에 저장된 값만을 불러와서 사용할 수 있습니다.
이런 엄청난 보안 기능이 있다니! (출처 : 미스터리 음악쇼 복면가왕)

3. 어떻게 Privacy는 보안을 지켜주죠?

이를 이해하려면, 버블에서 데이터를 불러오는 흐름을 이해해야 합니다. 흐름을 요약하면 아래와 같습니다.
1.
유저(a.k.a client)가 데이터베이스에 저장된 데이터를 요청
2.
이때, privacy rule이 작동해 유저에게 해당 데이터를 보여줘도 되는지 확인
3.
privacy rule에 의해 필터링된 데이터만 전달
무슨 소리인지 잘 모르겠다고요? 아래 이미지를 통해 차근차근 알아봅시다. 우선, 유저 테이블에 저장된 유저(a.k.a client)가 버블의 데이터베이스에 do a search for 등을 통해 필요한 데이터를 불러옵니다. 다만, 유저 민감한 정보는 유저에게 보여줄 수 없겠죠? 이 중간에 Privacy rules이 작동되서 유저의 권한을 확인하고 데이터를 접근합니다.
출처 : bubble docs - Protecting data with privacy rules

4. Privcay 설정 방법 좀 알려주세요

앞선 이론만 이해했다면, 적용은 그리 어렵지 않습니다. 아마도…? [privacy] 탭을 들어간 후, 권한을 설정한 테이블을 선택합니다. 그리고 우측의 [Define a new rule]을 클릭하면, 새로운 privacy rules이 생성됩니다.
privacy rule을 생성하면 (1) 방금 생성한 rule과 (2) 모든 유저에게 통일되는 rule이 생성됩니다. (2)는 모든 유저에게 적용되는거고, (1)은 저희가 설정한 조건이 충족되는 유저에게만 작동이 됩니다.
현재 유저 테이블을 보면 아래와 같습니다. 여기서 [age], [birthday] 등의 필드는 개인정보라 다른 사람에게 보여줄 필요가 없습니다. 그저 [nickname]과 [profile_image] 필드만 보여주게 설정하면 됩니다.
이런 경우 [privacy] 탭의 [everyone else] 영역에서 [view all fields]를 해제합니다. 그리고 앞선 [profile_image]와 [nickname] 필드만 활성화를 합니다. 그러면 유저는 이제 모든 사람의 [nickname]과 [profile_image] 필드에 저장된 값을 확인할 수 있고, 그 외의 값을 볼 수 없게 됩니다.
다만, 앞선 설정을 한 경우에 자신도 [age]나 [birthday] 등 비활성화한 필드에 값을 볼 수 없습니다. 왜냐하면 위 설정은 모두를 포함하기 때문이죠. 설령, 자기 자신이라고 해도 말이죠!
아무 것도 보이지 않소… (출처 : 리그 오브 레전드 - 리신)
이런 경우에 앞서 생성한 privacy rule에서 조건을 설정하면 됩니다. 아래처럼 [when]에 조건을 입력하면, 이제 내가 보유한 내 데이터는 모두 확인할 수 있습니다. [operator]로 [This User]가 나오는데, 이는 데이터베이스에서 불러온 개별 레코드를 뜻합니다. 예를 들어 유저 테이블에 100개의 데이터를 불러왔다고 합시다. 그럼 100개의 레코드가 존재하고, 이 중에서 나의 레코드를 확인하면 됩니다. 이때 [This User is Current User]를 설정하면, 불러온 레코드 중에서 현재 유저의 레코드를 비교하고, 조건이 충족되면 해당 레코드에 저장된 모든 필드를 볼 수 있습니다.

5. View all fields Find this in searches

선택 값에 [View all fields]와 [Find this in searches]가 있습니다. 이 둘은 전혀 다른 영향을 끼칩니다. [View all fields]는 말그대로 데이터를 화면에서 “볼 수 있는가”를 설정하는 겁니다. 반대로 [Find this in searches]를 하면 데이터를 “읽을 수 있는가”를 설정합니다.
꽤나 햇갈려보이는데, 원리를 뜯어보면 간단합니다. 데이터를 화면에서 노출되는 과정은 크게 보면 (1) 데이터베이스에서 데이터를 확인하고 (2) 확인된 데이터를 화면에 출력합니다. (1)은 [Find this in searches]를, (2)는 [View all fields]에 의해 결정된다고 생각하면 됩니다. 즉, [Find this in searches]를 활성화하고 [View all fields]를 비활성화한다면, 데이터를 확인해도 화면에 출력되지 않게 됩니다.
짠! 보이지 않습니다!
그렇다면 왜 [Find this in searches]를 쓸까요? 저희가 Do a search for 등 데이터를 불러오는 오퍼레이터를 위해서입니다. 예를 들어, 현재 회원가입한 유저의 수를 보여준다고 합시다. 그러면 Do a search for:user table을 사용하겠죠? 이때, [Find this in searches]를 비활성화한다면, 유저 테이블에 데이터 자체를 읽을 수 없기에 유저 수를 집계할 수 없습니다.
다만, 유저의 수를 집계한다고 해도 이메일, 전화번호 등의 데이터가 노출될 수 있습니다. 흡사 빈대를 잡으려다가 초가집을 불태우는 느낌입니다. 그래서 이를 방지하려고 [View all fiels]를 설정하는 겁니다.

6. privacy rule, 좀 더 알아보는 게 어때요?

이처럼 privacy rule은 버블의 보안을 담당하는 핵심 기능 중 하나입니다. 이처럼 버블은 우리가 보이지 않는 곳에서 보안을 강화하기 위해 철저히 노력하고 있습니다. 버블박스의 콘텐츠는 핵심 이론 및 개념만을 짧고 간결하게 전달하고 있습니다. 앞선 개념을 모두 이해했다면, 서비스의 보안 강화를 위해 버블의 공식 문서를 읽어보는 게 어떨까요? 절대 더 심도 깊게 다루는 걸 귀찮아서 그런 건 아닙니다.
버블박스가 버블을 주제로 책을 발행할 예정입니다. 출간 알림을 등록하면 추후에 안내 드릴게요! + 알림 신청자 중 일부에게 책을 무료로 드릴 예정입니다.
후원 받은 커피는 더 많은 플러그인과 자료를 만드는 원동력이 됩니다.
필요한 플러그인이 있다면, 버블박스에게 요청해주세요
햇갈리거나 잘 모르는 이론 및 개념이 있다면 아래에 남겨주세요.
버블박스 l BubbleBox