Entitlements no desenvolvimento iOS: o que são, tipos e como configurar

Autor: IT Sectr Publicado: 2026-05-18 Tempo de leitura: 8 min

Entitlements são direitos e permissões digitais atribuídos a um aplicativo durante a fase de assinatura de código que determinam o acesso a recursos protegidos do sistema operacional Apple. Ao contrário das permissões do usuário, os Entitlements são verificados pelo sistema na inicialização do aplicativo e não podem ser alterados pelo usuário. De acordo com a Documentação para Desenvolvedores Apple (2025), a configuração correta dos Entitlements é obrigatória para usar iCloud, Notificações Push e App Groups. Entitlements são um elemento-chave do modelo de segurança do iOS e macOS.

Pontos Principais

  • Entitlements são permissões digitais incorporadas na assinatura do aplicativo que determinam o acesso a recursos protegidos do iOS e macOS.
  • Diferença de Permissões — Entitlements são verificados pelo sistema na inicialização e não são solicitados ao usuário; permissões são solicitadas em tempo de execução por meio de diálogos do sistema.
  • Capabilities — O Xcode agrupa Entitlements em Capabilities: Push Notifications, iCloud, App Groups, In-App Purchase e outros.
  • Arquivo Entitlements — (.entitlements) é um arquivo XML no projeto Xcode contendo a lista de direitos no formato chave-valor, assinado pela Apple.
  • Segurança — os entitlements são verificados durante a assinatura de código; a falsificação de entitlements em um aplicativo instalado quebra a assinatura digital e bloqueia a inicialização.

O que são Entitlements?

Entitlements (traduzido do inglês como “direitos”) são pares chave-valor incluídos na assinatura de código do aplicativo durante a compilação que determinam a quais capacidades e dados do sistema o aplicativo pode acessar. Os Entitlements fazem parte do modelo de segurança da Apple desde a introdução do iOS SDK e são obrigatórios para todos os aplicativos distribuídos através da App Store.

O conceito de Entitlements difere das permissões tradicionais no Android. Enquanto as permissões do Android são solicitadas ao usuário no momento do primeiro uso de um recurso, os Entitlements no iOS são verificados pelo sistema na inicialização do aplicativo com base na assinatura digital. O usuário não pode revogar ou alterar um entitlement — este direito é concedido ao desenvolvedor através do App Store Connect e incorporado no perfil de provisionamento.

Cada entitlement tem um propósito e formato estritamente definidos. Por exemplo, com.apple.security.application-groups permite o acesso a um contêiner compartilhado para um conjunto de aplicativos do mesmo desenvolvedor, enquanto aps-environment habilita o suporte a Notificações Push. A Apple revisa manualmente as solicitações de entitlements durante o processo de App Review, o que impede o abuso de direitos.

Tipos de Entitlements no iOS

Os Entitlements são classificados por propósito funcional em várias categorias. Serviços do Sistema — iCloud, Push Notifications, Siri. Segurança e Dados — Keychain Access Groups, App Groups, Data Protection. Rede e Comunicação — Multipath TCP, VPN, Hotspot Configuration. Capacidades de Hardware — Câmera, Microfone, Bluetooth (através de capabilities relacionadas).

Capabilities e Entitlements de Serviço

O Xcode agrupa entitlements relacionados em Capabilities — interruptores de alto nível na guia Signing & Capabilities. Habilitar uma Capability adiciona automaticamente os entitlements necessários ao arquivo .entitlements. Por exemplo, habilitar a capability Push Notifications adiciona o entitlement aps-environment com valor development ou production, enquanto habilitar iCloud adiciona um conjunto de entitlements para CloudKit e armazenamento Key-Value.

Algumas capabilities exigem configuração adicional no portal Apple Developer. Por exemplo, App Groups requer o registro de um identificador de grupo no portal, após o que ele se torna disponível para seleção no Xcode. Para Push Notifications, é necessário gerar uma chave ou certificado APNs. Sem essas etapas prévias, o entitlement não funcionará mesmo com um arquivo .entitlements correto.

App Groups e Acesso ao Keychain

O entitlement com.apple.security.application-groups permite que vários aplicativos do mesmo desenvolvedor compartilhem um contêiner comum no sistema de arquivos. É usado para compartilhar dados entre o aplicativo principal e as extensões (Widget, Watch App, Share Extension). Todos os aplicativos do mesmo grupo podem ler e gravar arquivos no diretório compartilhado /Library/Group Containers/.

