1

次のようなリソースベースのポリシーを返す 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 WebApiANY /{proxy+}プロキシするものです。APIGatewayProxyFunction/WebApi 内には、多数のコントローラーとルートが用意されています。これがすべて AWS にデプロイされた後、with valueを使用して http リクエストを作成できます。このリクエストは へのアクセスのみを提供し、それ以外の場合はすべて 403 を返すことを期待しています。代わりに、スター ポリシーと同様に、API 内のすべてへのアクセスを提供します。GET /amy-headeraGET /a

これは、プロキシ リソースの前で Lambda オーソライザーを使用するときに予期される動作ですか? 実際にはAllow *orのみを強制しているようDeny *です。ありがとうございました。

注 - すべてのリソースが (プロキシによる .NET コントローラーの内部ではなく) 内部で定義されている Api ゲートウェイに対して同じオーソライザーを使用すると、期待される動作が発生するように見えますmy-header。「a」に設定された http 要求は、GET /a、それ以外の場合は 403 を返します。

4

0 に答える 0