Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

FirebaseMLAndroidアプリのクラウドクレデンシャルを保護する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Android アプリで Firebase ML のクラウド API のいずれかを使用している場合は、アプリを本番環境で起動する前に、未承認の API アクセスを防ぐために追加の手順を実行する必要があります。

本番アプリでは、認証されたクライアントのみがクラウド サービスにアクセスできるようにします。 (説明されている方法を使用して認証できるのは、root 化されていないデバイスのみであることに注意してください。)

次に、テストおよび開発中に便利に使用できるデバッグ専用 API キーを作成します。

1.本番アプリを Firebase に登録する

まず、本番アプリを Firebase に登録します。

  1. アプリの SHA-1 署名があることを確認してください。方法については、クライアントの認証を参照してください。

  2. Firebase コンソールで設定の [プロジェクト設定に移動し、 [設定] タブを選択します。

  3. [アプリ]カードまで下にスクロールし、Android アプリを選択します。

  4. アプリの SHA-1 署名をアプリの情報に追加します。

2. API キーの範囲を制限する

次に、Cloud Vision API へのアクセスを禁止するように既存の API キーを構成します。

  1. Google Cloud Console の認証情報ページを開きます。プロンプトが表示されたら、プロジェクトを選択します。

  2. リスト内の既存の API キーごとに、編集ビューを開きます。

  3. [ API 制限]セクションで [キーを制限]を選択し、API キーでアクセスできるようにするすべての API をリストに追加します。 Cloud Vision API を含めないようにしてください。

    API キーのAPI 制限を設定すると、キーがアクセスできる API が明示的に宣言されます。デフォルトでは、 API 制限セクションで [キーを制限しない] が選択されている場合、API キーを使用して、プロジェクトで有効になっている任意の API にアクセスできます。

現在、既存の API キーはクラウド ML サービスへのアクセスを許可しませんが、各キーは、 API 制限リストに追加した API に対して引き続き機能します。

将来、追加の API を有効にする場合は、該当する API キーのAPI 制限リストにそれらを追加する必要があることに注意してください。

3. デバッグ専用 API キーを作成して使用する

最後に、開発専用の新しい API キーを作成します。 Firebase ML は、この API キーを使用して、エミュレータでの実行時など、アプリ認証が不可能な環境で Google Cloud サービスにアクセスできます。

  1. 開発に使用する新しい API キーを作成します。

    1. Google Cloud Console の認証情報ページを開きます。プロンプトが表示されたら、プロジェクトを選択します。

    2. [資格情報の作成] > [API キー]をクリックし、新しい API キーを書き留めます。このキーは、認証されていないアプリからの API アクセスを許可するため、このキーを機密にしてください。

  2. リリースされたアプリで新しいデバッグ API キーが漏洩しないようにするには、デバッグ ビルドにのみ使用される Android マニフェスト ファイルでデバッグ API キーを指定します。

    1. デバッグ マニフェストがまだない場合は、[ファイル] > [新規] > [その他] > [Android マニフェスト ファイル] をクリックし、ターゲット ソース セットから [ debug ] を選択して作成します。

    2. デバッグ マニフェストで、次の宣言を追加します。

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. アプリで、証明書フィンガープリント マッチングを使用して本番環境でクライアントを認証し、デバッグ ビルドでのみ API キー (デバッグ キー) を使用するように Firebase ML を構成します。

    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);

    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)

次のステップ

他の Firebase 機能を使用するときにアプリを起動するための準備については、起動チェックリストをご覧ください。