はじめに
どうも、@to-fmakです。最近、Google CloudのAPI Gatewayを使ってAPI Key認証を有効にしたAPIを作成する機会がありました。本記事では、その手順を簡単に共有します。
API Key認証は、アクセス制御を簡易的に実現したい場合に有効な方法です。
OpenAPIファイルの設定
API GatewayでAPI Keyを使用するには、OpenAPIファイルでAPI Key認証を設定する必要があります。以下は設定例です。
セキュリティ定義の追加
securityDefinitions:
api_key:
type: 'apiKey'
name: 'x-api-key'
in: 'header'
OpenAPIファイル全体の例(一部省略)
swagger: '2.0'
info:
title: 'My Example Config'
...
paths:
/hello:
get:
security:
- api_key: []
...
securityDefinitions:
api_key:
type: 'apiKey'
name: 'x-api-key'
in: 'header'
APIの作成
準備したOpenAPIファイルを使用して、API GatewayでAPIを作成します。詳細な作成手順は割愛します。
認証に API キーを使用する場合は、まずサービスで API キーのサポートを有効にする必要があります。
次のコマンドを入力します。
gcloud services enable MANAGED_SERVICE_NAME
MANAGED_SERVICE_NAME には、API のデプロイ時に作成されたマネージド サービスの名前を指定します。この名前は、コンソールの API ランディング ページにある API の [マネージド サービス] 列で確認できます。また、gcloud api-gateway apis describe コマンドを使用するときに、Managed service プロパティでこの名前を確認できます。
API Keyの作成
「APIとサービス」コンソールを開き、「認証情報」画面を開きます。「認証情報を作成」をクリックします。
「APIキー」をクリックします。
APIキーが表示されるので、メモしておきます。
作成したAPIを選択し、「APIキーを編集」をクリックします。
「APIの制限」で「キーを制限」を選択し、対象のAPI(上記OpenAPIファイルの例だとMy Example Config)を選択します。
動作確認
以下のようにAPI Keyを使用してリクエストを送信します。
curl -X POST -H "x-api-key: {API Key}" "https://{ゲートウェイのURL}/hello"
参考URL
エンジニア募集
Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
ぜひお気軽にカジュアル面談へお越しください!!