0Pricing
Swift Academy · Ders

Keychain Erişim Denetimi

Ögeleri biyometri ve cihaz kilidi açma arkasında koruyun.

Keychain Erişim Denetimi, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Gizli Bilgilerin Ne Zaman Okunabileceğini Denetleme

Bir gizli bilgiyi saklamak işin yalnızca yarısıdır; onu ne zaman okuyabileceğinizi de denetlemeniz gerekir. Anahtar Zinciri, öğeleri cihazın kilidinin açılması, parola veya biyometri koşullarına bağlayan erişilebilirlik sınıfları ve erişim denetimi bayrakları sunar. Bu, cihaz kaybolduğunda verileri korur.

import Security
// Two layers of control:
//   kSecAttrAccessible  -> when readable (lock state)
//   SecAccessControl    -> user presence / biometrics

kSecAttrAccessible Anahtarı

kSecAttrAccessible, ekleme sırasında erişilebilirlik sınıfını belirler. Bir öğenin her zaman mı, yalnızca ilk kilit açma işleminden sonra mı, yoksa yalnızca cihazın kilidi açıkken mi kullanılabileceğine karar verir. Özelliğinizin izin verdiği en katı düzeyi seçin.

import Security
let query: [String: Any] = [
    kSecClass as String: kSecClassGenericPassword,
    kSecAttrAccount as String: "user",
    kSecValueData as String: Data("secret".utf8),
    kSecAttrAccessible as String:
        kSecAttrAccessibleWhenUnlocked
]
_ = query

WhenUnlocked

kSecAttrAccessibleWhenUnlocked, öğenin yalnızca cihazın kilidi açıkken okunabilmesini sağlar. Cihaz kilitliyken çalışan arka plan görevleri öğeye erişemez. Bu, çoğu oturum belirteci için makul varsayılandır.

import Security
// Readable only while unlocked; blocked when locked.
let level = kSecAttrAccessibleWhenUnlocked
_ = level

AfterFirstUnlock

kSecAttrAccessibleAfterFirstUnlock, öğenin açılıştan sonraki ilk kilit açma işleminden yeniden başlatmaya kadar okunabilir olmasını sağlar; sonraki kilitlenmelerde bile okunabilir kalır. Bunu, anlık bildirimleri işleyen bir belirteç gibi arka plan işlemlerinin ihtiyaç duyduğu gizli bilgiler için kullanın.

import Security
// Available after the first unlock post-boot,
// including while subsequently locked.
let level = kSecAttrAccessibleAfterFirstUnlock
_ = level

ThisDeviceOnly Varyantları

Her erişilebilirlik sınıfının bir ...ThisDeviceOnly biçimi vardır. Bu öğeler şifrelenmiş yedeklemelere dahil edilmez ve yeni bir cihaza hiçbir zaman aktarılmaz. Bunları, bu donanımdan asla ayrılmaması gereken anahtarlar için kullanın.

import Security
// Never backed up, never migrated:
let local = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
_ = local

Parola Ayarlandığında

kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, öğeyi yalnızca kullanıcının bir parolası varsa saklar ve parola kaldırılırsa öğeyi siler. Gizli bilginin her zaman parolayla korunmasını garanti eder.

import Security
let level =
    kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
// Item vanishes if the user disables their passcode.
_ = level

Kullanıcı Varlığı için SecAccessControl

Kilit durumunun ötesinde, SecAccessControlCreateWithFlags okuma sırasında etkin kullanıcı kimlik doğrulaması (biyometri veya parola) gerektiren bir ilke oluşturur. Bunu erişilebilirlik anahtarı yerine veya onunla birlikte kSecAttrAccessControl aracılığıyla eklersiniz.

import Security
func makeControl() -> SecAccessControl? {
    return SecAccessControlCreateWithFlags(
        nil,
        kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
        .userPresence,
        nil)
}

Erişim Denetimi Bayrakları

Bayraklar gereksinimi ayrıntılandırır: .userPresence, biyometriye veya parola kullanımına fallback sağlar; .biometryCurrentSet, kayıtlı parmak izleri ya da yüzler değişirse öğeyi geçersiz kılar; .devicePasscode, parola girişini zorunlu tutar. Güvenlik gereksinimlerinizi ifade etmek için bunları birleştirin.

