Entitlements 설명기
codesign이 출력한 내용이나 .entitlements 파일을 붙여넣으세요. 이 페이지 안에서만 읽고, 어디로도 전송하지 않아요.
예시로 해 보기:
하는 일
Entitlements는 Mac 앱에 서명할 때 함께 넣는 권한이에요. 앱이 App Sandbox에서 실행되는지, 어떤 폴더와 기기에 접근할 수 있는지, 어떤 hardened runtime 보호를 끄는지, 어떤 Apple 서비스를 쓰는지가 담겨 있어요. .entitlements 파일에 있고 서명 안에 들어가요. 이 도구는 붙여넣은 텍스트를 읽고 각 entitlement와 값을 찾아서 무엇을 허용하는지 쉬운 말로 알려줘요. 공증을 막을 항목을 먼저, 그다음 App Review나 신중한 사용자가 물어볼 항목, 마지막으로 일반적인 항목 순서로 보여줘요.
실행할 명령
codesign -d --entitlements - YourApp.app codesign -d --entitlements - --xml YourApp.app
배포할 빌드에서 실행하세요. Xcode의 디버그 빌드에는 보통 com.apple.security.get-task-allow가 들어 있고, 릴리스 빌드에는 없어요. 헬퍼나 확장을 확인하려면 명령어를 그 번들에 대고 실행하세요.
결과별 의미
| 표시 | 의미 |
|---|---|
| 수정 | 공증이 거부하거나, macOS가 이것이 있는 서드파티 앱을 실행하지 않아요. |
| 모양 | hardened runtime 예외, 샌드박스 예외, 꺼진 샌드박스, 또는 테스트 설정이에요. 허용되지만 앱에 꼭 필요할 때만 유지하세요. |
| OK | App Sandbox가 켜져 있어요. |
| 참고 | 일반적인 권한이에요. 앱이 실제로 쓰는지 확인하세요. |
출처: Apple Developer, Entitlements, App Sandbox, Hardened Runtime, Resolving common notarization issues, 모두 2026년 11월 6일에 읽었어요.
작동 방식
이 페이지에서 돌아가는 몇 가지 단순한 텍스트 규칙이에요. .entitlements 파일이나 codesign --xml이 담은 XML과, 최근 macOS에서 codesign이 출력하는 대괄호 [Key]와 [Value] 줄을 읽어요. 키 이름만 붙여넣으면 그것을 설명해줘요. 흔한 entitlement 50개를 알고 있어요. 그 밖의 것은 추측하지 않고 목록에 없다고 표시해요. hardened runtime이 켜져 있는지는 알 수 없어요. entitlement가 아니라 서명 플래그이기 때문이에요. codesign -dv가 출력하는 내용에서 flags=0x10000(runtime)을 찾아보세요.
질문
Mac의 entitlements란 무엇인가요?
앱의 코드 서명에 적혀 있는 권한이에요. 앱이 App Sandbox에서 실행되는지, 어떤 파일, 기기, Apple 서비스를 쓸 수 있는지, 어떤 hardened runtime 보호를 끄는지를 알려줘요.
앱의 entitlements는 어떻게 보나요?
터미널에서 codesign -d --entitlements - 뒤에 앱 경로를 붙여 실행하세요. --xml을 추가하면 같은 목록을 속성 목록으로 받아요.
왜 앱이 get-task-allow 때문에 공증에서 거부되었나요?
그 entitlement는 디버거가 붙을 수 있게 하고, Xcode가 디버그 빌드에 추가해요. 릴리스 빌드를 아카이브하거나 서명에 쓰는 entitlements에서 지운 뒤 다시 제출하세요.
Mac 앱에 App Sandbox가 필요한가요?
Mac App Store에서만 필요해요. 스토어가 요구하기 때문이에요. Developer ID로 직접 판매하는 앱은 없어도 실행되지만, 공증을 위해서는 hardened runtime이 여전히 필요해요.
붙여넣은 내용이 어딘가로 전송되나요?
아니요. 텍스트는 이 페이지에서만 읽히고 아무것도 전송되지 않아요.