エンドポイント アクセス制御リストとは
重要
Azure には、リソースを作成および操作するための 2 つの異なるデプロイ モデル (Resource Managerとクラシック) があります。 この記事では、クラシック デプロイ モデルの使用方法について説明します。 最新のデプロイでは Resource Manager デプロイ モデルを使用することをお勧めします。
エンドポイント アクセス制御リスト (ACL) は、Azure デプロイメントに使用できるセキュリティ拡張機能です。 ACL を使用して、仮想マシン エンドポイントのトラフィックを選択して許可または拒否することができます。 このパケット フィルタリング機能は、セキュリティ レイヤーを追加します。 エンドポイント用のネットワーク ACL のみを指定できます。 仮想ネットワーク、または仮想ネットワークに含まれる特定のサブネットの ACL は指定できません。 可能な限り、ACL ではなくネットワーク セキュリティ グループ (NSG) を使用することをお勧めします。 NSG を使用する場合、エンドポイントのアクセス制御リストは置き換えられ、適用されなくなります。 NSG の詳細については、「ネットワーク セキュリティ グループの概要」を参照してください。
ACL は、PowerShell または Azure Portal のいずれかを使用して構成できます。 PowerShell を使用してネットワーク ACL を構成するには、「PowerShell を使用してエンドポイントのアクセス制御リストを管理する」を参照してください。 Azure Portal を使用してネットワーク ACL を構成するには、「仮想マシンにエンドポイントをセットアップする方法」を参照してください。
ネットワーク ACL を使用すると、次の操作を実行できます。
- リモート サブネット IPv4 アドレスの範囲に基づいて、仮想マシン入力エンドポイントに対する受信トラフィックを選択して許可または拒否する。
- ブロックリストの IP アドレス
- 仮想マシンのエンドポイントごとに複数のルールを作成する
- ルールの順序 (最低から最高) を使用して、特定の仮想マシン エンドポイントに適用される正しいルール セットを構成します。
- 特定のリモート サブネットの IPv4 アドレスの ACL を指定します。
ACL の制限については、Azure の制限に関する記事を参照してください。
ACL のしくみ
ACL は、ルールの一覧が格納されたオブジェクトです。 ACL を作成し、仮想マシン エンドポイントに適用すると、VM のホスト ノードでパケットのフィルター処理が実行されます。 つまり、リモート IP アドレスのトラフィックは、VM ではなく、一致する ACL ルールのホスト ノードでフィルター処理されます。 そのため、VM のパケット フィルター処理に貴重な CPU サイクルが使用されることを回避できます。
仮想マシンが作成されると、すべての受信トラフィックをブロックする既定の ACL が作成されます。 ただし、エンドポイント (ポート 3389) が作成されると、そのエンドポイントのすべての受信トラフィックを許可するように既定の ACL は変更されます。 リモート サブネットの受信トラフィックは、そのエンドポイントに対して許可されるので、ファイアウォールのプロビジョニングは必要ありません。 特定のポート用にエンドポイントを作成しない限り、受信トラフィックのその他すべてのポートはブロックされます。 既定で、送信トラフィックは許可されています。
既定の ACL テーブルの例
ルール番号 | リモート サブネット | エンドポイント | 許可/拒否 |
---|---|---|---|
100 | 0.0.0.0/0 | 3389 | 許可 |
許可および拒否
"許可" または "拒否" を指定したルールを作成して、仮想マシン入力エンドポイントに対するネットワーク トラフィックを選択して許可または拒否できます。 既定では、エンドポイントが作成されると、エンドポイントに対するすべてのトラフィックが許可されます。 そのため、仮想マシン エンドポイントに到達できるネットワーク トラフィックを細かく制御するには、許可/拒否ルールを作成し、適切な優先順序で配置する方法を理解する必要があります。
考慮すべき点:
- ACL なし : 既定では、エンドポイントが作成されると、エンドポイントに対するすべてが許可されます。
- 許可 : 1 つ以上の "許可" 範囲を追加すると、既定でその他すべての範囲は拒否されます。 許可された IP 範囲のパケットのみが、仮想マシン エンドポイントと通信できるようになります。
- 拒否 : 1 つ以上の "拒否" 範囲を追加すると、既定でその他すべての範囲は許可されます。
- 許可と拒否の組み合わせ : 許可または拒否する特定の IP 範囲を絞り込むには、"許可" と "拒否" の組み合わせを使用できます。
ルールおよびルールの優先順位
特定の仮想マシン エンドポイントに関するネットワーク ACL をセットアップできます。 たとえば、仮想マシンに作成された RDP エンドポイントのネットワーク ACL を指定して、特定の IP アドレスに対するアクセスをロックすることができます。 次の表は、特定範囲のパブリック仮想 IP (VIP) に対してアクセス権を付与して、RDP へのアクセスを許可する方法を示しています。 その他すべてのリモート IP は拒否されます。 ここでは、最下位が優先されるルール順序に従います。
複数のルール
次の例では、RDP エンドポイントに対して 2 つのパブリック IPv4 アドレス範囲 (65.0.0.0/8 および 159.0.0.0/8) からのアクセスだけを許可する場合に、2 つの許可ルールを指定することでこれを実現しています。 この場合、既定で仮想マシンの RDP が作成されるので、リモート サブネットに基づいて RDP ポートへのアクセスをロックすることができます。 次の例は、特定範囲のパブリック仮想 IP (VIP) に対してアクセス権を付与して、RDP へのアクセスを許可する方法を示しています。 その他すべてのリモート IP は拒否されます。 ネットワーク ACL は特定の仮想マシン エンドポイントに対してセットアップでき、既定でアクセスは拒否されるので、この方法は役に立ちます。
例 - 複数のルール
ルール番号 | リモート サブネット | エンドポイント | 許可/拒否 |
---|---|---|---|
100 | 65.0.0.0/8 | 3389 | 許可 |
200 | 159.0.0.0/8 | 3389 | 許可 |
ルールの順序
1 つのエンドポイントに対して複数のルールを指定できるので、優先するルールを決定するには、ルールを整理する方法が必要です。 優先順位は、ルールの順序で決まります。 ネットワーク ACL は、最下位が優先されるルール順序に従います。 次の例では、ポート 80 のエンドポイントには、特定の IP アドレス範囲に対するアクセスのみが選択的に付与されます。 この範囲を構成するために、175.1.0.1/24 空間のアドレス用の拒否ルール (ルール番号 100) を設定しています。 2 つ目のルールは、175.0.0.0/8 以下のその他すべてのアドレスに対するアクセスを許可する優先順位 200 が指定されています。
例 - ルールの優先順位
ルール番号 | リモート サブネット | エンドポイント | 許可/拒否 |
---|---|---|---|
100 | 175.1.0.1/24 | 80 | 拒否 |
200 | 175.0.0.0/8 | 80 | 許可 |
ネットワーク ACL と負荷分散セット
負荷分散セット エンドポイントに対するネットワーク ACL を指定できます。 負荷分散セットに対して ACL を指定すると、その負荷分散セット内のすべての Virtual Machines に対してネットワーク ACL が適用されます。 たとえば、負荷分散セットが "ポート 80" で作成され、負荷分散セットに 3 つの VM が含まれている場合、1 つの VM のエンドポイント "ポート 80" に作成されたネットワーク ACL は、自動的に他の VM に適用されます。