頭文字D / 高橋涼介風:ACL(概論編)
ACL(アクセスコントロールリスト)とは何か?〜
ACL(アクセスコントロールリスト)
ネットワークのACL(アクセスコントロールリスト)とは、アクセスを制御するためのルールリストだ。
世の中には、簡単に侵入を許してはいけない領域がある。モータースポーツの世界で言えば、ピットレーンやパドック、スターティンググリッドなどのエリアかな。
ピットレーンにはドライバーやチームスタッフだけがアクセスでき、パドックエリアにはVIPや特定の関係者だけが入れる。スターティンググリッドでは、レース直前の選ばれたスタッフとメディア関係者だけが入れるように、アクセスには厳密な制限がかかっている。
このようなエリアごとのアクセス制御が、ネットワークにおけるACLの機能そのものだ。
「ピットレーンというのは、アクセスが非常に厳しく制限されたエリアだ。ドライバー、チームクルー、FIA関係者など、限られた人物しか入ることができない。」
「番号付き標準ACL」は、(送信元)IPアドレスに基づいている
まずは、ネットワークにおける「番号付き標準ACL」について触れておこう。これは、送信元IPアドレスのみに基づいてアクセスを許可または拒否する。非常にシンプルな仕組みだ。
そしてこのリストは番号で管理する。「番号付き標準ACL」では、ACL番号という番号で1〜99、1300~1999が使われる。
例えば、ピットレーンにアクセスできるのは「特定のIDを持った人」だけだと考えてみろ。これが「許可」されるIPアドレス、つまりアクセスを許可する者が限られているわけだ。他の誰かがIDを持っていなければ、ピットレーンには入れない。
番号付き標準ACLは、IPアドレスだけに基づいてアクセスを管理する。車のナンバープレートのような、特定のアドレス(ID)に対してだけ許可されているのだ。
ピットレーンへのアクセス制限は、このACLの一番基本的な形だ。基本的なルールとして、特定のIDだけが通行できるようになっている。
「番号付き拡張ACL」は、
送信元/宛先IPアドレス、ポート番号、プロトコルも考慮
次に、「番号付き拡張ACL」だ。これは、アクセスを許可する範囲を、もっと細かく指定できる。「ピットレーン」だけでなく、パドックエリアやスターティンググリッド、各種エリアにおいてもアクセス制御を行う必要がある。これが「番号付き拡張ACL」の役割だ。
「番号付き拡張ACL」が利用する
ネットワークにおいては、IPアドレスだけでなく、ポート番号やプロトコルも考慮する。F1の例で言うなら、ただのIDバッジだけでなく、「ピットパス」「ガレージパス」「メディアパス」といったように、具体的な用途や役割に応じたアクセス制御を行う。例えば、ピットレーンにアクセスできる人でも、メディアの人間は特定のエリアにしか入れないし、チームスタッフが「スターティンググリッド」にアクセスするためには、別の許可が必要だ。
番号付き拡張ACLは、こうしたアクセスの範囲を細かく管理する。どのIPが、どのポートにアクセスできるかを決めるのと同じように、どのパス(ID)で、どのエリアにアクセスするかを厳密に決めるんだ。
上のふたつをまとめると次のようになる。この表はしっかりと頭に叩き込んでおけ。
ACL番号 | トラフィックの管理 | |
番号付き標準ACL | 1~99 1300~1999 | 送信元IPアドレスのみ |
番号付き拡張ACL | 100~199 2000~2699 | 送信元/宛先IPアドレス、ポート番号、プロトコルも考慮 |
「名前付き標準ACL」は、(送信元)IPアドレスに基づいている
次に紹介するのは、「名前付き標準ACL」だ。これは「番号付き標準ACL」と同じ機能を持つが、番号の代わりに任意の名前を使ってACLを管理できる。
名前を付けることで、ACLの意図や用途が分かりやすくなり、アクセス権限の管理がより直感的になるのが利点だ。
「名前付き拡張ACL」は、
送信元/宛先IPアドレス、ポート番号、プロトコルも考慮
最後に、「名前付き拡張ACL」だ。これは、「番号付き拡張ACL」と同じ機能を持つ。番号の代わりに任意の名前を使うことはいうまでもないだろう。
インバウンドACLとアウトバウンドACL
インバウンドACLの動作(外部から内部へ)
インバウンド通信は、「外部から内部へのデータの流れ」にあたる。モータースポーツに例えるなら、外部からサーキットのピットレーンに車が入ってくるイメージだ。
例えば、レースのピットにはアクセス制限があり、関係者以外は入れない。外部のサポートスタッフやメディア、他のチームの車がピットレーンに入ろうとする場面で、ピットへのアクセスが許可されている車と許可されていない車があるとする。ACLは、どの車(IPアドレス)がピットに入れるかを決める役割を担う。
動作の流れ
- 外部の車(トラフィック)がピットエリアに近づく。
- その車のパス(IPアドレスやプロトコル)を確認する。
- もし、その車のパスが許可リストにあれば、ピットに入れる。許可されていない車(IPアドレス)なら、ピットエリアへのアクセスは拒否される。
アウトバウンドACLの動作(内部から外部へ)
次に、アウトバウンド通信は、「内部から外部へのデータの流れ」を指す。これをモータースポーツに置き換えると、ピットから外のサーキットに車が出て行く状況だ。
例えば、レースの車がピットエリアから外に出るには、レースの規定や許可を受けた車だけが出場できる。アウトバウンドACLは、どの車(ネットワーク内部から外部へのデータ)がレースに出ることを許可するかを管理するものだ。
動作の流れ
- 社内(ピット)から外部(サーキット)へ出る車(トラフィック)のパス(送信元IPアドレス、宛先IPアドレス、ポート番号)を確認。
- もし、その車がレース規定に従っていて、指定された経路(IPアドレスやポート番号)を通る場合は許可される。
- もし、その車が規定に合わない(許可されていないポートやIPアドレス)場合、その車はレースに出られない。
インバウンドとアウトバウンドACLの違いと役割
インバウンドACLは、外部から内部へのアクセス(外部車両がピットに入る)の制御だ。外部の不正アクセスを防ぐために、ピットに入れる車を制限する。
一方、アウトバウンドACLは、内部から外部へのアクセス(内部車両がサーキットに出る)の制御だ。内部からの不正なデータ送信を防ぐために、レースに出る車を厳選する。
どうだ啓介。ACLについて概要だがどんな仕組みかは理解できたか?
【啓介】
ああ、よくわかったぜ兄貴。次はその仕組みを支える具体的なルールを知る必要があるってとこもな。
【涼介】
よし啓介、じゃあ、早速、ACL(Access Control List)の本質ってやつを理解してもらうぞ。ここでのキーワードは、「処理順序」、「暗黙のdeny」、そして「ACLの適用数の制限」だ。
これは峠でどれだけライン取りが上手くても、ルールと限界を知らなければ意味がないのと同じことに似ているぞ。
ACL(Access Control List)の本質
【処理順序】──最速のラインは、最初の判断で決まる
ACLってのは、上から順番に1行ずつ、まるでタイムアタックの走行ラインをトレースするように処理されていく。
一番上に書いたルールから順に、パケットがその条件に合致するかを1つずつ見ていく。
合致したら、その瞬間に処理は終了だ。それ以降にどんなルールが書いてあっても、一切見ることはない。だから、順番を間違えれば、致命的な通信トラブルを引き起こす。
たとえば、次の設定だと、HTTPだけ止めて、他は通す。
access-list 100 deny tcp any any eq 80
access-list 100 permit ip any any
だが順番を逆にしてしまえば、
access-list 100 permit ip any any
access-list 100 deny tcp any any eq 80
HTTPは普通に通る。下のdenyなんて見られることすらない。
――まるで、峠の最初のコーナーをミスったせいで、後半のテクが活かせない走りと同じだ。
【暗黙のdeny】──“見えない最後の壁”を忘れるな
ACLの最後には、自動的に追加される「deny all」がある。そう、「書いてなくても、最後は全部拒否される」という見えざるルールだ。
お前が許可したい通信を明示的にpermitとしなければ、ACLは「それ以外は全部ブロックして当然」と判断する。
これに気づかず、「設定したのに通信できない!」と焦る奴は、コース終盤の見えないオイルに滑ってスピンするようなもんだ。
【ACLの適用数】──コーナーにも限界がある
Ciscoルーターでは、1つのインターフェースに対して、インバウンド(IN)、アウトバウンド(OUT)方向ごとに1つのACLしか設定できない。
つまり、次の設定を行った後は、それ以上は設定できない。
ip access-group 100 in → インバウンド側に1個
ip access-group 101 out → アウトバウンド側に1個
「複数のラインを同時に攻めようとしても、マシンが耐えられない」のと同じだ。
もし複数の条件を適用したいなら、ACLの中に複数のルールを入れるしかない。
つまり、「1本のラインの中に、複数の最速区間を詰め込む」ような高度な設定が求められるってことだ。
わかったな啓介。走りでも設定でも、ルールを知ってこそ、自分の実力を最大限に引き出せる。速さだけを追い求めるな。制御できない速さは、破滅しか生まない。
今日はここまでだ。下にITスクール情報を置いておく。俺は学習にも闘争心が必要だと考えている。まだまだ、これからだと思えるなら限界を超えた走りを見せてくれ。健闘を祈る。


