第19章 セキュリティーグループの設定
セキュリティーグループとは、インスタンスへの/からのネットワークおよびプロトコルアクセスを制御する IP フィルタールールのセットで、たとえば、ICMP によりインスタンスへの ping 送信が可能で、SSH によりインスタンスへの接続が可能となります。セキュリティーグループルールは、プロジェクト内のすべてのインスタンスに適用されます。
すべてのプロジェクトには、default
という名前のデフォルトセキュリティーグループがあり、これは、インスタンスにセキュリティーグループを指定しない場合に使用されます。デフォルトでは、デフォルトのセキュリティーグループは、すべての送信トラフィックを許可し、同じセキュリティーグループのインスタンス以外のソースからの着信トラフィックをすべて拒否します。デフォルトのセキュリティーグループにルールを追加するか、プロジェクト用に新規セキュリティーグループを作成できます。インスタンスの作成時に 1 つ以上のセキュリティーグループをインスタンスに適用できます。セキュリティーグループを実行中のインスタンスに適用するには、セキュリティーグループをインスタンスに接続されているポートに適用します。
セキュリティーグループの作成時に、ML2/OVN デプロイメントでステートフルまたはステートレスを選択できます。
ML2/OVS デプロイメントでは、ステートレスセキュリティーグループはサポートされません。
セキュリティーグループはデフォルトでステートフルであり、ほとんどの場合、ステートフルセキュリティーグループはより少ない管理オーバーヘッドでより適切な制御を提供します。
ステートレスセキュリティーグループは、基盤となるファイアウォールでの接続追跡をバイパスするため、パフォーマンスに大きな利点をもたらします。ただし、ステートレスセキュリティーグループには、ステートフルセキュリティーグループよりも多くのセキュリティーグループルールが必要です。ステートレスセキュリティーグループは、場合によっては粒度が低くなります。
- ステートレスセキュリティーグループのメリット
- ステートレスセキュリティーグループはステートフルセキュリティーグループより高速になる可能性があります。
- ステートレスセキュリティーグループは、OpenFlow アクションをハードウェアにオフロードするアプリケーションでは、唯一の実行可能なセキュリティーグループオプションです。
- ステートレスセキュリティーグループのデメリット
- ステートレスセキュリティーグループルールでは、戻りトラフィックは自動的に許可されません。たとえば、ステートレスセキュリティーグループにあるポートからの送信 TCP トラフィックを許可するルールを作成する場合は、受信応答を許可するルールも作成する必要があります。ステートフルセキュリティーグループは、受信応答を自動的に許可します。
- このような受信応答の制御は、ステートフルなセキュリティーグループによって提供される制御ほどの粒度にはならない場合があります。
通常、アプリケーションがパフォーマンスに対して敏感である場合や、OpenFlow アクションのハードウェアオフロードを使用している場合を除き、デフォルトのステートフルセキュリティーグループタイプを使用します。
インスタンスの作成中に、ロールベースのアクセス制御 (RBAC) 共有セキュリティーグループをインスタンスに直接適用することはできません。RBAC 共有セキュリティーグループをインスタンスに適用するには、最初にポートを作成し、共有セキュリティーグループをそのポートに適用してから、そのポートをインスタンスに割り当てる必要があります。セキュリティーグループのポートへの追加 を参照してください。
19.1. セキュリティーグループの作成
新規セキュリティーグループを作成して、プロジェクト内のインスタンスおよびポートに適用できます。
手順
(オプション) 必要なセキュリティーグループが存在しないことを確認するには、利用可能なセキュリティーグループとそのルールを確認します。
$ openstack security group list $ openstack security group rule list <sec_group>
-
<sec_group>
を、利用可能なセキュリティーグループのリストから取得したセキュリティーグループの名前または ID に置き換えてください。
-
.セキュリティーグループを作成します。
$ openstack security group create [--stateless] mySecGroup
オプション:
--stateless
オプションを追加して、ステートレスセキュリティーグループを作成します。デフォルトでは、セキュリティーグループはステートフルです。注記ML2/OVN デプロイメントのみがステートレスセキュリティーグループをサポートします。
セキュリティーグループにルールを追加します。
$ openstack security group rule create --protocol <protocol> \ [--dst-port <port-range>] \ [--remote-ip <ip-address> | --remote-group <group>] \ [--ingress | --egress] mySecGroup
-
<protocol>
を、インスタンスとの通信に許可するプロトコルの名前に置き換えます。 -
(オプション)
<port-range>
を、プロトコル用に開く送信先ポートまたはポート範囲に置き換えます。IP プロトコル (TCP、UDP、および SCTP) には必須です。指定されたプロトコルに対するすべてのポートを許可するには、-1
に設定します。ポート範囲の値はコロンで区切ります。 -
(オプション) 指定した IP アドレスからのアクセスのみを許可するには、
--remote-ip
を使用してリモート IP アドレスブロックを指定するか、--remote-group
を使用して、ルールがリモートグループのメンバーであるインターフェイスからのパケットにのみ適用されることを指定します。--remote-ip
を使用する場合は、<ip-address>
をリモート IP アドレスブロックに置き換えます。CIDR 表記を使用できます。--remote-group
を使用する場合は、<group>
を既存のセキュリティーグループの名前または ID に置き換えてください。いずれのオプションも指定されない場合は、リモート IP アクセス範囲のデフォルトは IPv4 が0.0.0.0/0
、IPv6 が::/0
なので、すべてのアドレスにアクセスが許可されます。 プロトコルルールが適用されるネットワークトラフィックの方向、つまり受信 (
ingress
) または送信 (egress
) のいずれかを指定します。指定されない場合、デフォルトはingress
に設定されます。注記ステートレスセキュリティーグループを作成し、ステートレスセキュリティーグループにあるポートからの送信 TCP トラフィックを許可するルールを作成した場合は、受信応答を許可するルールも作成する必要があります。
-
インスタンスへのアクセスを許可するすべてのプロトコルに対してルールが作成されるまで、ステップ 3 を繰り返します。以下の例では、セキュリティーグループ
mySecGroup
のインスタンスへの SSH 接続を許可するルールを作成します。$ openstack security group rule create --protocol tcp \ --dst-port 22 mySecGroup