SETTINGS.BLOG

APPLE SİSTEM YÖNETİCİLERİNİN BAŞVURU KAYNAĞI

Nedir şu PPPC dedikleri?

Photo by Alex King on Unsplash

Hala Nokia 3310 kullanmaya devam edecek kadar inatçı mısınız? Eğer değilseniz muhtemelen iPhone veya Android tabanlı bir akıllı telefon kullanıyor olmalısınız. (Bu son cümleyi “Çıhar telefonu yiğenim” diyen çizgili polo tişörtlü dayı ses tonuyla da okuyabilirsiniz)

Herhangi bir akıllı telefon sahibiyseniz bilirsiniz ki bu cihazlar birçok şeyi uygulamalar üzerinden yaparlar. Eğer bir bilgisayar kullanıyorsanız birçok işinizi bir modern web tarayıcı ile yapıyor olabilirsiniz. Ama mobil cihazlarda kullanıcı alışkanlıkları bilgisayarlardan biraz daha farklıdır. Akıllı telefon kullanıcıları, tüm işlerini Safari gibi web tarayıcılar aracılığı ile halletmek yerine o iş için tasarlanmış olan uygulamaları kullanmaya meyilli oluyorlar. Hatta bunun için bir kültürel fenomen haline gelmiş bir deyiş bile var: There’s an app for that / O iş için bir uygulama var.

Telefonunuza bir uygulama indirdiğinizde, -diyelim ki bu bir fotoğraf çekme uygulaması olsun- indirdikten sonra ilk defa açarken uygulama sizden bazı izinler ister. Uygulama bir fotoğraf çekme uygulaması olsa bile telefonun kamera donanımına erişim yetkisi bulunmaz. Ve uygulamayı ilk açışınızda “XYZ uygulaması Kameranıza Erişmek istiyor” gibi bir uyarı karşınıza gelir.

TomTom gibi bir navigasyon uygulaması indirdiğinizde, uygulama konum servislerine, haritaya vb erişim izinlerini almış olarak inmez. Önce uygulama iner, ondan sonra kullanıcı hangi servislere izin vermek istiyorsa onlara izin verir. (bu son cümle ile sanıyorum ki Android kullanıcılarını yazının bu noktasında kaybettik)

Mesela telefon için arka plan resimleri, wallpaper’lar barındıran bir uygulama benim kontakt listeme erişmek istiyorsa, buradan bir kötü niyet sezerim ve tabi ki o izni vermem.

Bu konuda Steve Jobs‘un 2010 yılında All Things Digital konferansında Walt Mossberg ve Kara Swisher ile yaptığı röportajın gizlilik ile ilgili bölümünü izleyebilirsiniz (İngilizce).

Yazının bu noktasına kadar anlattıklarımı, kişisel birer akıllı telefon kullanıcısı olan herkesin bildiğini düşünüyorum. Konunun Apple cihaz yönetimi ile de bir ilgisi bulunuyor. Ki zaten bu yazının konusu da bu.

Kullanıcı izinlerine kurumsal taraftan bakış

Kullandığınız MDM çözümü ile yönettiğiniz cihazlara bir uygulama göndermek istediğinizde uygulamayı VPP kapsamında satın alabilir veya PKG / APP / DMG olarak yükleyebilir ve dağıtabilirsiniz. Gönderdiğiniz uygulama, kullanıcının bilgisayarına yüklenir ve kullanıcı üzerine çift tıklayarak istediği an uygulamayı açabilir. Siz de kendinizi bir MDM Admin’i olarak görevini yerine getirmiş olarak düşünebilirsiniz. Ancak gönderdiğiniz uygulama, erişmek istediği çeşitli servisler ve klasörler ile ilgili olarak kullanıcıdan izinler istemeye başlayacaktır.

Eminim ki şu durumu bu yazıyı okuyan herkes en az bir kere yaşamıştır. Zoom uygulamasını bilgisayarınıza indirirsiniz. Ve bir toplantıya katılırsınız. Ne zaman ki sunum yapma sırası size gelir, o zaman Zoom‘un ekran paylaşımı yapmaya izninin olmadığını farkedensiniz. Bu izni verebilmek için toplantı devam ederken Zoom‘u kapatıp açmanız gerekir. Özellikle COVID pandemisi zamanında hepimiz bu veya benzer durumları yaşadık.

Dağıttığınız uygulamanın kullanıcıdan ilgili-ilgisiz zamanlarda birtakım izinleri istememesi için uygulamayı buna hazır bir şekilde göndermelisiniz. Bu izinleri MDM üzerinden verdiğimiz konfigürasyona PPPC yani Privacy Preferences Policy Control diyoruz. Aslında, uygulama dağıtırken şu üç bileşeni birlikte dağıtmalısınız:

• Uygulamanın kendisi: VPP uygulaması veya PKG / DMG / APP olabilir.

