開発環境の構成

このドキュメントでは、API Gateway 開発環境を構成する方法について説明します。

前提条件

API Gateway で API を作成する前に、次のことを確認してください。

  • 自分が編集者またはオーナーのロールを持つ Google Cloud プロジェクトを作成済みであること。最初のデプロイ後に、ユーザー、グループ、サービス アカウントに対してより制限の厳しい Service Config 編集者のロールを付与できます。

  • 以下の説明に沿って Google Cloud CLI を準備済みであること。

  • 下記の説明に沿って、必要な Google サービスを有効にしたこと。

  • 以下の説明に沿って、API 構成の作成に使用するサービス アカウントを構成します。

Google Cloud CLI のデプロイの準備

デプロイの gcloud の準備を行うには:

  1. gcloud CLI をインストールして初期化します。
  2. gcloud CLI を更新します。
    gcloud components update
  3. gcloud CLI に、データとサービスへのアクセスが許可されていることを確認します。
    gcloud auth login

    新しいブラウザタブが開き、アカウントの選択を求めるプロンプトが表示されます。

  4. デフォルト プロジェクトを設定します。PROJECT_ID を Google Cloud プロジェクト ID に置き換えます。
    gcloud config set project PROJECT_ID 

必要なサービスを有効にする

API Gateway では、次の Google サービスを有効にする必要があります。

名前 タイトル
apigateway.googleapis.com API Gateway API
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com Service Control API

必要なサービスが有効になっていることを確認するには:

gcloud services list

必要なサービスが表示されない場合は、次のコマンドを使用してサービスを有効にします。

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

gcloud サービスの詳細については、gcloud サービスをご覧ください。

サービス アカウントの構成

ゲートウェイにデプロイされた API 構成は、ゲートウェイのサービス アカウントに関連付けられた権限で実行されます。

API Gateway に使用している同じプロジェクトで、別のサービス アカウントを作成することをおすすめします。次に、バックエンド サービスへのアクセスに必要な権限のみをサービス アカウントに割り当てます。これにより、API 構成に関連付けられる権限を制限できます。

API Gateway では、API 構成やゲートウェイを作成または更新するには、サービス アカウント オブジェクトに対する iam.serviceAccounts.actAs 権限が必要です。この権限は、サービス アカウント ユーザーのロールに含まれています。

次のコマンドを使用して、ユーザーのサービス アカウントにロールと権限を追加できます。

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
  --member user:USER_EMAIL \
  --role roles/iam.serviceAccountUser

ここで

  • SERVICE_ACCOUNT_EMAIL は、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com 形式)です。
  • USER_EMAIL はユーザーのメールアドレスです。

次に例を示します。

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
  --member user:myemail@email.com \
  --role roles/iam.serviceAccountUser

また、ゲートウェイのサービス アカウントには、バックエンド サービスへのアクセスに必要な権限が必要です。次に例を示します。

  • Cloud Functions の関数のバックエンドの場合、サービス アカウントには Cloud Functions 起動元のロールが割り当てられている必要があります。
  • Cloud Run バックエンドの場合は、サービス アカウントに Cloud Run 起動元のロールが割り当てられている必要があります。
  • App Engine バックエンドの場合は、IAP アクセスの設定の手順に沿って、ゲートウェイに関連付けられたサービス アカウントに IAP で保護されたウェブアプリ ユーザーのロールを付与する必要があります。

API 構成に関連付けられている権限を制限することで、バックエンド システムの保護を強化できます。詳細については、Identity and Access Management(IAM)のドキュメントをご覧ください。

サービス アカウントを作成したら、--backend-auth-service-account オプションを使用して、API 構成の作成時に対象のサービス アカウントのメールアドレスを指定します。

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION --project=PROJECT_ID \
  --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

API 構成の作成の詳細については、API の作成をご覧ください。

デフォルトのサービス アカウントの使用

一部の GCP プロダクトはデフォルト サービス アカウントを定義しています。たとえば、Compute Engine を使用しており、プロジェクトで Compute Engine API を有効にしている場合は、デフォルトの Compute Engine サービス アカウントが作成されます。デフォルトのサービス アカウントは、アカウントのメールアドレスで識別されます。

PROJECT_NUMBER-compute@developer.gserviceaccount.com

デフォルトのサービス アカウントに必要な権限を割り当てる場合は、API 構成の作成時に --backend-auth-service-account オプションを省略できます。

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION --project=PROJECT_ID

詳細については、Compute Engine のデフォルトのサービス アカウントを使用するをご覧ください。

OpenID Connect の使用

API Gateway からバックエンド サービスへのリクエストは認証を使用する場合があります。これらのリクエストは、ゲートウェイのサービス アカウントによって署名された OpenID Connect(OIDC)トークンを使用して保護されます。バックエンド サービスが、認証と認可用の OIDC トークンを受け入れるように正しく構成されていることを確認する必要があります。Cloud Functions、Cloud Run、Identity Aware Proxy(IAP)でこのオプションを使用できます。

次のステップ