본문 바로가기
버블 개발/중급

67. 개인정보규칙과 데이터 보호(중급) : Protecting data with Privacy Rules, 규칙 설정 방법, 예시

by 스타트업 사업가 마르코 2023. 8. 5.
이 섹션에서는 개인 정보 보호 규칙을 사용하여 개인 데이터를 보호하는 방법에 대해 설명합니다. 이 섹션에서는 개인 정보 보호 규칙이 무엇인지 자세히 살펴봅니다.

 

: 개인 정보 보호 규칙(Privacy Rules)은 앱 보안의 필수 부분입니다.

  • 비공개이거나 민감한 모든 데이터베이스 데이터는 안전하게 보호되기 위해 개인 정보 보호 규칙이 설정되어있어야 합니다.
  • 사용자가 자신의 데이터를 앱에 안전하게 맡길 수 있도록 앱의 개인정보 보호 규칙을 항상 확인하세요.
  • 개인 정보 보호 규칙은 권한이 없는 사용자가 데이터를 보고 편집하지 못하도록 보호하기 위해 각 데이터 유형에 설정하는 조건입니다.

 

(1) 개인 정보 보호 규칙(Privacy Rules)이란?

데이터베이스에 저장하는 모든 데이터는 서버에서 제공됩니다. 개인 정보 보호 규칙은 특정 조건이 충족되는 경우에만 데이터를 사용자의 브라우저로 보내거나 서버에 데이터베이스를 쓰도록 지시하는 규칙입니다.

 

예를 들어, 당사는 로그인한 사람만 당사 제품을 볼 수 있도록 허용할 수 있습니다. 사람이 읽을 수 있는 용어로 표현된 개인 정보 보호 규칙은 다음과 같습니다.

Only return the data if the current user is logged in
  • 이 경우 로직은 Do a search for와 같은 데이터 소스와 제품 이름을 표시하는 Name과 같은 연산자를 사용하여 서버에 일부 정보를 요청하는 것입니다.
  • 위의 개인 정보 보호 규칙이 활성화된 경우 Bubble은 로그인한 사용자가 쿼리(데이터검색문장)를 보낸 경우에만 데이터를 반환합니다.
  • 이것이 앱 보안에 매우 중요한 이유는 데이터가 즉시 읽을 수 있는 형태로 브라우저로 전송되지 않고 서버측에 암호화된 상태로 유지되고, 개인정보규칙에 맞을 경우만 데이터가 브라우저로 전송되기 때문입니다.

위에서 설명한 것처럼 개인 정보 보호 규칙은 데이터에 대한 일종의 방화벽을 구성합니다.

데이터베이스에 대한 모든 요청은 완료되거나 거부되기 전에 인증 및 권한 부여 프로세스를 거칩니다 .

 

사용자 측 데이터에 관해서

개인 정보 보호 규칙을 살펴보기 전에 사용자의 장치에 도달하는 모든 데이터는 더 이상 안전하지 않다는 점을 이해하는 것이 중요합니다.
  • 개발자는 데이터가 사용자의 기기에 다운로드된 한(앱에 표시되지 않더라도) 해당 기기의 사용자가 전송되는 데이터 트래픽을 보고 bubble 서버에 접속할 수 있음을 알아야 합니다.
  • 이것은 상당히 기술에 집중된 문제입니다.
  • 진정으로 데이터에 접속할 수 없게 하는 유일한 방법은 처음부터 서버에서 전송되지 않도록 하는 것입니다. 이 때문에 개인 정보 보호 규칙은 그렇게 하는 방법입니다.

 

우리는 대부분의 경우 데이터가 장치에 도달하기를 원합니다. 그렇지 않으면 데이터 관련 작업을 전혀 수행할 수 없기 때문입니다. 중요한 것은 의도한 정보만 전송되고 승인되지 않은 데이터는 전송되지 않도록 하는 것입니다.

 

전자 상거래 상점에서는 보안 요구 사항이 다른 데이터를 찾을 수 있습니다.

  • 모든 제품은 누구나 볼 수 있어야 합니다. (그렇지 않으면 아무도 구매할 수 없습니다).
  • 모든 장바구니는 장바구니를 만든 사용자만 볼 수 있어야 합니다. (사용자의 구매 내역을 비공개로 유지하기 위해)

