brunch

You can make anything
by writing

C.S.Lewis

by Lawn Jan 10. 2023

[HIG] Accessing private data

사람들이 신뢰하는 앱과 게임

본 문서는 Apple의 Human Interface Guideline(이하 HIG) 문서를 한글로 번역한 것입니다. iOS 생태계 내에서 HIG를 읽으시는 분들이 번역본이 없어 불편함을 겪는 것을 알게 되었고, 이에 한글로 번역을 하게 되었습니다. iOS 커뮤니티 Async Swift에서 자율적으로 모인 9명이 함께 번역했으며, 일체의 상업적인 목적을 띄지 않습니다. 이 문서를 학습에 적극적으로 이용해 주시돼, 상업적인 용도로 이용하시는 것은 지양해 주시기 바랍니다. 감사합니다.


Introduction


사람들이 신뢰할 수 있는 앱과 게임을 만들려면, 개인정보 보호 관련 데이터와 리소스 및 앱 사용 방법 등을 투명하게 관리해야 합니다.


사람들은 개인적인 용도로 기기를 사용하며, 앱이 자신의 개인정보를 보호해 주기를 원합니다. 사람의 행동을 추적하거나 데이터 및 장치의 리소스에 접근할 수 있는 권한을 요청하는 것 이외에도 사용자의 데이터를 보호하는 것이 중요합니다.


새로운 앱이나 업데이트된 앱을 출시하려고 할 때, 앱 스토어의 제품 페이지에 개인 정보 보호 정책 및 수집데이터에 대한 세부 정보를 제공해야 합니다. (이 정보는 App Store Connect에서 관리할 수 있습니다.) 사람들은 앱을 다운로드하기 전에 제품 페이지의 개인 정보 지침을 참고해 앱을 다운로드할지 결정을 내립니다. 자세한 내용은 App Store에서 App privacy details on the App Store를 참고하세요.

Requesting permission


다음은 앱 접근 권한을 요청해야 하는 항목의 예시입니다. 

 

위치, 건강, 재정, 연락처 및 기타 개인 식별 정보를 포함한 개인 데이터

이메일, 메시지, 캘린더 데이터, 연락처, 게임 플레이 정보, Apple Music 활동, HomeKit 데이터, 오디오, 비디오 및 사진 콘텐츠와 같은 사용자 생성 콘텐츠

Bluetooth 주변 장치, 홈 자동화 기능, Wi-Fi 연결 및 로컬 네트워크와 같은 보호된 리소스

카메라 및 마이크와 같은 장치 기능

앱 추적을 가능하게 하는 기기의 광고 설정 (대부분의 웹과 앱에는 관심사와 인구통계에 맞는 광고를 표시할 수 있도록 일종의 추적 기능이 있습니다. 이 기능을 비활성화하면 개인 맞춤 광고 추적이 불가능합니다.)

역자설명 : 설정 > 개인정보 보호 및 보안 > 추적에서 앱 추적을 가능하게 하는 광고 요청을 설정할 수 있습니다.

시스템은 사용자가 여러 요청을 볼 수 있도록 일반적인 경고창을 보여줍니다. 앱에 접근 권한이 필요한 이유를 설명하는 문구를 입력하면 시스템이 경고창에 설명을 표시해 줍니다. 사람들은 설정 > 개인 정보 보호에서 설명을 보고 선택 사항을 업데이트할 수도 있습니다.


앱이 사용자의 데이터 또는 리소스에 액세스해야 하는 경우에만 접근 권한을 요청하세요. 사람들은 대부분 앱의 개인 정보 요청이나 접근 권한 요청에 부담과 의문을 느낍니다. 굳이 권한이 필요한 경우가 아니라면 더욱 그렇습니다. 그래서 사용자들이 해당 기능을 사용할 때 접근 권한을 요청하는 것이 좋습니다. 예를 들어,  location button을 통해 사용자들에게 해당 정보가 왜 이 기능을 사용하기 위해 필요한지 알리고 접근 권한을 요청할 수 있습니다.


