-
QUERY_ALL_PACKAGES 권한회사 생활/기타 지식들 2024. 11. 19. 10:58
회사에서 다른 회사 솔루션인 백신 SDK를 설치하는 업무를 할당 받았다.
백신 SDK는 다른 앱들의 정보를 얻어서 문제가 있는지 아닌지를 확인하기 때문에 다른 앱의 정보가 필요하다.
다른 앱의 정보를 얻는 방법은 2가지 정도인 것 같다.
- In App 방식 (QUERY_ALL_PACKAGES 권한 추가)
- App to App 방식 (Manifest.xml에 queries 태그 추가)
In App 방식은 구글에서 제시하는 이유에 포함되어야 하고 그 이유를 출시하면서 설명하고 통과해야 사용가능하다. 대신 설치된 모든 앱의 정보를 획득할 수 있다.
App to App 방식은 그냥 사용가능 하지만 앱의 정보를 얻는데 제한이 있다.
플레이 스토어의 허가 범위를 통과한다면 In App 방식이 좋다고 생각하지만 통과를 못한다몬 App to App을 사용해야 한다. (백신 관련 악성앱 판단을 위해 사용한다고 하니 쉽게 통과되었다.)
1. In App 방식
In App 방식을 사용하려면 QUERY_ALL_PACKAGES 권한 추가해야 한다.
한국어로는 '폭넓은 패키지 가시성'이라고 이라고 하는데 이름이 이상한 것 같다.
QUERY_ALL_PACKAGES 권한을 추가해서 할 수 있는 일은 유저의 디바이스 내에 설치된 모든 앱들을 조회할 수 있게 해주는 권한이다.
예를 들어, PackageManager.queryIntentActivities() 또는 getInstalledPackages()와 같은 메서드를 호출할 때, 필터링 없이 전체 앱 목록을 반환받을 수 있다고 한다.
일반적인 권한들과는 다르게 민감한 정보에 접근하는 권한 및 API(링크)는 앱을 출시할 때 사용 허가를 받아야 출시가 가능하다. QUERY_ALL_PACKAGES 또한 허가를 받아야 출시가 가능하다.
1-1) 획득 가능한 정보 리스트 :
더보기- 앱 패키지 이름
- 앱 메타데이터 :특정 앱의 AndroidManifest.xml에 정의된 정보:
- 앱의 권한 (uses-permission), 앱이 지원하는 활동(Intent Filters), 서비스 및 브로드캐스트 리시버 정보
- 앱 버전 정보
- 앱의 설치 경로 :
- 앱이 설치된 경로가 /system인지, /data인지 확인 가능
- 시스템 앱인지 사용자 앱인지 판별.
- 앱 아이콘 및 이름
- 앱의 UID 및 설치 상태 : 앱의 고유 사용자 ID와 설치 유형:
- 활성화/비활성화 여부
- 기본 앱 여부
- 권한 목록 : 앱이 요청한 권한과 이를 사용하고 있는지 여부 등등
1-2) 사용 사례 (Google Play 정책 기준으로 허용되는 경우)
Google은 이 권한이 다음과 같은 경우에만 허용된다고 명시합니다:
- 보안 앱:
- 바이러스 스캐너 또는 보안 관련 앱이 위협을 탐지하기 위해 설치된 모든 앱을 검사해야 하는 경우.
- 앱 관리 도구:
- 파일 관리자, 백업/복원 앱과 같은 앱이 설치된 모든 앱에 액세스해야 하는 경우.
- 디바이스 관리 앱:
- IT 관리자가 디바이스를 중앙에서 제어해야 하는 기업용 앱에서 필요할 수 있습니다.
우리 회사에서 추가하려는건 보안 sdk 였기 때문에 1번 사유에 해당한다.
소명하기 위해서 준비해야 하는 것들 :
혹시나 나중에 QUERY_ALL_PACKAGES 권한이 필요한 경우를 위해서 권한 승인 과정을 남겨둬야 할 것 같다.
1. AndroidManifest.xml에 추가
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />
2. 명시적 동의 : 링크
- 1-1) 앱:
- 유저의 동의를 대화상자 같은 것들로 받아야 한다.
- 우리 앱에 경우 처음에 모든 권한을 명시적으로 동의를 받는데 거기에 QUERY_ALL_PACKAGES 권한도 포함해서 권한 동의를 받았다.
- 1-2) 웹 :
- (경로) 구글 플레이 스토어 > 앱 선택 > 모니터링 및 개선 > 정책 및 프로그램 > 앱 콘텐츠 > 개인정보처리방침
- (이 부분은 꼭 추가해야 하는지 정확히 모르겠다. 추측해보건데 보지 않는 것 같다. 왜냐하면 앱을 올린지 1시간정도만에 승인이 됐는데 과연 웹까지 가서 봤을지 의문이다. 개인정보처리방침 자체는 있어야 하지만 이 내용이 거기에 같이 올라가야 하는지가 의문이라는 것이다. 어쩌피 이 보안 SDK를 다른 앱에도 추가해서 올려야 하기 때문에 이 부분은 다른 앱 올릴때 개인정보처리방침에 추가 없이 한번 올려봐야겠다.)
3. 권한 선언 :
경로 : 구글플레이콘솔로그인 > 앱선택 > 모니터링 및 개선 > 정책 및 프로그램 > 앱 콘텐츠 > 민감한권한 및 API 시작
- 1) 용도 설명 : ~~~ 백신앱 사용 ~~~ 각자의 상황에 맞게 ~~~
- 2) 용도 설명 체크 :
- 나 같은 경우 "사기 예방, 보안, 규정 준수"를 체크 했다
- 3) 시현 영상
참고 이미지 :
더보기1) 용도 설명
2) 용도 설명 체크
3) 앱시현 영상
2. App to App 방식 :
App to App 방식은 일반적으로 구글의 QUERY_ALL_PACKAGES 사용 용도와 다르게 사용해야 할 경우 이 방식을 채택하는 것 같다.
1) AndroidManifest.xml에 추가
<queries> <package android:name="com.package.package1" /> <package android:name="com.package.package2" /> <intent> <action android:name="+" /> </intent> </queries>
App to App 방식은 어떤 패키지를 추가해야 하나가 중요한것 같은데 이거는 솔루션 업체에 따로 문의해보지 않아 나중에 필요하다면 내용을 추가해봐야 할 것 같다.
'회사 생활 > 기타 지식들' 카테고리의 다른 글
targetSdkVersion 35로 버전 업 (0) 2025.07.04 CameraX 사진 깨지는 현상 (1) 2024.01.25 앱 계정 이전 (0) 2023.08.07 웹뷰 ERR_UNKNOWN_URL_SCHEME 오류 (fb://fullscreen_video~~) (0) 2023.08.07 Android Camera : (OutOfMemoryError 오류) (0) 2023.07.17