API Gateway リソースポリシーの例 - Amazon API Gateway

API Gateway リソースポリシーの例

このページでは、API Gateway リソースポリシーの一般的なユースケースの例をいくつか紹介します。

以下のポリシー例では、API リソースの指定に略式構文を使用しています。この略式構文では、完全な Amazon リソースネーム (ARN) を指定する代わりに、簡略化された方法を使用して API リソースを参照できます。略式構文は API Gateway によってポリシーの保存時に完全な ARN に変換されます。たとえば、リソース execute-api:/stage-name/GET/pets をリソースポリシーで指定できます。リソースポリシーを保存すると、API Gateway によってリソースが arn:aws:execute-api:us-east-2:123456789012:aabbccddee/stage-name/GET/pets に変換されます。現在のリージョンと AWS アカウント ID、さらにリソースポリシーが関連付けられている REST API の ID を使用して、API Gateway によって完全な ARN が生成されます。execute-api:/* を使用して、現在の API のすべてのステージ、メソッド、パスを表すことができます。アクセスポリシー言語の詳細については、「Amazon API Gateway のアクセスポリシー言語の概要」を参照してください。

例: 別の AWS アカウントのユーザーによる API の使用を許可する

次のリソースポリシーの例では、署名バージョン 4 (SigV4) プロトコルを使用して、1 つの AWS アカウントの API アクセスを異なる AWS アカウントの 2 人のユーザーに許可します。具体的には、account-id-2 によって識別される AWS アカウントの Alice と root ユーザーは、AWS アカウントの pets リソース (API) に対して GET アクションを実行する execute-api:Invoke アクションが許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id-2:user/Alice", "account-id-2" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/stage/GET/pets" ] } ] }

例: 送信元の IP アドレスまたは IP アドレスの範囲に基づき、API トラフィックを拒否する

次のリソースポリシーの例は、指定された 2 つの送信元 IP アドレスブロックから API への受信トラフィックを拒否 (ブロック) する「ブラックリスト」ポリシーです。

{ "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" : { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

例: プライベート API の使用時に、送信元 IP アドレスまたは範囲に基づいて API トラフィックを拒否する

次のリソースポリシーの例は、指定された 2 つの送信元 IP アドレスブロックからプライベート API への受信トラフィックを拒否 (ブロック) します。プライベート API を使用する場合、execute-api の VPC エンドポイントは元のソース IP アドレスを 書き換えます。aws:VpcSourceIp 条件は、元のリクエスタ IP アドレスに対してリクエストをフィルタリングします。

{ "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" : { "IpAddress": { "aws:VpcSourceIp": ["192.0.2.0/24", "198.51.100.0/24"] } } } ] }

例: ソース VPC または VPC エンドポイントに基づいてプライベート API トラフィックを許可する

次のリソースポリシーの例では、指定された Virtual Private Cloud (VPC) または VPC エンドポイントからのみ、プライベート API への受信トラフィックを許可します。

このリソースポリシーの例では、ソース VPC を指定します。

{ "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" } } } ] }

このリソースポリシーの例では、ソース VPC エンドポイントを指定します。

{ "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:SourceVpce": "vpce-1a2b3c4d" } } } ] }