본문 바로가기
TIL (Today I Learned)

[macOS] 샌드박스란?

by Bokoo14 2024. 1. 13.

App Sandbox란?

앱이 손상된 경우 손상을 방지하기 위해 macOS 앱의 시스템 리소스 및 사용자 데이터에 대한 액세스를 제한합니다.

앱 샌드박스는 권한을 통해 요청된 리소스에 대한 앱의 액세스를 제한하여 시스템 리소스와 사용자 데이터를 보호합니다.

샌드박스는 앱이 시스템의 다른 부분과 격리된 환경에서 실행되도록 하는 보안 기술입니다. 샌드박스는 앱이 시스템 리소스에 제한된 액세스 권한을 갖도록 하여 앱의 보안성을 높이고 악의적인 활동을 방지합니다.

Important❗️

Mac App Store를 통해 macOS 앱을 배포하려면 App Sandbox 기능을 활성화해야 합니다.

Topics

Essentials

App Sandbox Entitlement

앱이 손상된 경우 시스템 및 사용자 데이터의 손상을 억제하기 위해 앱이 액세스 제어 기술을 사용할 수 있는지 여부를 나타내는 부울 값입니다.

키: com.apple.security.app-sandbox

⭐️App Sandbox로 사용자 데이터 보호⭐️

파일, 네트워크 연결, 하드웨어 기능에 대한 앱의 액세스를 제한하여 악의적인 공격으로부터 사용자 데이터와 운영 체제 리소스를 보호하세요.

  • 상세 내용파일, 네트워크 연결, 하드웨어 기능에 대한 앱의 액세스를 제한하여 악의적인 공격으로부터 사용자 데이터와 운영 체제 리소스를 보호하세요.앱을 개발하는 동안 보안 코딩 방식을 채택했더라도 여전히 사용자의 보안과 개인 정보 보호를 위협하는 취약점이 있을 수 있습니다. App Store에 앱을 배포하기 위한 요구 사항인 앱 샌드박스는 공격자가 앱을 통해 플랫폼 기능을 남용할 수 있는 범위를 제한합니다.메모App Sandbox와 호환되지 않는 기능 검토페이지제한되는 활동은 다음과 같습니다.
    • 인증 서비스 API 사용.
    • 보조 앱에서 접근성 API를 사용합니다.
    • Apple 이벤트를 임의의 앱으로 보내기.
    • 분산 알림의 사전을 다른 작업으로 보냅니다 .userInfo
    • 커널 확장을 로드하는 중입니다.
    • 열기 및 저장 대화 상자에서 사용자 입력을 시뮬레이션합니다.
    • 다른 앱의 기본 설정에 액세스하거나 수정합니다.
    • 네트워크 설정 구성.
    • 실행 중인 다른 앱을 종료합니다.
    데이터 파일과 스크립트를 표준 위치에 배치페이지 링크에서사용자의 홈 폴더에 문서, 사용자 스크립트 또는 지원 파일이 이미 있는 기존 앱에 대해 앱 샌드박스를 활성화하는 경우 앱 파일을 앱 샌드박스 컨테이너로 마이그레이션을 참조하세요 .macOS 앱에 명령줄 도구가 포함된 경우 해당 도구는 포함된 앱의 샌드박스 구성을 상속해야 합니다. 자세한 내용은 샌드박스 앱에 명령줄 도구 포함을 참조하세요 .Activity Monitor에서 프로세스를 찾거나 codesign터미널에서 명령을 사용하여 앱이 App Sandbox를 사용하는지 확인할 수 있습니다.
    1. 활동 모니터를 엽니다.
    2. 보기 > 열을 선택하고 모니터링할 수 있는 열 목록 중에서 Sandbox를 선택합니다.
    3. 앱을 실행하세요.
    4. Activity Monitor의 프로세스 목록에서 앱을 찾고 아래 그림과 같이 샌드박스 열의 값이 예인지 확인하세요.
    터미널에서 앱의 앱 샌드박스 구성을 확인하려면 다음 codesign명령을 사용하세요.앱에 App Sandbox 권한이 있는 경우 출력에 다음이 표시됩니다.또한 보십시오앱 샌드박스 권한키: com.apple.security.app-sandbox샌드박스가 적용된 앱의 Xcode 프로젝트에 명령줄 도구를 추가하면 결과 앱이 도우미 도구로 실행할 수 있습니다.샌드박스 위반으로 인해 macOS 앱이 제대로 작동하지 않는 경우를 확인하고 샌드박스 관련 문제를 수정하세요.
  • 앱 샌드박스 위반 발견 및 진단
  • 샌드박스 앱에 명령줄 도구 포함
  • 앱이 손상된 경우 시스템 및 사용자 데이터의 손상을 억제하기 위해 앱이 액세스 제어 기술을 사용할 수 있는지 여부를 나타내는 부울 값입니다.
  • 골자페이지 링크에서
  • [Key] com.apple.security.app-sandbox [Value] [Bool] true
  • % codesign -dvvv --entitlements - <path to your app>
  • 활동 모니터에서 앱을 확인하려면:
  • 앱이 App Sandbox를 사용하는지 확인페이지 링크에서
  • 포함된 도구에 대한 앱 샌드박스 구성페이지 링크에서
  • 운영 체제는 샌드박스 앱을 시작할 때 앱이 무제한 읽기 및 쓰기 액세스 권한을 갖는 컨테이너 디렉터리를 생성합니다. 샌드박스 앱은 사용자의 홈 폴더에 무제한으로 액세스할 수 없습니다. 이 메서드를 사용하면 샌드박스 앱에 대한 앱 컨테이너 내의 위치를 반환하므로 사용자 문서, 스크립트 및 지원 파일에 대한 공통 디렉터리를 찾을 수 있습니다.FileManagerurl(for:in:appropriateFor:create:)
  • 앱이 샌드박스에서 실행될 때 운영 체제에서 특정 활동을 금지합니다. 앱이 이러한 기능을 수행하는지 확인하고 이를 제거하거나 동일한 기능을 제공하는 대체 방법을 찾으세요.
  • Xcode에서 앱 샌드박스 기능을 활성화하는 방법에 대한 자세한 내용은 macOS 앱 샌드박스 구성을 참조하세요 .
  • Xcode에서 새로운 macOS 앱을 생성하면 앱 샌드박스 권한과 기본 기능 세트가 제공됩니다. 기존 앱이 있는 경우 App Sandbox를 채택하여 사람들에게 추가 보안을 제공할 수 있습니다.
  • 개요페이지
  • App Sandbox로 사용자 데이터 보호

