2017-05-17 18 views
2

リソースパスとそのパスパラメータを許可するポリシーを返すカスタムオーソライザを作成する方法はありますか?AWS Api Gatewayパスパラメータでカスタムオーサライザポリシー

例: 許可:/店舗をGET、GET /店舗/ {storeId} 拒否:/ /店舗/ {storeId} GET製品

私が戻ったときので、私は、パスパラメータに問題を抱えていますAPIゲートウェイはGET/stores/123またはGET/stores/555123への呼び出しをブロックします。

答えて

0

このようなポリシーは可能です。

{ 
    "principalId": "user", 
    "policyDocument": { 
    "Version": "2012-10-17", 
    "Statement": [{ 
     "Action": "execute-api:Invoke", 
     "Effect": "Allow", 
     "Resource": "arn:aws:execute-api:eu-central-1:1234567890:9f4xsv4jbl/prod/GET/stores" 
     }, 
     { 
     "Action": "execute-api:Invoke", 
     "Effect": "Deny", 
     "Resource": "arn:aws:execute-api:eu-central-1:1234567890:9f4xsv4jbl/*/GET/stores/{id}" 
     }, 
     { 
     "Action": "execute-api:Invoke", 
     "Effect": "Allow", 
     "Resource": "arn:aws:execute-api:eu-central-1:1234567890:9f4xsv4jbl/prod/GET/stores/*/products" 
     } 
    ] 
    } 
} 
+1

2番目の例の最後の{id}は、特定のIDに置き換えるか、またはすべてのIDを許可する場合を除き、必要に応じて機能しません。 "Resource": "arn:aws:execute-api:eu-central-1:1234567890:9f4xsv4jbl/*/GET/stores/*" –

+1

これは興味深いことです。私はそれらの声明でテストしました。 curl -H 'Authorization:a' https://9f4xsv4jbl.execute-api.eu-central-1.amazonaws.com/prod/stores->が動作します。 curl -H 'Authorization:a' https://9f4xsv4jbl.execute-api.eu-central-1.amazonaws.com/prod/stores/123->権限のないユーザ。 curl -H 'Authorization:a' https://9f4xsv4jbl.execute-api.eu-central-1.amazonaws.com/prod/stores/123/products->が動作します。これは、私がポリシーで具体的なidを指定する必要があることを矛盾させます。 –

+0

私はApiゲートウェイがパス変数をサポートしているとは思わない。 キャッシュとすべてのAPIコールを使用しないことでこれを "解決"しました。カスタム許可者を呼び出して、ALLOWを返します。 DENY arn ..:v1..GET/stores/* –

関連する問題