API Gatewayの認証・認可の仕組み

API Gatewayの認証・認可の仕組み

Amazon API Gatewayでは、APIへのアクセスを制御するために、さまざまな認証・認可方法を選択できます。ここでは、主な方法とその特徴を初心者向けに解説します。

1. IAMアクセス権限

  • 対応APIタイプ: REST / WebSocket / HTTP
  • 概要:
    • AWSのIAMユーザーが持つアクセスキー(アクセスキーIDとシークレットアクセスキー)を使い、リクエストに署名(AWS署名バージョン4)を付与します。
    • API Gatewayは署名を検証し、正しければAPIの呼び出しを許可します。

2. Lambdaオーソライザ

  • 対応APIタイプ: REST / WebSocket / HTTP
  • 概要:
    • Lambda関数を使って認証・認可を行います。
    • クライアントはBearerトークンやHTTPヘッダに認証情報を付与し、Lambda関数がトークンを検証します。
    • 認証成功時、Lambda関数はIAMポリシーとプリンシパルIDを返し、API Gatewayがアクセス可否を判断します。
    • ポリシーのキャッシュ設定も可能です。
  • 注意:
    • Bearerトークンは漏洩すると第三者もAPIにアクセスできるため、取り扱いに注意が必要です。

API Gateway のlambdaのオーソライザ

3. Cognitoオーソライザ

  • 対応APIタイプ: REST / WebSocket
  • 概要:
    • Amazon Cognitoのユーザープールで認証し、トークン(JWT)を取得します。
    • クライアントはトークンをHTTPヘッダに付与してAPI Gatewayにリクエストします。
    • API GatewayはCognitoでトークンを検証し、問題なければAPI呼び出しを許可します。 API Gateway のCognitoオーソライザ

4. JWTオーソライザ

  • 対応APIタイプ: HTTP
  • 概要:
    • OpenID ConnectやOAuth 2.0を利用した認証方式です。
    • クライアントは認証後にJWTトークンを取得し、HTTPヘッダに付与してAPI Gatewayにリクエストします。
    • API Gatewayはトークンを検証し、正しければAPI呼び出しを許可します。
    • Cognitoをプロバイダに設定することも可能です。
    • 2023年12月時点ではHTTP APIのみ対応しています。

5. 相互TLS認証(mTLS)

  • 対応APIタイプ: REST / HTTP
  • 概要:
    • 通常のTLSはサーバ証明書のみ検証しますが、mTLSではクライアント証明書も検証します。
    • サーバとクライアント双方の正当性を確認でき、より高いセキュリティを実現します。
    • オープンバンキングなど、高いセキュリティ要件やAWS IoTにおけるクライアント認証に対応可能です。

それぞれの認証方式には特徴があるので、用途やセキュリティ要件に応じて選択しましょう。

前のページ: HTTP APIの基礎次のページ: API Gatewayのスロットリング(流量制御)