今回はWordPress/wp-admin 配下をALBのリスナールールでIP制限をしてみたのですが、Terraformでの参考サイトが全く見つからないということでブログします。以前書いたブログを参考にすればできるはず!!

しかし今まではNginxで以下のように書けばIP制限が可能なのですが、設定ファイルにごちゃごちゃ書きたくないということもあり、ALBで処理するのがベストですね。

[AWS][Terraform]ALBのリスナールールを複数追加する


■ALBリスナールール

  • 送信元IPを適当に、パスが /wp-admin/wp-login.php に対して転送先を適当なターゲットグループを指定
  • パスが wp-adminwp-login.php に対して固定レスポンスを返す、404のtext/plan Not Foundを指定

上記のように特定のIP以外アクセスするとNot Foundと返ってくればOK。これをTerraform化します。


■Terraform

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener_rule

  • elb.tf

ハマったところは

Error: Only one of field, host_header, http_header, http_request_method, path_pattern, query_string or source_ip can be set in a condition block

10~13行目source_ip(送信元IP)path_patternと同じcondition内に書いてエラー食らったところですかね。別conditionとして分ければOK。他にも複数のIPを指定しまくるとリスナールールの条件値制限が5つまでなので注意するところですかね。以下より。

  • 条件値のルール制限、ワイルドカード、および全体のルール。
  • 100 アプリケーションのロードバランサーごとの合計ルール
  • 5 ルールあたりの条件値
  • 5 ルールあたりのワイルドカード
  • 5 ルールあたりの加重ターゲットグループ

あとpriorityは全てのリスナーグループに設定しないと優先順位固定化されないので気をつけましょう


■まとめ

ALB凄すぎか!ちなみにTerraformでのALBリスナールールは手動で優先順位を変更しても差分にならないことを知った。


カテゴリー: AWSTerraform

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください