検索

15.7. アクセス制御リストを使用したロードバランサーの保護

download PDF

Octavia API を使用してアクセス制御リスト (ACL) を作成し、リスナーへの受信トラフィックを、許可されたソース IP アドレスのセットに制限することができます。それ意外の受信トラフィックは、すべて拒否されます。

前提条件

本項では、Octavia ロードバランサーの保護方法を説明する上で、以下のことを前提としています。

  • バックエンドサーバー 192.0.2.10 および 192.0.2.11 は private-subnet という名前のサブネット上にあり、TCP ポート 80 にカスタムアプリケーションが設定されている。
  • サブネット public-subnet はクラウドオペレーターが作成した共有外部サブネットで、インターネットからアクセスすることができる。
  • ロードバランサーはインターネットからアクセス可能な基本的なロードバランサーで、リクエストをバックエンドサーバーに分散する。
  • TCP ポート 80 のアプリケーションには、限られたソース IP アドレス (192.0.2.0/24 および 198.51.100/24) からしかアクセスすることができない。

手順

  1. サブネット (public-subnet) にロードバランサー (lb1) を作成します。

    注記

    丸かっこ () 内の名前を、実際に使用される名前に置き換えてください。

    $ openstack loadbalancer create --name lb1 --vip-subnet-id public-subnet
  2. ロードバランサー (lb1) のステータス表示が ACTIVE および ONLINE になるまで、以下のコマンドを再実行します。

    $ openstack loadbalancer show lb1
  3. 許可される CIDR でリスナー (listener1) を作成します。

    $ openstack loadbalancer listener create --name listener1 --protocol TCP --protocol-port 80 --allowed-cidr 192.0.2.0/24 --allowed-cidr 198.51.100/24 lb1
  4. リスナー (listener1) のデフォルトプール (pool1) を作成します。

    $ openstack loadbalancer pool create --name pool1 --lb-algorithm ROUND_ROBIN --listener listener1 --protocol TCP
  5. サブネット (private-subnet) 上のメンバー 192.0.2.10 および 192.0.2.11 を、作成したプール (pool1) に追加します。

    $ openstack loadbalancer member create --subnet-id private-subnet --address 192.0.2.10 --protocol-port 80 pool1
    
    $ openstack loadbalancer member create --subnet-id private-subnet --address 192.0.2.11 --protocol-port 80 pool1

検証手順

  1. 以下のコマンドを入力します。

    $ openstack loadbalancer listener show listener1

    以下のような出力が表示されるはずです。

    +-----------------------------+--------------------------------------+
    | Field                       | Value                                |
    +-----------------------------+--------------------------------------+
    | admin_state_up              | True                                 |
    | connection_limit            | -1                                   |
    | created_at                  | 2019-12-09T11:38:05                  |
    | default_pool_id             | None                                 |
    | default_tls_container_ref   | None                                 |
    | description                 |                                      |
    | id                          | d26ba156-03c3-4051-86e8-f8997a202d8e |
    | insert_headers              | None                                 |
    | l7policies                  |                                      |
    | loadbalancers               | 2281487a-54b9-4c2a-8d95-37262ec679d6 |
    | name                        | listener1                            |
    | operating_status            | ONLINE                               |
    | project_id                  | 308ca9f600064f2a8b3be2d57227ef8f     |
    | protocol                    | TCP                                  |
    | protocol_port               | 80                                   |
    | provisioning_status         | ACTIVE                               |
    | sni_container_refs          | []                                   |
    | timeout_client_data         | 50000                                |
    | timeout_member_connect      | 5000                                 |
    | timeout_member_data         | 50000                                |
    | timeout_tcp_inspect         | 0                                    |
    | updated_at                  | 2019-12-09T11:38:14                  |
    | client_ca_tls_container_ref | None                                 |
    | client_authentication       | NONE                                 |
    | client_crl_container_ref    | None                                 |
    | allowed_cidrs               | 192.0.2.0/24                         |
    |                             | 198.51.100/24                        |
    +-----------------------------+--------------------------------------+

    パラメーター allowed_cidrs は、192.0.2.0/24 および 198.51.100/24 からのトラフィックだけを許可するように設定します。

  2. ロードバランサーが保護されていることを確認するには、allowed_cidrs の一覧に記載されていない CIDR のクライアントからリスナーにリクエストの実施を試みます。リクエストは成功しないはずです。以下のような出力が表示されるはずです。

    curl: (7) Failed to connect to 10.0.0.226 port 80: Connection timed out
    curl: (7) Failed to connect to 10.0.0.226 port 80: Connection timed out
    curl: (7) Failed to connect to 10.0.0.226 port 80: Connection timed out
    curl: (7) Failed to connect to 10.0.0.226 port 80: Connection timed out
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.