API anahtarınızın güvenliğini sağlamak için Uygulama Kontrolü'nü kullanma

Firebase Uygulama Kontrolü, meşru uygulamalar dışındaki kaynaklardan gelen trafiği engelleyerek uygulamanızdan Google Haritalar Platformu'na yapılan çağrılar için koruma sağlar. Bunu, Play Integrity gibi bir doğrulama sağlayıcıdan jeton olup olmadığını kontrol ederek yapar. Uygulamalarınızı Uygulama Kontrolü ile entegre etmek, kötü amaçlı isteklere karşı koruma sağlar. Böylece yetkisiz API çağrıları için sizden ücret alınmaz.

App Check benim için uygun mu?

Uygulama Denetleme çoğu durumda önerilir ancak aşağıdaki durumlarda Uygulama Denetleme gerekli değildir veya desteklenmez:

  • Orijinal Places SDK'sını kullanıyorsunuz. Uygulama Denetleme yalnızca Yerler SDK'sı (Yeni) için desteklenir.
  • Özel veya deneysel uygulamalar. Uygulamanıza herkes erişemiyorsa Uygulama Kontrolü'ne gerek yoktur.
  • Uygulamanız yalnızca sunucudan sunucuya kullanılıyorsa Uygulama Denetimi gerekli değildir. Ancak GMP ile iletişim kuran sunucu herkese açık istemciler (mobil uygulamalar gibi) tarafından kullanılıyorsa GMP yerine bu sunucuyu korumak için Uygulama Denetimi'ni kullanmayı düşünebilirsiniz.
  • App Check'in önerdiği doğrulama sağlayıcıları, doğrulama sağlayıcınız tarafından güvenliği ihlal edilmiş veya güvenilir olmadığı kabul edilen cihazlarda çalışmaz. Bu tür cihazları desteklemeniz gerekiyorsa özel bir doğrulama hizmeti dağıtabilirsiniz. Daha fazla bilgi için talimatları inceleyin.

Uygulama adımlarına genel bakış

Uygulamanızı App Check ile entegre etmek için uygulamanız gereken adımlar özet olarak aşağıda verilmiştir:

  1. Firebase'i uygulamanıza ekleyin.
  2. App Check kitaplığını ekleyin ve başlatın.
  3. Jeton sağlayıcıyı ekleyin.
  4. Hata ayıklamayı etkinleştirin.
  5. Uygulama isteklerinizi izleyin ve yaptırım konusunda karar verin.

App Check ile entegrasyon yaptıktan sonra Firebase konsolunda arka uç trafik metriklerini görebilirsiniz. Bu metrikler, isteklerin geçerli bir Uygulama Kontrolü jetonu içerip içermediklerine göre dökümünü sağlar. Daha fazla bilgi için Firebase Uygulama Kontrolü dokümanlarını inceleyin.

Çoğu isteğin meşru kaynaklardan geldiğinden ve kullanıcıların uygulamanızın, Uygulama Denetleme'yi uygulamanızı içeren en son sürümüne güncellendiğinden emin olduğunuzda yaptırımı etkinleştirebilirsiniz. Zorunlu kılma etkinleştirildikten sonra Uygulama Kontrolü, geçerli bir Uygulama Kontrolü jetonu olmayan tüm trafiği reddeder.

App Check entegrasyonunu planlarken dikkat edilmesi gerekenler

Entegrasyonunuzu planlarken göz önünde bulundurmanız gereken bazı noktalar:

  • Önerdiğimiz Play Integrity doğrulama sağlayıcısının Standart API kullanım katmanı için günlük bir çağrı sınırı vardır. Arama sınırları hakkında daha fazla bilgi için Google Play Integrity geliştirici dokümanlarında yer alan Kurulum sayfasına bakın.

    Özel bir doğrulama sağlayıcı kullanmayı da seçebilirsiniz ancak bu gelişmiş bir kullanım alanıdır. Daha fazla bilgi için Özel bir App Check sağlayıcısı uygulama başlıklı makaleyi inceleyin.

  • Uygulamanızın kullanıcıları, uygulamayı başlatırken biraz gecikme yaşayabilir. Ancak daha sonra, arka planda düzenli olarak yeniden doğrulama yapılır ve kullanıcılar artık gecikme yaşamaz. Başlangıçtaki gecikmenin tam miktarı, seçtiğiniz doğrulama sağlayıcıya bağlıdır.

    Uygulama Kontrolü jetonunun geçerlilik süresi (geçerlilik süresi veya TTL), yeniden doğrulamaların sıklığını belirler. Bu süre Firebase konsolunda yapılandırılabilir. Yeniden doğrulama, TTL'nin yaklaşık yarısı geçtiğinde gerçekleşir. Daha fazla bilgi için doğrulama sağlayıcınızın Firebase dokümanlarına bakın.

