Firebase ML Android uygulamanızın Bulut kimlik bilgilerini koruyun

Android uygulamanız Firebase ML'nin bulut API'lerinden birini kullanıyorsa uygulamanızı üretimde başlatmadan önce yetkisiz API erişimini önlemek için bazı ek adımlar atmanız gerekir.

Üretim uygulamalarınız için yalnızca kimliği doğrulanmış istemcilerin bulut hizmetlerine erişebilmesini sağlayacaksınız. (Yalnızca root işlemi yapılmamış cihazların açıklanan yöntemi kullanarak kimlik doğrulaması yapabileceğini unutmayın.)

Ardından, test etme ve geliştirme sırasında kolaylık sağlamak için kullanabileceğiniz, yalnızca hata ayıklama amaçlı bir API anahtarı oluşturacaksınız.

1. Üretim uygulamalarınızı Firebase'e kaydedin

Öncelikle üretim uygulamalarınızı Firebase'e kaydedin.

  1. Uygulamanızın SHA-1 imzalarına sahip olduğunuzdan emin olun. Nasıl yapılacağını öğrenmek için İstemcinizin kimliğini doğrulama bölümüne bakın.

  2. Firebase konsolunda Proje ayarlarınıza gidin ve ardından Ayarlar sekmesini seçin.

  3. Uygulamalarınız kartına ilerleyin ve ardından Android uygulamanızı seçin.

  4. Uygulamanızın SHA-1 imzasını uygulamanızın bilgilerine ekleyin.

2. API anahtarlarınızın kapsamını kısıtlayın

Ardından, Cloud Vision API'ye erişime izin vermemek için mevcut API anahtarlarınızı yapılandırın:

  1. Google Cloud konsolunun Kimlik Bilgileri sayfasını açın. İstendiğinde projenizi seçin.

  2. Listedeki mevcut her API anahtarı için düzenleme görünümünü açın.

  3. API kısıtlamaları bölümünde Anahtarı kısıtla seçeneğini seçin ve ardından API anahtarının erişmesini istediğiniz tüm API'leri listeye ekleyin. Cloud Vision API'yi eklemediğinizden emin olun.

    Bir API anahtarının API kısıtlamalarını yapılandırdığınızda, anahtarın erişim sahibi olduğu API'leri açıkça beyan etmiş olursunuz. Varsayılan olarak, API kısıtlamaları bölümünde Anahtarı kısıtlama seçeneği seçili olduğunda, proje için etkinleştirilen herhangi bir API'ye erişmek için bir API anahtarı kullanılabilir.

Artık mevcut API anahtarlarınız bulut makine öğrenimi hizmetlerine erişim vermeyecek ancak her anahtar, API kısıtlama listesine eklediğiniz tüm API'ler için çalışmaya devam edecek.

Gelecekte ek API'leri etkinleştirirseniz bunları geçerli API anahtarı için API kısıtlamaları listesine eklemeniz gerektiğini unutmayın.

3. Yalnızca hata ayıklama amaçlı bir API anahtarı oluşturun ve kullanın

Son olarak yalnızca geliştirme amacıyla kullanılacak yeni bir API anahtarı oluşturun. Firebase ML, emülatörlerde çalıştırma gibi uygulama kimlik doğrulamasının mümkün olmadığı ortamlarda Google Cloud hizmetlerine erişmek için bu API anahtarını kullanabilir.

  1. Geliştirme için kullanılacak yeni bir API anahtarı oluşturun:

    1. Google Cloud konsolunun Kimlik Bilgileri sayfasını açın. İstendiğinde projenizi seçin.

    2. Kimlik bilgileri oluştur > API anahtarı'nı tıklayın ve yeni API anahtarını not edin. Bu anahtar, kimliği doğrulanmamış uygulamalardan API erişimine izin verir; bu nedenle bu anahtarı gizli tutun .

  2. Yeni hata ayıklama API anahtarının yayımlanan uygulamanızla birlikte sızdırılmadığından emin olmak için hata ayıklama API anahtarını yalnızca hata ayıklama derlemeleri için kullanılan bir Android bildirim dosyasında belirtin:

    1. Henüz bir hata ayıklama bildiriminiz yoksa Dosya > Yeni > Diğer > Android Bildirim Dosyası'na tıklayıp hedef kaynak kümelerinden debug seçerek bir tane oluşturun.

    2. Hata ayıklama bildirimine aşağıdaki bildirimi ekleyin:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. Uygulamanızda, Firebase ML'yi, üretimde istemcinizin kimliğini doğrulamak için sertifika parmak izi eşleştirmeyi kullanacak ve yalnızca hata ayıklama derlemelerinde API anahtarlarını (hata ayıklama anahtarı) kullanacak şekilde yapılandırın:

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

Sonraki adımlar

Uygulamanızı diğer Firebase özelliklerini kullanırken başlatılacak şekilde hazırlama hakkında bilgi için başlatma kontrol listesine bakın.