Application Load Balancer (ALB) Ingress を使用してサービスを公開する場合、アクセス制御リスト (ACL) を設定して、特定の IP アドレスを使用するクライアントからのサービスへのリクエストを許可または拒否できます。 このトピックでは、AlbConfig を使用して ACL を作成または変更し、リスナーに関連付ける方法について説明します。
ACL のしくみ
ALB Ingress は、リスナーに ACL を関連付け、ホワイトリストまたはブラックリストを設定することにより、特定の IP アドレスを使用するクライアントからのリクエストをきめ細かく制御します。 ACL には、CIDR ブロックのグループが含まれています。 AlbConfig を使用してリスナーに ACL を関連付けると、リスナーは ACL 内のエントリを使用して、バックエンド サービスへのアクセス リクエストが送信された送信元 IP アドレスと照合します。 リクエストを制御するには、次のいずれかの方法を使用できます。
ホワイトリストを設定して、ACL のエントリと一致する送信元 IP アドレスからのリクエストのみがバックエンド サービスにアクセスできるようにします。
ブラックリストを設定して、ACL のエントリと一致する送信元 IP アドレスからのリクエストがバックエンド サービスにアクセスできないようにします。
ACL は、IPv4 アドレスのみを使用したアクセス制御をサポートしています。
次の図は、ACL のしくみを示しています。
設定方法
次の表に、リスナーを ACL に関連付けるために使用できる方法を示します。 aclIds パラメーターを使用することをお勧めします。
項目 | ||
ALB Ingress コントローラーのバージョン | ALB Ingress コントローラー 2.7.0 以降では、このパラメーターがサポートされています。 | すべてのバージョンの ALB Ingress コントローラーで、このパラメーターがサポートされています。 |
既存の ACL との関連付け | 既存の ACL の ID を使用して、リスナーを ACL に関連付けることができます。 | ALB Ingress コントローラー 2.7.0 以降では、リスナーを既存の ACL に関連付けることはできません。 |
ACL の作成方法 | ACL を使用する前に、Server Load Balancer (SLB) コンソールで ACL を手動で作成する必要があります。 | AlbConfig を使用して ACL を作成できます。 |
ユースケース シナリオ | この方法は、ACL のエントリを頻繁に変更する必要がある場合や、ACL を費用対効果の高い方法で維持したい場合に適しています。 | この方法は、少数のエントリを含む少数のリスナーと ACL を使用してアクセス制御を有効にしたい場合に適しています。 |
aclIdsパラメーターとaclEntriesパラメーターは、ACL 設定において相互に排他的です。 リスナーの ACL を設定するには、これらのいずれか 1 つのみを使用できます。 両方のパラメーターを同時に使用すると、エラーが発生します。ALB Ingress コントローラー 2.7.0 以降では、
aclIdsパラメーターのみを使用して、既存の ACL をリスナーに関連付けることができます。
前提条件
AlbConfig が作成され、AlbConfig を使用してリスナーが設定されています。 aclConfig パラメーターは、使用するリスナーに関連付けられています。
aclIds パラメーターを使用してリスナーを ACL に関連付ける
手順 1: ACL を作成する
アクセス制御を有効にする前に、ACL を作成する必要があります。
ALB コンソール にログインします。
上部のナビゲーションバーで、ACL を作成するリージョンを選択します。
左側のナビゲーションウィンドウで、[ALB] > [アクセス制御] を選択します。
概要 ページで、アクセス制御リストの作成 をクリックします。
アクセス制御リストの作成 ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
[ACL 名]
ネットワーク ACL の名前を入力します。
[タグとリソースグループ]
[タグキー] パラメーターと [タグ値] パラメーターを設定します。
タグを指定すると、[アクセス制御] ページでタグ別に ACL をフィルタリングできます。
[リソースグループ] ドロップダウンリストから リソースグループ を選択します。
手順 2: ACL にエントリを追加する
ACL を作成した後、ACL にエントリを追加できます。 ACL エントリは、ALB インスタンスにリクエストを送信する送信元 IP アドレスまたは CIDR ブロックを指定します。 各 ACL に複数のエントリを追加できます。
概要 ページで、管理する ACL を見つけ、[アクション] 列の 管理 をクリックします。
ACL 詳細ページの [エントリ] タブで、次のいずれかの方法を使用してエントリを追加します。
単一の IP アドレスまたは CIDR ブロックを追加する
[エントリの追加] をクリックします。 [ACL エントリの追加] ダイアログボックスで、[IP/CIDR ブロック] パラメーターと [備考] パラメーターを設定します。 次に、[追加] をクリックします。
複数の IP アドレスまたは CIDR ブロックを一度に追加する
[ACL エントリの追加] をクリックします。 [ACL エントリの追加] ダイアログボックスで、複数の IP アドレスまたは CIDR ブロックと備考を追加します。 次に、[追加] をクリックします。
説明一度に複数のエントリを追加する場合は、次の点に注意してください。
1 行に 1 つのエントリを入力します。 新しい行を開始するには、ENTER キーを押します。
エントリ内で IP アドレスまたは CIDR ブロックと備考を区切るには、縦棒 (|) を使用します。 たとえば、192.168.1.0/24|備考 と入力できます。
一度に追加できるエントリは最大 20 個です。
エントリを追加した後、ビジネス要件に基づいて次の操作を実行します。
[エントリ] 列に追加した IP アドレスまたは CIDR ブロックを表示します。
エントリを削除します。 削除するエントリを見つけて、[アクション] 列の [削除] をクリックします。 削除するエントリを選択し、リストの下にある [削除] をクリックすることもできます。
エントリをエクスポートするには、リストの右上隅にある
アイコンをクリックしてすべてのエントリをエクスポートするか、エクスポートするエントリを選択して
アイコンをクリックします。
手順 3: ACL をリスナーに関連付ける
次の YAML コード例では、既存の AlbConfig に spec.listeners.aclConfig パラメーターを追加し、作成された ACL の ID を 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 設定に追加します。 この例では、既存の ACL の ID は acl-wtg*** です。
#...次の表に、aclConfig のパラメーターを示します。
パラメーター | 説明 |
| ACL のタイプ。 有効な値: Black および White。 |
| リスナーに関連付ける ACL の ID。 重要 各リスナーは最大 3 つの ACL に関連付けることができます。 |
手順 4: アクセス制御の効果を確認する
パブリック IP アドレスがホワイトリストのエントリと一致する、またはブラックリストのエントリと一致しないクライアントを使用して、バックエンド サービスにアクセスし、ACL 設定の効果を確認できます。
この例では、「ALB Ingress を始める」トピックで作成されたリソースを使用します。
クライアントからのアクセスが許可されている場合、クライアントは想定どおりにバックエンド サービスにアクセスできます。

