Entitlements dalam pengembangan iOS: apa itu, jenis apa saja dan cara konfigurasinya

Penulis: IT Sectr Diterbitkan: 2026-05-18 Waktu membaca: 8 mnt

Entitlements adalah hak dan izin digital yang diberikan kepada aplikasi pada tahap penandatanganan kode dan menentukan akses ke fitur-fitur yang dilindungi dari sistem operasi Apple. Berbeda dengan izin pengguna, Entitlements diperiksa oleh sistem saat aplikasi dijalankan dan tidak dapat diubah oleh pengguna. Menurut Apple Developer Documentation (2025), konfigurasi Entitlements yang benar wajib untuk menggunakan iCloud, Pemberitahuan Push, dan App Groups. Entitlements adalah elemen kunci dari model keamanan iOS dan macOS.

Poin Utama

  • Entitlements — izin digital yang tertanam dalam tanda tangan aplikasi yang menentukan akses ke fitur iOS dan macOS yang dilindungi.
  • Perbedaan dari Permissions — Entitlements diperiksa oleh sistem saat startup dan tidak diminta dari pengguna; izin diminta saat runtime melalui dialog sistem.
  • Capabilities — Xcode mengelompokkan Entitlements ke dalam Capabilities: Push Notifications, iCloud, App Groups, In-App Purchase, dan lainnya.
  • Entitlements File — (.entitlements) — file XML di proyek Xcode berisi daftar hak dalam format kunci-nilai, ditandatangani oleh Apple.
  • Keamanan — entitlements diperiksa pada tahap code signing; pemalsuan entitlements di aplikasi terinstal merusak tanda tangan digital dan memblokir startup.

Apa itu Entitlements?

Entitlements (diterjemahkan dari bahasa Inggris — "hak") — adalah pasangan kunci-nilai yang disertakan dalam tanda tangan kode aplikasi pada tahap pembangunan dan menentukan fungsi serta data sistem apa yang dapat diakses aplikasi. Entitlements telah tertanam dalam model keamanan Apple sejak kemunculan iOS SDK dan wajib untuk semua aplikasi yang didistribusikan melalui App Store.

Konsep Entitlements berbeda dari izin tradisional (permissions) di Android. Jika izin Android diminta dari pengguna saat pertama kali menggunakan fitur, Entitlements di iOS diperiksa oleh sistem saat startup aplikasi berdasarkan tanda tangan digital. Pengguna tidak dapat mencabut atau mengubah entitlement — hak ini diberikan kepada pengembang melalui App Store Connect dan ditetapkan dalam profil penandatanganan.

Setiap entitlement memiliki tujuan dan format yang ditentukan secara ketat. Misalnya, com.apple.security.application-groups mengizinkan akses ke wadah bersama untuk kumpulan aplikasi dari pengembang yang sama, dan aps-environment mengaktifkan dukungan untuk Pemberitahuan Push. Apple meninjau permintaan entitlement secara manual dalam proses App Review, yang mencegah penyalahgunaan hak.

Jenis Entitlements di iOS

Entitlements diklasifikasikan berdasarkan tujuan fungsional ke dalam beberapa kategori. Layanan Sistem — iCloud, Push Notifications, Siri. Keamanan dan Data — Keychain Access Groups, App Groups, Data Protection. Jaringan dan Komunikasi — Multipath TCP, VPN, Hotspot Configuration. Kemampuan Perangkat Keras — Camera, Microphone, Bluetooth (melalui capabilities terkait).

Capabilities dan Entitlements Layanan

Xcode mengelompokkan entitlements terkait ke dalam Capabilities — sakelar tingkat tinggi di tab Signing & Capabilities. Mengaktifkan Capability secara otomatis menambahkan entitlements yang diperlukan ke file .entitlements. Misalnya, mengaktifkan Capability Push Notifications menambahkan entitlement aps-environment dengan nilai development atau production, dan mengaktifkan iCloud menambahkan kumpulan entitlements untuk CloudKit dan Key-Value storage.

Beberapa capabilities memerlukan konfigurasi tambahan di portal Apple Developer. Misalnya, untuk App Groups perlu mendaftarkan ID grup di portal, setelah itu tersedia untuk dipilih di Xcode. Untuk Push Notifications perlu menghasilkan kunci APNs atau sertifikat. Tanpa langkah awal ini, entitlement tidak akan berfungsi meskipun dengan file .entitlements yang benar.

App Groups dan Keychain Access

Entitlement com.apple.security.application-groups memungkinkan beberapa aplikasi dari pengembang yang sama memiliki wadah bersama di sistem file. Ini digunakan untuk berbagi data antara aplikasi utama dan ekstensi (Widget, Watch App, Share Extension). Semua aplikasi dari satu grup dapat membaca dan menulis file di direktori bersama /Library/Group Containers/.

