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

FirebaseMLAppleアプリのクラウドクレデンシャルを保護します

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

1. 既存の 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 制限リストにそれらを追加する必要があることに注意してください。

2. Firebase ML で使用する新しい API キーを作成する

次に、Cloud Vision API の呼び出しのみを許可する Firebase ML 用の新しい API キーを作成します。

  1. 資格情報ページに戻ります。 Firebase プロジェクトがまだ選択されていることを確認してください。

  2. [資格情報の作成] > [API キー] をクリックします。新しい API キーを書き留めてから、[ Restrict key ] をクリックします。

  3. [ API 制限]セクションで [キーを制限]を選択し、Cloud Vision APIのみをリストに追加します。

この API キーは、Cloud Vision API へのアクセスのみを許可し、Firebase ML がクラウドベースのモデルにアクセスするために使用できます。

キーが侵害された場合の影響を軽減するには、Cloud Vision API のユーザーあたりの割り当てをデフォルト設定から減らす必要があります。そうするために:

  1. Google Cloud Console のCloud Vision API 割り当てページを開きます。プロンプトが表示されたら、プロジェクトを選択します。

  2. [リクエスト]セクションで、ユーザー クォータごとの 1 分あたりのリクエスト数をアプリに適した値に設定します。たとえば、アプリでドキュメントの画像をアップロードしてテキストを取得する必要がある場合、ユーザーが数秒に 1 回以上アップロードすることはほとんどないため、30 ~ 40 のクォータがおそらく安全です。

    このコンテキストでは、「ユーザーごとのリクエスト」は単一の IP アドレスからのリクエストを指すことに注意してください。複数のユーザーが NAT の背後から同時にアプリを使用することが予想される場合は、これを考慮する必要があります。

4. Firebase ML API キーを使用して Cloud API を呼び出す

最後に、アプリで新しい API キーを使用するように Firebase ML を構成します。

Firebase ML API キーは Cloud Vision API への認証されていないアクセスを許可するため、不正使用や請求先アカウントへの課金を防ぐために、キーを秘密にしておくことが重要です。そのためには、アプリのバイナリに API キーを含めないようにする必要があります。代わりに、アプリの実行時に、既知の適切なユーザーがサインインしていることを確認してから、サーバーから API キーを取得します。

これらのプラクティスが守られている場合でも、API キーが危険にさらされる可能性があります。上記のように API のユーザーごとのクォータを削減する、キー ローテーション ポリシーを実装する、異なるユーザー グループに異なるキーを発行するなど、侵害されたキーの影響を軽減するための措置を講じる必要があります。

アプリが安全に API キーを取得した後、Firebase ML Cloud API を呼び出す場合は、キーを指定します。

迅速

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Objective-C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

さらに、API キーの保護の一般的なアドバイスに従う必要があります。

次のステップ

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