데이터 보안 양식, 선언 0 인 앱이 적발되기 시작했다: 앱 21개 전수 감사와 CSV·API 로 고치는 법
사용자가 손으로 입력한 남의 전화번호도 구글 기준 "전화번호 수집" 이었습니다. 거부를 한 번 받고 앱 21개의 데이터 보안 선언을 소스와 대조하니 11개가 어긋나 있었고, 그중 3개는 선언이 아예 0 이었습니다. 광고만 쓰는 앱도 선언 0 이면 안 되는 이유와, 5단계 마법사 대신 CSV 와 API 로 고치는 방법을 씁니다.
거부 한 번
2026년 9월 초, 반려동물 앱 업데이트가 데이터 보안 양식 불일치로 거부됐습니다. 앱에 병원 전화번호를 적어 두는 칸이 있는데, 양식에 전화번호 수집을 선언하지 않았다는 이유였습니다. READ_PHONE_STATE 권한도 없고 기기 번호도 아니고 사용자가 손으로 입력한 남의 번호인데도, 구글 기준으로는 전화번호 수집입니다.
거부 상태에서는 다른 변경도 같이 묶입니다. 그 앱의 스토어 등록정보 수정 3건이 데이터 보안 거부 때문에 함께 제출 대기로 멈춰 있었습니다. 거부 통보를 받으면 게시 개요에서 대기 중인 변경사항 수를 반드시 확인해야 합니다.
21개 전수 감사
한 앱이 이러면 나머지도 의심해야 합니다. 앱 21개의 현재 선언을 콘솔에서 CSV 로 내보내고, 각 앱의 소스(권한, SDK, 입력 칸)와 대조했습니다. 어긋난 앱이 11개였습니다.
- 선언이 아예 0: 3개(에러코드 앱, 로또 앱, 일출·일몰 앱)
- 엉뚱한 항목 선언(다른 앱 행을 복사하다 주소·전화가 들어감): 1개
- 광고 SDK 수집 세트 누락: 1개
- "공유" 미선언(광고 SDK 는 수집만이 아니라 제3자 공유): 6개
선언 0 인 3개는 광고만 쓰는 앱이라 "수집하는 게 없다"고 여겼던 것입니다. 틀렸습니다. AdMob SDK 는 대략적인 위치(IP), 앱 상호작용, 기기·기타 ID 를 수집하고 광고 목적으로 공유합니다. 광고만 쓰는 앱도 이 3종은 선언해야 합니다. 새 앱을 등록할 때 이 3종을 빼먹으면 선언 0 상태로 라이브됩니다.
실제로 감사 당일 저녁, 선언 0 이던 앱 하나에 「기기 또는 기타 ID 미선언」 정책 메일이 왔습니다. 기한은 2주였습니다. 적발은 시작됐고, 나머지 두 앱도 시간 문제입니다.
5단계 마법사 대신 CSV
콘솔의 데이터 보안 마법사는 5단계를 클릭으로 훑어야 하고 앱이 21개면 하루가 갑니다. 상단에 「CSV 파일로 내보내기 / CSV 에서 가져오기」 버튼이 있습니다.
- 내보내기: 현재 선언 전체가 CSV 로 나옵니다(앱 하나에 782행 × 5열). 이게 변경 전 백업이 됩니다.
- 필요한 행의
Response value만 채웁니다. - 가져오기 → 검토 → 저장 → 게시 개요에서 제출.
전화번호 하나를 추가하는 데 필요한 행은 5개입니다. 기존 이름(PSL_NAME) 행과 같은 패턴을 따라가면 됩니다.
PSL_DATA_TYPES_PERSONAL | PSL_PHONE | true
PSL_DATA_USAGE_RESPONSES:PSL_PHONE:PSL_DATA_USAGE_COLLECTION_AND_SHARING | PSL_DATA_USAGE_ONLY_COLLECTED | true
PSL_DATA_USAGE_RESPONSES:PSL_PHONE:PSL_DATA_USAGE_EPHEMERAL | | false
PSL_DATA_USAGE_RESPONSES:PSL_PHONE:DATA_USAGE_USER_CONTROL | PSL_DATA_USAGE_USER_CONTROL_OPTIONAL | true
PSL_DATA_USAGE_RESPONSES:PSL_PHONE:DATA_USAGE_COLLECTION_PURPOSE | PSL_APP_FUNCTIONALITY | true
CSV 는 BOM 없이 CRLF 로 저장합니다. 마법사 4단계 표의 버튼 라벨이 「미응답 … 질문」이어도 상태 셀이 「완료됨」이면 채워진 것입니다. 라벨에 속아 다시 채우지 않습니다.
쓰기는 API 로도 된다
처음엔 API 가 없다고 적었다가 정정했습니다. Android Publisher API 에 applications.dataSafety(packageName, body={"safetyLabels": <CSV 전체 문자열>}) 가 있습니다. 내보낸 CSV 를 고쳐서 이 엔드포인트로 보내면 콘솔에서 마법사를 열 필요가 없습니다. 내보내기 API 는 없어서 백업은 콘솔에서 받습니다. 21개 앱의 패치를 JSON 하나로 정리해 두고, 계정 사정으로 출시가 풀리는 시점에 전 앱 업데이트와 같이 적용할 예정입니다.
정리
- "사용자가 입력한 남의 전화번호"도 전화번호 수집입니다.
- 광고만 쓰는 앱도 위치(IP)·앱 상호작용·기기 ID 3종은 선언해야 합니다. 선언 0 은 적발됩니다.
- 거부되면 다른 변경도 같이 묶입니다. 대기 중인 변경사항 수를 봅니다.
- 마법사 대신 CSV 내보내기 → 행 수정 → 가져오기, 또는 API 로 씁니다.
- 새 앱 등록 체크리스트에 광고 SDK 3종 선언을 넣어 둡니다.