Keychain Access Groups (kunci keychain-access-groups) — entitlement penting lainnya yang memungkinkan aplikasi dari satu grup memiliki akses bersama ke elemen Keychain. Ini sangat penting untuk implementasi autentikasi terpadu: pengguna masuk di satu aplikasi dan secara otomatis mendapatkan akses ke akun yang sama di aplikasi lain tanpa memasukkan ulang kata sandi.

Cara Konfigurasi Entitlements

Konfigurasi Entitlements dilakukan di Xcode pada tab Signing & Capabilities di pengaturan target. Pengembang memilih Capabilities yang diperlukan dari daftar, dan Xcode secara otomatis membuat atau memperbarui file .entitlements. File ini disimpan di proyek dalam format XML dengan struktur plist dan berisi semua kunci entitlements untuk target ini.

objective-c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.com.example.shared</string>
    </array>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)com.example.keychain</string>
    </array>
</dict>
</plist>

Saat membuat file entitlement secara manual, penting untuk mematuhi format kunci dan prefiks. Entitlements Apple menggunakan gaya domain terbalik (com.apple.*). Entitlements kustom untuk keperluan sendiri juga dimungkinkan, tetapi harus didaftarkan di portal pengembang. Xcode menyediakan pelengkapan otomatis untuk semua kunci entitlement standar.

Untuk men-debug Entitlements, gunakan perintah codesign di terminal macOS. Perintah codesign -d --entitlements :- <path_ke_aplikasi> menampilkan semua entitlements yang digunakan untuk menandatangani aplikasi. Ini berguna untuk mendiagnosis masalah: jika entitlement tidak ada dalam output, aplikasi tidak akan mendapatkan akses ke fungsi terkait terlepas dari pengaturan di Xcode.

Membuat file entitlement secara manual

Meskipun Xcode menghasilkan file entitlement secara otomatis saat mengaktifkan Capabilities, pengembang berpengalaman sering membuat atau mengeditnya secara manual untuk penyesuaian yang lebih presisi. File ini memiliki ekstensi .entitlements dan format plist (XML). Di dalamnya dapat ditambahkan kunci entitlement kustom yang tidak tersedia di antarmuka Xcode, atau menggabungkan entitlements dari berbagai capabilities dalam satu file.

Saat mengedit secara manual, penting untuk memantau kebenaran sintaksis XML. Kesalahan dalam struktur plist akan menyebabkan entitlements tidak diterapkan saat penandatanganan. Xcode memeriksa file .entitlements pada tahap kompilasi dan menampilkan kesalahan jika format tidak benar. Untuk proyek kompleks dengan banyak target dan ekstensi, disarankan untuk menyimpan kunci entitlement bersama di file terpisah dan mengimpornya melalui Build Settings.

cpp
// cli: memeriksa entitlements aplikasi yang terinstal
codesign -d --entitlements :- /Applications/Safari.app

// Contoh keluaran berisi daftar entitlements aktif
<dict>
    <key>com.apple.security.ts.apple-wifi</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
</dict>

Entitlements dan Keamanan Aplikasi

Entitlements memainkan peran kunci dalam model keamanan Apple. Karena entitlements adalah bagian dari tanda tangan digital aplikasi, pemalsuannya tidak mungkin dilakukan tanpa menandatangani ulang kode. Apple memeriksa entitlements di beberapa tingkat: saat pembangunan, Xcode menandatangani entitlements bersama file yang dapat dieksekusi; saat instalasi, sistem memeriksa integritas tanda tangan; saat startup, memverifikasi entitlements kembali.

Salah satu persyaratan keamanan penting adalah prinsip entitlement minimal. Pengembang harus hanya mengaktifkan entitlements yang benar-benar digunakan dalam aplikasi. Entitlements berlebihan meningkatkan permukaan serangan dan dapat menyebabkan penolakan aplikasi di App Review. Apple secara eksplisit memeriksa kesesuaian entitlements dengan fungsionalitas aplikasi.

Beberapa entitlements dianggap sensitif (sensitive) dan memerlukan persetujuan tambahan dari Apple. Ini termasuk: com.apple.developer.healthkit (HealthKit), com.apple.developer.passkit (Wallet), com.apple.developer.authentication-services.authentication (Sign in with Apple) dan com.apple.developer.nfc.readersession.formats (NFC). Untuk mendapatkan entitlements ini, perlu menjelaskan kebutuhannya dalam proses App Review.

Saat bekerja dengan entitlements, penting untuk mempertimbangkan perbedaan antara iOS dan macOS. Aplikasi desktop macOS (Sandboxed) memiliki kumpulan entitlements yang lebih luas dibandingkan iOS. Misalnya, entitlement com.apple.security.temporary-exception.* memungkinkan untuk sementara melewati sandbox untuk operasi tertentu — di iOS, entitlements semacam itu tidak ada sama sekali.

Entitlements dan Provisioning Profile

Entitlements terkait erat dengan profil penandatanganan (Provisioning Profiles). Profil penandatanganan adalah file yang menghubungkan sertifikat pengembang, daftar perangkat yang diizinkan, dan kumpulan entitlements untuk aplikasi tertentu. Saat instalasi aplikasi, sistem membandingkan entitlements dalam kode dengan entitlements dalam profil penandatanganan. Jika entitlement ada dalam kode tetapi tidak ada dalam profil, aplikasi tidak akan mendapatkan akses ke fungsi terkait.