• Uygulamanın izinleri: Bu izinleri önceden yapılandırıp bir konfigürasyon profili olarak gönderirsiniz.

• Uygulamanın ayarları: Uygulamayı ayarları önceden yapılandırılmış olarak gönderebilirsiniz. Bu ayarlar .plist veya .mobileconfig uzantılı olabilir.

İzinleri vermek için ne gerekli?

MDM çözümünüz ile dağıtacağınız uygulamaların isteyeceği izinleri vermek için iki bilgiye ihtiyacınız var. Uygulamanın Bundle ID‘si ve Code Requirement bilgisi. Herhangi bir uygulama için bu bilgilere nasıl ulaşabileceğinizi daha önce Bir uygulamanın Bundle ID’sini öğrenmek başlıklı makalede yazmıştım.

Çok kısaca değineyim, Terminal üzerinden codesign -dv ve codesign -dr - komutlarını kullanabilirsiniz. Veya HCS‘in Show Me Your ID uygulamasını kullanarak Bundle ID ve Code Requirement bilgilerine erişebilirsiniz.

Haydi ilk PPPC konfigürasyonumuzu oluşturalım.

Kullandığınız MDM çözümüne göre PPPC konfigürasyonu seçeneklerini aşağıdan görebilirsiniz.

Jamf Pro kullanıyorsanız:

Computers > Configuration Profiles > + New > Privacy Preferences Policy Control > Configure komutunu verdikten sonra açılan ekranda Identifier ve Code Requirement bilgilerini girdikten sonra alt tarafta bulunan App or Service başlığı altından istediğiniz servislere Allow ya da Deny olarak izin verebilirsiniz.

Kandji kullanıyorsanız:

Library > + Add Library Item > Privacy > Add and Configure komutunu verdikten sonra açılan ekranda önce hangi Blueprint‘e atayacağınızı belirleyip Identifier ve Code Requirement bilgilerini girebilirsiniz. Aynı ekranın alt tarafında aynı Jamf Pro’da olduğu gibi App or Service bölümünden tek tek servisler için izin tercihlerinizi belirleyebilirsiniz. Kandji, Jamf’ten farklı bir şekilde sadece Bundle ID‘yi değil, alternatif olarak uygulamanın Path‘ini de kabul ediyor. Identifier Type bölümünden Path seçeneğini işaretlerseniz Identifier bölümüne de uygulamanın bilgisayardaki adresini yazabilirsiniz. /Applications/Telegram.app gibi…

Microsoft Intune kullanıyorsanız:

Devices > Manage Devices > Configuration > + Create > New Policy > Platform: macOS > Profile Type: Settings Catalog > Create komutunu verdikten sonra açılan ekrandan politikanıza bir isim vererek + Add Settings komutunu vermeli ve Settings Picker ekranından Privacy > Privacy Preferences Policy Control seçeneğini seçmelisiniz. (çok yoruyorsun adamı eyy Microsoft)

Settings Picker ekranında tüm PPPC kategorileri görünecektir. Hangileri için izin vermek istiyorsanız onları işaretlemelisiniz. Sonra Settings Picker ekranını X butonuna basarak kapatabilir ve ana ekrana gelmiş olan servis isimlerinin karşılarında bulunan Edit Instance butonuna tıklayarak Bundle ID ve Code Requirement bilgilerini girebilirsiniz.

Hexnode kullanıyorsanız:

Policies > New Policy > New Blank Policy > Select > macOS > Security > Privacy Preferences > Configure komutunu verdikten sonra açılan ekranda önce izinleri verip ondan sonra uygulama ismini ve Bundle ID‘si ile Code Requirement bilgilerini girebilirsiniz. Hexnode, uygulama bilgisini gireceğiniz ekranda kendisinde tanımlı olan uygulamaların listesini de görüntülüyor. Böylece manuel olarak Bundle ID’si ile Code Requirement bilgilerini girmenize gerek kalmıyor.

Filewave kullanıyorsanız:

Filesets > Create Configuration > Create Apple Profile > Security & Privacy > macOS 10.14+ bölümüne ulaştığınızda Privacy and Consent Control bölümünden izinlerini yönetmek istediğiniz uygulamanın Bundle ID‘sini girdiğinizde sağ tarafta Access to Services isminde yeni bir alan görünecektir. Bu alandan Add Row butonuna veya + simgesine tıklayarak izin vermek istediğiniz servisleri seçip tercihinizi oluşturabilirsiniz. Code Requirement bilgisi ancak Bundle ID girildikten ve Access to Services bölümü doldurulmaya başlandıktan sonra görünür.

Bu işin bir kolayı yok mu?

