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

Android uygulamanız Firebase ML'ın bulut API'lerinden birini kullanıyorsa uygulamanızı üretim aşamasına sokmadan önce yetkisiz API erişimini engellemek için birkaç işlem daha yapmanız gerekir.

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

Ardından, test 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şturursunuz.

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. Bunu nasıl yapacağınızı öğrenmek için İstemcinizin kimliğini doğrulama başlıklı makaleyi inceleyin.

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

  3. Uygulamalarınız kartına gidip 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ıtlama

Ardından, mevcut API anahtarlarınızı Cloud Vision API'ye erişime izin vermeyecek şekilde 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'yı seçin ve ardından API anahtarının erişebilmesini istediğiniz tüm API'leri listeye ekleyin. Cloud Vision API'yi dahil etmediğinizden emin olun.

    Bir API anahtarının API kısıtlamalarını yapılandırdığınızda, anahtarın erişebildiği API'leri açıkça belirtirsiniz. Varsayılan olarak, API kısıtlamaları bölümünde Anahtarı kısıtlama seçiliyse proje için etkinleştirilen herhangi bir API'ye erişmek üzere API anahtarı kullanılabilir.

Mevcut API anahtarlarınız artık bulut ML hizmetlerine erişim izni vermeyecek olsa da her anahtar, API kısıtlamaları listesine eklediğiniz API'lerde çalışmaya devam edecektir.

Gelecekte başka API'ler etkinleştirirseniz bunları geçerli API anahtarının API kısıtlamaları listesine eklemeniz gerektiğini unutmayın.

3. Yalnızca hata ayıklama için API anahtarı oluşturma ve kullanma

Son olarak, yalnızca geliştirme için kullanılacak yeni bir API anahtarı oluşturun. Firebase ML, uygulama kimlik doğrulamasının mümkün olmadığı ortamlarda (ör. emülatörlerde çalışırken) 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ınlanan uygulamanızla birlikte sızmaması için hata ayıklama API anahtarını yalnızca hata ayıklama derlemeleri için kullanılan bir Android manifest dosyasında belirtin:

    1. Hata ayıklama manifest dosyanız yoksa Dosya > Yeni > Diğer > Android Manifest Dosyası'nı tıklayıp hedef kaynak kümelerinden debug'yi seçerek bir manifest dosyası oluşturun.

    2. Hata ayıklama manifest dosyasına aşağıdaki beyanı ekleyin:

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

Diğer Firebase özelliklerini kullanırken uygulamanızı kullanıma sunmaya hazırlama hakkında bilgi edinmek için kullanıma sunma yapılacaklar listesine bakın.