- API Gateway - Lambda構成のサーバーレスアプリケーションにおけるアクセス制御方法についてメモする。
IAMアクセス権限パターン
- IAM Credential sigv4 を作成し、sigv4を含めてAPIリクエスト
- sigv4の権限を検証する。
- 問題ない場合はLambdaをコールする。
Amazon Cognito UserPoolを利用する
- ユーザーサインアップ(トークン取得)する。
- トークンを含めてAPIリクエストする。
- トークン検証し、Lambdaコールする。
Lambda Authorizer
-
クライアントから認証トーク ンやパラメータ付きのリクエストを行う。
-
Authorizer 関数をコールする。
-
Authorizer 関数内で認証認可ロジックを評価
-
評価結果ポリシーを返却
-
成功例
{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
-
失敗例
{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Deny", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
-
-
-
API Gateway が返却されたポ リシーを評価し、APIロジック用Lambdaをコールする。
Private API
-
特定VPCからのリクエストのみを受け付ける場合、VPCエンドポイント経由アクセスする。
-
API Gatewayのリソースポリシーで制御する。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
-