import Security
// .userPresence        -> biometric OR passcode
// .biometryAny         -> any enrolled biometric
// .biometryCurrentSet  -> invalidate on biometric change
// .devicePasscode      -> passcode only
let flags: SecAccessControlCreateFlags = [.userPresence]
_ = flags

Korumalı Bir Öğe Ekleme

Biyometriyle korunan bir gizli bilgiyi saklamak için SecAccessControl nesnesini kSecAttrAccessControl altında belirtin. Daha sonraki her okuma, veri döndürülmeden önce kullanıcıdan kimlik doğrulaması yapmasını ister.

import Security
func saveProtected(_ data: Data, account: String,
                   control: SecAccessControl) -> Bool {
    let query: [String: Any] = [
        kSecClass as String: kSecClassGenericPassword,
        kSecAttrAccount as String: account,
        kSecValueData as String: data,
        kSecAttrAccessControl as String: control]
    return SecItemAdd(query as CFDictionary, nil)
        == errSecSuccess
}

Okuma Kullanıcıdan Kimlik Doğrulaması İster

Korumalı bir öğeyi okumak, kimlik doğrulama arayüzünü otomatik olarak açar. İstemin erişimin neden gerektiğini açıklaması için kSecUseOperationPrompt aracılığıyla bir neden dizesi sağlayabilirsiniz. Okuma, kullanıcı kimlik doğrulaması yapana veya iptal edene kadar bekler.

import Security
func readProtected(account: String) -> Data? {
    let query: [String: Any] = [
        kSecClass as String: kSecClassGenericPassword,
        kSecAttrAccount as String: account,
        kSecReturnData as String: true,
        kSecUseOperationPrompt as String:
            String(localized: "Unlock your saved key")]
    var out: CFTypeRef?
    return SecItemCopyMatching(query as CFDictionary,
        &out) == errSecSuccess ? out as? Data : nil
}

Doğru Düzeyi Seçme

İlkeyi riskle eşleştirin:

  • Arka planda kullanılan oturum belirteci: AfterFirstUnlock.
  • Yalnızca kullanıcı arayüzünde kullanılan belirteç: WhenUnlocked.
  • Yüksek değerli gizli bilgi: .userPresence içeren SecAccessControl ve ThisDeviceOnly sınıfı.

Daha katı koruma daha güvenlidir, ancak arka plan erişimini engeller; ikisi arasında denge kurun.

import Security
// High-value: biometric-gated, device-bound, no backup
let control = SecAccessControlCreateWithFlags(
    nil,
    kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
    .userPresence, nil)
_ = control

Hızlı Kontrol

Arka planda ihtiyaç duyulan bir gizli bilgiye hangi erişilebilirlik sınıfının uygun olduğunu hatırlayın.

Özet

Anahtar Zinciri öğelerine erişimi kısıtlamayı öğrendiniz:

  • kSecAttrAccessible, kilit durumuna bağlı kullanılabilirliği belirler: WhenUnlocked, AfterFirstUnlock ve yedeklemeleri atlayan ...ThisDeviceOnly varyantları.
  • WhenPasscodeSetThisDeviceOnly, öğeyi parola bulunması koşuluna bağlar.
  • .userPresence veya .biometryCurrentSet gibi bayraklara sahip SecAccessControl, okuma sırasında kimlik doğrulaması gerektirir.
  • Erişim biçiminize hâlâ izin veren en katı düzeyi seçin.

Sıkça Sorulan Sorular

“Keychain Erişim Denetimi” dersi ücretsiz mi?

Evet — “Keychain Erişim Denetimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Keychain Erişim Denetimi” dersinde ne öğreneceğim?

Ögeleri biyometri ve cihaz kilidi açma arkasında koruyun. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Keychain Erişim Denetimi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gizli Bilgileri Keychain'de Saklama
  2. Keychain Erişim Denetimi
  3. Biyometrik Kimlik Doğrulama
  4. Veri Koruma ve Şifreleme
← Swift Academy Sayfasına Dön