Var. Bazı MDM üreticileri, ana ürünlerini destekleyecek bazı ek yazılımlar geliştiriyorlar. Bu yazılımları bazen GitHub gibi ortamlarda, bazen de AppStore‘da bulabiliyoruz. Jamf’in geliştirdiği PPPC Utility isminde bir küçük uygulama var. Tek tek Bundle ID ve Code Requirement bilgilerini almakla uğraşmadan sürükle-bırak kolaylığında PPPC konfigürasyonları sayabiliyorsunuz.

“Ama bizim şirkette Jamf değil, Workspace One kullanılıyor” dediğinizi duyar gibiyim. Önemli değil, PPPC Utility‘i yine de kullanabilirsiniz. Yukarıdaki ekran fotoğrafında sağ alt köşedeki butonlara bakacak olursanız Save ve Upload seçeneklerini görebilirsiniz. Eğer Jamf Pro kullanıcısı iseniz buradan oluşturacağınız PPPC konfigürasyonunu doğrudan Jamf Pro’nun içine upload edebilirsiniz.

Ama diyelim ki Workspace One veya Kandji kullanıyorsunuz. O zaman da Save butonuna tıklayarak oluşturduğunuz konfigürasyonu bir mobileconfig belgesi olarak kaydedebilir ve kendi kullandığınız MDM’e yükleyebilirsiniz.

PPPC Utility ile ilgili küçük bir uyarı yapmak istiyorum. Diyelim ki uygulamanın içinden bir konfigürasyon oluşturdunuz ve bunu doğrudan Jamf‘e veya kaydederek diğer MDM’lere eklediniz. Ve kullanıcılarınıza dağıttınız. Daha sonraki zamanlarda bir uygulamanın izinleri için PPPC Utility‘de yapacağınız bir değişiklik, Jamf‘teki veya diğer MDM’lerdeki konfigürasyonları değiştirmez. Bu nedenle baştan bir kere tüm uygulamaları kapsayacak şekilde hazırlayıp bir kere gönderdikten sonra yapılacak bir değişikliği MDM’inizin içinden yapmak daha doğru olacaktır.

Nasıl izin vereceğimizi öğrendik, peki neye izin vereceğiz, neyi engelleyeceğiz?

Eğer dağıtacağınız uygulama Zoom ya da Teams gibi hemen her şirkette kullanılan bir uygulama ise işiniz görece daha kolay. Çünkü bu tür bir uygulamanın hangi alanlarının ne gibi izinlere sahip olması gerektiğini ortalama bir IT çalışanı da bilebilir. Ve PPPC konfigürasyonunu buna göre yapabilir.

Ama MDM’iniz ile dağıtacağınız uygulama örneğin Wolfram Mathematica gibi çok kısıtlı bir kullanıcı grubunun kullandığı özel bir uygulama ise, o zaman o uygulamanın ne gibi izinler isteyebileceğini bilemezsiniz. Bunun en doğrusu, o uygulamayı kullanacak olan iş biriminden bir kullanıcının bilgisayarına uygulamayı manuel olarak kurmak ve kullanıcının rutin bir kullanımında ne gibi izinleri isteyeceğini gözlemek olabilir.

Ama buna da her zaman imkan bulamayabilirsiniz. Bu nedenle alternatif olarak uygulamaların kendi içlerinde bulunan Info.plist dosyasında listelenmiş olan izinleri vererek başlayabilirsiniz. Herhangi bir Mac uygulamasına sağ tıkladığınızda Show Package Contents (Paket içeriğini göster) isminde bir seçenek bulunur. Bu seçeneği seçtiğinizde karşınıza bir klasör açılır. Genellikle içinde Contents isimli bir klasör bulunur. Onun da içinde uygulamanın çalışması için gerekli çeşitli dosyaları görebilirsiniz. Bu dosyalar arasında Info.plist isminde bir dosya bulunur ve bu dosya, uygulamanın temelde hangi izinleri neden isteyeceğini yazar.

Yukarıda “temelde hangi izinleri” kapsadığını yazdım. Çünkü Info.plist dosyası, bir uygulamanın toplam olarak isteyebileceği bütün izinleri barındırmayabilir. Uygulamanın kullanımı içinde ek izinler gerekebilir. Dolayısıyla, siz dağıtacağınız uygulamayı bir son kullanıcıya test amaçlı olarak kullandırmadan ve onun görüşlerini almadan önce verilebilecek ilk grup izinleri Info.plist dosyasına bakarak verebilirsiniz.

Info.plist dosyasında NS ile başlayan anahtar isimleri genellikle istenecek olan izinleri belirtir. Bu arada konu dışı bir ek bilgi vereyim. NS ön takısı, NextStep‘ten geliyor. Yani Steve Jobs’un, Apple’da olmadığı yıllarda kurduğu NeXT Computer‘ın geliştirdiği işletim sisteminden. Bugün kullandığımız tüm UNIX tabanlı macOS ve iOS sistemlerinin başlangıç noktası NeXT‘tir.