데이터나 리소스가 필요한 경우가 아니면, 앱 실행을 시작할 때마다 접근 권한을 요청하지 마세요.  꼭 필요한 이유가 있어서 접근 권한을 요청한 것이 아니라면, 앱을 시작할 때마다 접근 권한을 요청하면 사용자들이 불편을 느낄 수 있습니다. 예를 들어 내비게이션 앱 같은 경우에는 사용자들이 앱의 위치 추적 권한을 사용해야 앱을 사용할 수 있음을 알기에 괜찮습니다.


앱이 요청하는 기능, 데이터, 리소스를 어떻게 사용하는지 명확하게 사용자에게 설명해야 합니다. 표준 경고창은 앱 이름과 설명 ‘앱 사용 목적을 담은 문장(Purpose string)’ 또는 ’ 앱 사용 설명에 대한 문장(Usage description string)’을 표시한 다음에 사용자에게 허용 또는 거부의 의사를 묻습니다. 간단하고 구체적이며 이해하기 쉬운 짧고 완전한 문장을 사용하세요. 문장을 사용하고, 수동태를 피하고, 끝에 마침표를 포함하세요. 개발자 가이드라인은 Requesting Access to Protected Resources  및 App Tracking Transparency에 대한 접근 권한을 참고하세요.

다음은 시스템 경고 창의 기본적인 세 가지 예시입니다.

Location button


iOS 15, iPadOS 15 및 watchOS 8부터 Core Location 버튼을 제공하므로, 앱이 사용자의 위치 추적 기능이 필요할 때만 자신의 위치에 접근할 수 있는 임시 권한을 부여할 수 있습니다. 위치 버튼의 모양은 앱의 UI에 따라 달라질 수 있으며 항상 사람들이 빠르게 알아볼 수 있는 방식으로 해당 작업을 전달합니다.

역자설명 : Core Location은 장치의 지리적 위치, 고도, 방향 또는 근처의 iBeacon 장치와 관련된 위치를 결정하는 서비스를 제공합니다. 프레임워크는 Wi-Fi, GPS, Bluetooth, 자력계, 기압계 및 셀룰러 하드웨어를 포함하여 장치에서 사용 가능한 모든 구성 요소를 사용하여 데이터를 수집합니다.


사람들이 앱을 처음 열고 위치 버튼을 선택하면, 시스템에서 표준 알림 창이 표시됩니다. 이를 통해 앱은 사용자에게 현재 위치 접근 권한 허용 여부와 공유가 될 것을 알려줍니다. 

사람들이 현재 접근 권한의 상태를 확인기 위해, 위치 버튼을 선택하기만 하면 앱에 해당 위치에 접근할 수 있는 일회성 권한이 부여됩니다. 각 일회성 권한은 사람들이 앱 사용을 중단하면 종료되지만 다시 설정하지 않아도 유지됩니다.


NOTE : 앱에 본인인증 상태가 없는 경우 위치 버튼을 선택하면, 표준 알림에서 ‘한번 허용’을 선택할 때와 동일한 효과가 나타납니다. 사람들이 이전에 ‘앱 사용 중’을 선택한 경우, 위치 버튼을 눌러도 앱 상태가 변경되지 않습니다. 개발자 가이드라인은 LocationButton(SwiftUI) 및 CLLocationButton(Swift)을 참고하세요.


특정 앱에 위치 버튼으로 위치를 쉽게 공유할 수 있게 하는 방법을 제공하는 것도 고려해 보세요. 예를 들어 앱은 사람들이 메시지나 게시물에 자신의 위치를 첨부하거나 매장을 찾는 등 위치를 알고 싶을 수 있습니다. 그래서 사람들이 앱을 사용할 때마다 ‘한 번 허용’ 권한을 자주 선택한다면, 반복적인 알림 없이 위치 버튼을 간단하게 바로 사용할 수 있게 하여 위치 공유를 쉽게 할 수 있게 하는 것이 좋습니다.


UI와 조화를 이루도록 위치 버튼을 사용자 정의화 하는 것을 고려해 보세요. 위치 버튼을 사용자 정의할 때 다음을 작업을 고려할 수 있습니다.


