App Sandbox

App Sandbox는 커널 수준에서 강제 적용되는 접근 제어 기술
macOS 앱의 시스템 리소스와 유저 데이터에 대한 접근을 제한하여 앱이 손상되었을 피해를 최소화
앱 샌드박스는 권한 부여를 통해 요청된 리소스에 대한 앱의 액세스를 제한하여 시스템 리소스 및 사용자 데이터에 대한 보호를 제공
Mac APP Store로 배포되는 모든 app 들은 App Sandbox를 적용
흔히 iOS는 보안이 좋다라고 나오는 말이 App Sandbox 때문
Without App Sandbox & With App Sandbox

App Sandbox가 적용되지 않는 앱은 모든 유저 데이터와 시스템 리소스에 접근 가능하기 때문에 보안 취약점이 발생한다면 모든 데이터 및 리소스를 해커가 가져갈 수 있게 됨.
그래서 apple은 AppSandbox를 통해 앱이 접근할 수 있는 유저 데이터와 시스템 리소스를 제한하여 보안 취약점이 발생하더라도 App Sandbox를 벗어난 데이터와 리소스에 접근 자체가 불가능하기 때문에 피해를 최소화 할 수 있게되는 것
비유하자면 은행 전체가 털리냐 vs 은행내에 있는 금고 하나만 털리냐의 문제
Sandbox가 없다면 은행 전체를 돌아다닐 수 있어 모든 곳을 털 수 있지만
Sandbox가 있다면 하나의 금고만 돌아다닐 수 있어 해당 금고외에 다른 금고는 못 텀
앱은 손상될 수 있지만 App Sandbox를 통해 그 피해를 최소화 하는 것이지
App Sandbox를 적용한다고 해서 보안 취약점이 없어지는게 아님 !
은행의 보안이 아무리 높더라도 강도나 도둑이 아예 안오는것이 아닌것과 동일
App Sandbox 전략
위와 같은 취약점을 완화하도록 설계된 App Sandbox 전략은 두 가지
- App Sandbox는 개발자가 App과 시스템이 어떤식으로 상호작용하게 할 것인지 설정 그러면 시스템은 App이 작업을 완료하는데 필요한 권한만을 부여하고 그이상은 부여하지 않음
- App Sandbox를 사용하면, 열기 및 저장, 드래그 앤 드롭 및 친숙한 사용자 상호 작용을 통해 앱에 투명하게 추가 접근 권한을 부여할 수 있도록 함
App Sandbox 원칙
App Sandbox는 각 앱 마다 접근을 제한함 특히 아래 4가지 자원 중 하나를 사용하려면 그 의도를 명시적으로 명시하고 사용자에게 해당자원에 대한 접근 허용 요청을 해야함
App Sandbox 구조

사용자의 device엔 다양한 App이 있기 때문에 각 App마다 App Sandbox가 존재
각각 개별적으로 존재하기에 App은 자신의 App Sandbox에 있는 데이터 및 리소스만 접근 가능
App Sandbox의 외부에 있는 데이터 및 리소스에 접근하려면 Sandbox 정책에 따라 접근 권한을 부여받아야 함
App을 사용하다보면 접근 권한을 허용해달라는 Alert이 바로 그것

Sandbox 내부 구조

앱의 설치 시점에 각각의 SandBox Directory에 위치, 이 Directory는 각 앱의 Home Directory가
보안을 위해 App과 시스템의 상호 작용은 App의 SandBox Directory로 제한
Bundle Container
- App의 Bundle을 보유하여 파일, info.plist, Resource등을 그룹화
- 소스파일이 바이너리 형태의 실행 파일로 변환
- 라이브러리는 프레임 워크로 그룹화
- Storyboard, Xib, strings등이 변환
Data Container

- 하위 디렉토리로 Documents, Library, Temp, System Data가 있음
- Documents: 앱을 통해 생성한 문서나 데이터 등을 저장
- Library: 유저 데이터 파일 및 임시 파일을 제외한 모든 파일을 관리
- Temp: 현재 앱을 실행하는 동안만 필요하고 다음 앱 실행시까지 유지할 필요 없는 임시 파일 저장 공간
- 사용자가 직접 디렉토리나 파일을 추가할 수 없으며, 하위 디렉토리를 통해 관리

iCloud Container
- 런타임에 접근을 요청할 수 있는 추가 컨테이너 디렉토리
참고
App Sandbox | Apple Developer Documentation
App Sandbox | Apple Developer Documentation
Restrict access to system resources and user data in macOS apps to contain damage if an app becomes compromised.
developer.apple.com
[iOS] App SandBox란?
아이의 보호를 위한 SandBox, 내 app은 누가 보호해 주나...?? 안녕하세요. 오딘(Odin)입니다. 여러분 SandBox가 무엇인지 아시나요?? 미국에서 어린 아이를 모래통(SandBox)안에서 놀도록하여 외부적인 위
odinios.tistory.com
[iOS] 앱 샌드박스와 iOS의 파일 시스템
App Sandbox + File System 오늘은 앱 샌드박스에 대한 개념을 정리해보고 앱 샌드박스 내부에서 파일들을 어떻게 관리하고 있는지 공식문서를 통해 정리해보려고 합니다. 살펴보려고 하는 문서는 File
jeonyeohun.tistory.com
[iOS] SandBox를 알아보자!
저는 선바 팬입니다.. ㅠㅠ
velog.io
[Swift] iOS 파일구조 알아보기 Sandbox, Bundle - 파일시스템(APFS)
[Swift] iOS 파일구조 알아보기 Sandbox, Bundle - 파일시스템(APFS)
iOS의 파일시스템(APFS)은 기본적으로 앱마다 별도의 파일을 생성하고 Sandbox안에서만 접근이 가능해요 따라서 외부로부터 접근에 보호되서 조작되는것을 막는 보안형태죠 그렇기 때문에 옛날에
nsios.tistory.com
https://jinnify.tistory.com/26#hELLO
[iOS] 앱 샌드박스(App Sandbox)와 Container Directory
앱 샌드박스(App Sandbox)와 Container Directory개념에 대해 알아 보겠습니다. Sandbox 샌드박스(Sandbox)란 미국에서 어린아이를 보호하기 위해 모래통(Sandbox)에서만 놀도록 하는데서 유래한 보안 모델을 말
jinnify.tistory.com
File System Programming Guide
File System Programming Guide를 공부해봅시댜.도큐먼트는 여기를 참고 할거에요. File System Programming Guide 파일시스템은 데이터 파일, App 및 OS와 관련된 영구 저장소를 처리합니다. 따라서 파일 시스템은
zeddios.tistory.com
'iOS > iOS' 카테고리의 다른 글
| [iOS] 앱 아이콘 앱 스토어 심사 없이 동적으로 바꾸기 (0) | 2025.04.20 |
|---|---|
| [iOS] HitTest (2) | 2024.06.13 |
| [iOS] UIResponder, Responder Chain, First Responder (0) | 2024.06.09 |
| [iOS] 모듈화 Library, Framework, Package, (0) | 2024.05.09 |
| [iOS] 하위 뷰의 frame이 잡히지 않을 때 (1) | 2023.12.28 |