Her seferde tek tek Show Package Contents komutunu verip Info.plist dosyasından ayıklamak ile uğraşmak yerine şu tek satırlık Terminal komutunu da kullanabilirsiniz.

/usr/libexec/PlistBuddy -c "Print" /Applications/zoom.us.app/Contents/Info.plist | grep -i usage

Burada hangi uygulamanın izinlerine bakmak istiyorsanız kodun ortasındaki uygulamanın ismini ve Path’ini değiştirmeyi unutmayın. Bunun sonucunda aşağıdaki gibi bir cevap alırsınız.

İzin ver / Engelle / Standart kullanıcılar karar versin

PPPC izinlerini yapılandırmaya başladığınızda bazı servislerde Allow ve Deny olmak üzere iki seçenek bulunduğunu görebilirsiniz. Bazılarında sadece Deny bulunur. Bazılarında da Allow Standard User to Approve gibi bir seçenek bulunur. Bunun temel nedeni KVKK ya da GDPR uyumluluğudur.

Bir MDM Admin’i olarak istediğiniz uygulamaya kullanıcının gizliliğini ihlal edebilecek konularda izin veremezsiniz. Örneğin, bir uygulamanın mikrofon iznini otomatik olarak açacak olursanız, o kullanıcının bulunduğu ortamda neler konuştuğunu da dinleyebilmeye başlayabilirsiniz. Ki tahmin edeceğiniz gibi bu tür bir kullanım Apple kara sularına yaklaşamaz bile.

Mikrofon ile ilgili ayarı düzenlemek istiyorsanız yapabileceğiniz tek şey Deny komutunu vermek olur. Bu durumda örneğin Teams uygulamasının mikrofon iznini Deny olarak ayarlarsanız Teams mikrofonu kullanamaz. Ama mikrofon izninde herhangi bir özel tercih yapmazsanız o zaman her mikrofon erişimi gerektiğinde Teams kullanıcıya bunu soracaktır.

Bazı seçeneklerde ise Allow Standard User to Approve gibi bir seçenek görebilirsiniz. O servisi doğrudan Deny komutu ile kapalı tutmak yerine Standart yetkili kullanıcıların da Admin parolası girmeye gerek olmadan o servise izin verebilecekleri anlamına gelir bu. Bu seçeneğin nasıl davrandığını görmek için Screen Capture iznini kontrol edebilirsiniz. Screen Capture seçeneğini tamamen kapalı konuma getirmek, kullanıcıyı Teams veya Zoom‘da ekran paylaşamaz bir hale getirecektir. Bu nedenle, gerektiğinde uygulamanın bu izni istemesi ve Standart yetkili kullanıcıların da bu izni tek seferlik olarak verebilmeleri için Allow Standard User to Approve seçeneğini kullanabilirsiniz.

Tüm çarşı izinleri iptal

Herhangi bir nedenle bir uygulamaya verilmiş izinlerin tamamını iptal etmek istiyorsanız TCC komutlarını kullanabilirsiniz. Bu arada TCC, Transparency, Consent and Control anlamına gelir. Ve bazı dokümantasyonlarda PPPC yerine kullanıldığını görebilirsiniz. Terminal üzerinde TCC veritabanı üzerinde işlem yapabilmenizi sağlayan komut setinin ismi tccutil‘dir. İşlem yapabilmenizi derken, tccutil komutları izinleri verebilmenizi değil, verilmiş izinleri silebilmenizi sağlar.

Herhangi bir uygulamaya verilmiş tüm izinleri iptal etmek için aşağıdaki komutu kullanabilirsiniz.

tccutil reset All [bundle_id]

Örneğin, Telegram uygulamasına verilmiş izinlerin tamamını kaldırmak için Telegram’ın Bundle ID’sini yazabilirsiniz.

tccutil reset All ru.keepcoder.Telegram

Eğer bir uygulamadan verilmiş tüm izinleri kaldırmak yerine sadece bir tek izni kaldırmak istiyorsanız All kelimesi yerine servisin adını yazmalısınız. Şunun gibi:

tccutil reset Microphone ru.keepcoder.Telegram

Eğer mikrofona verilmiş olan izinleri sadece bir uygulama için değil de tüm uygulamalar için kaldırmak istiyorsanız aşağıdaki kodu kullanabilirsiniz.

tccutil reset Microphone

Tüm PPPC servislerinin isimlerini ezbere bilemezsiniz elbette. Bunun için Apple’ın Developer dokümantasyonunu kullanabilirsiniz. Sıralı tam liste bu adreste bulunuyor.



Discover more from SETTINGS.BLOG

Subscribe to get the latest posts sent to your email.

Yorum bırakın

SETTINGS.BLOG'dan daha fazla içerik

Yeni gönderilerden haberdar olmak için abone olun.

Okumaya devam edin