샌드박스 앱에 명령줄 도구 포함

샌드박스가 적용된 앱의 Xcode 프로젝트에 명령줄 도구를 추가하면 결과 앱이 도우미 도구로 실행할 수 있습니다.

  • 상세 내용샌드박스가 적용된 앱의 Xcode 프로젝트에 명령줄 도구를 추가하면 결과 앱이 도우미 도구로 실행할 수 있습니다.Mac용 앱을 구축할 때 도우미 도구 역할을 하는 명령줄 도구를 앱에 포함할 수 있습니다. 이것이 도움이 될 수 있는 예는 다음과 같습니다.
    • 일부 코드를 별도의 프로세스에서 실행하려고 합니다. 대부분의 경우 XPC 서비스가 더 나은 선택이지만 명령줄 도구를 포함하는 것이 더 쉬운 경우도 있습니다.
    • 외부 빌드 시스템(예: )을 사용하여 명령줄 도구를 빌드한 make다음 앱에서 실행하려고 합니다.
    샌드박스 앱에 명령줄 도구를 포함시키는 데는 몇 가지 독특한 과제가 있습니다. 최선의 접근 방식은 Xcode로 도구를 빌드하는지 아니면 외부 빌드 시스템에서 빌드한 도구를 사용하는지에 따라 달라집니다.이 단계에서는 샌드박스 앱의 가장 일반적인 대상인 App Store용 앱을 구축한다고 가정합니다. 그러나 개발자 ID 서명을 사용하여 독립적으로 배포되는 앱에도 동일한 기본 프로세스가 적용됩니다. Xcode 구성 도우미에서 다른 배포 경로를 선택하기만 하면 됩니다.시작하려면 macOS > 앱 템플릿에서 새 프로젝트를 생성하세요. 이름을 으로 지정 하면 와 같은 번들 ID가 생성됩니다 .AppWithToolcom.example.apple-samplecode.AppWithTool앱 타겟 편집기의 일반 탭에서 앱 카테고리를 유틸리티로 설정하세요. 이렇게 하면 배포용으로 빌드할 때 경고가 표시되지 않습니다.App Store 앱에는 필요하지 않지만 새 코드에는 모범 사례인 강화된 런타임 기능을 추가합니다.Organizer에서 새 아카이브를 삭제하면 원래 상태로 재설정됩니다.프로젝트 빌드에 앱 타겟이 올바르게 구축되었으므로 도우미 도구 타겟을 생성하여 해당 제품을 앱에 포함할 차례입니다. 시작하려면 macOS > 명령줄 도구 템플릿에서 새 대상을 만듭니다. X 는 Xcode로 빌드됨을 의미 합니다 .ToolX도구 대상 편집기의 서명 및 기능 탭에서 "자동으로 서명 관리"가 선택되어 있는지 확인한 다음 적절한 팀을 선택하십시오. 다시 서명 인증서 팝업이 개발로 전환됩니다.App Sandbox 및 강화된 런타임 기능을 추가합니다. 다시 말하지만, App Store 앱에는 강화된 런타임이 필요하지 않지만 새 코드에는 모범 사례입니다.또한 코드 서명 주입 기본 권한( ) 빌드 설정을 비활성화합니다. 이 설정을 활성화된 상태로 두면 Xcode는 도구의 개발 빌드에 권한을 포함합니다. 이는 해당 자격이 자격과 호환되지 않기 때문에 문제가 됩니다.CODE_SIGN_INJECT_BASE_ENTITLEMENTScom.apple.security.get-task-allowcom.apple.security.inherit자격이 없다는 것은 도구를 디버그할 수 없다는 것을 의미합니다. 디버그해야 하는 경우 특히 디버깅을 위해 샌드박스 처리되지 않은 새 명령줄 도구 대상을 만듭니다. 그러나 이 대상은 샌드박스에서 실행되지 않기 때문에 일반 도구 대상과 다르게 동작할 수 있다는 점에 유의하세요.com.apple.security.get-task-allow프로젝트 탐색기에서 선택 하고 부울 값 . 이 권한에 대한 자세한 내용은 앱 샌드박스 상속 활성화를 참조하세요 .ToolX.entitlementscom.apple.security.inherittrue이제 앱( ) 방식으로 다시 전환하세요.AppWithTool앱 타겟 편집기의 빌드 단계 탭에서 ToolX 타겟을 종속성 빌드 단계에 추가합니다. 이렇게 하면 Xcode가 앱 타겟을 빌드하기 전에 도구 타겟을 빌드하게 됩니다.해당 빌드 단계에 실행 파일 을 추가하고 Code Sign On Copy가 선택되어 있는지 확인하세요.ToolX빌드 및 검증페이지 링크에서Xcode Organizer에서 새로 생성된 아카이브를 선택하고 Distribute App을 클릭합니다.버튼에 앱 배포가 아닌 콘텐츠 배포라고 표시되면 돌아가서 도구 대상에서 설치 건너뛰기 빌드 설정을 활성화했는지 확인하세요.나머지 내보내기 워크플로를 진행합니다. 최종 결과는 . 해당 디렉터리에는 설치 프로그램 패키지( 확장 포함)가 있습니다. 해당 패키지의 포장을 풀어보세요.AppWithTool 2021-05-17 14-07-21.pkg설치 프로그램 패키지의 압축을 푸는 가장 쉬운 방법은 설치하는 것입니다. 설치하지 않으려면 xar및 를 사용하여 수동으로 압축을 푸세요 cpio. 자세한 내용은 해당 도구의 매뉴얼 페이지를 읽어보십시오( UNIX 매뉴얼 페이지 읽기 참조 ).
    % codesign -d -vvv --entitlements :- AppWithTool.app
    …
    Identifier=com.example.apple-samplecode.AppWithTool
    Format=app bundle with Mach-O universal (x86_64 arm64)
    CodeDirectory v=20500 size=822 flags=0x10000(runtime) hashes=14+7 location=embedded
    …
    Authority=Apple Distribution: …
    …
    TeamIdentifier=SKMME9E2Y8
    …
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.files.user-selected.read-only</key>
        <true/>
    </dict>
    </plist>
    % codesign -d -vvv --entitlements :- AppWithTool.app/Contents/MacOS/ToolX
    …
    Identifier=com.example.apple-samplecode.AppWithTool.ToolX
    Format=Mach-O universal (x86_64 arm64)
    CodeDirectory v=20500 size=796 flags=0x10000(runtime) hashes=13+7 location=embedded
    …
    Authority=Apple Distribution: …
    …
    TeamIdentifier=SKMME9E2Y8
    …
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.inherit</key>
        <true/>
    </dict>
    </plist>
    
    
    다음을 확인하세요.
    • 필드 Identifier는 코드 서명 식별자입니다.
    • 이 Format필드에는 실행 파일이 범용임을 표시합니다.
    • runtime필드 의 플래그는 강화 된 런타임이 활성화되었음을 나타냅니다.CodeDirectory
    • 필드 Authority에는 코드가 App Store 제출에서 기대할 수 있는 Apple 배포 서명 ID로 서명되었음을 표시합니다.
    • 필드 는 팀 ID입니다.TeamIdentifier
    • 앱의 자격에는 이 앱에 적합한 기타 자격이 포함됩니다.com.apple.security.app-sandbox
    • 도구의 권한에는 및 만 포함됩니다 .com.apple.security.app-sandboxcom.apple.security.inherit
    중요한외부에서 구축된 도구 포함페이지 링크에서도구 빌드페이지 링크에서
    % mkdir ToolC
    % cd ToolC
    
    
    여기서 C는 Clang으로 빌드됨을 의미합니다 .
    % cat main.c
    #include <stdio.h>
    
    int main(int argc, char ** argv) {
        printf("Hello Cruel World!\\n");
        return 0;
    }
    
    
    해당 소스 파일을 clang각 아키텍처에 대해 한 번씩 두 번 빌드한 다음 lipo함께 빌드합니다.이 -mmacosx-version-min옵션은 AppWithTool 앱과 일치하도록 배포 대상을 설정합니다. Intel 아키텍처의 경우 위에서 설명한 대로 macOS 10.15입니다. Apple 실리콘 아키텍처의 경우 이는 Apple 실리콘을 지원하는 최초의 macOS 릴리스인 macOS 11.0입니다.
    % /usr/libexec/PlistBuddy -c "Add :com.apple.security.app-sandbox bool true" "ToolC.entitlements"
    File Doesn't Exist, Will Create: ToolC.entitlements
    % /usr/libexec/PlistBuddy -c "Add :com.apple.security.inherit bool true" ToolC.entitlements
    % cat ToolC.entitlements
    …
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.inherit</key>
        <true/>
    </dict>
    </plist>
    
    
    아래와 같이 도구에 서명합니다.이는 다음과 같이 분류됩니다.
    • 인수 s -는 임시 서명(Xcode 용어로 로컬에서 실행하기 위한 서명)을 적용합니다. 여기서 코드 서명을 설정하는 것이 중요합니다. Xcode는 도구를 최종 앱에 포함할 때 도구에 다시 서명할 때 사용하는 패턴을 설정합니다. 서명 ID만 중요하지 않습니다. Xcode는 임베딩 프로세스 중에 제품의 서명 ID로 해당 ID를 재정의하므로 임시 서명을 사용하지 않아도 됩니다.
    • 이 옵션은 코드 서명 식별자를 설정합니다.i com.example.apple-samplecode.AppWithTool.ToolC
    • 이 o runtime옵션은 강화된 런타임을 활성화합니다. 다시 말하지만 이는 App Store 배포에는 필요하지 않지만 새 코드에는 모범 사례입니다.
    • 옵션 은 서명의 자격을 제공합니다.-entitlements ToolC.entitlements
    • 이 f옵션은 기존 서명을 재정의합니다. clang이는 꼭 필요한 것은 아니지만 아키텍처에 적용되는 기존 임시 서명에 대한 혼동을 방지합니다 arm64. Apple 실리콘에서는 모든 코드에 서명이 필요하므로 clangApple 실리콘용으로 빌드할 때 자동으로 임시 서명을 적용합니다.
    Xcode 프로젝트에 실행 파일을 추가합니다 . 이 작업을 수행할 때:ToolC
    • "필요한 경우 항목 복사"를 활성화합니다.
    • "폴더 참조 만들기" 대신 "그룹 만들기"를 선택하세요.
    • "대상에 추가" 목록에서 모든 상자를 선택 취소합니다.
    앱 대상 편집기의 빌드 단계 탭에서 Embed Helper Tools 빌드 단계에 추가하고 Code Sign On Copy가 선택되어 있는지 확인합니다.ToolC작업을 검증 하려면 Build and Validate 에 설명 된 프로세스를 따르십시오 .ToolCToolX프로젝트 구성페이지 링크에서패키지 종속성을 통합하여 프로젝트 간에 코드를 공유하거나 다른 개발자의 코드를 활용하세요.
  • 앱에 패키지 종속성 추가
  • 또한보십시오페이지 링크에서
  • 다시 빌드하고 유효성을 검사하세요.페이지 링크에서
  • % codesign -s - -i com.example.apple-samplecode.AppWithTool.ToolC -o runtime --entitlements ToolC.entitlements -f ToolC
  • 도구에 대한 자격 파일을 만듭니다.
  • % clang -o ToolC-x86_64 -mmacosx-version-min=10.15 -arch x86_64 main.c % clang -o ToolC-arm64 -mmacosx-version-min=11.0 -arch arm64 main.c % lipo ToolC-x86_64 ToolC-arm64 -create -output ToolC
  • 다음과 같은 디렉터리에 소스 파일을 만듭니다.
  • 새 디렉터리를 만들고 그 디렉터리로 변경합니다.
  • 앱과 Xcode 기반 도우미 도구가 올바르게 작동하면 이제 외부 빌드 시스템을 사용하여 빌드된 도구에 대한 프로세스를 반복할 차례입니다. 다음 예에서는 명령줄에서 더미 도우미 도구를 만든 다음 AppWithTool 앱에 도구를 포함합니다. 실제 프로젝트에서는 명령줄 도구의 외부 빌드 시스템(예: make)을 사용하여 포함하려는 도구를 빌드합니다.
  • 도구에 다른 권한을 추가하면 문제가 발생할 수 있습니다. 앱이 도구를 실행할 때 코드 서명 오류로 인해 도구가 즉시 충돌하는 경우 도구가 다음 두 가지 자격으로 서명되었는지 확인하세요. 및 .com.apple.security.app-sandboxcom.apple.security.inherit
  • 다음 명령을 실행하여 Xcode가 모든 것을 올바르게 구성했는지 확인하십시오.
  • 메모
  • App Store Connect를 선택하고 다음을 클릭한 후 내보내기를 선택하고 다음을 클릭합니다.
  • 메모
  • 프로젝트가 설정되었으면 이제 모든 것이 올바르게 빌드되는지 테스트할 차례입니다. 시작하려면 도구 대상을 빌드한 다음 앱 대상을 빌드하고 전자의 결과를 후자에 포함시키는 제품 > 아카이브를 선택하십시오.
  • 빌드 단계에 대한 자세한 내용은 빌드 단계란 무엇입니까?를 참조하세요.
  • 새로운 파일 복사 빌드 단계를 추가합니다. 빌드 단계 이름을 두 번 클릭하고 다음으로 변경합니다 Embed Helper Tools(정확한 이름은 중요하지 않지만 설명이 포함된 이름을 선택하는 것이 가장 좋습니다). 대상 팝업을 실행 파일로 설정합니다. 그러면 Placing Content in a Bundle 에서 권장하는 위치 중 하나인 앱 디렉터리에 도우미 도구가 배치됩니다 .Contents/MacOS
  • 도우미 도구 포함페이지 링크에서
  • ToolX 구성표를 선택하고 제품 > 빌드를 선택하여 도구가 올바르게 빌드되는지 확인하세요.
  • 기타 코드 서명 플래그( ) 빌드 설정을 로 설정하면 도구의 코드 서명 식별자가 해당 번들 ID와 일치하는지 확인됩니다.OTHER_CODE_SIGN_FLAGS$(inherited) -i $(PRODUCT_BUNDLE_IDENTIFIER)
  • 중요한
  • 빌드 설정 탭에서 설치 건너뛰기( ) 빌드 설정을 활성화합니다. 이 설정이 없으면 Xcode는 앱에 포함된 도구 외에 Xcode 아카이브에 도구의 독립 실행형 복사본을 저장합니다. 해당 도구 사본은 해당 아카이브를 배포하려고 할 때 문제를 일으킵니다.SKIP_INSTALL
  • 번들 식별자 필드를 입력합니다. 앱의 번들 ID는 이므로 로 설정하세요 . 이 값은 도우미 도구의 코드 서명 식별자가 됩니다. 아래의 기타 코드 서명 플래그 빌드 설정에 대한 설명을 참조하세요.com.example.apple-samplecode.AppWithToolcom.example.apple-samplecode.AppWithTool.ToolX
  • 도구 대상 편집기의 일반 탭에서 배포 대상 필드를 지웁니다. 그러면 프로젝트에서 배포 대상(macOS 10.15)을 상속하도록 도구 대상이 구성됩니다.
  • 도우미 도구 대상 만들기페이지 링크에서
  • 제품 > 아카이브를 선택하면 앱이 Xcode 아카이브로 빌드되고 Xcode 구성 도우미에 해당 아카이브가 표시됩니다. 여기서 목표는 지금까지 모든 것이 제대로 작동하는지 확인하는 것입니다.
  • 앱 타겟 편집기의 서명 및 기능 탭에서 "서명 자동 관리"가 선택되어 있는지 확인한 다음 적절한 팀을 선택하세요. 서명 인증서 팝업이 개발로 전환되어야 합니다. 이는 정확히 일상적인 개발에 필요한 것입니다.
  • 프로젝트 편집기에서 배포 대상을 10.15로 설정합니다. 나중에 이 배포 대상을 상속하도록 도구 대상을 구성하면 모든 것을 동기화하는 데 도움이 됩니다.
  • 앱 프로젝트 만들기페이지
  • 메모
  • 개요페이지
  • 샌드박스 앱에 명령줄 도구 포함

