shou.com
JP / EN

AWS-CDKでApiGatewayにIP制限を設定する

Tue Aug 20, 2024
Tue Aug 20, 2024

ApiGatewayにIP制限を設定する際はAWS WAFを使うことが一般的だと思いますが、開発段階や簡易的な制限を設定する場合はApiGatewayのリソースポリシーを使用してIP制限を設定することもできます。

私はよく使うことがあるので、メモがてら記事にしておきます。

CDK(TypeScript)での実装例です。

// CDK

// アクセス許可するIPを設定
const IP_WHITE_LIST = ["xxx.xxxx",];

new RestApi(this, "Api", {
  restApiName: "api",
  deploy: true,
  cloudWatchRole: true,
  cloudWatchRoleRemovalPolicy: cdk.RemovalPolicy.DESTROY,
  deployOptions: {
    stageName: stage,
    tracingEnabled: true,
    dataTraceEnabled: true,
    loggingLevel: MethodLoggingLevel.INFO,
  },
  policy: new PolicyDocument({
    statements: [
      // ip制限
      new PolicyStatement({
        effect: Effect.DENY,
        principals: [new AnyPrincipal()],
        actions: ["execute-api:Invoke"],
        resources: ["execute-api:/*/*/*"],
        conditions: {
          NotIpAddress: {
            "aws:SourceIp": IP_WHITE_LIST,
          },
        },
      }),
    ],
  }),
});

条件ブロックのConditionsにNotIpAddressを指定して、アクセスを許可するIPアドレスを設定します。これだけでIP制限がかかります。AWS WAFは使わないので、コストを抑えたい場合に有効です。

See Also