Azure NSG のサービスポートのアクセス範囲の確認

管理用・内部用のサービスポートは、必要なクライアントにだけ許可します。

説明

すべてのアドレスからサービスポートへの通信を許可する Azure NSG 規則は、意図より広いアクセスを許す可能性があります。実際のアクセス範囲は、NSG の関連付け、規則の優先順位、ネットワーク経路にも依存します。公開ウェブサイトに必要なアクセスと、管理用・内部用のアクセスを区別してください。

想定される影響

外部アクセスが不要なサービスに、意図しないクライアントからの接続試行が届く可能性があります。サービスの機能や認証の状態によっては、不正利用や情報漏えいにつながるおそれがあります。

対処方法

不要な許可規則を削除するか、送信元を必要なクライアントの範囲に制限してください。関連付け先のリソースで有効な規則を確認し、新しい接続の許可と遮断を試験してください。規則を変更しても既存の接続は即座には切断されません。Ansible の purge_rules は既定で false のため、タスクの一覧から外した規則が実際に削除されたことも確認してください。

例

TCP 23 ポートへのアクセスが不要な場合の例です。対象のサブネットやネットワークインターフェイスに NSG を関連付ける設定は別途必要です。

変更前

yaml
- name: foo
  azure_rm_securitygroup:
    resource_group: myResourceGroup
    name: mysecgroup
    rules:
      - name: example
        priority: 100
        direction: Inbound
        access: Allow
        protocol: TCP
        source_port_range: "*"
        destination_port_range: "23"
        source_address_prefix: "0.0.0.0/0"
        destination_address_prefix: "*"

すべての IPv4 アドレスから TCP 23 への通信を許可します。

変更後

yaml
- name: foo
  azure_rm_securitygroup:
    resource_group: myResourceGroup
    name: mysecgroup
    rules:
      - name: example
        priority: 100
        direction: Inbound
        access: Deny
        protocol: TCP
        source_port_range: "*"
        destination_port_range: "23"
        source_address_prefix: "*"
        destination_address_prefix: "*"

この規則に一致する TCP 23 の新しい接続を拒否します。

参考資料