アプリケーションでユーザーからのリクエストを処理する場合は、許可されたユーザーのみにアクセスを制限することをおすすめします。ユーザーには、Google Cloud プロジェクトまたは Cloud Run サービスに関する IAM 権限は通常ありません。
次の 2 種類のユーザーを区別します。
- エンドユーザー: 必ずしも組織に属していないアプリケーションのユーザー。通常はアカウントを自分で登録する必要があります。
- 内部ユーザー: 組織の管理者からアプリケーションへのアクセスが明示的に許可されているユーザー。通常は組織に属しています。
エンドユーザーを認証する
メールアドレスとパスワード、電話番号、Google、Facebook、GitHub などのソーシャル プロバイダ、カスタム認証メカニズムを使用してユーザーの認証を行う場合は、Identity Platform を使用できます。Firebase Authentication の使用方法は、Identity Platform を使用する場合と同様です。
ログインフローを処理し、Cloud Run サービスに対して認証 API 呼び出しを実行する一般公開されたウェブアプリまたはモバイルアプリが必要です。この一般公開されたウェブアプリ自体を、公開 Cloud Run サービスでホストできます。
エンドユーザー認証に Identity Platform を使用する方法の詳細については、Cloud Run でのエンドユーザー認証のチュートリアルをご覧ください。
Cloud Run サービスに、ID トークンを検証するためのコードを追加します。
ウェブアプリまたはモバイルアプリで、次の操作を行います。
- 適切な Firebase Authentication クライアント ライブラリを使用して、ID トークンを取得します。
- Android:
GetTokenResult().getToken()
メソッドを使用します。 - iOS:
User.getIDTokenResult(completion:)
メソッドを使用します。 - ウェブ:
firebase.User.getIdToken()
メソッドを使用します。
- Android:
- サービスに対するリクエストの
Authorization: Bearer ID_TOKEN
ヘッダーに ID トークンを含めます。
- 適切な Firebase Authentication クライアント ライブラリを使用して、ID トークンを取得します。
ユーザーのプロフィール情報にアクセスするには、次のいずれかの方法を使用できます。
- Firebase Admin SDK を使用してネットワーク リクエストを送信し、ユーザーデータを取得します。
- Google API クライアント ライブラリを使用して、選択したランタイムに最も適した方法でユーザーデータを取得します。
この認証方法を使用するアプリケーションのエンドツーエンドのチュートリアルについては、Cloud Run のチュートリアルをご覧ください。
内部ユーザーを認証する
内部ユーザーの認証には、Identity-Aware Proxy を使用できます。
既存の Cloud Run サービスに Identity-Aware Proxy を設定するには、Cloud Run 用に Identity-Aware Proxy を有効にする方法のドキュメントをご覧ください。
OAuth 2.0 を使用して、Identity-Aware Proxy で保護された Cloud Run サービスに対してユーザーまたはサービス アカウントを認証する方法については、プログラムによる認証のドキュメントをご覧ください。