Keychain Access Groups (chave keychain-access-groups) é outro entitlement importante que permite que aplicativos do mesmo grupo compartilhem acesso a itens do Keychain. Isso é crítico para implementar logon único: o usuário faz login em um aplicativo e obtém acesso automaticamente à mesma conta em outro aplicativo sem redigitar a senha.

Como Configurar Entitlements

A configuração de Entitlements é feita no Xcode na guia Signing & Capabilities nas configurações do target. O desenvolvedor seleciona as Capabilities necessárias da lista, e o Xcode cria ou atualiza automaticamente o arquivo .entitlements. Este arquivo é armazenado no projeto em formato XML com estrutura plist e contém todas as chaves de entitlement para esse target.

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>

Ao criar um arquivo entitlement manualmente, é importante seguir o formato de chaves e os prefixos. Os entitlements da Apple usam um estilo de domínio reverso (com.apple.*). Entitlements personalizados para seus próprios fins também são possíveis, mas devem ser registrados no portal do desenvolvedor. O Xcode fornece autocompletar para todas as chaves de entitlement padrão.

Para depurar Entitlements, use o comando codesign no terminal do macOS. O comando codesign -d --entitlements :- <caminho_do_aplicativo> exibe todos os entitlements com os quais o aplicativo foi assinado. Isso é útil para diagnosticar problemas: se um entitlement estiver ausente na saída, o aplicativo não obterá acesso à função correspondente independentemente das configurações do Xcode.

Criando um Arquivo Entitlement Manualmente

Embora o Xcode gere o arquivo entitlement automaticamente ao habilitar Capabilities, desenvolvedores experientes frequentemente o criam ou editam manualmente para ajustes finos. O arquivo tem a extensão .entitlements e formato plist (XML). Nele, podem ser adicionadas chaves de entitlement personalizadas que não estão presentes na interface do Xcode, ou combinar entitlements de diferentes capabilities em um único arquivo.

Ao editar manualmente, é importante garantir a correção sintática do XML. Um erro na estrutura plist fará com que os entitlements não sejam aplicados durante a assinatura. O Xcode verifica o arquivo .entitlements em tempo de compilação e exibe um erro se o formato estiver incorreto. Para projetos complexos com múltiplos targets e extensões, é recomendável armazenar as chaves de entitlement comuns em arquivos separados e importá-las através das Build Settings.

cpp
// cli: checking entitlements of an installed application
codesign -d --entitlements :- /Applications/Safari.app

// Example output contains a list of active entitlements
<dict>
    <key>com.apple.security.ts.apple-wifi</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
</dict>

Entitlements e Segurança do Aplicativo

Os Entitlements desempenham um papel fundamental no modelo de segurança da Apple. Como os entitlements fazem parte da assinatura digital do aplicativo, sua falsificação é impossível sem re-assinar o código. A Apple verifica os entitlements em vários níveis: durante a compilação, o Xcode assina os entitlements junto com o arquivo executável; durante a instalação, o sistema verifica a integridade da assinatura; na inicialização, re-verifica os entitlements.

Um requisito importante de segurança é o princípio do mínimo entitlement. O desenvolvedor deve incluir apenas os entitlements que são realmente usados no aplicativo. Entitlements desnecessários aumentam a superfície de ataque e podem causar a rejeição do aplicativo durante o App Review. A Apple verifica explicitamente se os entitlements correspondem à funcionalidade do aplicativo.

Alguns entitlements são considerados sensíveis e exigem aprovação adicional da Apple. Estes incluem: com.apple.developer.healthkit (HealthKit), com.apple.developer.passkit (Wallet), com.apple.developer.authentication-services.authentication (Sign in with Apple) e com.apple.developer.nfc.readersession.formats (NFC). Para obter esses entitlements, é necessário justificar sua necessidade durante o processo de App Review.

Ao trabalhar com entitlements, é importante considerar as diferenças entre iOS e macOS. Os aplicativos de desktop macOS (Sandboxed) têm um conjunto mais amplo de entitlements em comparação com o iOS. Por exemplo, o entitlement com.apple.security.temporary-exception.* permite contornar temporariamente a sandbox para certas operações — tais entitlements estão completamente ausentes no iOS.

Entitlements e Perfis de Provisionamento

