Privacy Nutrition Label은 App Store에서 앱이 어떤 데이터를 수집하고 어떤 목적으로 사용하는지 사용자에게 표시하는 개인정보 보호 라벨입니다. Apple은 게시 또는 업데이트 전에 모든 앱이 작성된 라벨을 갖도록 요구합니다. Apple App Privacy Details에 따르면 개인정보 보호 라벨은 분석에서 콘텐츠 개인화까지 14개의 데이터 카테고리와 5개의 수집 목적을 다룹니다.
핵심 사항
Privacy Nutrition Label은 App Store의 앱 페이지에 데이터 수집 요약을 표시하는 시각적 블록입니다. Apple은 2020년 12월에 식품의 영양 성분표와 유사하게 라벨을 도입했습니다. 칼로리와 지방 대신 사용자는 앱이 어떤 데이터를 수집하고 어떻게 사용되는지 확인할 수 있습니다.
라벨은 “추적에 사용되는 데이터”와 “사용자와 연결된 데이터”의 두 섹션으로 구성됩니다. 전자는 추적을 위해 제3자에게 전송되는 데이터를 나타냅니다. 후자는 앱이 수집하여 사용자의 계정 또는 기기에 연결하는 모든 데이터를 포함합니다.
각 데이터 항목은 색상으로 표시됩니다: 노란색(사용자와 연결된 데이터) 또는 초록색(사용자와 연결되지 않은 데이터). 노란색 라벨이 많을수록 사용자는 수집되는 데이터에 더 주의를 기울입니다. Adjust(2024)에 따르면 8개 이상의 노란색 라벨이 있는 앱은 설치 전환율이 22% 낮습니다.
라벨 작성은 App Store Connect의 웹 인터페이스를 통해 이루어집니다. 개발자는 앱이 특정 유형의 데이터를 수집하는지, 사용자와 연결되어 있는지, 어떤 목적으로 사용되는지에 대한 질문에 답변합니다. Apple은 프로그래밍 방식으로 라벨의 진실성을 검증하지 않지만, 선언과 실제 동작 간의 불일치는 거부로 이어질 수 있습니다.
Apple은 WWDC 2020에서 iOS 14와 함께 라벨을 발표했습니다. 초기에는 ATT와 Privacy Manifest도 포함하는 더 광범위한 개인정보 보호 이니셔티브의 일부였습니다. 라벨 작성은 2020년 12월 8일부터 모든 앱과 업데이트에 필수가 되었습니다.
라벨은 데이터 수집에 대한 규제 기관과 사용자의 관심 증가에 대한 Apple의 대응이었습니다. 공식적인 동의를 요구하는 GDPR 및 CCPA와 달리 Apple은 투명성에 초점을 맞췄습니다. 사용자는 앱을 설치하기 전에도 어떤 데이터가 수집되는지 즉시 확인할 수 있습니다.
2022년 Apple은 라벨에 상호작용성을 추가했습니다. 사용자가 각 카테고리를 탭하여 데이터가 어떤 목적으로 사용되는지 확인할 수 있습니다. 2024년 Apple은 라벨이 바이너리 내의 Privacy Manifest에 선언된 데이터와 일치하도록 요구하기 시작했습니다.
Google은 2022년 4월에 Google Play에서 유사한 “데이터 안전”(Data Safety) 섹션을 도입했습니다. 주요 차이점: Google은 자동 코드 스캔을 사용하여 라벨을 검증하고 개발자에게 확인을 요청할 수 있는 반면, Apple은 검토 시 검증과 함께 개발자의 선언에 의존합니다.
또한 Google Play는 보안 조치(저장 중 및 전송 중 데이터 암호화, 보안 프로그램 준수)를 지정해야 합니다. Apple은 이 정보를 요청하지 않지만 ATS(App Transport Security)와 같은 필수 기능을 통해 요구 사항 준수를 확인합니다.
Apple은 라벨을 작성하기 위해 앱의 코드를 분석하지 않습니다. 개발자가 수집된 데이터를 독립적으로 선언합니다. 그러나 2024년 Apple은 바이너리 내의 Privacy Manifest와 라벨을 대조하기 시작하여 프로세스를 더 공식화했습니다.
개발자는 App Store Connect에 접속 → 앱 선택 → “앱 개인정보 보호” 섹션 → “개인정보 보호 라벨”로 이동합니다. 14개 데이터 카테고리 각각에 대한 질문이 포함된 설문지가 열립니다. 각 카테고리에 대해 이 유형의 데이터를 수집하는지, 사용자와 연결되어 있는지, 어떤 목적으로 사용하는지 지정해야 합니다.
수집 목적에는 제3자 광고, 개발자 분석, 제품 개발, 콘텐츠 개인화, 앱 기능이 포함됩니다. 하나의 데이터 카테고리를 여러 목적으로 사용할 수 있습니다. 중요한 점은 데이터가 제3자와 공유되는 경우 추적으로 표시해야 한다는 것입니다.
변경 사항을 저장하면 Apple이 라벨의 새 버전을 생성하여 24시간 이내에 App Store에 표시됩니다. 새 빌드를 제출할 때 라벨이 자동으로 확인됩니다. 작성되지 않은 경우 제출 버튼이 차단됩니다. Apple Developer(2024)는 데이터 수집 로직이 변경될 때마다 라벨을 업데이트할 것을 권장합니다.
2024년까지 라벨은 완전히 자체 보고 방식이었습니다. Apple은 개발자의 답변을 신뢰했습니다. Privacy Manifest의 도입과 라벨의 매니페스트와의 통합으로 Apple은 자동 상호 참조를 시작했습니다. 예를 들어 매니페스트가 광고를 위한 식별자(IDFA) 수집을 선언하지만 라벨이 이 카테고리를 표시하지 않는 경우 App Store Connect가 경고를 발행합니다.
그러나 완전한 자동 검증은 아직 존재하지 않습니다. 개발자는 두 데이터 소스(라벨 + 매니페스트)를 최신 상태로 유지해야 합니다. 특히 대규모 업데이트나 대량의 데이터가 있는 앱의 경우 수동 검토 중에 불일치가 발견될 수 있습니다.
| 검증 방법 | Apple | |
|---|---|---|
| 자체 보고 | 예, 기본 | 예, 기본 |
| 자동 코드 검증 | 부분적(2024부터, 매니페스트 통해) | 예 |
| 수동 검토자 확인 | 의심 시 | 드물게 |
Apple은 데이터를 14개 카테고리로 나누어 3개 섹션으로 그룹화합니다: 추적에 사용되는 데이터, 사용자와 연결된 데이터, 사용자와 연결되지 않은 데이터. 주요 카테고리를 살펴보겠습니다.
“연락처 정보” 카테고리에는 이름, 이메일, 전화번호, 실제 주소가 포함됩니다. “식별자” 카테고리에는 IDFA, 사용자 ID, 사용자 이름이 포함됩니다. 앱이 소셜 로그인을 사용하고 사용자의 이메일을 받는 경우 이 카테고리를 “기능 실행” 목적으로 지정해야 합니다.
“결제 데이터” 카테고리에는 구매 정보가 포함됩니다: 카드 번호(Apple Pay를 사용하지 않는 경우) 및 구매 내역. Apple Pay는 Apple이 자체적으로 결제를 처리하고 개발자에게 데이터를 전송하지 않으므로 이 카테고리를 지정할 필요가 없습니다.
“사용 데이터” 카테고리에는 상호 작용 로그, 광고 클릭, 페이지 조회수, 세션 시간이 포함됩니다. 대부분의 앱은 분석을 위해 이 데이터를 수집합니다. 데이터가 제3자(Google Analytics, Firebase)와 공유되는 경우 “분석” 목적을 표시해야 합니다.
“진단” 카테고리에는 충돌 로그, 성능 데이터, 시작 보고서가 포함됩니다. 이 데이터는 일반적으로 사용자와 연결되지 않으며(not linked) 집계 형태로 수집됩니다. 그럼에도 불구하고 앱이 Crashlytics나 Sentry를 사용하는 경우 라벨에 반영되어야 합니다.
“사용자 콘텐츠” 카테고리에는 사진, 비디오, 오디오, 파일 및 사용자 생성 콘텐츠(메시지, 댓글)가 포함됩니다. 앱이 사진이나 파일에 대한 접근을 요청하는 경우 이 카테고리는 필수입니다. 앱이 사진만 읽더라도 데이터 수집으로 간주됩니다.
“구매 내역” 카테고리에는 인앱 구매, 구독 및 결제에 대한 집계 데이터가 포함됩니다. “금융 정보”와 혼동하지 마십시오. 구매 내역은 거래의 메타데이터이며 결제 세부 정보가 아닙니다.
신규 또는 업데이트된 앱을 위해 App Store Connect에서 Privacy Nutrition Label을 작성하는 단계별 가이드입니다.
라벨을 작성하기 전에 데이터를 수집하는 모든 SDK 및 서비스의 전체 목록을 작성하세요: Firebase, AppsFlyer, Google Ads, Facebook SDK, Sentry, Amplitude. 각 SDK에 대해 어떤 데이터를 수집하고 제3자와 데이터를 공유하는지 확인하세요. Adjust(2024)는 각 SDK에 대한 데이터 유형, 목적 및 연결 테이블을 유지할 것을 권장합니다.
자체 코드가 어떤 데이터를 수집하는지 결정하세요. 예를 들어 앱이 검색 기록을 저장하고 사용자 계정에 연결하는 경우 이는 “제품 개발” 목적을 위해 연결된 “사용 데이터”입니다. 데이터가 제3자(광고 네트워크, 분석)와 공유되는지 항상 확인하세요.
App Store Connect에서 앱 선택 → “앱 개인정보 보호” 섹션. “시작하기″를 클릭하고 앱이 추적을 위해 데이터를 수집하는지 선택하세요. 수집하지 않는 경우 설문지로 진행합니다. 14개 데이터 카테고리 모두에 대해 각 질문에 순서대로 답변하세요.
예: 앱이 Firebase Analytics를 사용하는 경우 “사용 데이터” 카테고리에 “예”라고 답하고 연결됨(Firebase가 데이터를 Instance ID에 연결) 및 목적 “분석”을 지정합니다. Firebase Crashlytics도 사용하는 경우 “진단” 카테고리를 “제품 개발” 목적으로 추가하세요.
작성 후 라벨을 저장합니다. 여러 앱이 있는 경우 라벨은 각각 고유하며 복사는 지원되지 않습니다. 데이터 수집 로직이 변경될 때마다 라벨을 업데이트하세요. 그렇지 않으면 이전 라벨이 새 기능과 일치하지 않을 수 있습니다.
// 예: 분석용 데이터 전송 확인
import FirebaseAnalytics
final class AnalyticsService {
static func logEvent(_ name: String, params: [String: Any]) {
Analytics.logEvent(name, parameters: params)
}
static func logPurchase(amount: Double, currency: String) {
Analytics.logEvent(AnalyticsEventPurchase, parameters: [
AnalyticsParameterValue: amount,
AnalyticsParameterCurrency: currency
])
}
}
게시된 앱의 라벨을 업데이트하려면 App Store Connect에서 앱 버전을 열고 “앱 개인정보 보호” 섹션에서 변경합니다. 변경 사항은 검토 통과 후 적용됩니다. 새 라벨은 업데이트 게시 후 24시간 이내에 사용자에게 표시됩니다.
중요: 라벨에서 데이터를 제거하는 경우(예: 제3자와 데이터 공유를 중단한 경우) 새 빌드가 필요하지 않습니다. App Store Connect에서 라벨만 변경하면 됩니다. 새 데이터를 추가하려면 라벨 변경과 코드에서 해당 Privacy Manifest 업데이트가 모두 필요합니다.
개발자는 라벨을 작성할 때 자주 실수를 하여 업데이트 거부 또는 사용자 불만으로 이어집니다.
가장 흔한 실수는 개발자가 자신의 코드만을 기반으로 라벨을 작성하고 타사 SDK를 잊어버리는 것입니다. Firebase, AppsFlyer, Facebook SDK 등은 개발자의 추가 코드 없이 자동으로 데이터를 수집합니다. 예를 들어 Firebase Analytics는 사용 데이터(이벤트, 화면)와 식별자(Instance ID, IDFV)를 수집합니다.
권장 사항: 통합된 각 SDK에 대해 문서의 “수집된 데이터” 섹션을 읽고 해당 카테고리를 라벨에 추가하세요. AppsFlyer(2024)는 각 SDK 버전에 대한 수집된 데이터 목록을 게시하여 개발자가 라벨을 대조하는 데 도움을 줍니다.
많은 개발자가 데이터가 실제로 계정에 연결되어 있음에도 not linked로 표시합니다. 사용자에게 계정이 있고 이름이나 이메일을 저장하는 경우 linked입니다. 계정에 연결하지 않고 충돌 로그를 수집하는 경우 not linked입니다. 연결의 오류는 사용자를 오도하는 것으로 간주될 수 있습니다.
linked 데이터는 노란색으로 표시되며 사용자의 더 많은 관심을 끕니다. 특정 데이터 유형이 linked인지 확실하지 않은 경우 linked로 표시하고 검토 중에 설명을 제공하는 것이 좋습니다. Apple은 과도한 선언에 대해 처벌하지 않지만 불충분한 선언에 대해서는 거부할 수 있습니다.
데이터가 제3자와 공유되고 타겟 광고에 사용되는 경우 “추적에 사용되는 데이터”로 표시해야 합니다. 일부 개발자는 데이터를 분석으로 전달하여 추적을 은폐합니다. 이는 Apple의 규칙을 위반하며 금지 조치로 이어질 수 있습니다.
Apple의 규칙: 데이터가 제3자와 공유되고 광고 개인화 또는 기여도에 사용되는 경우 추적입니다. 앱 자체가 광고를 표시하지 않더라도 설치 기여도를 위해 Google Ads를 사용하는 경우 조회 데이터는 추적으로 간주됩니다.
현재 데이터 수집 로직과 일치하지 않는 이전 라벨은 장기 앱 유지 관리에서 일반적인 문제입니다. 개발자는 SDK를 변경하고 새 기능을 추가하지만 라벨 업데이트를 잊어버립니다. 결과적으로 사용자는 오래된 정보를 보게 되어 신뢰도가 떨어집니다.
모범 사례: 데이터와 관련된 코드 변경 시마다 라벨과 매니페스트를 확인하세요. PrivacyInfo.xcprivacy 파일이나 SDK 목록이 변경될 때 라벨 업데이트 필요성을 경고하는 CI 검사를 설정하는 것이 좋습니다.
자주 묻는 질문
네, 라벨은 무료 앱, 인앱 구매가 있는 무료 앱, 유료 앱을 포함한 모든 앱에 필수입니다. 유일한 예외는 규칙이 더 엄격한 “어린이용” 카테고리의 앱입니다.
App Store Connect는 라벨이 작성되지 않은 상태에서는 검토용 빌드를 제출할 수 없습니다. 이미 게시된 앱은 스토어에 남아 있지만 라벨 없이는 업데이트를 받을 수 없습니다.
데이터 수집 로직이 변경될 때마다: 새 SDK 추가, 사용 목적 변경, 제3자와 데이터 공유. 적어도 6-12개월마다 현재 코드와 라벨을 대조하세요.
네, 모든 사용자는 Apple의 양식을 통해 라벨과 실제 앱 동작 간의 불일치를 신고할 수 있습니다. 여러 건의 불만이 접수되면 Apple이 검토를 수행하고 다음 업데이트를 거부할 수 있습니다.
네, 라벨은 앱 페이지에 표시되지만 검색 결과나 추천에는 나타나지 않습니다. 사용자는 설치 전에 앱 페이지를 볼 때 라벨을 확인할 수 있습니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.