スキップしてコンテンツを表示

特定の IP アドレスのみが API Gateway REST API にアクセスできるようにする方法を教えてください。

所要時間2分
0

Amazon API Gateway REST API へのアクセスを、特定の IP アドレスのみに許可したいです。

簡単な説明

特定の IP アドレスのみに REST API へのアクセスを許可するには、他のすべての IP アドレスに対し、アクセスを拒否するリソースポリシーを作成します。

リソースポリシーを REST API にアタッチすると、アクセス許可を持つユーザーは指定された IP アドレスから API を呼び出すことができるようになります。API は他の IP アドレスからの呼び出しを拒否し、"HTTP 403 Forbidden" エラーを返します。

特定の IP アドレスをブロックし、その他すべてに対してはアクセスを許可する方法については、「例: ソース IP アドレスまたは範囲に基づいて API トラフィックを拒否する」を参照してください。

注: API Gateway HTTP API には、リソースポリシーを使用できます。

解決策

API メソッドを設定する

アクセスをテストするには、既存の API Gateway REST API を使用するか、例示した REST API を作成します。API 例 PetStore を使用する場合は、「リソースポリシーを作成、アタッチする」に進んでください。

既存 REST API のモック統合を作成するには、次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. 目的の REST API を選択します。
  3. [リソース] ペインの [メソッド][メソッドを作成] を選択します。
  4. [メソッドタイプ][ANY] を選択します。
  5. [統合タイプ][モック] を選択します。
    注: モック統合は、到達したあらゆるリクエストに応答します。
  6. [メソッドを作成] を選択します。

リソースポリシーを作成してアタッチする

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. 目的の REST API を選択します。
  3. ナビゲーションペインで [リソースポリシー] を選択します。
  4. [ポリシーを作成] を選択します。
  5. [リソースポリシー] に次のリソースポリシーを入力します。
    {  "Version": "2012-10-17",
      "Statement": [{
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*"
        },
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*",
          "Condition": {
            "NotIpAddress": {
              "aws:SourceIp": ["sourceIpOrCIDRBlock", "sourceIpOrCIDRBlock"]
            }
          }
        }
      ]
    }
    注: sourceIpOrCIDRBlock をアクセスを許可する対象の IP アドレスに置き換えてください。IP アドレス範囲を指定するには、CIDR 表記を使用します (例: ["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"])。aws:SourceIp 条件は、パブリック IP アドレス範囲でのみ機能します。プライベート IP アドレス範囲にアクセスを許可する場合は、aws:VpcSourceIp 条件を使用します。aws:VpcSourceIp には、インターフェイスの仮想プライベートクラウド (VPC) エンドポイント経由でプライベート API エンドポイントを呼び出す HTTP クライアントの IP アドレスを入力します。API Gateway のプライベート API エンドポイントは、インターフェイス VPC エンドポイント経由以外では呼び出せません。
  6. [変更を保存] を選択します。

REST API を呼び出しているプライベート IP アドレスを特定するには、Amazon CloudWatch Logs を確認します。詳細については、「チュートリアル: CloudWatch Logs の表示」を参照してください。

API をデプロイする

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. 目的の REST API を選択します。
  3. REST API の [リソース] ペインで [API をデプロイ] を選択します。
  4. [デプロイステージ][新しいステージ] を選択します。
  5. [ステージ名] に名前を入力します (例: v1demo)。
  6. [デプロイ] を選択します。

重要: REST API は、リソースポリシーを変更するたびに再デプロイする必要があります。

リソースポリシーをテストする

オペレーティングシステム (OS) に応じて、次のいずれかのコマンドを実行し、許可された IP アドレスが割り当てられた環境をテストします。

Linux、Unix、macOS 環境

curl -IX GET https://yourInvokeUrl/

Windows PowerShell

curl https://yourInvokeUrl/

注: https://yourInvokeUrl/ を REST API の呼び出し URL に置き換えてください。

リソースポリシーが正しく構成されている場合、許可された環境には応答 "HTTP 200 OK" が返されます。許可された IP アドレスが割り当てられていない環境から、同じコマンドを再度実行します。拒否された環境には、"HTTP 403 Forbidden" エラーが返される必要があります。

Postman のウェブサイトで Postman app を使用しても、リソースポリシーをテストできます。

注: 複数の環境にアクセスできない場合は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動します。次に、インスタンスの IP アドレスを API のリソースポリシーに追加し、API を再度デプロイします。

関連情報

API Gateway リソースポリシーを作成して API にアタッチする

API Gateway のリソースポリシー例

Amazon API Gateway でのアクセスポリシー言語に関する概要

API Gateway で REST API へのアクセスを制御、管理する

コメントはありません

関連するコンテンツ