"현재 위치" 또는 "나의 현재 위치 공유"와 같이 기능에 가장 잘 맞는 시스템 제목을 선택하세요.

채워지거나 윤곽이 그려진 그래픽을 선택합니다.

제목과 글리프의 배경색과 색상을 선택합니다.

버튼의 모서리 반경을 조정합니다.


위치 버튼은 사람들의 보편적인 인식을 바탕으로 디자인되었기 때문에 부수적인 시각적 속성을 사용자가 지정할 수 없습니다. 또한 위치 버튼은 대비가 낮은 색상 조합이나 반투명도에서도 쉽게 사람들이 알아볼 수 있게 디자인되었습니다. 이러한 고려사항 외에도 텍스트가 버튼에 맞는지 확인해야 합니다. 예를 들어 버튼 속의 텍스트는 모든 접근 권한 요청에서의 텍스트 크기 또는 다른 언어로 번역될 때 잘림 없이  잘 맞아야 합니다.


IMPORTANT : 시스템이 사용자 지정 위치 버튼과 관련된 문제를 찾은 경우, 사람들이 버튼을 선택하더라도 앱에 사용자 위치에 대한 접근 권한을 부여되지 않습니다. 사용자 지정 버튼은 다른 앱의 작업에서는 정상적으로 작동하겠지만, 위치 버튼은 사용할 수 없게 됩니다. 사람들이 원하는 데로 작동하지 않으면 사람들이 앱에 대한 신뢰를 잃을 수 있습니다.


Pre-alert screens


경고 문구를 통해 사람들은 앱이 접근 권한을 요청한 이유를 알 수 있습니다. 또한 추가 세부 정보를 제공해야 하는 경우에는 시스템에서 경고 문구가 표시되기 전에, 사용자 지정 화면을 표시할 수 있습니다. 다음 가이드는 카메라, 마이크, 위치, 연락처, 일정 및 추적을 포함하여 보호된 데이터 및 리소스에 대한 접근 권한을 요청하는 시스템 경고 전에 표시되는 사용자 지정 화면에 대해 적용되는 가이드라인입니다.   


역자설명 : ‘사전 경고 화면(Pre-alert screens)’은 경고 화면 전에 부연설명하는 ‘사용자 지정화면’과 같습니다.


버튼을 하나만 사용하고, 사용 플로우 끝에 경고 화면이 열리도록 합니다. 사용자 지정 화면에 경고 화면과 어울리지 않는 다른 버튼이 있으면 사용자가 선택을 하는 데 방해가 됩니다. 또한 "허용"과 같은 용어를 사용하여 사용자 정의 화면 버튼의 제목을 지정하는 것은 좋지 않습니다. 허용 버튼과 화면 버튼의 의미 및 시각적 위계가 비슷해 보이는 경우, 사람들은 무의식적으로 허용 버튼을 선택할 수 있습니다. "계속" 또는 "다음"과 같은 용어로 사용자 지정 화면의 단일 버튼에 제목을 지정하는 것이 좋습니다. 이를 통해 사용자에게 버튼을 선택했을 때 시스템 경고 창이 열릴 것을 암시합니다.

사용자 정의 화면에 추가 작업을 포함하지 마세요. 예를 들어 닫기 또는 취소(leave the screen without viewing) 옵션을 제공해 사람들이 시스템 경고를 보지 않고 화면을 벗어날 수 있는 방법을 제공하면 안 됩니다.

Tracking requests


앱을 추적하는 것은 굉장히 민감한 문제입니다. 앱을 추적해야 하는 이유를 사용자 정의 화면을 통해 설명할 수 있지만 앱 실행과 동시에 앱을 추적해야 한다면, 추적 데이터를 수집하기 전에 시스템에서 제공하는 알림 창 표시해야 합니다.


사람들을 혼란스럽게 하거나 오해할 수 있는 사용자 정의 화면 이후에 시스템이 제공하는 알림 창을 제공하지 마세요. 사람들은 알림을 읽지 않고 빠르게 넘어가는 경우가 많습니다. 이러한 행동을 유도할 수 있는 알림 창의 메시지는 App Store 검토에서 거부될 수 있습니다.


