Google Play 데이터 보안: AdMob 사용 시 "기기 또는 기타 ID 선언되지 않음" 경고 해결

2026. 5. 23. 22:13·모바일

Play Console에 빨간 경고가 떴음.

"데이터 수집 안 하는데 왜?"라는 생각부터 들었음.

결론부터 말하면 내가 안 해도 SDK가 함.

AdMob 하나 붙인 앱이 데이터 보안 선언에서 데이터 유형 네 개를 채우게 된 과정을 정리함.

Play Console에 5월 28일까지 조치하라는 경고 알림이 와 있었음.

경고 내용은 "사용자 데이터를 수집하거나 공유하는 앱은 데이터 보안 선언에서 모든 데이터 유형을 선언해야 한다"였음.

셀카픽은 기기 안의 사진을 점수 매겨 베스트샷을 골라주는 앱임. 서버도 회원가입도 없고 사진을 외부로 보내지도 않음.

경고 내용에 단서가 있었음: "데이터 보안(기기 또는 기타 ID 선언되지 않음)"

Google Play에 운영 해본 개발자라면 알겠지만, 정책 갱신에도 2, 3일은 족히 걸림.

경고를 늦게 발견한 탓에 기간이 얼마 남지 않아 최대한 찾아보고 한 번에 해결하도록 그 결과를 정리해봄.

원인은 AdMob이었음

셀카픽에는 버전 1부터 AdMob 배너가 들어가 있었음. 광고를 띄우려고 Google Mobile Ads SDK를 붙인 게 전부였음.(배너는 돈 안되는거 아는데 있어보이게 붙여보고 싶었음)

광고 ID를 읽는 코드를 직접 짠 적은 없었음.

그런데 Google Play 정책에서는 그게 예외가 안 됨.

Google이 AdMob 개발자용으로 제공하는 데이터 공개 문서에 SDK가 자동 수집하는 데이터가 명시돼 있었음.

The Google Mobile Ads SDK automatically collects and shares IP address, user product interactions, diagnostic information, and device/account identifiers for advertising, analytics, and fraud prevention.

개발자가 코드를 한 줄도 안 짜도 SDK가 알아서 수집함.

Play 데이터 보안 정책은 "앱이 수집하는 데이터"를 앱에 포함된 서드파티 SDK까지 합쳐서 봄.

즉 AdMob을 붙인 순간 내 앱은 데이터를 수집하고 서드파티(Google)와 공유하는 앱이 됨.

광고 SDK를 쓰는 앱이라면 출시 시점과 무관하게 똑같이 해당됨.

왜 지금 떴나

AdMob은 첫 출시 때부터 있었는데 경고는 버전 코드 9에서 떴음.

이 시점 차이가 의문이었음.

SDK 버전 변경이나 Play Console 검증 과정에서 기존 선언과 실제 SDK 동작의 불일치가 감지됐을 가능성이 있음.

다만 Google은 구체적인 감지 기준을 공개하지 않아 정확한 원인은 확인할 수 없음.

위 데이터 공개 문서도 "SDK는 계속 업데이트되므로 변경사항을 반영해 선언도 갱신하라"고만 안내함.

원인이 뭐든 결국 선언을 SDK 실제 동작에 맞추는 문제였음.

공식 문서가 알려주는 것과 안 알려주는 것

데이터 공개 문서에 따르면 AdMob SDK가 자동 수집하는 데이터는 네 가지로 정리돼 있었음.

SDK가 수집하는 것 내용
IP 주소 기기의 IP. 대략적인 위치 추정에 쓰일 수 있음
사용자 제품 상호작용 앱 실행, 탭, 동영상 조회 등
진단 정보 앱 실행 시간, 멈춤 비율, 에너지 사용량 등
기기 및 계정 식별자 Android 광고 ID, App Set ID, 로그인 계정 관련 식별자

문제는 이걸 Play Console 폼의 어느 체크박스에 넣어야 하는지를 이 문서가 안 알려준다는 것이었음.

문서 자체가 "데이터 보안 폼에 어떻게 답할지는 전적으로 개발자 책임"이라고 못박고 있었음.

