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 に変換します。API Gateway は、現在のリージョン、AWS アカウント ID、およびリソースポリシーが関連付けられている REST API の ID を使用して、完全な ARN を構築します。execute-api:/* を使用して、現在の API のすべてのステージ、メソッド、パスを表すことができます。アクセスポリシー言語の詳細については、Amazon API Gateway のアクセスポリシー言語の概要 を参照してください。

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

次のリソースポリシーの例は、Signature Version 4 (SigV4) プロトコルを使用して、1 つの AWS アカウントの API アクセス権を異なる AWS アカウントの 2 つのロールに付与します。具体的には、account-id-2 によって識別される AWS アカウントのデベロッパーおよび管理者ロールでは、AWS アカウントの pets リソース (API) に対して GET アクションを実行する execute-api:Invoke アクションが許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id-2:role/developer", "arn:aws:iam::account-id-2:role/Admin" ] }, "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" } } } ] }