API Gateway でプライベート API 用の VPC エンドポイントポリシーを使用する - Amazon API Gateway

API Gateway でプライベート API 用の VPC エンドポイントポリシーを使用する

プライベート API のセキュリティを向上させるには、VPC エンドポイントポリシーを作成できます。VPC エンドポイントポリシーは、VPC エンドポイントにアタッチする IAM リソースポリシーです。詳細については、「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。

VPC エンドポイントポリシーを作成して、以下のタスクを実行できます。

  • 特定の組織やリソースにのみ、VPC エンドポイントにアクセスして API を呼び出すことを許可します。

  • API へのトラフィックを制御するために、セッションベースやロールベースのポリシーは使用しないで、単一のポリシーを使用します。

  • オンプレミスから AWS に移行する際に、アプリケーションのセキュリティ境界を厳しくします。

VPC エンドポイントポリシーに関する考慮事項

VPC エンドポイントポリシーに関する考慮事項は、以下のとおりです。

  • 呼び出し元の ID は、Authorization ヘッダー値に基づいて評価されます。authorizationType によっては、これによって 403 IncompleteSignatureException または 403 InvalidSignatureException エラーが発生する可能性があります。次の表は、各 authorizationTypeAuthorization ヘッダー値を示しています。

    authorizationType

    Authorization ヘッダーは評価されましたか

    許可される Authorization ヘッダー値

    デフォルトでフルアクセスポリシーを持つ NONE なし 不合格
    カスタムアクセスポリシーを持つ NONE あり 有効な SigV4 値である必要があります
    IAM あり 有効な SigV4 値である必要があります
    CUSTOM または COGNITO_USER_POOLS なし 不合格
  • 特定の IAM プリンシパルへのアクセスをポリシーで制限する場合は (arn:aws:iam::account-id:role/developer など)、API のメソッドの authorizationTypeAWS_IAM または NONE に設定する必要があります。メソッドの authorizationType を設定する方法の詳細については、「API Gateway の REST API のメソッド」を参照してください。

  • VPC エンドポイントポリシーは、API Gateway リソースポリシーと一緒に使用できます。API Gateway リソースポリシーは、どのプリンシパルが API にアクセスできるかを指定します。エンドポイントポリシーは、誰が VPC にアクセスできるか、どの API を VPC エンドポイントから呼び出せるかを指定します。プライベート API にはリソースポリシーが必要ですが、カスタム VPC エンドポイントポリシーを作成する必要はありません。

VPC エンドポイントポリシーの例

Amazon API Gateway で Amazon Virtual Private Cloud エンドポイントポリシーを作成し、以下を指定できます。

  • アクションを実行できるプリンシパル。

  • 実行可能なアクション。

  • 自身に対してアクションを実行できたリソース。

VPC エンドポイントにポリシーをアタッチするには 、VPC コンソールを使用する必要があります。詳細については、「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。

例 1: 2 つの API へのアクセスを許可する VPC エンドポイントポリシー

次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して 2 つの特定の API へのアクセスを許可しています。

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*", "arn:aws:execute-api:us-east-1:123412341234:aaaaa11111/*" ] } ] }

例 2: GET メソッドへのアクセスを許可する VPC エンドポイントポリシー

次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して特定の API のGET メソッドへのアクセスを許可しています。

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/stageName/GET/*" ] } ] }

例 3: 特定の API への特定のユーザーアクセスを許可する VPC エンドポイントポリシー

次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して特定の API への特定のユーザーアクセスを許可しています。

この場合、特定の IAM プリンシパルへのアクセスをポリシーで制限するため、メソッドの authorizationTypeAWS_IAM または NONE に設定する必要があります。

{ "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123412341234:user/MyUser" ] }, "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*" ] } ] }