폼 작성은 Android의 데이터 유형 가이드을 보고 알아서 판단하라는 식임.

AdMob 개발자 그룹 글을 보면 이걸로 몇 년째 같은 질문이 반복됨. "문서는 수집 데이터 종류만 나열하고 폼의 나머지 질문은 하나도 안 알려준다"는 불만임.

그래서 데이터 공개 문서와 실제 Google Play 승인을 받은 개발자의 폼 작성 공유 글(참고 자료 2)을 같이 놓고 폼을 채웠음.

데이터 보안 폼은 5단계임. 개요, 데이터 수집 및 보안, 데이터 유형, 데이터 취급 및 처리, 미리보기.

아래는 단계별로 어떻게 채웠는지임.

2단계: 데이터 수집 및 보안

"필수 사용자 데이터 유형을 수집하거나 공유하나요?" : "예".
-> AdMob을 쓰면 무조건 "예"이고 "아니요"는 거짓 선언이 됨.

"수집하는 모든 사용자 데이터를 암호화하여 전송하나요?" : "예".
-> 데이터 공개 문서에 SDK가 수집하는 데이터는 전부 TLS 프로토콜로 전송 중 암호화된다고 적혀 있음.
-> 직접 수집하는 데이터가 없으면 전부 AdMob 데이터이고 전부 TLS 암호화임.

"계정 생성 방법"은 "앱에서 사용자가 계정을 만들도록 허용하지 않음".
-> 셀카픽은 로그인 기능이 없음. 구글 로그인 같은 OAuth가 있으면 해당 항목을 체크하면 됨.

"데이터 삭제를 요청할 방편을 제공하나요?"는 "아니요".
-> 셀카픽에 삭제 요청 기능을 따로 만든 적이 없으니 정직하게 "아니요"임.

세 번째 선택지 "아니요(90일 이내 자동 삭제됨)"는 고르면 안 됨.
-> AdMob 데이터가 90일 안에 자동 삭제된다고 보장할 수 없어 부정확한 선언이 됨.

3단계: 데이터 유형

AdMob 기준으로 선언하게 되는 데이터 유형은 네 가지였음.

위치, 앱 활동, 앱 정보 및 성능, 기기 또는 기타 ID

위치는 하위 항목 중 "대략적인 위치"를 고름.

IP 주소가 여기 매핑됨. Play 폼에 IP 항목이 따로 없어 위치로 들어감.

나머지 셋은 앱 활동의 "앱 상호작용", 앱 정보 및 성능의 "진단", 그리고 "기기 또는 기타 ID"임.

마지막 "기기 또는 기타 ID"가 이번 경고에 직접 찍힌 항목이었음. 광고 ID가 여기 들어감.

여기서 가장 많이 하는 오해를 짚고 감.

"대략적인 위치"를 선언한다고 앱에 위치 권한 팝업을 띄울 필요는 없음.

AdMob이 네트워크 통신 과정에서 IP를 읽어 국가나 도시를 추정하는 것과, Android OS의 위치 권한(ACCESS_COARSE_LOCATION 등)은 완전히 별개임.

데이터 보안 폼 선언과 OS 권한은 서로 다른 영역임.

4단계: 데이터 취급 및 처리

4단계에서는 선언한 네 개 데이터 유형마다 각각 세부 질문에 답해야 함.

폼에서 제일 길게 느껴지는 구간인데, 나와 같은 케이스에는 단순함.

처음엔 데이터 유형마다 목적을 다르게 체크해야 하나 고민했음. 진단은 분석용이고 광고 ID는 광고용이니까.

그런데 실제 Google Play 승인 사례를 보면 AdMob만 쓰는 일반적인 앱은 데이터 유형별 답이 거의 동일함.

아래가 그 일반적인 선택값임.

2026년 5월 기준이고, Google 데이터 보안 정책과 폼 구성은 수시로 바뀌므로 작성 시점에 공식 문서를 다시 확인하는 게 좋음.

최종 판단 책임은 개발자에게 있고 앱 구성에 따라 달라질 수 있음.

