앱을 설치하고 사용할 때 우리는 종종 '앱 권한'에 동의합니다.
"이 앱은 카메라에 접근하려 합니다", "이 앱은 위치 정보를 사용하려 합니다" 등의 메시지는 바로 앱 권한 요청의 일부입니다. 이러한 권한은 왜 필요하고, 우리의 기기와 개인 정보에 어떤 영향을 미칠까요?
본 글에서는 Android와 iOS에서 앱 권한의 중요성과 관리 방법에 대해 깊이 탐구해보았습니다.
OS의 권한에 대하여
애플리케이션이 사용자의 기기에서 특정 기능이나 데이터에 접근하기 위해 요청하는 권한을 일반적으로 "앱 권한(App Permissions)"이라고 합ㄴ다. 이는 사용자의 개인 정보 보호, 기기의 보안 유지 및 사용자에게 더 투명한 정보 제공이 목적입니다.
앱 권한은 크게 두 가지 유형으로 나뉩니다.
일반 권한(Normal Permissions): 앱이 일반적인 기기 상태나 정보에 접근할 때 요구하는 권한으로, 사용자의 개인 정보에 크게 영향을 미치지 않습니다. 이러한 권한은 대부분의 경우 사용자의 명시적인 승인 없이 자동으로 부여됩니다.
위험 권한(Dangerous Permissions): 사용자의 개인 데이터나 기기의 핵심 기능에 접근할 때 요구되는 권한입니다. 이러한 권한은 사용자의 명시적인 승인이 필요하며, 앱은 이 권한들을 사용하기 전에 사용자에게 요청해야 합니다. 예를 들어, 위치 정보, 카메라, 마이크, 연락처 등의 권한이 여기에 속합니다.
일반적으로 사용되는 모바일 운영체제로는 Android os(통칭 AOS)와 iOS로 표현합니다.
Android에서는 앱 권한이 '일반 권한(Normal Permissions)'과 '위험 권한(Dangerous Permissions)'으로 나뉘며, 일반 권한은 앱 설치 시 자동으로 부여되고 사용자의 명시적 승인을 요구하지 않는 반면, 위험 권한은 사용자의 승인이 필요합니다.
iOS에서는 이러한 구분이 명확하지 않습니다. 대신, iOS는 앱이 사용자의 개인 정보에 접근하려 할 때(예: 위치 정보, 연락처, 사진, 카메라, 마이크 등) 사용자에게 명시적으로 권한을 요청하도록 합니다. 이러한 권한 요청은 앱이 해당 기능을 처음 사용하려고 할 때 발생하며, 사용자는 이 요청을 승인하거나 거부할 수 있습니다.
AOS와 iOS에서 시스템 선택 권한은 어떤게 있으며
OS 업그레이드에 따른 권한이 어떻게 바뀌었을까?
AOS 에서는 애플리케이션에 여러 가지 시스템 선택권한(Permissions)을 부여할 수 있습니다. 이러한 권한은 사용자의 개인정보 보호와 시스템의 안정성을 유지하기 위해 필요합니다. 애플리케이션이 특정 기능이나 데이터에 접근하기 위해서는 해당 권한을 사용자로부터 명시적으로 획득해야 합니다. Android의 시스템 선택권한은 크게 두 가지 카테고리로 분류됩니다.
'일반 권한(Normal Permissions)', '특별 권한(Dangerous Permissions)'
Android 6.0 (API 레벨 23)부터 사용자는 애플리케이션 설치 시가 아닌 실제로 해당 기능을 사용할 때 권한을 부여하거나 거부할 수 있게 되었습니다. 이는 사용자의 개인정보 보호를 강화하고, 권한에 대한 사용자의 이해와 제어를 높이기 위한 변화입니다.
사용자가 선택할 수 있는 특별 권한 중 일부 예시는 다음과 같습니다.
위치 (LOCATION): 사용자의 위치 정보에 접근할 수 있게 한다.
카메라 (CAMERA): 애플리케이션이 기기의 카메라를 사용할 수 있게 한다.
마이크 (MICROPHONE): 애플리케이션이 오디오를 녹음할 수 있게 한다.
연락처 (CONTACTS): 사용자의 연락처 데이터에 접근할 수 있게 한다.
전화 (PHONE): 전화 걸기 및 관리와 관련된 권한을 포함한다.
SMS (SMS): 애플리케이션이 SMS 메시지를 보내거나 받을 수 있게 한다.
저장소 (STORAGE): 사용자의 기기에 저장된 파일에 접근할 수 있게 한다.
(개발자 참고 Tip)
이 외에도 다양한 시스템 권한이 있으며, 개발자는 필요한 권한을 애플리케이션 매니페스트 파일(AndroidManifest.xml)에 선언해야 합니다. 권한을 요청하는 방법과 사용자의 승인 절차는 Android 개발 문서에서 더 자세히 제공하고 있습니다.
Android OS 버전에 따라 특별 권한(Dangerous Permissions)의 관리 방식에 중요한 변화가 있스니다. 특히, Android 6.0 (마시멜로우, API 레벨 23)에서 도입된 사용자 권한 요청 시스템은 이전 버전과 큰 차이를 보입니다.
Android 5.1 (롤리팝, API 레벨 22) 이하
정적 권한 부여: 애플리케이션을 설치할 때 사용자로부터 모든 권한에 대해 일괄 승인을 받습니다. 이후에는 앱이 권한을 요청하지 않고 직접 접근할 수 있습니다. - 사용자는 설치 후 개별 권한을 관리하거나 거부할 수 없습니다. 앱을 사용하려면 설치 시 요청된 모든 권한을 승인해야 합니다.
Android 6.0 (마시멜로우, API 레벨 23) 부터
동적 권한 부여: 애플리케이션이 실행 중일 때, 실제로 해당 권한이 필요할 때 사용자에게 권한을 요청합니다. 사용자는 개별 권한에 대해 승인 또는 거부를 결정할 수 있습니다. - 이 변화는 사용자가 더 세밀하게 권한을 제어할 수 있게 하여 개인정보 보호를 강화했습니다. - 개발자는 권한이 거부될 수 있음을 고려하여 애플리케이션을 설계해야 하며, 권한 요청 시 사용자에게 해당 권한이 왜 필요한지 설명해야 할 수도 있습니다.
Android 10 (API 레벨 29) 부터
위치 권한 상세화: 애플리케이션이 백그라운드에서 위치 정보를 사용할 수 있게 하는 별도의 권한 요청이 필요합니다. - 사용자는 앱이 포어그라운드(앱을 활성 사용 중일 때)와 백그라운드(앱을 직접 사용하고 있지 않을 때)에서 위치 정보를 사용하는 것을 별도로 제어할 수 있습니다.
Android 11 (API 레벨 30) 부터
한 번만 권한(One-time permissions): 사용자는 위치, 마이크, 카메라와 같은 민감한 권한을 앱이 한 번만 사용하도록 허용할 수 있습니다. 앱을 종료하면 권한은 자동으로 리셋합니다. - 이는 사용자가 개인 정보 보호를 더욱 강화할 수 있게합니다.
Android 12 (API 레벨 31) 이후
더 세분화된 권한 관리: Android 12는 사용자의 프라이버시 보호를 위해 더 세분화된 권한 관리와 투명성을 제공합니다. - 예를 들어, 앱이 클립보드에 있는 데이터에 접근하려고 할 때 사용자에게 알림을 제공합니다.
각 Android 버전마다 개발자는 특별 권한을 사용하고 요청하는 방식을 업데이트해야 하며, 사용자는 자신의 데이터와 프라이버시를 보호하기 위해 더 많은 제어권을 갖게 되었습니다. 이러한 변화는 애플리케이션 개발과 사용자 경험 모두에 중요한 영향을 미칩니다.
iOS 에도 시스템 선택권한(System Permissions)이 있습니다.
iOS에서는 애플리케이션이 사용자의 개인정보나 기기의 특정 기능에 접근하기 전에 반드시 사용자의 명시적인 승인을 받아야 합니다. 이러한 권한 시스템은 사용자의 프라이버시를 보호하고, 앱이 무분별하게 사용자 데이터에 접근하는 것을 방지하기 위해 설계되었다.
iOS 애플리케이션에서 요청할 수 있는 일부 시스템 선택권한에는 다음과 같은 것들이 있습니다:
위치 서비스 (Location Services): 앱이 사용자의 위치 정보를 사용할 수 있도록 허용한다. iOS는 앱이 사용자의 위치를 항상(백그라운드 포함) 사용할 수 있도록 허용하거나, 앱을 사용하는 동안만 위치 정보에 접근할 수 있도록 제한하는 옵션을 제공한다.
카메라 (Camera): 앱이 사용자의 카메라를 사용하여 사진이나 비디오를 캡처할 수 있게 한다.
마이크 (Microphone): 앱이 마이크를 통해 오디오를 녹음할 수 있게 한다.
연락처 (Contacts): 앱이 사용자의 연락처 목록에 접근할 수 있게 한다.
달력 (Calendar): 앱이 사용자의 달력에 이벤트를 추가하거나 변경할 수 있게 한다.
사진 라이브러리 (Photos): 앱이 사용자의 사진 라이브러리에 접근하고, 사진이나 비디오를 저장하거나 수정할 수 있게 한다.
리마인더 (Reminders): 앱이 사용자의 리마인더 목록에 항목을 추가하거나 변경할 수 있게 한다.
헬스 데이터 (Health Data): 앱이 건강 관련 데이터에 접근할 수 있도록 헬스킷(HealthKit)과 같은 프레임워크를 통해 허용한다.
블루투스 (Bluetooth): 앱이 블루투스를 통한 외부 기기와의 통신을 할 수 있게 한다.
(개발자 참고 Tip)
iOS에서는 애플리케이션이 특정 권한을 요청할 때마다 사용자에게 명확한 설명이 포함된 대화 상자가 표시되어, 왜 해당 권한이 필요한지에 대한 정보를 제공해야 합니다. 이 정보는 앱의 Info.plist 파일에 Privacy - [Permission] Usage Description 키를 추가하여 설정할 수 있습니다.
iOS의 권한 시스템은 사용자의 개인정보와 프라이버시를 중시하며, 개발자는 사용자가 자신의 데이터에 대한 제어권을 유지할 수 있도록 디자인해야 합니다.
iOS 버전이 업데이트됨에 따라, 시스템 선택권한에 대한 관리와 요청 방법에도 변화가 있었습니다.
특히, 사용자의 프라이버시와 데이터 보호에 대한 중요성이 커지면서, 점차 더 많은 권한 요청이 앱 사용 과정에서 직접적으로 이루어지게 되었습니다.
iOS 6 이후
iOS 6에서는 사용자의 연락처, 캘린더, 리마인더, 사진, 블루투스 공유 등에 대한 접근 권한 요청이 도입되었습니다. 앱이 이러한 정보에 접근하려 할 때 사용자에게 권한을 요청하는 팝업이 표시됩니다.
iOS 8 이후
위치 서비스 권한에 있어서 두 가지 유형의 권한 요청이 도입되었습니다. - 언제나 사용(Always)과 사용 중일 때만(When In Use).
건강 앱(HealthKit)과 가정 자동화(HomeKit) 데이터 접근 권한이 추가되었습니다.
iOS 10 이후
앱이 사용자의 데이터에 접근하기 위해 권한을 요청할 때 Info.plist 파일에 명시적인 설명을 추가해야 합니다. (예 : 앱이 사용자의 사진 라이브러리에 접근하려 할 때NSPhotoLibraryUsageDescription 키에 대한 설명이 필요합니다.)
SiriKit, 음악 라이브러리, Speech Recognition 등 새로운 권한 요청이 추가되었습니다.
iOS 11 이후
위치 서비스 권한에서 "언제나 사용" 옵션을 선택할 때, 시스템이 추가적으로 사용자에게 확인을 요청하도록 변경되었습니다. 이는 사용자에게 더 많은 통제권을 주기 위한 조치 입니다.
앱이 사용자의 위치 정보를 백그라운드에서 사용하는 경우, 상태 바에 파란색 바(Blue Bar)가 표시되어 사용자에게 알립니다.
iOS 13 이후
위치 서비스 권한에 "한 번만 허용" 옵션이 추가되어, 사용자가 앱을 사용하는 동안 단 한 번만 위치 정보 접근을 허용할 수 있게 되었습니다.
블루투스 사용 권한 요청이 도입되어, 앱이 블루투스를 통한 데이터 전송이나 장치 간 통신을 위해 사용자의 허가를 받아야 합니다.
iOS 14 이후
사용자가 앱에 제공한 위치 권한의 정확도를 조절할 수 있는 기능이 추가되었습니다. "정확도 낮추기" 옵션을 통해, 앱이 사용자의 대략적인 위치만 알 수 있도록 제한할 수 있습니다.
카메라, 마이크, 클립보드 접근 등에 대한 사용자 인터페이스가 개선되어, 앱이 이러한 리소스에 접근할 때 사용자에게 더 명확한 피드백을 제공합니다.
iOS의 시스템 선택권한은 사용자 프라이버시 보호를 중시하며, 각 버전 업데이트마다 사용자에게 더 많은 제어권을 부여하는 방향으로 발전하고 있습니다. 개발자는 이러한 변화를 주시하며, 앱 개발 시 현재 iOS 버전에서 요구하는 권한 관리 규칙을 준수해야 합니다.
앱 선택 권한의 의문점
최근 애플리케이션의 개인정보 이용 동의에 대한 사용자의 관심이 높아지며 권한허용에 대한 인식도 변화하고 있습니다. 아래는 앱 권한에 관한 일반적인 의문에 관해 설명하려 합니다.
1. 앱 기능과 무관해 보이는 권한은 왜 필요한가요?
앱의 주요 기능과 직접적인 연결이 없어 보이는 권한 요청이 있을 수 있습니다. 예를 들어, 앱의 오류를 분석하기 위해 사용자의 디바이스 ID를 수집해야 할 경우가 있으며, 이를 위해선 특정 권한이 필요합니다.
2. 선택 권한 허용 유도시 사용목적을 자세히 명시할 수 없나요?
권한의 이름과 용도는 스마트폰의 운영 체제에서 정해져 있어 앱 개발자는 이를 변경할 수 없습니다. 그래서 사용목적에 대한 안내화면을 보여준 후 권한을 얻는 방식으로 목적을 명시하는 방법을 사용하는 것이 좋습니다.
3. 선택 권한을 동의하면 모든 정보가 수집되나요?
합법적인 애플리케이션이라면, 사용자가 동의한 정보만을 필요한 범위 내에서 수집합니다. 또한, 개인 정보를 수집할 때는 별도의 동의 과정을 거치게 됩니다. 즉, 권한에 동의한다고 해서 모든 정보를 수집하는 것은 아닙니다.
이러한 앱 권한을 고려하여야 시험 케이스에 맞는 설정과 시험에서 발견될 이슈에 대비할 수 있습니다.
특히 운영체의 소프트웨어 업데이트는 주기적으로 이루어집니다.
앱의 원할한 동작과 사용성을 위해 변화하는 권한 정책에 지속적으로 관심을 가져야 개발될 앱과 기존 앱의 사용성을 유지할 수 있습니다.
QA에서 유의해야 할 부분은?
[시스템 권한 허용 팝업]
사용자는 권한 허용에 대한 다양한 선택을 할 수 있습니다. 보안을 중요하게 생각하는 사용자일수록 권한선택에 있어 "허용 안함"을 선택하는 비율도 높아지고 있습니다. 하지만 권한을 허용하지 않을시 앱을 원할하게 이용이 불가하며 앱의 비정상적인 종료를 초래할 수 있습니다. 따라서 앱 테스트 단계에서 사용자가 선택할 선택지에 따라 비정상적인 종료가 나타나지 않도록 확인해야 합니다.
앱이 필요한 권한에 따라 "이번만 허용", "항상 허용", "앱 사용중만 허용"등 필요한 허용 등급도 달라집니다. 사용자가 이번만 허용했다면 이후에 다시 앱을 이용할때 시스템 권한 허용이 노출되지 않아 문제가 생길 수 있습니다. 이런 경우를 대비하여 권한이 없는 경우 앱에서 커스텀 팝업을 노출해 이전 화면이나 환경설정으로 이동하도록 유도합니다.
앱 테스트 단계에서는 이런 권한 선택지에 따른 커스텀 팝업 노출과 이동된 화면에서 허용된 권한대로 앱 사용에 문제가 없는지 확인해야 합니다.
Comments