민감한 정보 액세스 필요성 결정

앱 권한은 다음 항목에 대한 액세스를 보호하여 사용자 개인정보 보호를 지원합니다.

  • 제한된 데이터(예: 시스템 상태 및 사용자의 연락처 정보)
  • 제한된 작업(예: 페어링된 기기에 연결 및 오디오 녹음)

이 페이지에서는 권한 사용의 대략적인 워크플로, 다양한 유형의 권한 설명, 앱에서 권한을 사용하기 위한 권장사항 등 Android 권한의 작동 방식을 간략하게 설명합니다. 다른 페이지에서는 앱에서 권한을 요청해야 하는지, 권한을 선언해야 하는지, 런타임 권한을 요청해야 하는지, 다른 앱이 앱의 구성요소와 상호작용하는 방식을 제한해야 하는지를 평가하는 방법을 설명합니다.

Android 앱 권한의 전체 목록을 보려면 권한 API 참조 페이지를 참고하세요.

권한 워크플로를 보여 주는 샘플 앱을 확인하려면 GitHub의 Android 권한 샘플 저장소를 참고하세요.

권한 사용 워크플로

앱에서 제한된 데이터나 제한된 작업에 액세스해야 할 수 있는 기능을 제공한다면 권한을 선언하지 않고도 정보를 가져오거나 작업을 실행할 수 있는지 확인하세요. 개발자는 권한을 선언하지 않고도 사진 찍기, 미디어 재생 일시중지, 관련 광고 표시 등 앱에서 여러 사용 사례를 처리할 수 있습니다.

앱에서 사용 사례를 처리하기 위해 제한된 데이터에 액세스하거나 제한된 작업을 실행해야 한다고 생각한다면 적절한 권한을 선언하세요. 설치 시간 권한이라고 하는 일부 권한은 앱이 설치될 때 자동으로 부여됩니다. 런타임 권한이라고 하는 다른 권한은 앱에서 추가 단계를 거쳐 런타임에 권한을 요청해야 합니다.

그림 1은 앱 권한을 사용하는 워크플로를 보여 줍니다.

그림 1. Android에서 권한을 사용하는 대략적인 워크플로를 보여 주는 다이어그램

권한 유형

Android에서는 설치 시간 권한, 런타임 권한, 특별 권한을 비롯하여 권한을 다양한 유형으로 분류합니다. 각 권한 유형은 시스템에서 앱에 권한을 부여할 때 앱에서 액세스할 수 있는 제한된 데이터 범위와 앱에서 실행할 수 있는 제한된 작업 범위를 나타냅니다.

설치 시간 권한

왼쪽 이미지는 앱의 설치 시간 권한 목록을 보여 줍니다. 오른쪽 이미지는 두 가지 옵션(허용 및 거부)이 포함된 팝업 대화상자를 보여 줍니다.
그림 2. 앱 스토어에 표시되는 앱의 설치 시간 권한 목록

설치 시간 권한을 통해 앱에서는 제한된 데이터에 제한적으로 액세스하고 시스템이나 다른 앱에 최소한의 영향을 미치는 제한된 작업을 실행할 수 있습니다. 앱에서 설치 시간 권한을 선언하면 시스템에서는 사용자가 앱을 설치할 때 자동으로 앱에 권한을 부여합니다. 앱 스토어에서는 그림 2와 같이 사용자가 앱의 세부정보 페이지를 볼 때 설치 시간 필수 접근권한 안내를 사용자에게 표시합니다.

Android에는 일반 권한과 서명 권한을 포함하여 여러 하위 유형의 설치 시간 권한이 포함되어 있습니다.

일반 권한

이러한 권한을 통해 앱의 샌드박스 이상으로 확장된 데이터와 작업에 액세스할 수 있습니다. 그러나 이러한 데이터와 작업은 사용자의 개인정보 보호와 다른 앱의 작업에 거의 영향을 미치지 않습니다.

시스템에서는 권한 API 참조 페이지에 나와 있는 것처럼 '일반' 보호 수준을 일반 권한에 할당합니다.

서명 권한

앱에서 다른 앱이 정의한 서명 권한을 선언하고 두 앱이 동일한 인증서로 서명되었다면 시스템에서는 설치 시간에 첫 번째 앱에 권한을 부여합니다. 그 외의 경우에는 첫 번째 앱에 권한을 부여할 수 없습니다.

시스템에서는 권한 API 참조 페이지에 나와 있는 것처럼 '서명' 보호 수준을 서명 권한에 할당합니다.

런타임 권한

두 가지 옵션(허용 및 거부)이 포함된 팝업 대화상자
그림 3. 앱에서 런타임 권한을 요청할 때 표시되는 시스템 권한 메시지

