LAN의 기기는 INTERNET
권한이 있는 모든 앱에서 액세스할 수 있습니다.
이렇게 하면 앱이 로컬 기기에 쉽게 연결할 수 있지만 사용자의 지문 생성, 위치의 프록시 역할 등 개인 정보 보호 관련 문제가 발생할 수 있습니다.
로컬 네트워크 보호 프로젝트는 새로운 런타임 권한 뒤에 로컬 네트워크에 대한 액세스를 제한하여 사용자의 개인 정보를 보호하는 것을 목표로 합니다.
영향
Android 16에서는 이 권한이 선택 기능이므로 선택한 앱에만 영향을 미칩니다. 선택의 목표는 앱 개발자가 향후 Android 출시에서 권한 보호를 준비할 수 있도록 앱의 어떤 부분이 암시적 로컬 네트워크 액세스에 종속되는지 이해하는 것입니다.
다음을 사용하여 사용자의 로컬 네트워크에 액세스하는 앱은 영향을 받습니다.
- 로컬 네트워크 주소에서 원시 소켓의 직접 또는 라이브러리 사용 (예: mDNS 또는 SSDP 서비스 검색 프로토콜)
- 로컬 네트워크에 액세스하는 프레임워크 수준 클래스 (예: NsdManager) 사용
영향 세부정보
로컬 네트워크 주소와의 트래픽에는 로컬 네트워크 액세스 권한이 필요합니다. 다음 표에는 몇 가지 일반적인 케이스가 나와 있습니다.
앱 하위 수준 네트워크 작업 | 로컬 네트워크 권한 필요 |
---|---|
아웃바운드 TCP 연결 만들기 | 예 |
수신 TCP 연결 수락 | 예 |
UDP 유니캐스트, 멀티캐스트, 브로드캐스트 전송 | 예 |
수신 UDP 유니캐스트, 멀티캐스트, 브로드캐스트 | 예 |
이러한 제한은 네트워킹 스택 깊숙한 곳에 구현되므로 모든 네트워킹 API에 적용됩니다. 여기에는 플랫폼 또는 관리 코드에서 생성된 소켓, Cronet 및 OkHttp와 같은 네트워킹 라이브러리, 그 위에 구현된 모든 API가 포함됩니다. 로컬 네트워크(예: .local 접미사가 있는 서비스)에서 서비스를 확인하려면 로컬 네트워크 권한이 필요합니다.
위 규칙의 예외:
- 기기의 DNS 서버가 로컬 네트워크에 있는 경우 포트 53에서 DNS 서버와의 트래픽에는 로컬 네트워크 액세스 권한이 필요하지 않습니다.
- 출력 전환 도구를 인앱 선택기로 사용하는 애플리케이션에는 로컬 네트워크 권한이 필요하지 않습니다 (추가 안내는 향후 출시에서 제공).
가이드
로컬 네트워크 제한을 선택하려면 다음 단계를 따르세요.
- Android 16 베타 3 이상이 포함된 빌드로 기기 플래시
- 테스트할 앱 설치
adb를 사용하여 Appcompat 구성 전환
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
기기 재부팅하기
이제 앱의 로컬 네트워크 액세스가 제한되며 로컬 네트워크에 액세스하려고 하면 소켓 오류가 발생합니다. 앱 프로세스 외부에서 로컬 네트워크 작업을 실행하는 API (예: NsdManager)를 사용하는 경우 선택하는 동안 영향을 받지 않습니다.
액세스 권한을 복원하려면 앱에 NEARBY_WIFI_DEVICES
권한을 부여해야 합니다.
- 앱이 매니페스트에서
NEARBY_WIFI_DEVICES
권한을 선언하는지 확인합니다. - 설정 > 앱 > [애플리케이션 이름] > 권한 > 근처 기기 > 허용으로 이동합니다.
이제 앱의 로컬 네트워크 액세스가 복원되고 모든 시나리오가 앱을 선택하기 전과 동일하게 작동합니다. 앱 네트워크 트래픽에 미치는 영향은 다음과 같습니다.
권한 | 아웃바운드 LAN 요청 | 아웃바운드/인바운드 인터넷 요청 | 인바운드 LAN 요청 |
---|---|---|---|
승인됨 | 작동의 원리 | 작동의 원리 | 작동의 원리 |
허용되지 않음 | 실패 경험 | 작동의 원리 | 실패 경험 |
다음 명령어를 사용하여 Appcompat 구성을 사용 중지합니다.
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
오류
이러한 제한으로 인해 발생하는 오류는 호출 소켓이 send
또는 send
변형을 로컬 네트워크 주소로 호출할 때마다 호출 소켓에 반환됩니다.
오류 예시:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
버그
다음에 대한 버그 및 의견을 제출하세요.
- LAN 액세스 불일치 (특정 액세스를 '로컬 네트워크' 액세스로 간주해서는 안 된다고 생각함)
- LAN 액세스가 차단되어야 하지만 차단되지 않는 버그
- LAN 액세스가 차단되어서는 안 되지만 차단되는 버그
다음은 이번 변경사항의 영향을 받지 않습니다.
- 인터넷 액세스
- 모바일 네트워크