TECH 으로 돌아가기
TECH HACKER NEWS 오늘 5분 읽기 45 READS

권한을 단 하나도 요구하지 않는 안드로이드 파일 뷰어, Gander가 보여주는 SAF의 힘

권한을 단 하나도 요구하지 않는 안드로이드 파일 뷰어, Gander가 보여주는 SAF의 힘
SOURCE IMAGE · HACKER NEWS
권한을 단 하나도 요구하지 않는 안드로이드 파일 뷰어, Gander가 보여주는 SAF의 힘

권한 요청 팝업이 하나도 안 뜨는 파일 앱이라니요

안드로이드에서 파일 관리 앱을 설치해본 적 있으시죠? 설치하자마자 "모든 파일에 접근하도록 허용하시겠습니까?" 같은 무시무시한 권한 요청이 뜨는 게 보통이에요. 사진, 문서, 다운로드 폴더까지 전부 들여다볼 수 있는 권한을 달라는 건데, 찜찜해도 "허용"을 누를 수밖에 없었죠. 파일 앱이니까 파일에 접근해야 하는 건 당연하다고 생각했으니까요.

그런데 Gander라는 오픈소스 안드로이드 파일 뷰어는 권한을 단 하나도 요구하지 않아요. 저장소 권한도, 네트워크 권한도, 아무것도요. 그런데도 파일을 잘만 보여줘요. 이게 어떻게 가능한 걸까요?

비밀은 SAF, 이게 뭐냐면요

핵심은 안드로이드에 이미 내장돼 있는 Storage Access Framework(SAF)라는 장치예요. 이게 뭐냐면, 앱이 저장소 전체에 대한 열쇠를 받는 대신, 시스템이 제공하는 '문서 선택 창'을 통해 사용자가 직접 골라준 파일이나 폴더에만 접근하는 방식이에요.

비유하자면 이래요. 기존 방식은 손님(앱)에게 집 전체 마스터키를 주는 거예요. 손님이 안방이든 금고든 마음대로 열 수 있죠. 반면 SAF 방식은 집주인(사용자)이 "이 서랍만 보여줄게" 하고 서랍 하나를 직접 열어서 보여주는 거예요. 앱 입장에서는 사용자가 열어준 것만 볼 수 있고, 그 범위를 벗어날 방법이 아예 없어요.

기술적으로 보면, 앱이 ACTION_OPEN_DOCUMENT 같은 인텐트를 날리면 안드로이드 시스템의 문서 피커가 뜨고, 사용자가 파일을 고르면 앱은 그 파일에 대한 URI 접근권만 받아요. 이 과정에서 매니페스트에 선언하는 '권한(permission)'은 전혀 필요 없어요. 접근 허락을 받는 일을 시스템 피커가 대신해주는 셈이거든요. 폴더 단위로 열어주고 싶으면 ACTION_OPEN_DOCUMENT_TREE를 쓰면 되고요.

왜 다들 이렇게 안 만들었을까요

사실 구글은 몇 년 전부터 이 방향으로 밀어붙여 왔어요. 안드로이드 10부터 '범위 지정 저장소(Scoped Storage)'라는 정책이 도입됐는데요. 이게 뭐냐면, 앱이 자기 전용 폴더 바깥의 저장소를 마음대로 뒤지지 못하게 막는 정책이에요. 그 전에는 READ_EXTERNAL_STORAGE 권한 하나만 받으면 저장소 전체를 스캔할 수 있었고, 실제로 수많은 앱이 이 권한으로 사용자 데이터를 긁어갔거든요.

그래도 "모든 파일 접근(MANAGE_EXTERNAL_STORAGE)"이라는 강력한 권한이 남아 있어서, 파일 관리자류 앱들은 여전히 이걸 요구해요. 구글 플레이는 이 권한을 쓰는 앱에 대해 별도 심사까지 할 정도로 민감하게 보고요. Gander는 "파일을 '보는' 용도라면 그 권한조차 필요 없다"는 걸 실제 동작하는 앱으로 증명한 사례인 거죠. 참고로 iOS는 처음부터 이런 문서 피커 중심 모델이었어요. 안드로이드가 개방적인 구조 때문에 늦게 따라온 셈이에요.

한국 개발자에게 주는 시사점

안드로이드 앱을 만들고 계시다면 이 접근을 진지하게 검토해볼 만해요. 첫째, 심사가 편해져요. 위험 권한이 없으면 구글 플레이 심사에서 걸릴 일도, 권한 사용 사유서를 쓸 일도 없거든요. 둘째, 사용자 신뢰를 얻어요. 요즘 사용자들은 권한 요청에 민감해서, "권한 0개"는 그 자체로 훌륭한 신뢰의 증표가 돼요. 셋째, 보안 사고의 범위가 줄어요. 앱에 취약점이 생겨도 애초에 접근 가능한 데이터가 없으니 피해가 제한적이죠. 이게 바로 보안에서 말하는 '최소 권한 원칙'이에요. 물론 백그라운드에서 폴더를 계속 감시해야 한다거나 하는 시나리오에서는 SAF만으로 부족할 수 있으니, 자기 앱의 요구사항을 잘 따져봐야 해요.

한줄 정리: 권한을 요구하지 않고도 파일 앱을 만들 수 있고, 그게 사용자와 개발자 모두에게 이득이다. 여러분이 만들거나 쓰는 앱 중에 "이 권한이 정말 필요해?" 싶었던 경우 있으신가요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/mokshablr/gander
SHARE
처리 중...