런타임 권한(위험한 권한이라고도 함)으로 앱에서는 제한된 데이터에 추가로 액세스하고 시스템과 다른 앱에 좀 더 큰 영향을 미치는 제한된 작업을 실행합니다. 따라서 앱에서 런타임 권한을 요청해야 제한된 데이터에 액세스하거나 제한된 작업을 실행할 수 있습니다. 앱에서 런타임 권한을 요청하면 시스템은 그림 3과 같이 런타임 권한 메시지를 표시합니다.

많은 런타임 권한이 잠재적으로 민감한 정보가 포함된 특별 유형의 제한된 데이터인 비공개 사용자 데이터에 액세스합니다. 비공개 사용자 데이터의 예로는 위치와 연락처 정보가 있습니다.

시스템에서는 권한 API 참조 페이지에 나와 있는 것처럼 '위험' 보호 수준을 런타임 권한에 할당합니다.

특별 권한

특별 권한은 특정 앱 작업에 상응합니다. 플랫폼과 OEM만이 특별 권한을 정의할 수 있습니다. 또한 플랫폼과 OEM은 일반적으로 다른 앱 위에 그리기와 같이 특히 강력한 작업에 대한 액세스를 보호하려고 할 때 특별 권한을 정의합니다.

시스템 설정의 특별 앱 액세스 페이지에는 사용자가 전환할 수 있는 작업 세트가 포함되어 있습니다. 이러한 작업의 대부분은 특별 권한으로 구현됩니다.

각 특별 권한에는 자체 구현 세부정보가 있습니다. 각 특별 권한 사용에 관한 안내는 권한 API 참조 페이지에 나와 있습니다. 시스템은 'appop' 보호 수준을 특별 권한에 할당합니다.

권장사항

앱 권한은 시스템 보안 기능에 기반하며 앱 권한을 통해 Android에서는 사용자 개인정보 보호와 관련된 다음 목표를 지원할 수 있습니다.

  • 제어: 사용자가 앱과 공유하는 데이터를 제어합니다.
  • 투명성: 사용자가 앱이 사용하는 데이터와 앱이 이 데이터에 액세스하는 이유를 파악합니다.
  • 데이터 수집 최소화: 앱에서는 사용자가 호출하는 특정 작업에 필요한 데이터에만 액세스하여 이를 사용합니다.

이 섹션에서는 앱에서 효과적으로 권한을 사용하기 위한 일련의 핵심 권장사항을 보여 줍니다. Android에서 권한을 사용하는 방법에 관한 자세한 내용은 앱 권한 권장사항 페이지를 참고하세요.

최소 개수의 권한 요청

사용자가 앱에서 특정 작업을 요청할 때 앱은 작업을 완료하는 데 필요한 권한만 요청해야 합니다. 권한을 사용하는 방법에 따라 민감한 정보에 액세스하지 않고도 앱의 사용 사례를 처리하는 다른 방법이 있을 수 있습니다.

런타임 권한을 특정 작업과 연결

최대한 앱의 사용 사례 흐름에서 늦게 권한을 요청하세요. 예를 들어 앱에서 사용자가 다른 사용자에게 음성 메시지를 보내도록 허용하는 경우 사용자가 메시지 화면으로 이동하여 음성 메시지 보내기 버튼을 누를 때까지 기다립니다. 사용자가 버튼을 누르고 나면 앱에서 마이크 액세스 권한을 요청합니다.

앱의 종속 항목 고려

라이브러리를 포함하면 권한 요구사항도 상속됩니다. 각 종속 항목에 필요한 권한과 이러한 권한의 사용 목적을 알고 있어야 합니다.

투명성 확보

권한을 요청할 때는 액세스하는 정보와 이유를 명확하게 밝혀 사용자가 제대로 이해한 상태로 결정할 수 있도록 해야 합니다.

시스템 액세스 명확하게 알리기

카메라나 마이크와 같은 민감한 데이터 또는 하드웨어에 액세스할 때 앱에 지속적으로 알림을 표시하세요. 알림을 통해 사용자는 앱이 제한된 데이터에 액세스하거나 제한된 작업을 실행할 때를 정확히 파악할 수 있습니다.

시스템 구성요소의 권한

권한은 시스템 기능을 요청하기 위해서만 사용되는 것은 아닙니다. 앱의 시스템 구성요소는 다른 앱과의 상호작용을 제한하는 방법에 관한 페이지에서 설명한 대로 앱과 상호작용하는 다른 앱을 제한할 수 있습니다.

추가 리소스

Android의 앱 권한에 관한 자세한 내용은 다음 추가 리소스를 참고하세요.

샘플