Post

GitHub 안드로이드 앱이 왜 이렇게 많은 권한을 요청할까?

웹사이트와 달리 모바일 앱이 요구하는 권한의 차이를 살펴보며, 1인 자동화 운영자가 놓치기 쉬운 보안 고려점을 짚어봅니다.

GitHub 안드로이드 앱이 왜 이렇게 많은 권한을 요청할까?

웹에서는 묻지 않던 것이 앱에서 나타난다

Reddit의 r/github 커뮤니티에 올라온 이 질문을 확인해본 결과, 새로 GitHub 안드로이드 앱을 설치한 사용자가 상당히 많은 권한(permission and authorization) 요청을 받게 되는 상황을 다루고 있습니다. 웹 버전에서는 이런 것을 요청받지 않았는데, 왜 앱에서는 다른지 궁금해하는 것입니다.

이것은 단순한 기술적 차이가 아닙니다. 35년간 여러 기술 전환기를 지켜보면서 느낀 점 중 하나는, 같은 서비스라도 플랫폼이 바뀌면 그 “얼굴”이 완전히 달라진다는 것입니다. 웹은 브라우저라는 샌드박스 환경에서 작동하고, 모바일 앱은 운영 체제 위에서 직접 실행됩니다. 이 차이가 권한 구조의 근본적인 차이를 만드는 것이죠.

앱과 웹의 권한이 다른 이유

안드로이드 앱이 요청하는 권한들은 보통 기기의 카메라, 마이크, 위치 정보, 저장소, 연락처 같은 민감한 자원에 접근하기 위한 것입니다. 웹 버전에서는 이런 권한을 굳이 묻지 않는데, 그 이유는 브라우저 자체가 이미 이런 접근을 차단하고 있기 때문입니다. 사용자가 명시적으로 “이 웹사이트가 카메라를 쓸 수 있도록 허락하겠습니까?”라고 선택하기 전까지는 웹사이트가 기기의 하드웨어에 직접 접근할 수 없는 구조거든요.

하지만 모바일 앱은 다릅니다. 앱이 설치되는 순간, 운영 체제는 앱이 어떤 권한을 필요로 할 수 있는지 먼저 확인하고 사용자에게 명시적으로 묻습니다. 이것은 Google의 안드로이드 보안 정책에 따른 것인데, “런타임 권한(runtime permissions)” 시스템이 그것입니다.

원문을 다시 살펴보니 사용자가 느끼는 의문은 합리적입니다. “내가 웹에서는 문제없이 쓰고 있었는데, 왜 앱에서는 이렇게 많은 것을 묻는가?”라는 질문이 자연스럽기 때문입니다.

GitHub 같은 개발 도구 앱이 실제로 필요로 할 수 있는 권한들

원문의 이미지를 통해 구체적으로 어떤 권한이 요청되는지는 직접 확인할 수 없지만, 일반적으로 GitHub 같은 개발 도구 앱이 요청할 수 있는 권한은 다음 같은 것들이 있습니다:

  • 저장소 접근(storage access): 로컬에 저장된 파일이나 코드를 다루거나 공유할 때
  • 네트워크 연결(network access): GitHub 서버와 통신할 때
  • 생체 인증(biometric authentication): 기기의 지문이나 얼굴 인식을 앱 로그인에 쓸 때

이 중에서 개발자 입장에서 정말 필요한 것도 있고, 혹은 앱이 일단 권한을 선언해 놓는 것도 있을 수 있습니다. 모든 권한이 실시간으로 쓰이는 것은 아니라는 뜻입니다.

1인 자동화 운영자가 이 문제를 어떻게 봐야 할까

n8n이나 다른 자동화 인프라를 직접 관리하는 사람들 입장에서 이 질문은 꽤 의미심장합니다. 왜냐하면 자동화 워크플로우가 모바일 앱과 웹 인터페이스 양쪽을 모두 다루게 되고, 각각의 보안 정책이 다르다는 것을 이해해야 하기 때문입니다.

특히 GitHub API를 활용한 자동화를 구축할 때, 토큰(token) 관리나 권한 범위(scope) 설정이 매우 중요합니다. 웹에서 로그인할 때는 사용자가 거의 신경 쓰지 않던 것들이, API나 앱을 통할 때는 명시적으로 선언되고 제한되는 경향이 있습니다. 이 차이를 이해하고 있으면 보안 사고를 예방할 수 있습니다.

또한 이 질문 자체가 새로운 사용자들이 모바일 앱을 신뢰하지 못하게 만들 수 있다는 점도 생각해볼 대목입니다. 웹에서만 쓰던 사람이 앱을 깔았을 때 갑자기 많은 권한 요청이 나타나면, “이 앱이 안전한가?”라는 의구심이 생기는 것은 자연스러운 반응입니다.

계속 지켜봐야 할 부분

GitHub가 모바일 앱의 권한 요청 과정을 더 명확하고 투명하게 설명해 주는 방향으로 개선할 것인지, 아니면 현재 상태로 유지할 것인지 하는 부분은 계속 지켜봐야 할 지점입니다.

이 이슈는 다음 편에서 어떻게 흘러갔는지, 그리고 GitHub 커뮤니티에서 어떤 해결책들이 제시되었는지 이어서 다뤄보겠습니다.

This post is licensed under CC BY 4.0 by the author.