Os Entitlements estão intimamente ligados aos Perfis de Provisionamento (Provisioning Profiles). Um perfil de provisionamento é um arquivo que vincula o certificado do desenvolvedor, uma lista de dispositivos permitidos e um conjunto de entitlements para um aplicativo específico. Ao instalar um aplicativo, o sistema compara os entitlements no código com os entitlements no perfil de provisionamento. Se um entitlement estiver presente no código mas ausente no perfil, o aplicativo não obterá acesso à função correspondente.

Para diagnosticar problemas com entitlements, primeiro verifique o perfil de provisionamento. O Xcode gera automaticamente perfis com base nas capabilities selecionadas no portal Apple Developer. Se uma capability for adicionada no Xcode mas não estiver ativa no portal, o aplicativo travará com um erro de assinatura ao tentar usar uma função protegida.

Entitlements Comuns

Vamos ver os entitlements mais usados no desenvolvimento iOS. aps-environment (Push Notifications) — obrigatório para enviar notificações push. com.apple.developer.ubiquity-container-identifiers (iCloud) — para sincronização de dados via CloudKit. com.apple.security.application-groups — para compartilhar dados entre aplicativos e extensões. com.apple.developer.associated-domains — para Universal Links e Handoff.

Cada um desses entitlements tem um procedimento de configuração rigoroso. Push Notifications exigem gerar uma chave APNs no portal Apple Developer e habilitar a capability no Xcode. Depois disso, o entitlement é definido automaticamente no arquivo .entitlements. O iCloud exige configurar um contêiner no portal e selecioná-lo no Xcode na lista suspensa.

Associated Domains — um entitlement que vincula o aplicativo a um domínio web. É usado para Universal Links (links profundos que abrem diretamente no aplicativo) e Handoff (continuar o trabalho em outro dispositivo Apple). O valor do entitlement contém um array de strings no formato applinks:example.com. Requer a colocação de um arquivo apple-app-site-association no servidor.

Tabela de entitlements populares e seus propósitos:

Chave EntitlementPropósitoRequer Revisão
aps-environmentNotificações PushNão
com.apple.developer.ubiquity-*Sincronização iCloudNão
application-groupsContêiner CompartilhadoNão
com.apple.developer.healthkitDados HealthKitSim
com.apple.developer.nfc.*Leitura NFCSim
associated-domainsUniversal LinksNão

Perguntas Frequentes

Como os Entitlements diferem das Permissões no iOS?

Entitlements são direitos estáticos incorporados na assinatura do aplicativo e verificados pelo sistema na inicialização. Permissões são autorizações dinâmicas solicitadas ao usuário em tempo de execução (câmera, geolocalização).

Como verificar os Entitlements de um aplicativo instalado?

Use o comando codesign -d --entitlements no terminal do macOS. Para aplicativos da App Store, os entitlements são verificados através do utilitário ProvisionQL ou do Xcode Organizer.

É possível alterar Entitlements após a publicação?

Alterar entitlements requer uma nova compilação e re-assinatura do aplicativo. Se o entitlement exigir aprovação da Apple, será necessário passar pelo App Review novamente. Sem re-assinar, é impossível alterar os entitlements.

O que é um Arquivo Entitlements no Xcode?

Um arquivo .entitlements é um documento XML em formato plist armazenado no projeto Xcode. Contém uma lista de todos os entitlements do aplicativo de forma estruturada e é assinado junto com o arquivo executável.

O que são Capabilities no Xcode?

Capabilities são interruptores de alto nível na guia Signing & Capabilities no Xcode. Habilitar uma capability adiciona automaticamente os entitlements correspondentes ao arquivo .entitlements e configura o perfil de provisionamento.

Resumo

  • Entitlements são direitos digitais de um aplicativo para usar funções protegidas do sistema iOS e macOS, incorporados na assinatura de código.
  • Diferença de permissões — entitlements são verificados pelo sistema na inicialização com base na assinatura, não são solicitados ao usuário e não podem ser revogados.
  • Capabilities são agrupamentos do Xcode de entitlements para Push Notifications, iCloud, App Groups, In-App Purchase e outras funções.
  • Verificação — através do comando codesign no terminal do macOS para diagnosticar os direitos instalados do aplicativo.
  • Entitlements sensíveis — HealthKit, NFC, PassKit exigem aprovação adicional da Apple através do App Review.
  • Princípio de privilégios mínimos — inclua apenas os entitlements necessários para reduzir a superfície de ataque e passar na revisão com sucesso.
  • Segurança — entitlements são protegidos por assinatura digital; a falsificação é impossível sem re-assinar o aplicativo inteiro.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também