보고 따라해도 되지만, 헷갈리기 쉬운 칸은 이유를 알아두는 게 나음.

먼저 수집과 공유를 둘 다 체크하는 이유. AdMob SDK가 데이터를 읽어 Google 광고 서버로 보내고, Google이 그 데이터를 자기 목적(광고 타게팅과 최적화)으로 씀.

내 앱 입장에서 데이터가 기기 밖으로 나가니 "수집"이고, 그 데이터를 서드파티인 Google이 쓰니 "공유"임. 광고판만 빌려준 느낌이지만 정책 정의상 둘 다 맞음.

임시 처리는 "아니요". "임시 처리"는 데이터가 메모리에 잠깐 있다가 요청 처리 직후 사라지는 경우를 말함.

AdMob은 광고 타게팅과 분석을 위해 데이터를 서버에 보내고 일정 기간 보관함. 메모리에서 잠깐 쓰고 버리는 게 아니라 "아니요"임.

필수 여부는 "필수". 셀카픽 기준에서는 사용자가 앱 안에서 데이터 수집을 따로 끌 방법이 없어서 "필수"로 선택했음.

폼에서 "필수"와 "선택"을 가르는 기준은 사용자가 그 수집을 끌 수 있는 인앱 설정이 있느냐임. 끌 토글이 없으면 "필수"임.

목적 체크박스는 일곱 개쯤 뜨는데 표에 적은 세 개만 체크함. 데이터 공개 문서가 "advertising, analytics, and fraud prevention"이라고 명시한 그 세 가지임.

앱 기능, 개발자 커뮤니케이션, 맞춤설정, 계정 관리는 AdMob만 쓰는 앱에는 해당이 없음.

이 표를 다른 항목(위치, 앱 활동, 앱 정보 및 성능, 기기 또는 기타 ID)에 똑같이 반복함.

네 항목 전부 "완료됨"으로 바뀌면 끝임.

개인정보처리방침도 일치해야 함

경고 문구에 "개인정보처리방침과 데이터 보안 선언의 정보가 일치해야 한다"는 줄이 있었음. 이걸 놓치기 쉬움.

개인정보처리방침에도 AdMob/Google 광고를 통해 광고 ID, IP 등이 수집되고 공유된다는 내용이 들어가 있어야 함. 앱 콘텐츠 > 개인정보처리방침에서 같이 점검하는 게 좋음.

글로벌 출시 앱이면 같이 점검해두는 게 좋음.

광고 ID를 막아도 데이터 보안 선언은 해야함

이거는 참고만 해도 됨.

선언을 채우는 게 가장 빠른 해결임. 셀카픽도 권한은 그대로 두고 선언만 정확히 채웠음.

광고 ID 사용을 제한하는 방법도 있음.

데이터 공개 문서에도 나오듯 AndroidManifest에서 AD_ID 권한을 제거하면 됨.

<uses-permission android:name="com.google.android.gms.permission.AD_ID"
    tools:node="remove" />

그런데 AD_ID를 제거해도 "기기 또는 기타 ID" 선언 의무는 사라지지 않음. 이유는 App Set ID에 있음.

App Set ID는 같은 개발자가 배포한 앱들을 묶어서 식별하는 ID임. 원래 광고 ID의 대안으로 만들어진 별도 식별자로, 광고 ID가 광고 추적용이라면 App Set ID는 그 외 용도를 위한 것임. Play Console 도움말(참고 자료 5번)에서는 분석과 사기 방지 같은 비광고 용도에는 광고 ID 대신 App Set ID를 쓰라고 안내함.

핵심은 이것임. AD_ID 권한은 광고 ID에만 걸리고, App Set ID는 그 권한 체계와 무관한 별도 API임.

그래서 AD_ID 권한 제거만으로는 App Set ID 전송이 막히지 않음.

App Set ID 역시 Google 정책상 "기기 또는 기타 ID"에 해당함.

그래서 AD_ID를 날려 광고 ID를 막아도 App Set ID가 남아 있는 한 "기기 또는 기타 ID"는 계속 선언해야 함.

4단계 표에서 목적으로 "애널리틱스"와 "사기 예방 보안"을 체크한 것도 이 App Set ID와 연결됨. 광고 ID는 광고용이지만 App Set ID 같은 식별자는 분석과 사기 방지 용도로 쓰이기 때문임.

권한 제거는 트레이드오프가 있음. 광고 맞춤화 기능에 영향을 줄 수 있으므로 적용 전 광고 수익에 미치는 영향을 검토하는 게 좋음.

셀카픽은 광고 맞춤화를 유지하기로 하고 선언을 채우는 쪽을 택했음.

마무리 메모

아래는 해결된 화면.

서드파티 SDK를 하나 붙인다는 건 기능 하나를 추가하는 게 아니라 그 SDK가 수집하는 데이터 전부를 내 앱의 수집 범위로 끌어들이는 것임. AdMob, Firebase Analytics, Crashlytics, AppsFlyer 다 마찬가지임. 코드를 직접 짜지 않았어도 데이터 책임은 앱에 남으니, SDK를 고를 때는 기능 명세보다 데이터 공개 문서를 먼저 봐야 함.

참고 자료

  1. Google Play data disclosure (Google Mobile Ads SDK 공식 데이터 공개 문서) - https://developers.google.com/admob/android/privacy/play-data-disclosure

  2. How to fill out Google Play's Data safety section for apps using AdMob (Gameljne Games) - https://gameljne.games/how-to-fill-out-google-plays-data-safety-section-for-apps-using-admob/

  3. Google AdMob 개발자 그룹 - https://groups.google.com/g/google-admob-ads-sdk/c/ZCE9pVAto28

  4. Android 데이터 유형 가이드 (Play Console 데이터 보안 도움말) - https://support.google.com/googleplay/android-developer/answer/10787469

  5. Advertising ID (Play Console 도움말) - https://support.google.com/googleplay/android-developer/answer/6048248

'모바일' 카테고리의 다른 글

Android NDK 입문 (2) - SIGSEGV, SIGABRT, SIGBUS 네이티브 크래시 시그널 정리  (0) 2026.05.23
Android NDK 입문 (1) - NDK를 왜 쓰는가, JNI와 네이티브 개발 기초  (0) 2026.05.23
Android 개발자 인증 정리 - Play Console 등록 가이드  (0) 2026.04.19
WorkManager excessive partial wake lock 원인 — Android Vitals 배터리 경고 대응 (2026)  (1) 2026.04.10
1인 개발 앱 출시 3개월 후기 - 다운로드 10회, 매출 0원에서 배운 것  (0) 2026.02.10
'모바일' 카테고리의 다른 글
  • Android NDK 입문 (2) - SIGSEGV, SIGABRT, SIGBUS 네이티브 크래시 시그널 정리
  • Android NDK 입문 (1) - NDK를 왜 쓰는가, JNI와 네이티브 개발 기초
  • Android 개발자 인증 정리 - Play Console 등록 가이드
  • WorkManager excessive partial wake lock 원인 — Android Vitals 배터리 경고 대응 (2026)
João Jin
João Jin
모바일 · 보안 · AI 기록
  • João Jin
    João Jin - 모바일 · 보안 · AI
    João Jin
  • 전체
    오늘
    어제
    • 분류 전체보기 (30)
      • 프로젝트 (3)
      • 개발기 (8)
      • 모바일 (8)
      • 보안 (2)
      • AI (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • X
  • 공지사항

  • 인기 글

  • 태그

    AI
    AI 에이전트 보안
    머신러닝
    Docker
    온디바이스AI
    Android
    Native
    MLFlow
    JNI
    MCP 보안
    LINE WORKS
    FastAPI
    MCP
    ndk
    mcp-fence
    MLOps
    model context protocol
    Docker Compose
    안드로이드 NDK
    LLM 보안
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
João Jin
Google Play 데이터 보안: AdMob 사용 시 "기기 또는 기타 ID 선언되지 않음" 경고 해결
상단으로

티스토리툴바