Uygulamanızı App Check ile entegre etme

Ön koşullar ve şartlar

  • 4.1 veya sonraki bir sürüm Places SDK'sının entegre edildiği bir uygulama.
  • Uygulamanızın SHA-256 parmak izi.
  • Uygulamanızın paket adı.
  • Cloud Console'da uygulamanın sahibi olmanız gerekir.
  • Cloud Console'daki uygulamanın proje kimliğine ihtiyacınız vardır.

1. adım: Firebase'i uygulamanıza ekleyin

Firebase'i uygulamanıza eklemek için Firebase geliştirici dokümanlarında yer alan talimatları uygulayın.

2. adım: App Check kitaplığını ekleyin ve App Check'i başlatın

Varsayılan doğrulama sağlayıcısı olan Play Integrity'yi kullanma hakkında bilgi edinmek için Android'de Play Integrity ile App Check'i kullanmaya başlama başlıklı makaleyi inceleyin.

  1. Henüz yapmadıysanız Yerler SDK'sını uygulamanıza entegre edin.
  2. Ardından Uygulama Kontrolü'nü ve Yerler istemcisini başlatın.

    // Initialize App Check
    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance());
      
    // Initialize Places SDK
    Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
    PlacesClient client = Places.createClient(context);.

3. Adım: Jeton sağlayıcıyı ekleyin

Places API'yi başlattıktan sonra PlacesAppCheckTokenProvider değerini ayarlamak için setPlacesAppCheckTokenProvider() işlevini çağırın.

Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
Places.setPlacesAppCheckTokenProvider(new TokenProvider());
PlacesClient client = Places.createClient(context);.

Aşağıda, jeton alıcı arayüzünün örnek bir uygulaması verilmiştir:

  /** Sample client implementation of App Check token fetcher interface. */
  static class TokenProvider implements PlacesAppCheckTokenProvider {
    @Override
    public ListenableFuture<String> fetchAppCheckToken() {
      SettableFuture<String> future = SettableFuture.create();
      FirebaseAppCheck.getInstance()
          .getAppCheckToken(false)
          .addOnSuccessListener(
              appCheckToken -> {
                future.set(appCheckToken.getToken());
              })
          .addOnFailureListener(
              ex -> {
                future.setException(ex);
              });

      return future;
    }
  }

4. Adım: Hata ayıklamayı etkinleştirin (isteğe bağlı)

Uygulamanızı yerel olarak geliştirip test etmek veya sürekli entegrasyon (CI) ortamında çalıştırmak istiyorsanız geçerli App Check jetonları almak için hata ayıklama gizlisi kullanan uygulamanızın hata ayıklama derlemesini oluşturabilirsiniz. Bu sayede hata ayıklama derlemenizde gerçek doğrulama sağlayıcıları kullanmaktan kaçınabilirsiniz.

Uygulamanızı bir emülatörde veya test cihazında çalıştırmak için:

  • App Check kitaplığını build.gradle dosyanıza ekleyin.
  • Hata ayıklama derlemenizdeki hata ayıklama sağlayıcı fabrikasını kullanacak şekilde App Check'i yapılandırın.
  • Uygulamayı başlatın. Bu işlem, yerel bir hata ayıklama jetonu oluşturur. Bu jetonu Firebase konsoluna ekleyin.
  • Daha fazla bilgi ve talimat için Uygulama Denetleme dokümanlarına bakın.

Uygulamanızı bir CI ortamında çalıştırmak için:

  • Firebase konsolunda bir hata ayıklama jetonu oluşturun ve bu jetonu CI sisteminizin güvenli anahtar deposuna ekleyin.
  • App Check kitaplığını build.gradle dosyanıza ekleyin.
  • CI derleme varyantınızı, hata ayıklama jetonunu kullanacak şekilde yapılandırın.
  • Test sınıflarınızda, App Check jetonu gerektiren kodu DebugAppCheckTestHelper ile sarmalayın.
  • Daha fazla bilgi ve talimat için Uygulama Denetleme dokümanlarına bakın.

5. adım: Uygulama isteklerinizi izleyin ve yaptırım kararı alın

Yaptırıma başlamadan önce, uygulamanızın meşru kullanıcılarını rahatsız etmeyeceğinden emin olmak istersiniz. Bunu yapmak için uygulamanızın trafiğinin ne kadarının doğrulanmış, güncel olmayan veya meşru olmadığını görmek üzere Uygulama Kontrolü metrik ekranını ziyaret edin. Trafiğinizin büyük kısmının doğrulandığını gördükten sonra yaptırımı etkinleştirebilirsiniz.

Daha fazla bilgi ve talimat için Firebase Uygulama Kontrolü dokümanlarını inceleyin.