Amazon API Gateway
開発者ガイド

タグを使用して API Gateway リソースへのアクセスをコントロールする

AWS Identity and Access Management ポリシーの条件は、API Gateway リソースに対するアクセス許可を指定するために使用する構文の一部です。IAM ポリシーの指定の詳細については、「IAM アクセス権限により API へのアクセスを制御する」を参照してください。API Gateway では、リソースにタグを付けることができ、一部のアクションにタグを含めることができます。IAM ポリシーを作成するときに、タグ条件キーを使用して以下をコントロールできます。

  • どのユーザーが API Gateway リソースに対してアクションを実行できるか (リソースにすでに付けられているタグに基づいて)。

  • どのタグをアクションのリクエストで渡すことができるか。

  • 特定のタグキーをリクエストで使用できるかどうか。

タグベースのアクセスコントロールを使用すると、API レベルのコントロールよりもきめ細かく、リソースベースのアクセスコントロールよりも動的なコントロールが可能になります。リクエストで渡されたタグ (リクエストタグ) に基づいて、または操作するリソースに付けられたタグ (リソースタグ) に基づいて、オペレーションを許可または禁止する、IAM ポリシーを作成できます。一般に、リソースタグは、既存のリソースに使用します。リクエストタグは、新しいリソースの作成時に使用します。

タグ条件キーの完全な構文とセマンティクスについては、IAM ユーザーガイドの「タグを使用したアクセスコントロール」を参照してください。

以下の例は、API Gateway ユーザー用のポリシーでタグ条件を指定する方法を示しています。

例 1: リソースタグに基づいてアクションを制限する

この例のポリシーでは、すべてのリソースに対して GET アクションを実行するためのアクセス許可をユーザーに付与します。さらに、リソースに付けられたタグが iamrole であり、その値が readWrite である場合、ポリシーではリソースに対してすべてのアクションを実行するためのアクセス許可をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:GET", "Resource": "*" }, { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/iamrole": "readWrite" } } } ] }

例 2: リクエストタグに基づいてアクションを制限する

この例のポリシーでは、以下を指定しています。

  • ユーザーが新しいステージを作成するときは、ステージを作成するリクエストに stage というタグが含まれている必要がある。

  • stage タグの値は betagamma、または prod である必要がある。そうでない場合、ステージを作成するリクエストは拒否される。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:*::/restapis/*/stages", "Condition": { "Null": { "aws:RequestTag/stage": "true" } } }, { "Effect": "Deny", "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:*::/restapis/*/stages", "Condition": { "ForAnyValue:StringNotEquals": { "aws:RequestTag/stage": [ "beta", "gamma", "prod" ] } } } ] }

例 3: リソースタグに基づいてアクションを拒否する

この例のポリシーでは、ユーザーはデフォルトで API Gateway リソースに対してすべてのアクションの実行を許可されます。リソースに付けられたタグが stage であり、その値が prod である場合、ユーザーはそのリソースに対して変更 (PATCHPUTPOSTDELETE) の実行を拒否されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:PATCH", "apigateway:PUT", "apigateway:POST", "apigateway:DELETE" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "prod" } } } ] }

例 4: リソースタグに基づいてアクションを許可する

この例のポリシーでは、ユーザーはデフォルトですべての API Gateway リソースに対してすべてのアクションの実行を許可されます。リソースに付けられたタグが environment であり、その値が prod である場合、ユーザーはそのリソースに対してすべてのオペレーションの実行を拒否されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "prod" } } } ] }