앱 샌드박스 위반 발견 및 진단

샌드박스 위반으로 인해 macOS 앱이 제대로 작동하지 않는 경우를 확인하고 샌드박스 관련 문제를 수정하세요.


Network

com.apple.security.network.server

앱이 들어오는 네트워크 연결을 수신할 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.network.client

앱이 나가는 네트워크 연결을 열 수 있는지 여부를 나타내는 부울 값입니다.


Hardware

Camera Entitlement

앱이 내장 및 외부 카메라와 상호 작용하고 동영상과 정지 이미지를 캡처할 수 있는지 여부를 나타내는 부울 값입니다.

키: com.apple.security.device.camera

com.apple.security.device.microphone

앱이 마이크를 사용할 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.device.usb

앱이 USB 장치와 상호 작용할 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.print

앱이 문서를 인쇄할 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.device.bluetooth

앱이 블루투스 기기와 상호작용할 수 있는지 여부를 나타내는 부울 값입니다.


App Data

Address Book Entitlement

앱이 사용자 주소록의 연락처에 대한 읽기-쓰기 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

키: com.apple.security.personal-information.addressbook

Location Entitlement

앱이 위치 서비스의 위치 정보에 액세스할 수 있는지 여부를 나타내는 부울 값입니다.

키: com.apple.security.personal-information.location