제품은 공개 데이터로 알려져 있으며 장바구니는 비공개 데이터입니다.

 

(2) 개인 정보 보호 규칙 작동 방식

: Bubble은 한 곳에서 모든 데이터 유형에 대한 개인 정보 설정을 제어할 수 있는 개인 정보 보호 규칙 편집기를 제공합니다.

메인패널 좌측의 DATA 탭으로 이동한 다음 Privacy를 클릭하여 접속합니다.

 

1. 개인 정보 보호 규칙은 다음과 같은 방식으로 데이터 유형을 보호합니다.

  • 특정 필드가 표시되지 않도록 할 수 있습니다.
  • Do a search for로 데이터 유형이 발견되지 않도록 할 수 있습니다.
  • 사용자가 업로드된 파일을 보는 것을 중지할 수 있습니다.
  • 자동 바인딩으로 사용자가 변경하지 못하도록 할 수 있습니다.
  • 개인 파일의 보안을 관리하려면 개인 정보 규칙 및 파일 업로드를 담당하는 element 내에서 특정 설정을 구성해야 합니다.  해당 element의 편집기에서 'Make this file privacy'(이파일 비공개로 만들기)의 체크박스를 클릭하여 활성화시켜 줍니다.

 

2. 개인 정보 보호 규칙은 두 가지 정보를 사용하여 작성됩니다.

  • 데이터베이스 데이터의 속성은 무엇입니까?
  • 현재 사용자의 속성은 무엇입니까?

이 둘의 속성을 결합하여 사용자가 누구이며 사용자가 접속하려는 항목을 결정하는 규칙을 유연하게 설정할 수 있습니다.

 

예시) 설명을 위해 문장으로 작성된 또 다른 규칙을 살펴보겠습니다.

Only return the data if the thing's Creator is the current user
  • 여기서 우리는 문제의 대상과 현재 사용자를 모두 포함하고 있습니다.
  • 현재 사용자와 데이터 작성자가 동일하면 Bubble이 데이터를 반환합니다.
  • 그렇지 않은 경우 데이터는 서버에 안전하게 보관됩니다.

 

3. 개인 정보 규칙 설정

각 개인 정보 보호 규칙은 서로 다른 설정으로 구성되어 있으며 작동 방식을 이해하는 가장 쉬운 방법은 영어 문장을 읽을 때처럼 왼쪽에서 오른쪽으로 읽는 것입니다.

개인정보규칙 예시
개인정보규칙 예시

 

  • 위의 문장은 When "현재 사용자가 로그인하면" Current User is logged in
  • "이 규칙에 일치하는 사용자는... 무엇을 할 수 있습니다." User who match this rule casn...라고 되어 있습니다.

 

  • 현재 클럽 이벤트(Club event) 데이터 type에 대해 작업 중이므로 해당 문장을 "현재 사용자가 로그인하면 이 규칙과 일치하는 사용자는 클럽 이벤트의 모든 필드를 볼 수 있습니다"로 해석할 수 있습니다.

 

설정과 레이블은 문자 그대로 받아들여야 합니다.

  • 예를 들어 View all fields는 모든 필드 보기를 의미하며 workflow에서 making changes to the field를 중지하지 않습니다.
  • 마찬가지로 검색에서 Do a search for는 구체적으로 검색에 적용되지만 레코드는 여전히 다른 방식으로도 참조할 수 있습니다.
  • 사용에게 어떻게 보이고 그것을 수행할 수 있는 항목에 어떤 영향을 미치는지 알아보려면 settings을 가지고 놀고 페이지에서 결과를 확인하는 것이 좋습니다.

 

4. 개인 정보 보호 규칙 및 워크플로

개인 정보 보호 규칙이 앱의 워크플로에 영향을 줍니까? 대답은 YES와 NO입니다.

 

1) View all fields는 워크플로우에서 데이터를 변경(Making changes to a thing)하고 해당 필드를 업데이트하는 것(updating that field)을 막지 않습니다. 그러나 현재 사용자의 조건이 필드를 볼 수 없는 경우 조건을 올바르게 확인하지 못할 수 있어서 당신의 워크플로우 동작을 멈출 수 있습니다.

 

