사용자 데이터 삭제 확장 프로그램 사용

사용자 데이터 삭제 확장 프로그램(delete-user-data)을 사용하면 Firebase 프로젝트에서 사용자가 삭제될 때 사용자의 데이터를 삭제할 수 있습니다. Cloud Firestore, 실시간 데이터베이스 또는 Cloud Storage 중 일부 또는 전부에서 사용자 데이터를 삭제하도록 확장 프로그램을 구성할 수 있습니다. 확장 프로그램의 데이터 삭제 트리거가 각각 사용자의 UserId와 연결됩니다.

이 확장 프로그램은 사용자 개인 정보를 보호하고 규정 준수 요구사항을 이행하는 데 유용합니다. 하지만 이 확장 프로그램을 사용한다고 해서 정부와 업계 규정의 준수가 보장되지는 않습니다.

기본 요건

확장 프로그램 설치

확장 프로그램을 설치하려면 Firebase 확장 프로그램 설치 페이지의 단계를 따르세요. 요약하면 다음 중 하나를 수행합니다.

확장 프로그램을 설치하는 동안 여러 구성 매개변수를 지정하라는 메시지가 표시됩니다.

  • Cloud Functions 위치:

    이 확장 프로그램에 생성된 함수를 배포할 위치를 선택합니다. 일반적으로 데이터베이스에 가까운 위치가 좋습니다. 위치 선택에 대한 도움말은 위치 선택 가이드를 참조하세요.

  • Cloud Firestore 경로:

    Cloud Firestore 인스턴스에서 사용자 데이터는 어떤 경로에 있나요? Cloud Firestore를 사용하지 않는 경우에는 비워 둡니다. 전체 경로를 쉼표로 구분하여 입력합니다. 삭제된 사용자의 사용자 ID는 {UID}로 나타낼 수 있습니다. 예를 들어 usersadmins 컬렉션이 있고 각 컬렉션에 사용자 ID가 문서 ID인 문서가 있는 경우 users/{UID},admins/{UID}를 입력할 수 있습니다.

  • Cloud Firestore 삭제 모드:

    (Cloud Firestore paths 매개변수를 사용하는 경우에만 적용됩니다.) Cloud Firestore 문서를 어떻게 삭제하시겠어요? 하위 컬렉션에서도 문서를 삭제하려면 이 매개변수를 recursive로 설정합니다.

  • 실시간 데이터베이스 인스턴스:

    사용자 데이터를 삭제할 실시간 데이터베이스 인스턴스는 무엇인가요?

  • 실시간 데이터베이스 위치:

    (Realtime Database instance 매개변수를 제공한 경우에만 적용됩니다.) 사용자 데이터를 삭제할 실시간 데이터베이스 위치는 무엇인가요?

  • 실시간 데이터베이스 경로:

    실시간 데이터베이스 인스턴스에서 사용자 데이터는 어떤 경로에 있나요? 실시간 데이터베이스를 사용하지 않는 경우에는 비워 둡니다. 전체 경로를 쉼표로 구분하여 입력합니다. 삭제된 사용자의 사용자 ID는 {UID}로 나타낼 수 있습니다. 예를 들면 users/{UID},admins/{UID}입니다.

  • Cloud Storage 경로:

    Google Cloud Storage에서 사용자 데이터는 어디에 저장되나요? Cloud Storage를 사용하지 않는 경우에는 비워 둡니다. Storage 버킷의 파일 또는 디렉터리 전체 경로를 쉼표로 분리하여 입력합니다. 삭제된 사용자의 사용자 ID를 나타낼 때는{UID}를 사용하고, 기본 Storage 버킷을 나타날 때는 {DEFAULT}를 사용합니다.

    다음은 일련의 예시입니다.

    • 파일 이름 지정 스키마가 {UID}-pic.png인 기본 버킷의 모든 파일을 삭제하려면 {DEFAULT}/{UID}-pic.png를 입력합니다.
    • 또한 파일 이름 지정 스키마가 {UID}-logs.txtmy-app-logs라는 또 다른 버킷의 모든 파일을 삭제하려면 {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt를 입력합니다.
    • 또한 사용자 ID 라벨이 지정된 디렉터리와 모든 해당 파일(예: media/{UID})을 삭제하려면 {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}를 입력합니다.

삭제할 데이터 검색

이 확장 프로그램에서 삭제할 데이터를 검색하는 데 사용하는 몇 가지 메커니즘이 있습니다. 확장 프로그램이 데이터를 삭제할 수 있도록 이 메커니즘을 명시적으로 구성해야 합니다. 확장 프로그램은 제공된 메커니즘에 따라 삭제되도록 명시적으로 구성된 데이터만 삭제합니다.

각 서비스 간의 다음과 같은 동작 차이에 유의하세요.

  • Cloud Firestore: 기본 동작은 문서를 얕게 삭제하는 것입니다(하위 컬렉션은 삭제되지 않음). 문서의 모든 하위 컬렉션을 재귀적으로 삭제하려면 'Cloud Firestore 삭제 모드' 옵션을 'Recursive'로 설정합니다.
  • 실시간 데이터베이스: 지정된 노드의 모든 데이터가 삭제됩니다.
  • 스토리지: 디렉터리 경로를 지정하면 모든 파일과 하위 디렉터리가 삭제됩니다.

경로별

Cloud Firestore, 실시간 데이터베이스, Cloud Storage 경로를 구성할 때 경로에서 UID 변수를 정의하여 인증된 사용자의 UID로 대체할 수 있습니다. 사용자가 삭제되면 확장 프로그램은 지정된 경로에서 해당 UID에 연결된 모든 데이터를 삭제합니다. 예를 들면 다음과 같습니다.

  • Cloud Firestore 경로: users/{UID},admins/{UID}
  • 실시간 데이터베이스 경로: likes/{UID}
  • Cloud Storage 경로: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

자동 검색(Cloud Firestore)

확장 프로그램이 삭제할 Firestore 문서를 자동으로 검색할 수 있도록 하려면 '자동 검색 사용 설정' 구성 매개변수를 '예'로 설정합니다.

자동 탐색은 데이터베이스를 자동으로 순회하여 구성에 따라 삭제해야 하는 컬렉션과 문서를 찾는 방식으로 작동합니다. 확장 프로그램은 다음 방법으로 컬렉션과 문서를 식별합니다.

  1. 먼저 확장 프로그램은 데이터베이스의 모든 루트 컬렉션을 찾습니다. 컬렉션의 ID가 사용자의 UID와 일치하는 경우 전체 컬렉션이 삭제됩니다. 삭제는 'Cloud Firestore 삭제 모드'에 대한 확장 프로그램의 구성에 따라 재귀적이거나 얕습니다.
  2. 두 번째로 컬렉션 ID가 일치하지 않으면 확장 프로그램은 문서 ID가 사용자의 UID와 일치하는 경우 문서 식별 및 삭제를 시도합니다.
  3. 마지막으로 각 문서에 대해 다음을 수행합니다. a. 현재 검색 심도(아래 참고)가 구성된 검색 심도보다 작거나 같으면 프로세스가 현재 문서의 모든 하위 컬렉션에 대해 반복됩니다. b. 검색 필드가 구성된 경우 확장 프로그램이 제공된 필드가 사용자의 UID와 일치하는지 확인합니다. 일치하는 항목이 발견되면 문서가 삭제됩니다.

검색 심도

확장 프로그램은 구성 가능한 검색 심도 값(기본값: 3)을 제공합니다. 현재 검색 심도가 구성된 검색 심도보다 작거나 같은 경우에만 순회가 실행됩니다. 현재 검색 심도는 현재 컬렉션 또는 문서의 상위 수준의 심도에 따라 달라집니다. 예를 들면 다음과 같습니다.

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

이 확장 프로그램은 배열이나 지도에 저장된 UID를 자동으로 삭제하지 않으며, 위에서 지정된 심도 이상으로 깊이 중첩된 하위 컬렉션에 저장된 사용자 ID로 키가 연결된 데이터를 검색하지 않습니다.