手順 5: (オプション) リスナーから ACL の関連付けを解除する
次の YAML ファイルでは、リスナーから 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 の ID は acl-wtg*** です。
#...AlbConfig から ACL を削除することはできません。 ACL を削除するには、SLB コンソール にログインします。
aclEntries パラメーターを使用して ACL を作成する
ALB Ingress コントローラー v2.7.0 以降では、
aclNameパラメーターを使用して既存の ACL をリスナーに関連付けることはできなくなりました。aclNameのパラメーターを更新するたびに、新しい ACL が作成され、リスナーに関連付けられます。ALB Ingress コントローラー v2.6.0 以前では、デフォルトでライトバックメカニズムが使用されます。 ライトバックメカニズムのしくみについて、以下に説明します。
AlbConfig で
aclConfigパラメーターが空のままになっている場合、リスナーに関連付けられた ACL のエントリは AlbConfig に書き戻されます。aclConfigパラメーターが設定されているか、リスナーに関連付けられた ACL のエントリが AlbConfig に書き戻されている場合、AlbConfig は変更されません。
Ingress リソースが変更された場合、ALB Ingress コントローラーは設定された AlbConfig を使用して、コンソールの ACL 設定を上書きします。 この場合、設定の整合性を維持する必要があります。
手順 1: ACL のエントリを設定する
次の YAML コード例では、既存の AlbConfig の spec.listeners.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 のパラメーターを示します。
パラメーター | 説明 |
| ACL のエントリ。 エントリは、127.0.0.1/32 などの CIDR ブロックである必要があります。 |
| ACL のタイプ。 有効な値: Black および White。 |
| ACL の名前。 |
手順 2: アクセス制御の効果を確認する
パブリック IP アドレスがホワイトリストのエントリと一致する、またはブラックリストのエントリと一致しないクライアントを使用して、バックエンド サービスにアクセスし、ACL 設定の効果を確認できます。
この例では、「ALB Ingress を始める」トピックで作成されたリソースを使用します。
クライアントからのアクセスが許可されている場合、クライアントは想定どおりにバックエンド サービスにアクセスできます。

手順 3: (オプション) ACL を削除する
次の YAML コード例は、AlbConfig を更新して ACL を削除する方法を示しています。 このコード例では、172.10.XX.XX/16 CIDR ブロックを含むホワイトリストタイプの ACL を削除します。 更新された AlbConfig の aclEntries パラメーターは、関連付けられた ACL と同期されます。 この例では、ACL の名前は acl-test です。 aclEntries パラメーターが空のままになっている場合、すべてのエントリが ACL から削除されます。
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 エントリも削除されます。
#...AlbConfig から ACL を削除することはできません。 ACL を削除するには、SLB コンソール にログインします。
関連情報
クラスターの API サーバーに ACL を設定できます。 詳細については、「API サーバーのアクセス制御ポリシーを設定する」をご参照ください。
クラスター内のノードのインバウンドトラフィックとアウトバウンドトラフィックは、セキュリティグループによって制御されます。 セキュリティグループの設定方法の詳細については、「クラスターのセキュリティグループを設定する」をご参照ください。