API Gateway API の IAM 認証を有効にする方法を教えてください。

最終更新日: 2019 年 12 月 19 日

Amazon API Gateway API にアクセスするために AWS Identity and Access Management (IAM) 認証を有効にしたいのですが、セットアップ方法を教えてください。

簡単な説明

API Gateway コンソールで、API メソッドの IAM 認証を有効にします。次に、IAM ポリシーを (リソースポリシーとともに) 使用して、API のユーザーのアクセス許可を指定します。

API Gateway で使用できるさまざまなセキュリティ機能の詳細については、「API Gateway での REST API へのアクセスの制御と管理」を参照してください。

解決方法

API の IAM 認証を有効にする

  1. API Gateway コンソールで、自身の API の名前を選択します。
  2. [リソース] ペインで、IAM 認証を有効にする方法 (GETPOST など) を選択します。
  3. [メソッドの実行] ペインで、[メソッドリクエスト] を選択します。
  4. [設定] の [認証] で、鉛筆アイコン (編集) を選択し、ドロップダウンメニューから [AWS_IAM] を選択してから、チェックマークアイコン (更新)を選択します。
  5. (オプション) IAM 認証を有効にする他の API メソッドそれぞれに、手順 2〜4 を繰り返します。
  6. API をデプロイして、変更を有効にします。
  7. [ステージエディター] ペインで、後でテストするために使用する URL の呼び出しをメモします。

詳細については、「API ゲートウェイコンソールを使用してメソッドを設定する」と「API ゲートウェイコンソールで API の呼び出し URL を取得する」を参照してください。

IAM ユーザーのグループに API 認証を付与する

  1. API ユーザーに付与するアクセス許可を決定します。たとえば、ユーザーがお客様の API のみを呼び出すことできるようにアクセス許可を付与したり、ユーザーが AWS アカウントで API を作成および管理できるようにアクセス許可を付与したりできます。詳細と考慮事項については、「IAM アクセス権限により API へのアクセスを制御する」を参照してください。
  2. 必要なアクセス許可を持つ IAM ポリシードキュメントを作成します。例とフォーマットのガイダンスについては、以下を参照してください。
    API を呼び出すためのアクセスの制御
    API 実行権限に対する IAM ポリシーの例
    API Gateway API を管理するための IAM ポリシーの例
    注: この記事の最後にあるテスト手順を完了するには、呼び出し権限を許可する必要があります。
  3. 次のいずれかを実行して、IAM ポリシーを IAM グループにアタッチします。
    既存の IAM グループにポリシーをアタッチする
    新しい IAM グループを作成するときにポリシーをアタッチします

詳細については、「ポリシーを作成して IAM ユーザーにアタッチする」を参照してください。

注: API アクセスを個々の IAM ユーザーに付与できますが、IAM グループレベルでアクセスを付与することをお勧めします。

(オプション) API Gateway リソースポリシーを設定する

API Gateway リソースポリシー (リソースベースのアクセス許可) を IAM ポリシー (ID ベースのアクセス許可) とともに使用して、API Gateway API へのアクセスの管理を強化できます。詳細については、「IAM 認証およびリソースポリシー」と「ID ベースのポリシーおよびリソースベースのポリシー」を参照してください。

注: リソースポリシーで API へのアクセスを拒否し、IAM ポリシーでアクセスを許可した場合 (またはその逆) でも、アクセスは拒否されます。これらのセキュリティ機能がユースケースで期待どおりに連携するように、アクセス許可構造を設計してください。詳細については、ポリシーの評価結果テーブルを参照してください。

認証設定をテストするリクエストを送信します

テストとして、Postman アプリを使用して、IAM 認証を有効にしたメソッド (GETPOST など) を介して API リソースにリクエストを送信します。

注: 別のツールまたは環境を使用して API Gateway に送信されるリクエストを手動で認証するには、署名バージョン 4 の署名プロセスを使用する必要があります。詳細については、API Gateway REST API リファレンスの「署名リクエスト」を参照してください。

  1. Postman の [Authorization] タブで、次の操作を行います。
    [Type] では、[AWS Signature] を選択します。
    [AccessKey] と [SecretKey] には、API にアクセスできる IAM グループに所属する IAM ユーザーの IAM アクセスキー ID とシークレットアクセスキーを入力します。
  2. URL フィールド ([Enter request URL]) に、前にメモした呼び出し URL を貼り付けます。特定の API リソースのメソッドで IAM 認証を有効にした場合は、リソース名を呼び出し URL の末尾に追加します。リソース名を含む完全なリクエスト URL は次のようになります。
    https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName

認証に成功したリクエストは、200 OK 応答コードを返します。不正なリクエストは、メッセージ「Missing Authentication Token」(認証トークンが見つかりません) と 403 Forbidden レスポンスコードを返します。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合