AlbConfig でアクセス制御リスト (ACL) を Application Load Balancer (ALB) Ingress のリスナーに関連付けることで、ソース IP のホワイトリストまたはブラックリストを設定します。
ACL は IPv4 アドレスのみをサポートします。
仕組み
ACL には、CIDR ブロックのグループが含まれています。AlbConfig を介して ACL をリスナーに関連付けると、リスナーは受信リクエストのソース IP を ACL エントリと照合し、次のいずれかのルールを適用します。
-
ホワイトリスト:ACL エントリに一致する IP アドレスからのリクエストのみを許可します。
-
ブラックリスト:ACL エントリに一致する IP アドレスからのリクエストを拒否します。
次の図は、ACL の仕組みを示しています。
設定方法の選択
リスナーと ACL を関連付けるには 2 つの方法があります。ACL エントリを頻繁に管理したり、既存の ACL を再利用したりする場合は、aclIds を使用します。
| 項目 | aclIds (推奨) |
aclEntries |
|---|---|---|
| サポートされるコントローラーバージョン | ALB Ingress コントローラー v2.7.0 以降 | すべてのバージョン |
| 既存の ACL との関連付け | はい — ACL ID を直接使用します | いいえ — v2.7.0 以降では既存の ACL を関連付けることはできません |
| ACL の作成方法 | ALB コンソールで手動で作成します | AlbConfig 内でインラインで定義します |
| 最適なケース | ACL エントリの変更が頻繁な場合、コスト効率の高い ACL メンテナンス | ACL エントリが少ない少数のリスナー |
aclIds と aclEntries は相互に排他的です。ALB Ingress コントローラー v2.7.0 以降では、aclIds のみを使用して既存の ACL をリスナーに関連付けます。
前提条件
始める前に:
-
少なくとも 1 つのリスナーが設定された AlbConfig があること。
-
AlbConfig 内のリスナーレベルで
aclConfigパラメーターが設定されていること。
aclIds パラメーターの使用 (推奨)
既存の ACL をその ID でリスナーに関連付けます。各リスナーは最大 3 つの ACL をサポートします。
ステップ 1: ACL の作成
ステップ 2: ACL へのエントリの追加
ACL エントリは、受信リクエストと照合するソース IP アドレスまたは CIDR ブロックを指定します。
-
[アクセス制御] ページで対象の ACL を見つけ、[操作] 列の [管理] をクリックします。
-
ACL 詳細ページの [エントリ] タブで、エントリを追加します。
-
単一エントリ:[エントリの追加] をクリックし、[IP/CIDR ブロック] と [備考] を設定してから、[追加] をクリックします。
-
複数エントリ:[ACL エントリの追加] をクリックし、備考付きの CIDR ブロックを入力してから、[追加] をクリックします。
-
1 行に 1 つのエントリを入力します。
-
縦棒 (
|) を使用して、IP/CIDR ブロックと備考を区切ります。例:192.168.1.0/24|Remarks。 -
一度に最大 20 個のエントリを追加できます。
-
-
-
エントリを追加した後:
-
[エントリ] で CIDR ブロックを表示します。
-
[操作] 列からエントリを削除するか、複数のエントリを選択して [削除] をクリックします。
-
右上の
アイコンでエントリをエクスポートします。特定のエントリをエクスポートするには、それらを選択して
アイコンをクリックします。
-
ステップ 3: ACL とリスナーの関連付け
AlbConfig に spec.listeners.aclConfig を追加し、aclIds に ACL ID を指定します。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclType: White # ホワイトリストモード
aclIds:
- acl-wtg*** # ご利用の ACL ID に置き換えてください
#...
aclConfig パラメーター:
| パラメーター | 説明 |
|---|---|
aclType |
ACL のタイプ。有効な値:Black (ブラックリスト)、White (ホワイトリスト)。 |
aclIds |
ACL ID。各リスナーは最大 3 つの ACL をサポートします。 |
ステップ 4: アクセス制御効果の検証
パブリック IP がホワイトリストのエントリに一致する (またはブラックリストのエントリに一致しない) クライアントからバックエンドサービスにアクセスします。
この例では、「ALB Ingress の概要」のリソースを使用します。
許可されている場合、クライアントはバックエンドサービスに到達します。
ステップ 5: (オプション) ACL とリスナーの関連付け解除
ACL の関連付けを解除するには、aclIds からその ID を削除するか、aclIds を null に設定します。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclEntries:
- 192.168.XX.XX/16 # acl-test から 172.10.XX.XX/16 を削除
aclType: White
aclName: "acl-test"
#...
ACL 自体を削除するには、 ALB コンソール を使用します。ACL は AlbConfig からは削除できません。
aclEntries パラメーターの使用
AlbConfig 内で ACL エントリをインラインで定義します。コントローラーは ACL を自動的に作成および管理します。
-
ALB Ingress コントローラー v2.7.0 以降では、
aclNameは既存の ACL を関連付けなくなりました。aclNameを更新するたびに、新しい ACL が作成され、関連付けられます。 -
ALB Ingress コントローラー v2.6.0 以前では、書き戻しがデフォルトで有効になっています。
-
AlbConfig の
aclConfigが空の場合、関連付けられたリスナーの ACL エントリが AlbConfig に書き戻されます。 -
aclConfigが設定されているか、エントリがすでに書き戻されている場合、AlbConfig は変更されません。Ingress リソースが変更されると、コントローラーはコンソールの ACL 設定を AlbConfig の内容で上書きします。両方を同期させておく必要があります。
ステップ 1: AlbConfig での ACL エントリの設定
AlbConfig の spec.listeners.aclConfig を追加または更新します。aclEntries に CIDR ブロックを指定し、オプションで aclName に名前を指定します。
aclName が設定されている場合、ACL はその名前を使用します。aclName が設定されていない場合、名前は acl-{albName}-{port} として自動生成されます。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclEntries:
- 192.168.XX.XX/16
- 172.10.XX.XX/16
aclType: White # ホワイトリストモード
aclName: "acl-test" # acl-test という名前の ACL を作成します
#...
aclConfig パラメーター:
| パラメーター | 説明 |
|---|---|
aclEntries |
ACL エントリ。127.0.0.1/32 のような CIDR ブロックである必要があります。 |
aclType |
ACL のタイプ。有効な値:Black (ブラックリスト)、White (ホワイトリスト)。 |
aclName |
ACL の名前。設定しない場合、acl-{albName}-{port} として自動生成されます。 |
ステップ 2: アクセス制御効果の検証
パブリック IP がホワイトリストのエントリに一致する (またはブラックリストのエントリに一致しない) クライアントからバックエンドサービスにアクセスします。
この例では、「ALB Ingress の概要」のリソースを使用します。
許可されている場合、クライアントはバックエンドサービスに到達します。
ステップ 3: (オプション) ACL エントリの削除
AlbConfig の aclEntries を更新します。コントローラーは変更を関連付けられた ACL に同期します。
この例では、acl-test から 172.10.XX.XX/16 を削除し、192.168.XX.XX/16 のみを保持します。すべてのエントリを削除するには、aclEntries を空のリストに設定します。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclEntries:
- 192.168.XX.XX/16 # 172.10.XX.XX/16 は acl-test から削除されます
aclType: White
aclName: "acl-test"
#...
ACL 自体を削除するには、ALB コンソールを使用します。ACL は AlbConfig からは削除できません。