アクセスコントロールリスト (ACL) は、ALB リスナーでトラフィックをフィルタリングします。各 ACL には IPv4 CIDR ブロックが含まれ、次の 2 つのモードのいずれかで動作します:
-
ホワイトリスト: ACL 内の IP アドレスからのリクエストのみを許可します。
-
ブラックリスト: ACL 内の IP アドレスからのリクエストを拒否します。
ACL は IPv4 アドレスのみをサポートします。
お使いの ALB インスタンスが ACS または Container Service for Kubernetes (ACK) クラスターで作成および管理されている場合は、[ALB コンソール]でアクセス制御設定を手動で変更しないでください。このようなインスタンスでは設定が読み取り専用になっており、手動での変更はプロンプトでブロックされます。このドキュメントで説明されている AlbConfig メソッドを使用してアクセス制御を設定してください。
AlbConfig のパス:[ACK コンソール] にログイン > [Clusters] > 対象クラスターを選択 > [Workloads] > [Custom Resources] の順に選択し、AlbConfig を探します。
設定方法の選択
ACL をリスナーに関連付けるには、2 つの方法があります。
aclIds (推奨) |
aclEntries |
|
|---|---|---|
| コントローラーのバージョン | 2.7.0 以降 | すべてのバージョン |
| ACL ソース | ID で既存の ACL を参照します。まず SLB コンソール で ACL を作成する必要があります。 | AlbConfig で CIDR エントリを直接定義します。コントローラーが ACL を自動的に作成します。 |
| 最適なケース | リスナー間で共有され、頻繁に更新される ACL | エントリとリスナーの数が限られている小規模な ACL |
-
aclIdsとaclEntriesは相互排他的です。同じリスナーで両方を使用しないでください。 -
ALB Ingress コントローラー 2.7.0 以降:
aclIdsを使用して、既存の ACL をリスナーに関連付けます。
aclIds を使用した既存の ACL の関連付け
先に進む前に、AlbConfig にリスナーと aclConfig が設定されていることを確認してください。
手順1:ACL の作成
-
ALB コンソール にログインします。
-
上部メニューで、ACL のリージョンを選択します。
-
左側メニューで、[ALB] > [Access Control] を選択します。
-
[Access Control] ページで、[Create ACL] をクリックします。
-
[Create ACL] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 [ACL 名] ACL 名を入力します。 [リソースグループ] リソースグループを選択します。 [タグ] [Tag Key] と [Tag Value] を設定します。タグは、[Access Control] ページで ACL をフィルタリングする際に役立ちます。
手順2:ACL へのエントリの追加
ACL エントリは、許可または拒否するソース IP アドレスまたは CIDR ブロックを指定します。
-
[Access Control] ページで対象の ACL を見つけ、[Actions] 列の [Manage] をクリックします。
-
[Entry] タブで、エントリを追加します:
-
単一エントリの追加:[Add Entry] をクリックし、[IP/CIDR Block] と [Remarks] を設定してから、[Add] をクリックします。
-
複数エントリの追加:[Add ACL Entries] をクリックし、備考付きの複数の IP アドレスまたは CIDR ブロックを入力してから、[Add] をクリックします。
-
複数のエントリを追加する場合:
1 行に 1 つのエントリを入力します。
IP/CIDR ブロックと備考は、縦棒 (
|) で区切ります (例:192.168.1.0/24|Remarks)。バッチあたり最大 20 エントリです。
-
エントリの管理:
-
[Entry] 列で IP アドレスまたは CIDR ブロックを確認できます。
-
[Actions] 列の [Delete] をクリックします。複数のエントリを削除するには、それらを選択してリストの下にある [Delete] をクリックします。
-
アイコンをクリックしてエントリをエクスポートします。特定のエントリをエクスポートするには、まずそれらを選択します。
-
手順3:リスナーへの ACL の関連付け
AlbConfig のリスナーに aclConfig セクションを追加し、aclIds を ACL ID に設定します。この例では acl-wtg*** を使用します。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclType: White # ホワイトリストモード。
aclIds:
- acl-wtg*** # 既存の ACL ID (この例では acl-wtg***) を設定に追加します。
#...
aclConfig のパラメーター
| パラメーター | 説明 |
|---|---|
aclType |
ACL のタイプ。有効な値は Black と White です。 |
aclIds |
リスナーに関連付ける ACL の ID。各リスナーは最大 3 つの ACL をサポートします。 |
手順4:アクセス制御の確認
ACL で許可されている IP アドレスのクライアントからバックエンド Service にアクセスします。この例では、「ALB Ingress の概要」のリソースを使用します。
クライアント IP が許可されている場合、Service は正常に応答します。
手順5:(オプション) リスナーからの ACL の関連付け解除
aclIds から ACL ID を削除するか、aclIds を null に設定します。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclType: White
aclIds: null # パラメーター値から既存の ACL ID (この例では acl-wtg***) を削除します。
#...
ACL は AlbConfig では削除できません。ACL は SLB コンソール で削除してください。
aclEntries を使用した ACL エントリのインライン定義
先に進む前に、AlbConfig にリスナーと aclConfig が設定されていることを確認してください。
-
ALB Ingress コントローラー 2.7.0 以降では、
aclNameは既存の ACL を関連付けなくなりました。更新のたびに新しい ACL が作成されます。 -
ALB Ingress コントローラー 2.6.0 以前: 書き戻しメカニズムが適用されます:
-
aclConfigが空の場合、リスナーの ACL エントリが AlbConfig に書き戻されます。 -
aclConfigがすでに設定されているか、エントリが書き戻されている場合、AlbConfig は変更されません。Ingress リソースが変更されると、コントローラーはコンソールの ACL 設定を AlbConfig の内容で上書きします。両方を同期させておく必要があります。
手順1:ACL エントリの定義
AlbConfig に aclConfig セクションを追加し、aclEntries に CIDR ブロックを指定します。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:アクセス制御の確認
ACL で許可されている IP アドレスのクライアントからバックエンド Service にアクセスします。この例では、「ALB Ingress の概要」のリソースを使用します。
クライアント IP が許可されている場合、Service は正常に応答します。
手順3:(オプション) ACL エントリの削除
aclEntries を更新してエントリを削除します。この例では 172.10.XX.XX/16 を削除します。aclEntries への変更は、関連付けられた ACL (acl-test) に同期されます。aclEntries が空の場合、すべてのエントリが削除されます。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclEntries:
- 192.168.XX.XX/16
aclType: White
aclName: "acl-test" # acl-test ACL 内の 172.10.XX.XX/16 エントリも削除されます。
#...
ACL は AlbConfig では削除できません。ACL は SLB コンソール で削除してください。