Untuk mendiagnosis masalah dengan entitlements, pertama-tama periksa profil penandatanganan. Xcode secara otomatis menghasilkan profil berdasarkan capability yang dipilih di portal Apple Developer. Jika capability ditambahkan di Xcode tetapi tidak aktif di portal, aplikasi akan crash dengan kesalahan penandatanganan saat mencoba menggunakan fungsi yang dilindungi.

Entitlements yang Sering Digunakan

Mari kita lihat entitlements yang paling sering digunakan dalam pengembangan iOS. aps-environment (Push Notifications) — wajib untuk mengirim pemberitahuan push. com.apple.developer.ubiquity-container-identifiers (iCloud) — untuk sinkronisasi data melalui CloudKit. com.apple.security.application-groups — untuk berbagi data antara aplikasi dan ekstensi. com.apple.developer.associated-domains — untuk Universal Links dan Handoff.

Untuk setiap entitlements ini ada prosedur konfigurasi yang ketat. Push Notifications memerlukan pembuatan kunci APNs di portal Apple Developer dan mengaktifkan capability di Xcode. Setelah itu, entitlement secara otomatis ditambahkan ke file .entitlements. iCloud memerlukan konfigurasi wadah di portal dan memilihnya di Xcode dari daftar drop-down.

Associated Domains — entitlement yang menghubungkan aplikasi dengan domain web. Digunakan untuk Universal Links (tautan dalam yang terbuka langsung di aplikasi) dan Handoff (melanjutkan pekerjaan di perangkat Apple lain). Nilai entitlement berisi array string dalam format applinks:example.com. Untuk berfungsi, diperlukan penempatan file apple-app-site-association di server.

Tabel entitlements populer dan tujuannya:

Entitlement KeyTujuanPerlu Peninjauan
aps-environmentPemberitahuan PushTidak
com.apple.developer.ubiquity-*Sinkronisasi iCloudTidak
application-groupsWadah bersama aplikasiTidak
com.apple.developer.healthkitData HealthKitYa
com.apple.developer.nfc.*Pembacaan tag NFCYa
associated-domainsUniversal LinksTidak

Pertanyaan yang Sering Diajukan

Apa perbedaan Entitlements dengan Permissions di iOS?

Entitlements adalah hak statis yang tertanam dalam tanda tangan aplikasi dan diperiksa oleh sistem saat startup. Permissions adalah izin dinamis yang diminta dari pengguna saat runtime (kamera, geolokasi).

Bagaimana cara memeriksa Entitlements aplikasi yang terinstal?

Gunakan perintah codesign -d --entitlements di terminal macOS. Untuk aplikasi dari App Store, entitlement diperiksa melalui utilitas ProvisionQL atau melalui Xcode Organizer.

Bisakah Entitlements diubah setelah publikasi?

Perubahan entitlements memerlukan pembangunan baru dan penandatanganan ulang aplikasi. Jika entitlement memerlukan persetujuan Apple, perlu melalui App Review lagi. Tanpa penandatanganan ulang, perubahan entitlement tidak mungkin dilakukan.

Apa itu Entitlements File di Xcode?

File .entitlements — dokumen XML dalam format plist yang disimpan di proyek Xcode. Ini berisi daftar semua entitlements aplikasi dalam bentuk terstruktur dan ditandatangani bersama file yang dapat dieksekusi.

Apa itu Capabilities di Xcode?

Capabilities adalah sakelar tingkat tinggi di tab Signing & Capabilities di Xcode. Mengaktifkan capability secara otomatis menambahkan entitlements yang sesuai ke file .entitlements dan mengonfigurasi profil penandatanganan.

Ringkasan

  • Entitlements — hak digital aplikasi untuk menggunakan fitur sistem yang dilindungi iOS dan macOS, tertanam dalam tanda tangan kode.
  • Perbedaan dari izin — entitlements diperiksa oleh sistem saat startup berdasarkan tanda tangan, tidak diminta dari pengguna dan tidak dapat dicabut.
  • Capabilities — pengelompokan entitlements di Xcode untuk Push Notifications, iCloud, App Groups, In-App Purchase, dan fitur lainnya.
  • Pemeriksaan — melalui perintah codesign di terminal macOS untuk mendiagnosis hak aplikasi yang terinstal.
  • Entitlements sensitif — HealthKit, NFC, PassKit memerlukan persetujuan tambahan dari Apple melalui App Review.
  • Prinsip hak minimal — aktifkan hanya entitlements yang diperlukan untuk mengurangi permukaan serangan dan berhasil melewati peninjauan.
  • Keamanan — entitlements dilindungi oleh tanda tangan digital; pemalsuan tidak mungkin tanpa menandatangani ulang seluruh aplikasi.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga