IAM アクセス許可により API へのアクセスを制御する - Amazon API Gateway

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

IAM アクセス許可により 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 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 のサービスにアクセスするよう要求できます。