セキュリティグループは仮想ファイアウォールとして機能し、ステートフルパケットインスペクション(SPI)とパケットフィルタリング機能を提供します。セキュリティグループを使用して、クラウド内にセキュリティドメインを定義できます。セキュリティグループルールを追加して、セキュリティグループ内のポッド(Elastic Container Instance)のインバウンドトラフィックとアウトバウンドトラフィックを制御できます。
セキュリティグループの概要
セキュリティグループは、同じ仮想プライベートクラウド(VPC)内に存在するインスタンスの論理的に分離されたグループです。セキュリティグループ内のすべてのインスタンスは相互に信頼されており、同じセキュリティグループルールで保護されています。セキュリティグループルールは、セキュリティグループ内のElastic Container Instanceに対するインターネットまたは内部ネットワークへのアクセス、またはインターネットまたは内部ネットワークからのアクセスを制御します。セキュリティグループの詳細については、概要を参照してください。
各セキュリティグループは、同じVPC内の複数のElastic Container Instanceを管理できます。
各Elastic Container Instanceは、セキュリティグループに属している必要があります。
セキュリティグループは、基本セキュリティグループと高度なセキュリティグループに分類されます。ビジネスで多数のElastic Container Instanceと高いO&M効率が必要な場合は、高度なセキュリティグループを使用することをお勧めします。基本セキュリティグループと比較して、高度なセキュリティグループはより多くのElastic Container Instanceに対応でき、セキュリティグループルールをより簡単に構成できます。2種類のセキュリティグループの違いの詳細については、基本セキュリティグループと高度なセキュリティグループを参照してください。
ポッドへのセキュリティグループの割り当て
デフォルトでは、Container Service for Kubernetes(ACK)クラスターでElastic Container Instanceベースのポッドを作成すると、ポッドはeci-profileで指定されたセキュリティグループに追加されます。ビジネス要件に基づいて、他のセキュリティグループをポッドに割り当てることもできます。他のセキュリティグループをポッドに割り当てる前に、セキュリティグループを作成する必要があります。詳細については、セキュリティグループの作成を参照してください。
既存のElastic Container Instanceベースのポッドのセキュリティグループを変更することはできません。別のセキュリティグループに属するポッドを使用するには、そのセキュリティグループに同一のポッドを作成します。
クラスター構成
eci-profileには、セキュリティグループの構成情報が含まれています。 kubectl editコマンドを実行して、セキュリティグループIDを変更できます。
kubectl edit configmap eci-profile -n kube-systemVirtual Kubeletコンポーネントのバージョンがv2.0.0.90-15deb126e-aliyun以降の場合は、eci-profileを変更して構成のホットアップデートを実装できます。 Virtual Kubeletコンポーネントは、ACK Virtual Nodeコンポーネントです。 Virtual Kubeletのバージョンがv2.0.0.90-15deb126e-aliyunより前の場合は、Virtual Kubeletをアップグレードすることをお勧めします。
dataセクションのsecurityGroupIdパラメーターを変更します。例:
data:
enableClusterIp: "true"
enableHybridMode: "false"
enablePrivateZone: "false"
resourceGroupId: ""
securityGroupId: sg-2ze0b9o8pjjzts4h**** # セキュリティグループIDを指定します。サポートされているセキュリティグループIDは1つだけです。
selectors: ""
vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf****
vpcId: vpc-2zeghwzptn5zii0w7****ポッド構成
特別な要件を持つ一部のElastic Container Instanceベースのポッドの場合、k8s.aliyun.com/eci-security-groupアノテーションを追加してセキュリティグループを割り当てることができます。次の要件を満たす必要があります。
最大5つのセキュリティグループを割り当てることができます。
割り当てられたセキュリティグループは、同じ仮想プライベートクラウド(VPC)に属している必要があります。
割り当てられたセキュリティグループは、同じタイプである必要があります。
アノテーションは、ポッドの構成ファイルのメタデータに追加する必要があります。たとえば、Deploymentを作成するときは、spec.template.metadataセクションにアノテーションを追加する必要があります。
Elastic Container Instanceの機能を使用するには、Elastic Container Instanceベースのポッドを作成するときにのみアノテーションを追加できます。ポッドを更新するときにアノテーションを追加または変更しても、これらのアノテーションは有効になりません。
例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-security-group: "sg-bp1dktddjsg5nktv****,sg-2ze0b9o8pjjzts4h****" # セキュリティグループを割り当てます。
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80セキュリティグループルールの追加
セキュリティグループ内のElastic Container Instanceにセキュリティグループルールを追加できます。セキュリティグループルールは、インスタンスへのアクセスを制御します。例:
Elastic Container Instanceがセキュリティグループ外のサービスと通信する必要がある場合は、セキュリティグループルールを追加してサービス相互接続を実装できます。
リクエストソースによって実行された攻撃が検出された場合は、セキュリティグループルールを追加してソースからのアクセスをブロックできます。
詳細については、セキュリティグループルールの追加を参照してください。