IAM アクセス許可を使用して REST API へのアクセスを制御する - Amazon API Gateway

IAM アクセス許可を使用して REST API へのアクセスを制御する

IAM アクセス許可 を使用して Amazon API Gateway API へのアクセスを制御するには、次の 2 つの API Gateway コンポーネントプロセスへのアクセスを制御します。

  • API Gateway で API の作成、デプロイ、管理を行うには、API Gateway の API 管理コンポーネントでサポートされている必要なアクションを行うためのアクセス許可を API デベロッパーに付与する必要があります。

  • デプロイされた API を呼び出したり、API キャッシュを更新したりするには、API Gateway の API 実行コンポーネントでサポートされている必要な IAM アクションを行うためのアクセス許可を API の発信者に付与する必要があります。

2 つのプロセスのアクセス制御には、以下で説明するように、異なるアクセス権限モデルが必要です。

API を作成および管理するための API Gateway アクセス許可モデル

API デベロッパーが API Gateway で API を作成および管理することを許可するには、指定した API デベロッパーが必要な API エントリを作成、更新、デプロイ、表示、または削除することを許可する IAM アクセス許可ポリシーを作成する必要があります。アクセス許可ポリシーをユーザー、ロール、またはグループにアタッチします。

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

アクセス権限モデルを使用する方法の詳細については、「API Gateway のアイデンティティベースのポリシー」を参照してください。

API を呼び出すための API Gateway アクセス許可モデル

API の呼び出しや API キャッシュの更新を API 発信者に許可するには、ユーザー認証が有効な API メソッドを呼び出すことを、特定の API 発信者に許可する IAM ポリシーを作成する必要があります。API デベロッパーは、メソッドの authorizationType プロパティを AWS_IAM に設定して、発信者が認証対象のユーザーの認証情報を送信することを要求します。次に、ユーザー、グループ、またはロールにポリシーをアタッチします。

この IAM アクセス許可ポリシーのステートメントで、IAM Resourceエレメントには、特定の HTTP 動詞および API Gateway リソースパスによって識別されるデプロイ API されたメソッドのリストが含まれます。IAM Action エレメントには、API Gateway の必要な API 実行アクションが含まれます。これらのアクションには、execute-api:Invokeexecute-api:InvalidateCache が含まれます。execute-api は、API Gateway の基盤となる API 実行コンポーネントを示します。

アクセス権限モデルを使用する方法の詳細については、「API を呼び出すためのアクセスの制御」を参照してください。

API をバックエンドの AWS サービス (AWS Lambda など) と統合すると、API Gateway には、API 呼び出し元に代わって AWS の統合されたリソースにアクセスする (Lambda 関数を呼び出すなど) ための許可も必要です。これらのアクセス許可を付与するには、API Gateway 用の AWS のサービスタイプの IAM ロールを作成します。IAM 管理コンソールでこのロールを作成すると、API Gateway がこのロールを引き受けることを許可された信頼されたエンティティであることを宣言する以下の IAM 信頼ポリシーがロールに含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

CLI の create-role コマンドまたは対応する SDK メソッドを呼び出して IAM ロールを作成する場合、上記の信頼ポリシーを assume-role-policy-document の入力パラメータとして指定する必要があります。このようなポリシーを、IAM マネジメントコンソールで直接作成、または AWS CLI create-policy コマンド、もしくは対応する SDK メソッドを呼び出して作成しないでください。

API Gateway で統合された AWS のサービスを呼び出すには、このロールに、統合された AWS のサービスを呼び出すための適切な IAM アクセス許可ポリシーもアタッチする必要があります。たとえば、Lambda 関数を呼び出すには、IAM ロールに次の IAM アクセス許可ポリシーを含める必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }

Lambda がサポートするリソースベースのアクセスポリシーは、信頼ポリシーとアクセス許可ポリシーの両方を組み合わせたものです。API Gateway コンソールを使用して API を Lambda 関数と統合すると、コンソールがユーザーに代わって (ユーザーの合意を得て) Lambda 関数でリソースベースのアクセス許可を設定するため、この IAM ロールを明示的に設定することは要求されません。

注記

AWS のサービスへのアクセス制御を有効にするには、発信者ベースのアクセス許可モデルを使用して、発信者のユーザーまたはグループにアクセス許可ポリシーを直接アタッチするか、ロールベースのアクセス許可モデルを使用して、API Gateway が引き受けることができる IAM ロールにアクセス許可ポリシーをアタッチすることができます。アクセス権限ポリシーは 2 つのモデル間で異なる場合があります。たとえば、呼び出し元ベースのポリシーはアクセスをブロックしますが、ロールベースのポリシーはアクセスを許可します。この差異を利用して、ユーザーが API Gateway API 経由でのみ AWS のサービスにアクセスするよう要求できます。