2) Do a search for는 데이터를 변경하는 것을 막지는 않지만 워크플로에서 원하는 검색 결과를 얻지 못하게 정지시킬 수 있습니다. 즉, 워크플로에서 Do a search for를 사용하는 경우 검색은 현재 사용자가 접근할 수 있는 데이터만 반환합니다.

 

3) Allow auto-binding(자동 바인딩) 해제는 사용자가 자동 바인딩된 요소를 통해 변경하는 것을 중지하지만 워크플로에서 동일한 변경을 수행하는 것을 중지하지는 않습니다.

 

 

: 결과적으로 우리가 받아들일 수 있는 두 가지 중요한 교훈이 있습니다.

  1. 현재 사용자에 의해 실행 중인 워크플로를 확인해야 합니다. 앱의 다른 시나리오에서와 동일한 제한이 워크플로에 적용됩니다.
  2. 원하지 않는 작업을 수행하지 못하도록 워크플로를 보호하려면 워크플로 또는 특정 작업의 경우에(Only When)만 필드에서 조건식을 사용해야 합니다.

 

5. 워크플로에서 개인 정보 보호 규칙을 재정의할 수 있습니까?

: 경우에 따라 사용자가 특정 작업을 수행할 때 개인정보 보호 규칙을 재정의해야 할 수도 있습니다.

 

예시)

  • 사용자 1은 다른 사용자를 검색할 수 있는 권한이 없습니다.
  • 사용자 1이 특정 작업을 실행하면 다른 모든 사용자를 검색하여 변경해야 할 수 있습니다.

 

즉, 사용자 1이 다른 사용자를 검색하지 못하도록 하는 개인정보 보호 규칙을 재정의해야 합니다.

  • 이는 API 워크플로를 사용하고 워크플로를 실행할 때 개인 정보 보호 규칙 무시를 선택하여 수행됩니다.
  • 이를 통해 현재 사용자에게 액세스 권한을 열어 보안을 손상시키지 않고 데이터에 대한 전체 액세스 권한으로 중요한 작업을 수행하는 워크플로를 실행할 수 있습니다. 작업은 순전히 서버 측에서 수행되므로 사용자는 작업을 볼 수 없으며 실행 중이라는 사실조차 알 수 없습니다.

API워크플로우)

API 워크플로를 사용하면 개인정보 보호 규칙을 재정의하여 현재 사용자가 볼 수 없는 데이터에 액세스 할 수 있습니다. 이 모든 것은 Bubble의 서버에서 안전하게 발생하며 현재 사용자의 장치에 도달하지 않습니다.

 

(3) 예시

예시 1: 장바구니

: 장바구니라는 사용자 정의 데이터 유형이 있습니다.

  • 이 유형은 검색에서만 찾을 수 있고 만든 사람이 볼 수 있어야 합니다. 하지만 잠깐만요. 다른 사람이 주문을 볼 수 없다면 제품을 어떻게 배송해야 할까요?
  • 그렇다면, 다른 사람이 볼 수 있어야 하겠지요? 하지만 제한적이어야 합니다. 모든 사용자의 카트를 볼 수 있는 액세스 권한을 부여하는 Admin (예/아니요)이라는 사용자 정의 필드를 각 사용자에게 설정합니다.
  • USER 데이터 필드는 다음과 같아야 합니다.

장바구니 사용자 보안 설정 예시
장바구니 사용자 보안 설정 예시

  • 관리자 사용자와 일반 사용자를 구분하기 위해 간단한 예/아니오 필드를 설정했습니다.
  • 새 사용자가 기본적으로 관리자가 아닌 것을 확인하기 위해 기본값을 no로 설정했습니다.

 

이 설정에서는 세 가지 개인정보 보호 규칙을 설정해야 합니다. (사용자 유형에 따라서)

  1. 카트를 만든 사람인 경우 카트에서 필드를 검색하고 볼 수 있는 액세스 권한을 제공합니다.
  2. 관리자인 경우 admin 필드가 yes로 설정된 경우 카트의 필드를 검색하고 볼 수 있는 액세스 권한을 제공합니다.
  3. 그 외의 모든 사람 : 자동으로 생성된 다른 모든 사람 규칙(Everyone else rule)입니다. 이 규칙은 다른 모든 사람이 액세스 할 수 없도록 지정합니다.

 

카드 사용자 룰 설정
카드 사용자 룰 설정

