Viaによる経路の制御
最終検証日:
翻訳: 竹洞 陽一郎
viaフィールドは、グラントに経路の制御を加えるものです。
送信元から宛先への通信を、どのExit Node、サブネットルーター、アプリコネクタを経由させるかを指定できます。
たとえば、エンジニアリングチームからGitHub用のアプリコネクタへの通信を、特定のExit Node経由に固定するといった使い方ができます。
主な用途は次のとおりです。
- 業務アプリケーションへの通信を、特定のExit Node経由にする。
- デバイスポスチャの適合状況に応じて、経路を切り替える。
- ユーザーごとに、使用するサブネットルーターを割り当てる。
viaフィールドは省略できます。省略した場合、または[]やnullを指定した場合は、利用可能な経路のいずれを使ってもリソースへアクセスできます。
制限事項
viaフィールドに指定できるのはタグのみです。他の識別子は使用できません。viaの対象になるのは、アクセス可能なルーターだけです。到達できるかどうかは、適用されているアクセス制御ポリシーによって決まります。
構文
"grants": [
{
"src": ["<source>"],
"dst": ["<destination>"],
"via": ["tag:<tag-name>"],
"ip": ["*"]
},
]
この記述により、<source>から<destination>への通信は、指定したタグを持つデバイスを経由します。
ビジュアルポリシーエディタを使ってtailnetポリシーファイルを管理することもできます。
操作方法については、ビジュアルエディタリファレンスを参照してください。
記述例
デバイスポスチャに応じて経路を分ける
デバイスポスチャの条件に応じて、同じリソースへのアクセス経路を分けられます。
次の例では、group:engのメンバーがposture:latestMacの条件(安定版のTailscaleクライアントを実行するmacOS 13.4.0)を満たしていれば、利用可能な任意のルーター経由で192.0.2.0/24へアクセスできます。
それ以外のメンバー(autogroup:member)は、オフィスに設置したルーター(tag:office-router)を経由する必要があります。
"postures": {
"posture:latestMac": [
"node:os == 'macos'",
"node:osVersion == '13.4.0'",
"node:tsReleaseTrack == 'stable'",
]
},
"grants": [
{
"src": ["group:eng"],
"srcPosture": ["posture:latestMac"],
"dst": ["192.0.2.0/24"],
"ip": ["*"],
},
{
"src": ["autogroup:member"],
"dst": ["192.0.2.0/24"],
"via": ["tag:office-router"],
"ip": ["*"],
},
]
デバイスポスチャの条件の書き方は、デバイスポスチャを参照してください。
拠点ごとにExit Nodeを分ける
地域ごとに、近い場所のExit Node経由でインターネットへ出るよう指定できます。
次の例では、トロントのオフィスの所属者(group:tor)とシアトルのオフィスの所属者(group:sea)が、それぞれの拠点のExit Node(tag:exit-node-tor、tag:exit-node-sea)を経由します。
エンジニアリングチーム(group:eng)は、任意のExit Nodeを使うか、Exit Nodeを経由せず直接接続できます。
"grants": [
{
"src": ["group:tor"],
"dst": ["autogroup:internet"],
"via": ["tag:exit-node-tor"],
"ip": ["*"],
},
{
"src": ["group:sea"],
"dst": ["autogroup:internet"],
"via": ["tag:exit-node-sea"],
"ip": ["*"],
},
{
"src": ["group:eng"],
"dst": ["autogroup:internet"],
"ip": ["*"],
},
]
Exit Nodeの設定については、Exit Nodeを参照してください。
アプリコネクタごとに経路を分ける
利用者のグループごとに、SaaSアプリケーションへのアクセスに使うアプリコネクタを指定できます。
次の例では、group:github-usersはGitHub用のアプリコネクタ(tag:github-appconnector)を、group:salesforce-usersはSalesforce用のアプリコネクタ(tag:salesforce-appconnector)を経由します。
"grants": [
{
"src": ["group:github-users"],
"dst": ["autogroup:internet"],
"ip": ["*"],
"via": ["tag:github-appconnector"],
},
{
"src": ["group:salesforce-users"],
"dst": ["autogroup:internet"],
"ip": ["*"],
"via": ["tag:salesforce-appconnector"],
}
]
アプリコネクタについては、アプリコネクタの仕組みを参照してください。
複数のアプリコネクタを冗長化する場合は、高可用性の設定も参照してください。