Calendars Entitlement

앱이 사용자의 캘린더에 대한 읽기/쓰기 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

키: com.apple.security.personal-information.calendars


File Access

Mac OS App Sandbox 에서 파일에 액세스

보안 보호를 유지하면서 문서와 지원 파일을 읽고 쓰세요.

앱 파일을 App Sandbox 컨테이너로 마이그레이션

문서 및 지원 파일에 대한 앱의 액세스를 단순화합니다.

com.apple.security.files.user-selected.read-only

사용자가 열기 또는 저장 대화 상자를 사용하여 선택한 파일에 대해 앱이 읽기 전용 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.files.user-selected.read-write

사용자가 열기 또는 저장 대화 상자를 사용하여 선택한 파일에 대해 앱이 읽기-쓰기 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.files.downloads.read-only

앱이 다운로드 폴더에 대한 읽기 전용 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.files.downloads.read-write

앱이 다운로드 폴더에 대한 읽기-쓰기 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.assets.pictures.read-only

앱이 그림 폴더에 대한 읽기 전용 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.assets.pictures.read-write

앱이 사진 폴더에 대한 읽기-쓰기 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.assets.music.read-only

앱이 음악 폴더에 대한 읽기 전용 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.assets.music.read-write

앱이 음악 폴더에 대한 읽기/쓰기 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.assets.movies.read-only

