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にアクセスできるため、取り扱いに注意が必要です。
3. Cognitoオーソライザ
- 対応APIタイプ: REST / WebSocket
- 概要:
- Amazon Cognitoのユーザープールで認証し、トークン(JWT)を取得します。
- クライアントはトークンをHTTPヘッダに付与してAPI Gatewayにリクエストします。
- API GatewayはCognitoでトークンを検証し、問題なければAPI呼び出しを許可します。
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におけるクライアント認証に対応可能です。
それぞれの認証方式には特徴があるので、用途やセキュリティ要件に応じて選択しましょう。