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

IAM アクセス権限により API へのアクセスを制御する

Amazon API Gateway API へのアクセスを IAM アクセス権限で制御するには、以下の 2 つの API Gateway コンポーネントプロセスへのアクセスを制御します。

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

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

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

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

API Gateway で API を作成して管理することを API 開発者に許可するには、必要な API エンティティの作成、更新、デプロイ、表示、削除を行うことを特定の API 開発者に許可する IAM アクセス権限ポリシーを作成する必要があります。このアクセス権限ポリシーを、開発者としての IAM ユーザー、ユーザーが属する IAM グループ、またはユーザーが引き受ける IAM ロールにアタッチします。

この IAM ポリシードキュメントで、IAM の Resource エレメントには、API Gateway リソースAPI Gateway リンク関係などの API Gateway API エンティティのリストが含まれます。IAM Action エレメントには、API Gateway の必要な API 管理アクションが含まれます。これらのアクションは、apigateway:HTTP_VERB 形式で宣言します。apigateway は API Gateway の基盤となる API 管理コンポーネントを指定し、HTTP_VERB は API Gateway でサポートされている HTTP 動詞を表します。

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

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

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

この IAM アクセス権限ポリシーのステートメントで、IAM Resourceエレメントには、特定の HTTP 動詞および API Gateway リソースパスによって識別されるデプロイされたメソッドのリストが含まれます。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 のサービスへのアクセス制御を有効にするには、呼び出し元ベースのアクセス権限モデルを使用して、呼び出し元の IAM ユーザーまたはグループにアクセス権限ポリシーを直接アタッチするか、ロールベースのアクセス権限モデルを使用して、API Gateway が引き受けることができる IAM ロールにアクセス権限ポリシーをアタッチすることができます。アクセス権限ポリシーは 2 つのモデル間で異なる場合があります。たとえば、呼び出し元ベースのポリシーはアクセスをブロックしますが、ロールベースのポリシーはアクセスを許可します。この差異を利用して、IAM ユーザーが API Gateway API 経由でのみ AWS のサービスにアクセスするよう要求できます。