アプリケーションUUIDでmacOSのプライバシーとセキュリティを強化する

Deeplからの自動翻訳

Sequoiaのアップデートにより、macOSはネットワークアクセスなど様々なプライバシーとセキュリティ制御のためにアプリケーションのUUIDに依存するようになった。macOSのこの新機能により、エンドユーザー側では、ビルドした4Dアプリケーションを頻繁に再認証しなければならないなどの問題が発生する可能性があります。これに対処するため、4D 20 R9から、macOS用にビルドされた各4Dアプリケーションは、独自のアプリケーションUUIDを持つようになりました。この変更により、アクセス制御のチューニングがより確実になりました。詳細について説明しましょう。

macOS SequoiaとアプリケーションUUID

Sequoiaバージョンの導入により、macOSはプライバシーとセキュリティの設定の一部を、アプリケーション名ではなくアプリケーションUUIDに基づいて行うようになった。そのため、複数のアプリケーションが同じUUIDを共有している場合、システム制御で問題が発生する可能性があります。このテクニカルノートで説明されているように、これは特にローカルネットワークアクセスに関連しています。関連する設定は、システム設定ダイアログの「プライバシーとセキュリティ」項目の「ローカルネットワーク」パネルにあります:

ユニークアプリケーションUUID

4D 20 R9以前では、ビルドされた4Dアプリケーションは、ソースとして使用された4D Volume Desktopまたは4D Serverアプリケーションと同じUUIDを共有していました。

現在では、アプリケーションのビルド時に、ソース4Dアプリケーションとアプリケーション識別子の組み合わせを使用して、UUIDが自動的に設定されます。これにより、あなたのアプリケーションはmacOSシステム上で一意であるとみなされ、同じバージョンの4Dソースアプリケーションを使用する限り、あなたのアプリケーションのUUIDは同じに保たれます。

もちろん、この新しい動作はBuild4Dコンポーネントにも適用されます!

朗報です、ビルドチェーンで何もする必要がなく、何も変更する必要がありません。通常はここで読むのをやめても構いませんが、もし必要であれば、UUIDの完全なコントロールを提供します!これについては次の段落で説明します。

更新された機能

この新機能をサポートするために、File.getAppInfo() 関数を更新し、アプリケーションの実行ファイルに適用したときにアプリケーションのUUIDを返すようにしました。サンプル・コードを以下に示します:

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

以下は結果のサンプルである:

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

さらに、File.setAppInfo() 関数が強化され、必要に応じて独自のUUIDを定義できるようになりました。以下はその方法である:

var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
 
// regenerate uuids for all architectures
For each ($arch; $info.archs)
  $arch.uuid:=Generate UUID
End for each
 
// update the app with the new uuids
$app.setAppInfo($info)

この機能により、macOS環境内でのアプリケーションの独自性と統合性が向上し、デプロイされたアプリケーションのユーザーエクスペリエンスが向上することを期待しています。

よいコーディングを!

Avatar
- プロダクトオーナー - Damien Fuzeauは、2019年2月に4D Productチームに参加しました。プロダクトオーナーとして、ユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換することを担当しています。また、実装された機能が顧客のニーズを満たしているかどうかを確認することも彼の役割です。ナント大学のソフトウェア工学科を卒業。前職の会社では最初は開発者として(1997年に4Dを発見)、後にエンジニアリングマネージャーとソフトウェアアーキテクトとして、23年以上勤務しました。この会社は、4DのOEMパートナーであり、現在は数千のユーザーと数百のサーバーに向けて4Dベースのビジネスソフトを展開しています。ですから、Damienは、多言語環境での4D開発・導入に慣れています。