Android'de Play Integrity ile Uygulama Kontrolünü Etkinleştirin

Bu sayfa, yerleşik Play Integrity sağlayıcısını kullanarak bir Android uygulamasında Uygulama Kontrolü'nü nasıl etkinleştireceğinizi gösterir. Uygulama Kontrolü'nü etkinleştirdiğinizde, projenizin Firebase kaynaklarına yalnızca uygulamanızın erişebilmesini sağlamaya yardımcı olursunuz. Bu özelliğe Genel Bakış'a bakın.

Şu anda yerleşik Play Integrity sağlayıcısı yalnızca Google Play tarafından dağıtılan Android uygulamalarını desteklemektedir. Play Integrity'nin Play dışı özelliklerini kullanmak veya Uygulama Kontrolü'nü kendi özel sağlayıcınızla kullanmak için bkz. Özel bir Uygulama Kontrolü sağlayıcısı uygulama .

1. Firebase projenizi kurun

  1. Henüz yapmadıysanız , Android projenize Firebase'i ekleyin .

  2. Play Integrity API'sini etkinleştirin:

    1. Google Play Console'da uygulamanızı seçin veya henüz yapmadıysanız ekleyin.

    2. Sürüm bölümünde, Kurulum > Uygulama bütünlüğü öğesine tıklayın.

    3. Integrity API sayfasında, Projeyi bağla 'yı tıklayın, ardından Google Cloud projeleri listesinden Firebase projenizi seçin.

      Burada seçtiğiniz proje, uygulamanızı kaydettirdiğiniz projeyle aynı Firebase projesi olmalıdır (bir sonraki adıma bakın).

  3. Firebase konsolunun Uygulama Kontrolü bölümündeki Play Integrity sağlayıcısı ile Uygulama Kontrolü'nü kullanmak için uygulamalarınızı kaydedin. Uygulamanızın imzalama sertifikasının SHA-256 parmak izini sağlamanız gerekecektir.

    Bir Firebase ürünü için zorlamayı etkinleştirdiğinizde, yalnızca kayıtlı uygulamalar ürünün arka uç kaynaklarına erişebileceğinden, genellikle projenizin tüm uygulamalarını kaydetmeniz gerekir.

  4. İsteğe bağlı : Uygulama kaydı ayarlarında, sağlayıcı tarafından verilen Uygulama Kontrolü belirteçleri için özel bir yaşam süresi (TTL) ayarlayın. TTL'yi 30 dakika ile 7 gün arasında herhangi bir değere ayarlayabilirsiniz. Bu değeri değiştirirken aşağıdaki ödünleşimlerin farkında olun:

    • Güvenlik: Daha kısa TTL'ler daha güçlü güvenlik sağlar çünkü sızdırılmış veya ele geçirilmiş bir belirtecin bir saldırgan tarafından kötüye kullanılabileceği pencereyi azaltır.
    • Performans: Daha kısa TTL'ler, uygulamanızın daha sık doğrulama gerçekleştireceği anlamına gelir. Uygulama doğrulama işlemi, her gerçekleştirildiğinde ağ isteklerine gecikme eklediğinden, kısa bir TTL uygulamanızın performansını etkileyebilir.
    • Kota ve maliyet: Daha kısa TTL'ler ve sık sık yeniden tasdik kotanızı daha hızlı tüketir ve ücretli hizmetler için potansiyel olarak daha pahalıya mal olur. Kotalar ve sınırlar konusuna bakın.

    1 saatlik varsayılan TTL, çoğu uygulama için uygundur. Uygulama Kontrolü kitaplığının belirteçleri TTL süresinin yaklaşık yarısında yenilediğini unutmayın.

2. Uygulama Kontrolü kitaplığını uygulamanıza ekleyin

Firebase Android BoM kullanarak, modülünüzdeki (uygulama düzeyi) Gradle dosyanızdaki (genellikle app/build.gradle ) App Check Android kitaplığına bağımlılığı bildirin.

Java

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:30.3.1')

    // Declare the dependency for the App Check library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity'
}

Firebase Android BoM'yi kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

(Alternatif) BoM kullanmadan Firebase kitaplık bağımlılıklarını bildirin

Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ederiz, bu da tüm sürümlerin uyumlu olmasını sağlar.

dependencies {
    // Declare the dependency for the App Check library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity:16.0.0'
}

Kotlin+KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:30.3.1')

    // Declare the dependency for the App Check library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity'
}

Firebase Android BoM'yi kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

(Alternatif) BoM kullanmadan Firebase kitaplık bağımlılıklarını bildirin

Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ederiz, bu da tüm sürümlerin uyumlu olmasını sağlar.

dependencies {
    // Declare the dependency for the App Check library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity:16.0.0'
}

3. Uygulama Kontrolünü Başlatın

Diğer Firebase SDK'larını kullanmadan önce çalışması için uygulamanıza aşağıdaki başlatma kodunu ekleyin:

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        PlayIntegrityAppCheckProviderFactory.getInstance());

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    PlayIntegrityAppCheckProviderFactory.getInstance()
)

Uygulama Kontrolü kitaplığı uygulamanıza yüklendikten sonra, güncellenen uygulamayı kullanıcılarınıza dağıtmaya başlayın.

Güncellenen istemci uygulaması, Firebase'e yaptığı her istekle birlikte Uygulama Kontrolü belirteçleri göndermeye başlayacak, ancak Firebase ürünleri, Firebase konsolunun Uygulama Kontrolü bölümünde zorlamayı etkinleştirene kadar belirteçlerin geçerli olmasını gerektirmeyecek. Ayrıntılar için sonraki iki bölüme bakın.

