

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# セキュリティグループを個別の Pod に割り当てる
<a name="security-groups-for-pods"></a>

 **適用対象**: Amazon EC2 インスタンスを持つ Linux ノード

 **適用対象**: プライベートサブネット

Pod のセキュリティグループは、Amazon EC2 セキュリティグループを Kubernetes Pod と統合します。Amazon EC2 セキュリティグループを使用して、多くの Amazon EC2 インスタンスタイプと Fargate で実行されているノードにデプロイする Pod との間で送受信されるインバウンドおよびアウトバウンドネットワークトラフィックを許可するルールを定義できます。この機能の詳細な説明については「[ポッドのセキュリティグループの紹介](https://aws.amazon.com/blogs/containers/introducing-security-groups-for-pods)」の投稿を参照してください。

## Amazon VPC CNI plugin for Kubernetes 機能との互換性
<a name="security-groups-for-pods-compatability"></a>

Pod のセキュリティグループは、以下の機能で使用できます。
+ IPv4 ソースネットワークアドレス変換 - 詳細については「[Pod のアウトバウンドインターネットアクセスを有効にする](external-snat.md)」を参照してください。
+ クラスター、ポッド、サービスへの IPv6 アドレス - 詳細については「[クラスター、Pod、サービスに対する IPv6 アドレスの説明](cni-ipv6.md)」を参照してください。
+ Kubernetes ネットワークポリシーを使用したトラフィックの制限 - 詳細については、「[Kubernetes ネットワークポリシーにより Pod トラフィックを制限する](cni-network-policy.md)」を参照してください。

## 考慮事項
<a name="sg-pods-considerations"></a>

Pod のセキュリティグループをデプロイする前に、次の制限事項と条件を考慮してください。
+ Pod のセキュリティグループは、Windows ノードまたは EKS Auto Mode では使用できません。
+ Pod のセキュリティグループは、バージョン 1.16.0 以降の Amazon VPC CNI プラグインを使用して、Amazon EC2 ノードを含む `IPv6` ファミリー用に設定されたクラスターで使用できます。バージョン 1.7.7 以降の Amazon VPC CNI プラグインを使用すると、Fargate ノードのみを含むクラスター設定の `IPv6` ファミリーで Pod のセキュリティグループを使用できます。詳細については、[クラスター、Pod、サービスに対する IPv6 アドレスの説明](cni-ipv6.md)を参照してください。
+ Pod のセキュリティグループはほとんどの [Nitro ベース](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)の Amazon EC2 インスタンスファミリーでサポートされていますが、ファミリーの全世代がサポートしているわけではありません。例えば、`m5`、`c5`、`r5`、`m6g`、、`c6g`、`r6g` インスタンスファミリーと世代ではサポートされています。`t` ファミリーのインスタンスタイプは一切サポートされていません。サポートされているインスタンスタイプの詳細なリストについては、GitHub で [limits.go](https://github.com/aws/amazon-vpc-resource-controller-k8s/blob/v1.5.0/pkg/aws/vpc/limits.go) ファイルを参照してください。ノードはそのファイルで一覧表示されているインスタンスタイプのうち、`IsTrunkingCompatible: true` を含むものである必要があります。
+ カスタムネットワークと Pod のセキュリティグループを組み合わせて使用している場合、`ENIConfig` で指定されたセキュリティグループではなく、Pod のセキュリティグループによって指定されたセキュリティグループが使用されます。
+ Amazon VPC CNI プラグインのバージョン `1.10.2` 以前を使用していて、Pod の仕様に `terminationGracePeriodSeconds` 設定を含める場合は、設定の値を「0」にすることはできません。
+ Amazon VPC CNI プラグインのバージョン `1.10` 以前、またはデフォルト設定が `POD_SECURITY_GROUP_ENFORCING_MODE`=`strict` のバージョン `1.11` を使用している場合、`externalTrafficPolicy` が `Local` に設定されたインスタンスターゲットを使用するタイプ `NodePort` および `LoadBalancer` の Kubernetes サービスは、セキュリティグループを割り当てる Pod ではサポートされていません。インスタンスターゲットでのロードバランサーの使用の詳細については「[Network Load Balancer を使用して TCP および UDP トラフィックをルーティングする](network-load-balancing.md)」を参照してください。
+ Amazon VPC CNI プラグインのバージョン `1.10` 以前、またはデフォルト設定が `POD_SECURITY_GROUP_ENFORCING_MODE`=`strict` のバージョン `1.11` を使用している場合、セキュリティグループが割り当てられた Pod からのアウトバウンドトラフィックに対してソース NAT が無効になり、その結果アウトバウンドセキュリティグループルールが適用されます。インターネットにアクセスするには、セキュリティグループが割り当てられた Pod を、NAT ゲートウェイまたはインスタンスで構成されたプライベートサブネットにデプロイされたノードで起動する必要があります。パブリックサブネットにデプロイされたセキュリティグループが割り当てられたポッドは、インターネットにアクセスできません。

  `POD_SECURITY_GROUP_ENFORCING_MODE`=`standard` に設定されたプラグインのバージョン `1.11` 以降を使用している場合、VPC の外部を送信先とする Pod トラフィックはインスタンスのプライマリネットワークインターフェイスの IP アドレスに変換されます。このトラフィックには Pod のセキュリティグループ内のルールではなく、プライマリネットワークインターフェイスのセキュリティグループ内のルールが使用されます。
+ セキュリティグループが関連付けられている Pod で Calico ネットワークポリシーを使用するには、Amazon VPC CNI プラグインのバージョン `1.11.0` 以降を使用し、かつ `POD_SECURITY_GROUP_ENFORCING_MODE`=`standard` に設定することが必要になります。それ以外の場合は、セキュリティグループが関連付けられている Pod との間のトラフィックフローに Calico ネットワークポリシーは適用されず、Amazon EC2 セキュリティグループの適用のみに限定されます。Amazon VPC CNI バージョンを更新するには「[Amazon VPC CNI を使用して Pod に IP を割り当てる](managing-vpc-cni.md)」を参照してください 
+ [NodeLocal DNSCache](https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/) を使用するクラスターのセキュリティグループを使用する Amazon EC2 ノードで実行されている Pod は、Amazon VPC CNI プラグインのバージョンが `1.11.0` 以降で `POD_SECURITY_GROUP_ENFORCING_MODE`=`standard` に設定されている場合にのみサポートされます。Amazon VPC CNI プラグインのバージョンを更新するには「[Amazon VPC CNI を使用して Pod に IP を割り当てる](managing-vpc-cni.md)」を参照してください 
+ Pod のセキュリティグループは、解約率が高い Pod の場合、Pod の起動レイテンシーがより高くなる可能性があります。これはリソースコントローラーのレート制限によるものです。
+ EC2 セキュリティグループのスコープは Pod レベル - 詳細については「[セキュリティグループ](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)」を参照してください。

  `POD_SECURITY_GROUP_ENFORCING_MODE=standard` および `AWS_VPC_K8S_CNI_EXTERNALSNAT=false` を設定した場合、VPC 外部のエンドポイント宛てのトラフィックは、Pod のセキュリティグループではなくノードのセキュリティグループを使用します。