【AWS/Python】Lamdaオーソライザー リクエストパラメーター × IPアドレス制限(2/2)
※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。
概要
Lambdaオーソライザーでリクエストパラメーターベースの認証とIPアドレス制限を実装します。 AWSの公式サイトでは、IPアドレス制限はリソースポリシーで実装するのが一般的なようです。 API Gateway リソースポリシーが認証ワークフローに与える影響 - Amazon API Gateway
今回の記事は前回の続きになります。 LambdaオーソライザーでIPアドレス制限を実装していきます。
↓前回の記事はこちら↓ [:title]
IPアドレス制限の実装
IPアドレス制限を実装
前回作成したオーソライザー用のLambda関数に設定を追加します。
ConditionにIPアドレスを設定することも重要ですが、Resourceも重要です。
こちらの変数resourceに入っているAPIメソッドのARN(methodArn)がないと、APIGatewayがIAMポリシーを判定をしてくれません。
api-auth.py
~~~~~~~~~~~~~ def generate_policy(principalId, effect, resource): # if effect and resource: authResponse = { 'principalId': principalId, 'policyDocument': { 'Version': '2012-10-17', 'Statement': [{ 'Action': 'execute-api:Invoke', 'Effect': effect, 'Resource': [resource], ++ 'Condition': { ++ 'IpAddress': { ++ 'aws:SourceIp': ['アクセス許可するIPアドレス'] ++ } ++ } }] }, 'context': { 'stringKey': 'stringval', 'numberKey': 123, 'booleanKey': True } } return authResponse ~~~~~~~~~~~~~
アクセス許可するIPアドレスは、CIDR表記も設定できるようです。
今後に向けて
EFSの記事が後回しになっているので、なんとかしたいな。。。
参考
素晴らしい記事に感謝致します。
API GatewayのCustom AuthorizerでIP制限する - Qiita
API Gateway リソースポリシーの例 - Amazon API Gateway