다음은 안 좋은 4가지 예시입니다. 인센티브 제공, 권한을 허용하는 것처럼 보이는 화면, 알림에 이미지를 표시, 경고 뒤에 화면에 주석을 추가하는 것입니다(아래 참고). 가이드라인은 App Store Review Guidelines: 5.1.1 (iv)을 참고하세요.

인센티브(incentive) :  인센티브를 제공하지 마세요. 접근 권한 부여에 대해 사람들에게 보상을 주면 안 되며, 사람들이 접근 권한을 허용할 때까지 기능이나 콘텐츠를 보류하거나 앱을 사용할 수 없게 만들면 안 됩니다.

권한 요청 모방(imitation request) : 시스템 경고의 기능을 따하는 사용자 정의 화면을 사용하지 마세요. 특히 "허용" 또는 이와 유사한 용어를 사용하는 버튼의 제목을 만들면 안 됩니다.

알림에 이미지(alert image) : 알림에 유도하는 이미지를 표시하지 마세요.

알림에 주석(alert annotation) : 시스템 알림의 허용 버튼에 사람들의 주의를 끄는 시각적 이미지를 사용하지 마세요.      


Protecting data


사람들의 정보를 보호하는 것이 무엇보다 중요합니다. 정보를 로컬에 저장하고, 특정 작업에 대한 권한을 부여하고, 네트워크를 통해 정보를 전송해야 할 때 시스템이 제공하는 보안 기술을 활용하여 보안에 대한 확신을 주고 개인 정보를 보호할 수 있습니다.


다음은 보안을 위한 가이드라인입니다.


암호 인증만을 사용하는 것은 좋지 않습니다. 지문으로 인증할 수 있는 Touch ID와 같은 다른 기술을 함께 사용하세요.. 개발자 가이드라인은  Local Authentication을 참고하세요.


중요한 정보를 키체인에 저장하세요. 키체인은 누군가의 개인 정보를 다룰 때 안전합니다. 개발자 가이드라인은  Keychain Services를 참고하세요.


암호 또는 기타 보안 사항을 일반 텍스트 파일에 저장하지 않는 것이 좋습니다. 파일 권한을 사용하여 접근을 제한하더라도 암호화된 키체인의 정보가 훨씬 더 안전합니다.


사용자가 지정하는 인증 체계를 만들지 않는 것이 좋습니다. Sign in with Apple 또는 Password AutoFill과 같은 시스템이 제공하는 기능을 사용하세요. 가이드라인은 Managing accounts를 참고하세요.


Platform considerations


No additional considerations for iOS, iPadOS, tvOS, or watchOS.


mac OS

유효한 개발자 ID로 앱에 서명하세요. 스토어 외부에 앱을 배포하기로 한 경우, 개발자 ID로 앱에 서명하면 개발자를 Apple 개발자가 맞는지와 앱을 사용하기에 안전한지 확인합니다. 개발자 지침은 Xcode Help을 참고하세요.


앱 샌드박싱으로 사람들의 데이터를 보호하세요. 샌드박싱은 맬웨어로부터 앱을 보호하면서 시스템 리소스 및 사용자 데이터에 대한 접근을 앱에 제공합니다. Mac App Store에 제출된 모든 앱에는 샌드박싱이 필요합니다. 개발자 가이드라인 Configuring the macOS App Sandbox을 참고하세요.


역자설명 : 앱 샌드박싱은 파일 시스템, 네트워크 연결 등에 대한 액세스를 제한하여 손상된 앱으로부터 시스템 리소스와 사용자 데이터를 보호하는 기술입니다.


누가 로그인했는지 확인하지 않는 것이 좋습니다. 빠른 사용자 전환으로 인해 여러 사람이 동일한 시스템에서 활동할 수 있습니다.


Resources


Developer documentation   

Requesting access to protected resources

Security


Videos   

Design for location privacy WWDC 2020

Meet the Location Button WWDC21

Apple’s privacy pillars in focus WWDC21

작가의 이전글 [HIG] Typography
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari