次のようなリソースベースのポリシーを返す Lambda オーソライザー (python) があります。
import json
def lambda_handler(event, context):
resource = "*"
headerValue = _get_header_value(event, 'my-header')
if headerValue == 'a':
resource = "arn:aws:execute-api:*:*:*/*/GET/a"
return {
"principalId": f"somebody",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": f"{resource}"
}
]
}
}
基本的に、このオーソライザーはデフォルトで無制限の api リソース ポリシーを返します*
。ただし、特定のヘッダー値が渡された場合、ポリシーはアクセスを allow のみに制限しますGET /a
。
ApiGateway 側では、私が持っている唯一のリソースは、APIGatewayProxyFunction を使用して .NET Core WebApiにANY /{proxy+}
プロキシするものです。APIGatewayProxyFunction/WebApi 内には、多数のコントローラーとルートが用意されています。これがすべて AWS にデプロイされた後、with valueを使用して http リクエストを作成できます。このリクエストは へのアクセスのみを提供し、それ以外の場合はすべて 403 を返すことを期待しています。代わりに、スター ポリシーと同様に、API 内のすべてへのアクセスを提供します。GET /a
my-header
a
GET /a
これは、プロキシ リソースの前で Lambda オーソライザーを使用するときに予期される動作ですか? 実際にはAllow *
orのみを強制しているようDeny *
です。ありがとうございました。
注 - すべてのリソースが (プロキシによる .NET コントローラーの内部ではなく) 内部で定義されている Api ゲートウェイに対して同じオーソライザーを使用すると、期待される動作が発生するように見えますmy-header
。「a」に設定された http 要求は、GET /a
、それ以外の場合は 403 を返します。