앱이 영화 폴더에 대한 읽기 전용 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

com.apple.security.assets.movies.read-write

앱이 영화 폴더에 대한 읽기/쓰기 액세스 권한을 가질 수 있는지 여부를 나타내는 부울 값입니다.

모든 파일 자격

앱이 모든 파일에 액세스할 수 있는지 여부를 나타내는 부울 값입니다. (더 이상 사용되지 않음)

~~키: com.apple.security.files.all~~

property list key NSAppDataUsageDescription

앱이 다른 앱의 샌드박스 컨테이너에 있는 파일에 액세스해야 하는 이유를 사용자에게 알려주는 메시지입니다.

이름: 개인 정보 - 기타 애플리케이션 데이터 사용 설명


See Also

Secure code

코드 서명 서비스

시스템에서 실행되는 서명된 코드를 검사하고 검증합니다.

배포 전 Mac OS 소프트웨어 공증

공증을 위해 macOS 소프트웨어를 Apple에 제출하여 사용자에게 macOS 소프트웨어에 대한 신뢰도를 더욱 높여주세요.

포인터 인증을 사용하도록 앱 준비

arm64e 아키텍처에 대해 앱을 테스트하여 향상된 보안 기능과 원활하게 작동하는지 확인하세요.

강화된 런타임

macOS 앱에 대한 보안 보호 및 리소스 액세스를 관리합니다.

시스템 무결성 보호 비활성화 및 활성화

드라이버, 커널 확장 및 기타 하위 수준 코드를 테스트하기 위해 개발 중에만 시스템 보호를 일시적으로 비활성화하십시오.

최신 코드 서명 형식 사용

앱이 현재 OS 릴리스에서 실행되도록 레거시 앱 코드 서명을 업데이트하세요.

Mac 소프트웨어 업데이트

코드 서명 충돌을 일으키지 않고 Mac 소프트웨어 업데이트를 구현합니다.

TN3125: 내부 코드 서명: 프로비전 프로필

프로비저닝 프로필을 통해 Apple 플랫폼에서 타사 코드를 실행할 수 있는 방법을 알아보세요

 

 

 

reference