開発環境の構成
このドキュメントでは、API Gateway 開発環境を構成する方法について説明します。
前提条件
API Gateway で API を作成する前に、次のことを確認してください。
自分が編集者またはオーナーのロールを持つ Google Cloud プロジェクトを作成済みであること。最初のデプロイ後に、ユーザー、グループ、サービス アカウントに対してより制限の厳しい Service Config 編集者のロールを付与できます。
以下の説明に沿って Google Cloud CLI を準備済みであること。
下記の説明に沿って、必要な Google サービスを有効にしたこと。
以下の説明に従って、API 構成の作成に使用するサービス アカウントを構成します。
Google Cloud CLI のデプロイの準備
デプロイの gcloud
の準備を行うには:
- gcloud CLI をインストールして初期化します。
- gcloud CLI を更新します。
gcloud components update
- gcloud CLI に、データとサービスへのアクセスが許可されていることを確認します。
gcloud auth login
新しいブラウザタブが開き、アカウントの選択を求めるプロンプトが表示されます。
- デフォルト プロジェクトを設定します。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.comgcloud 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 Run functions、Cloud Run、Identity Aware Proxy(IAP)でこのオプションを使用できます。