4. İstek metriklerini izleyin

Güncellenen uygulamanız artık kullanıcıların elinde olduğuna göre, kullandığınız Firebase ürünleri için Uygulama Kontrolü'nün uygulanmasını etkinleştirebilirsiniz. Ancak bunu yapmadan önce, bunu yapmanın mevcut meşru kullanıcılarınızı kesintiye uğratmayacağından emin olmalısınız.

Gerçek Zamanlı Veritabanı, Bulut Firestore ve Bulut Depolama

Realtime Database, Cloud Firestore ve Cloud Storage için bu kararı vermek için kullanabileceğiniz önemli bir araç, Uygulama Kontrolü istek ölçümleri ekranıdır.

Bir ürün için Uygulama Kontrolü istek metriklerini görüntülemek için Firebase konsolunun Uygulama Kontrolü bölümünü açın. Örneğin:

Uygulama Kontrolü metrikleri sayfasının ekran görüntüsü

Her ürün için istek metrikleri dört kategoriye ayrılmıştır:

  • Doğrulanmış istekler, geçerli bir Uygulama Kontrolü belirtecine sahip isteklerdir. Uygulama Kontrolü zorlamasını etkinleştirdikten sonra yalnızca bu kategorideki istekler başarılı olur.

  • Güncel olmayan istemci istekleri, Uygulama Kontrolü belirtecinin eksik olduğu isteklerdir. Bu istekler, Uygulama Kontrolü uygulamaya dahil edilmeden önce Firebase SDK'nın daha eski bir sürümünden olabilir.

  • Bilinmeyen kaynak istekleri, bir Uygulama Kontrolü belirtecinin eksik olduğu isteklerdir ve Firebase SDK'sından gelmemiş gibi görünürler. Bunlar, çalınan API anahtarlarıyla yapılan isteklerden veya Firebase SDK'sı olmadan yapılan sahte isteklerden olabilir.

  • Geçersiz istekler, uygulamanızın kimliğine bürünmeye çalışan orijinal olmayan bir istemciden veya öykünülmüş ortamlardan gelen geçersiz Uygulama Kontrolü belirtecine sahip isteklerdir.

Uygulamanız için bu kategorilerin dağılımı, yaptırımı etkinleştirmeye karar verdiğinizde bilgi vermelidir. İşte bazı yönergeler:

  • Son isteklerin neredeyse tamamı doğrulanmış istemcilerden geliyorsa, arka uç kaynaklarınızı korumaya başlamak için yaptırımı etkinleştirmeyi düşünün.

  • Son isteklerin önemli bir kısmı muhtemelen eski müşterilerden geliyorsa, kullanıcıları rahatsız etmemek için yaptırımı etkinleştirmeden önce daha fazla kullanıcının uygulamanızı güncellemesini beklemeyi düşünün. Yayınlanan bir uygulamada Uygulama Kontrolü'nün zorunlu kılınması, Uygulama Kontrolü SDK'sı ile entegre olmayan önceki uygulama sürümlerini bozacaktır.

  • Uygulamanız henüz başlatılmadıysa, kullanımda olan herhangi bir eski istemci olmadığından Uygulama Kontrolü zorlamasını hemen etkinleştirmelisiniz.

Bulut İşlevleri

Cloud Functions için, işlevlerinizin günlüklerini inceleyerek Uygulama Kontrolü ölçümlerini alabilirsiniz. Çağrılabilir bir işlevin her çağrısı, aşağıdaki örnekte olduğu gibi yapılandırılmış bir günlük girişi yayar:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Aşağıdaki metrik filtresiyle günlük tabanlı bir sayaç metriği oluşturarak bu metrikleri Google Cloud Console'da analiz edebilirsiniz:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

jsonPayload.verifications.appCheck alanını kullanarak metriği etiketleyin.

5. Zorlamayı etkinleştirin

Zorlamayı etkinleştirmek için her bir ürün için aşağıdaki talimatları izleyin. Bir ürün için yaptırımı etkinleştirdiğinizde, o ürüne yönelik tüm doğrulanmamış istekler reddedilir.

Gerçek Zamanlı Veritabanı, Bulut Firestore ve Bulut Depolama

Realtime Database, Cloud Firestore (iOS ve Android) ve Cloud Storage için zorlamayı etkinleştirmek için:

  1. Firebase konsolunun Uygulama Kontrolü bölümünü açın.

  2. Zorlamayı etkinleştirmek istediğiniz ürünün metrik görünümünü genişletin.

  3. Zorla'yı tıklayın ve seçiminizi onaylayın.

Zorunluluğu etkinleştirdikten sonra yürürlüğe girmesinin 15 dakika kadar sürebileceğini unutmayın.

Bulut İşlevleri

Bulut İşlevleri için Uygulama Kontrolü zorlamasını etkinleştirme bölümüne bakın.

Sonraki adımlar

Uygulamanızı Uygulama Kontrolü için kaydettirdikten sonra, uygulamanızı, geliştirme sırasındaki bir öykünücü gibi veya bir sürekli entegrasyon (CI) ortamından, Uygulama Kontrolü'nün normalde geçerli olarak sınıflandırmadığı bir ortamda çalıştırmak istiyorsanız, şunları yapabilirsiniz: gerçek bir doğrulama sağlayıcısı yerine Uygulama Kontrolü hata ayıklama sağlayıcısını kullanan uygulamanızın bir hata ayıklama derlemesini oluşturun.

Android'de Hata Ayıklama Sağlayıcısı ile Uygulama Denetimini Kullanma konusuna bakın.