이 세 가지 간단한 규칙이 시나리오에서 필요한 전부입니다.

 

3번의 표시된 하단 규칙에 특히 주의하십시오.

  • 이것은 다른 모든 사람에게 일어나는 일을 결정하는 것입니다.
  • 이 예시에서는 모든 체크박스를 선택 취소하여 관리자와 카트 소유자만 액세스 할 수 있도록 했습니다.

 

개인 정보 보호 규칙에 대해 생각하는 좋은 방법은 가장 관대한 규칙, 즉 가장 광범위한 액세스를 제공하는 규칙이 설정한 다른 규칙보다 항상 우선한다는 것입니다.

 

개인 정보 보호 규칙을 사용하면 접근을 금지하는 것이 아니라 허용합니다.

그 논리에 따라 우리의 두 가지 상위 규칙은 카트에 대한 접근 권한을 부여하는 것입니다.

1) 사용자가 카트 작성자인 경우 또는 2) 사용자가 관리자인 경우 관리자 예 /아니요 필드에 지정된 대로입니다.

 

예시 2: 작업 공유 앱

이 예시에서는 개인 정보 보호 규칙이 적용되는 데이터의 속성이 특정 상황에서 접속 권한을 추가로 부여하는 방법을 살펴보겠습니다.

 

작업에 대한 접속 권한이 두 가지 간단한 규칙을 따르는 작업 관리 앱이 있다고 가정해 보겠습니다.

  1. 작업 작성자는 해당 작업에 대한 전체 액세스 권한을 가집니다.
  2. 작성자는 다른 사용자를 특정 작업에 초대하여 액세스 권한을 부여할 수 있습니다.

 

이 경우 사용자가 특정 작업에 초대되었는지 여부를 확인할 수 있는 방법이 필요합니다.

  • 모든 작업이 아닌 특정 작업에만 해당 권한을 추가하려고 합니다.
  • 초대된 모든 사용자 목록(Invited users)을 포함하는 작업(Task) 데이터 유형에 새 사용자 정의 필드를 추가하여 이 문제를 해결할 수 있습니다. 데이터베이스 구조는 다음과 같습니다.

Task 데이터 타입의 구조
Task 데이터 타입의 구조

 

 

초대받은 사용자 추가

  • 누군가에게 작업에 대한 액세스 권한을 부여할 때마다 workflow을 사용하여 목록에 이름을 추가합니다.
  • 초대된 사용자(Invited users) 필드가 List로 설정되었으므로 Bubble은 해당 단일 사용자를 초대된 사용자 List에 추가하는 추가기능을 사용할 수 있도록 합니다. (사용자 List를 추가하려면 add 기능을 사용합니다)

 

이제 개인 정보 보호 규칙을 설정하려면 다시 세 가지 규칙이 필요합니다.

  1. 현재 사용자가 작업의 작성자인 경우 액세스 권한이 있어야 함을 나타냅니다.
  2. 현재 사용자가 초대된 사용자 목록에 있는 경우 액세스 권한이 있어야 함을 나타냅니다.
  3. 그 외의 다른 모든 사람은 액세스 할 수 없음을 나타냅니다.

프라이버시 규칙 편집기에서 다음과 같이 표시됩니다.

 

공유 작업 앱의 사용자 룰 예시
공유 작업 앱의 사용자 룰 예시

 

위의 두 가지 규칙이 특별한 상황에서 접속 권한을 부여하는 반면

마지막 규칙은 다른 모든 사람에게 권한을 부여하지 않는다는 것을 알 수 있습니다.

 

(4) 결론

개인 정보 보호 규칙은 사용자의 데이터를 보호하는 데 필요한 가장 중요한 보호 장치이며, 이를 잘 알고 첫날부터 데이터를 안전하게 설정하는 습관을 들이는 것이 좋습니다.

  • 개인 정보 보호 규칙은 서버 측에서 작동하여 정보가 서버를 떠나지 않기 때문에 데이터 도난, 변조 또는 우발적인 유출을 불가능하게 합니다.
  • Bubble에는 강력한 보안 기능이 있지만 이를 강제하지는 않습니다.
  • 사용자의 개인 데이터를 비공개로 유지하기 위해 앱을 올바른 방법으로 사용하는 것은 개발자의 몫입니다.