Melhorar a privacidade e segurança do macOS com UUID de aplicação

Com a atualização Sequoia, macOS agora se baseia no UUID das aplicações para vários controles de privacidade e segurança, como acesso à rede. Essa nova caraterística do macOS pode causar problemas no lado do usuário final, como ter que frequentemente reautorizar as aplicações 4D construídas. Para resolver isso, a partir de 4D 20 R9, cada aplicação 4D construída para macOS agora tem seu próprio UUID de aplicação. Essa mudança garante controles de acesso melhor ajustados. Vamos nos aprofundar nos detalhes.

macOS Sequoia e UUIDs de aplicação

Com a introdução da versão Sequoia, o macOS passou a basear algumas definições de privacidade e segurança nos UUIDs das aplicações em vez dos seus nomes. Assim, se várias aplicações partilharem o mesmo UUID, isso pode causar problemas nos controles do sistema. Isto é particularmente relevante para o acesso à Rede local, conforme explicado nesta nota técnica. As configurações envolvidas estão localizadas na caixa de diálogo Configurações do sistema, no painel Rede local do item Privacidade e segurança:

UUIDs de Aplicação Única

Antes do 4D 20 R9, aplicações 4D construídas compartilhavam o mesmo UUID que a aplicação 4D Volume Desktop ou 4D Server usada como fonte.

Agora, ao construir uma aplicação, seu UUID é automaticamente definido usando uma combinação da aplicação 4D de origem e seu identificador de aplicação. Isso garante que sua aplicação é considerada única em sistemas macOS e mantém o mesmo UUID para sua aplicação desde que use a mesma versão da aplicação fonte 4D.

Claro, esse novo comportamento também é aplicado ao componente Build4D!

Boas notícias, nada que precise fazer, nada precisa ser mudado em sua cadeia de construção, tudo é totalmente automático. Normalmente, pode parar de ler aqui, mas se precisar, fornecemos controlo total do UUID! Isto é explicado no parágrafo seguinte.

Funções actualizadas

Para suportar este novo recurso, atualizamos a função File. getAppInfo() para retornar o UUID do aplicativo quando aplicado ao executável do aplicativo. Aqui está um exemplo de trecho de código:

var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()

E aqui está um exemplo de resultado:

{
  "archs": [
    {
      "type": 16777223,
      "name": "x86_64",
      "uuid": "9C286FBFFAAA242FEBF462654C950ECF"
    },
    {
      "type": 16777228,
      "name": "arm64",
      "uuid": "8D8AA28824AACC558AB3D287A43EC53A"
    }
  ]
}

Além disso, a função File. setAppInfo() foi melhorada para permitir que defina o seu próprio UUID, se pretender. Eis como pode fazer isso:

var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
 
// regenera uuids para todas as arquiteturas
For each ($arch; $info.archs)
  $arch.uuid:=Generate UUID
End for each
 
// atualizar o app com as novas uuids
$app.setAppInfo($info)

Esperamos que esta funcionalidade melhore a experiência do utilizador com as suas aplicações implementadas, garantindo que são únicas e estão melhor integradas em ambientes macOS.

Boa programação!

Avatar
• Proprietário do produto - Damien Fuzeau entrou ao time 4D Product em fevereiro de 2019. Como Proprietário do Produto, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Damien é formado em engenharia de software pela Universidade de Nantes. Trabalhou mais de 23 anos em sua empresa anterior, primeiro como desenvolvedor (descobrindo 4D em 1997), e mais tarde como gerente de engenharia e arquiteto de software. Essa empresa é um Partner OEM de 4D e lançou softwares empresariais baseados em 4D para milhares de usuários em centenas de servidores. Portanto Damien está acostumado ao desenvolvimento e lançamento de 4D em contextos multilinguais.