AlbConfig でアクセス制御リスト (ACL) を 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 以降では、既存の ACL をリスナーに関連付けるには aclIds のみを使用してください。
前提条件
開始する前に:
-
少なくとも 1 つのリスナーを持つ AlbConfig が設定されていること。
-
AlbConfig 内のリスナーレベルで
aclConfigパラメーターが設定されていること。
aclIds パラメーターの使用 (推奨)
ID を使用して既存の ACL をリスナーに関連付けます。各リスナーは最大 3 つの ACL をサポートします。
ステップ 1:ACL の作成
ステップ 2:ACL へのエントリの追加
ACL エントリは、受信リクエストと照合するためのソース IP アドレスまたは CIDR ブロックを指定します。
-
[アクセス制御] ページで ACL を見つけ、[操作] 列の [管理] をクリックします。
-
ACL 詳細ページの [エントリ] タブで、エントリを追加します。
-
単一エントリ: [エントリの追加] をクリックし、[IP/CIDR ブロック] と [備考] を設定してから、[追加] をクリックします。
-
複数エントリ: [ACL エントリの追加] をクリックし、備考付きの CIDR ブロックを入力してから、[追加] をクリックします。
-
1 行に 1 つのエントリを入力します。
-
縦棒 (
|) を使用して、IP/CIDR ブロックと備考を区切ります。例:192.168.1.0/24|備考。 -
一度に最大 20 個のエントリを追加できます。
-
-
-
エントリを追加した後:
-
[エントリ] に CIDR ブロックが表示されます。
-
[操作] 列からエントリを削除するか、複数のエントリを選択して [削除] をクリックします。
-
右上隅の
アイコンを使用してエントリをエクスポートします。特定のエントリをエクスポートするには、それらを選択して
アイコンをクリックします。
-
ステップ 3:ACL のリスナーへの関連付け
spec.listeners.aclConfig を AlbConfig に追加し、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 アドレスがホワイトリストのエントリに一致する (またはブラックリストのエントリに一致しない) クライアントからバックエンド Service にアクセスします。
この例では、ALB Ingress の開始 で紹介しているリソースを使用します。
許可されている場合、クライアントはバックエンド Service に到達します。
ステップ 5:(オプション) ACL のリスナーからの関連付け解除
ACL の関連付けを解除するには、aclIds からその ID を削除するか、aclIds を null に設定します。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclType: White
aclIds: null # ACL との関連付けを解除します
#...
ACL 自体を削除するには、ALB コンソール を使用します。AlbConfig から ACL を削除することはできません。
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 リソースが変更されると、コントローラーは AlbConfig の内容でコンソールの ACL 設定を上書きするため、両方を同期させておく必要があります。
ステップ 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 エントリ。CIDR ブロックである必要があります。例:127.0.0.1/32。 |
aclType |
ACL のタイプ。有効な値:Black (ブラックリスト)、White (ホワイトリスト)。 |
aclName |
ACL の名前。設定しない場合、acl-{albName}-{port} として自動生成されます。 |
ステップ 2:アクセス制御効果の検証
パブリック IP アドレスがホワイトリストのエントリに一致する (またはブラックリストのエントリに一致しない) クライアントからバックエンド Service にアクセスします。
この例では、ALB Ingress の開始 で紹介しているリソースを使用します。
許可されている場合、クライアントはバックエンド Service に到達します。
ステップ 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 コンソール を使用します。AlbConfig から ACL を削除することはできません。