メニュー
Amazon API Gateway
開発者ガイド

API Gateway API を管理するための IAM ポリシーの例

以下のポリシードキュメントの例は、API Gateway で API リソースを管理するためのアクセス権限を設定するさまざまなユースケースを示しています。 アクセス権限モデルおよび他の背景情報については、「 IAM ポリシーを使用した API Gateway API の作成と管理を誰に許可するかを制御する 」を参照してください。

シンプルな読み取りアクセス権限

以下のポリシーステートメントでは、AWS リージョンが us-east-1 で、識別子が a123456789 の API の、すべてのリソース、メソッド、モデル、ステージについて情報を取得するアクセス権限をユーザーに付与します。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/a123456789/*" ] } ] }

以下の例のポリシーステートメントでは、任意のリージョンのすべてのリソース、メソッド、モデル、ステージについて情報を一覧表示するアクセス権限を IAM ユーザーに付与します。それらのユーザーには、AWS リージョンが us-east-1 で、識別子が a123456789 の API のすべての API Gateway アクションを実行するアクセス権限も付与します。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET" ], "Resource": [ "arn:aws:apigateway:*::/restapis/*" ] }, { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/a123456789/*" ] } ] }

API 読み取り専用許可

以下に示すポリシードキュメントは、アタッチされているエンティティ (ユーザー、グループまたはロール) が呼び出し元の AWS アカウントのどの API でも取得できるようにします。 これは、メソッド、統合などの、すべての API 子リソースを含みます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1467321237000", "Effect": "Deny", "Action": [ "apigateway:POST", "apigateway:PUT", "apigateway:PATCH", "apigateway:DELETE" ], "Resource": [ "arn:aws:apigateway:us-east-1::/*" ] }, { "Sid": "Stmt1467321341000", "Effect": "Deny", "Action": [ "apigateway:GET", "apigateway:HEAD", "apigateway:OPTIONS" ], "Resource": [ "arn:aws:apigateway:us-east-1::/", "arn:aws:apigateway:us-east-1::/account", "arn:aws:apigateway:us-east-1::/clientcertificates", "arn:aws:apigateway:us-east-1::/domainnames", "arn:aws:apigateway:us-east-1::/apikeys" ] }, { "Sid": "Stmt1467321344000", "Effect": "Allow", "Action": [ "apigateway:GET", "apigateway:HEAD", "apigateway:OPTIONS" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/*" ] } ] }

最初の Deny ステートメントでは、API Gateway. のいずれのリソースに対する POSTPUTPATCHDELETE 呼び出しも明示的に禁止しています。 これにより、このようなアクセス権限が、呼び出し元にアタッチされている他のポリシードキュメントによってオーバーライドされないようにします。 2 番目の Deny ステートメントは、呼び出し元が、ルート (/) リソース、アカウント情報 (/account)、クライアント証明書 (/clientcertificates) 、カスタムドメイン名 (/domainnames)、API キー (/apikeys) に対してクエリを実行することをブロックします。 3 つのステートメントは連携して、呼び出し元が、API の関連リソースのみクエリを実行するようにします。 これはテスターがコードを変更することを望まない場合、API のテストに役立ちます。

指定の API への上記の読み取り専用アクセスを制限するには、Allow ステートメントの Resource プロパティを以下のもので置き換えます。

Copy
"Resource": ["arn:aws:apigateway:us-east-1::/restapis/restapi_id1/*", "arn:aws:apigateway:us-east-1::/restapis/restapi_id2/*"]

API Gateway リソースのフルアクセス権限

次の例に示すポリシードキュメントは AWS アカウントの任意の API Gateway リソースへのフルアクセスを許可します。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1467321765000", "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "*" ] } ] }

一般に、そのような広範でオープンなアクセスポリシーを使用することは避けてください。 API 開発のコアチームが、API Gateway リソースを作成、デプロイ、更新、削除するために、そうすることが必要になる可能性はあります。

API ステージを管理するためのフルアクセス権限

次の例に示すポリシードキュメントは、呼び出し元の AWS アカウントで任意の API のステージ関連リソースに対するフルアクセス権限を与えます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/*/stages", "arn:aws:apigateway:us-east-1::/restapis/*/stages/*" ] } ] }

上記のポリシードキュメントは、呼び出し元に、より多くのアクセスを許可する他のポリシーがアタッチされていない場合、stages コレクションおよび含まれる stage リソースのみへのフルアクセス権限を与えます。 それ以外の場合、明示的に他のすべてのアクセスを拒否する必要があります。

ユーザーは GET /respais を呼び出して使用可能な API をクエリできないため、呼び出し元は、上記のポリシーを使用して、あらかじめ REST API 識別子を見つけておく必要があります。 また、arn:aws:apigateway:us-east-1::/restapis/*/stages が、Resource リストで指定されていない場合、ステージリソースはアクセスできなくなります。 この場合、呼び出し元は、ステージ名が知られている場合にはステージを表示、更新、削除することはできますが、ステージを作成したり、既存のステージを取得したりすることはできません。

特定の API ステージへのアクセス権限を付与するには、Resource 仕様の restapis/* 部分を restapi_id が、該当する API の識別子である restapis/restapi_id で置き換えます。

指定したユーザーが任意の API リソースを削除することをブロックする

次の例に示す IAM ポリシードキュメントは、指定したユーザーが API Gateway で API リソースを削除することをブロックします。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1467331998000", "Effect": "Allow", "Action": [ "apigateway:GET", "apigateway:HEAD", "apigateway:OPTIONS", "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/*" ] }, { "Sid": "Stmt1467332141000", "Effect": "Allow", "Action": [ "apigateway:DELETE" ], "Condition": { "StringNotLike": { "aws:username": "johndoe" } }, "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/*" ] } ] }

この IAM ポリシーは、どの API リソースも削除できない指定されたユーザー (johndoe) を除いて、アタッチされているユーザー、グループ、またはロールが、API を作成、デプロイ、更新、削除するためのフルアクセス権限を付与します。 ルート、API キー、クライアント証明書、カスタムドメイン名に Allow アクセス権限を付与する他のポリシードキュメントが呼び出し元にアタッチされていないことを前提としています。

指定されたユーザーが、特定の API または API リソースなどの、特定の API Gateway リソースを削除することをブロックするには、上記の Resource 仕様をこれで置き換えます。

Copy
"Resource": ["arn:aws:apigateway:us-east-1::/restapis/restapi_id_1", "arn:aws:apigateway:us-east-1::/restapis/restapi_id_2/resources"]