Tailscaleロゴ

ACLでアクセス権限を管理する

最終検証日:
翻訳: 竹洞 陽一郎

Tailscaleは現在、次世代のアクセス制御ポリシー構文であるグラントを使って、リソースへのアクセスを保護しています。
グラントは、従来のACLのすべての機能に加えて、追加の機能を提供します。

ACLは今後も無期限に動作し続けます。Tailscaleは、この第1世代の構文のサポートを製品から削除することはありません。
ただし、ACLには新機能が追加されないため、Tailscaleはグラントへの移行と、すべての新しいtailnetポリシーファイルの構成でグラントを使用することを推奨しています。

ACLはすべてのプランで利用できますが、一部のプランでは特定の機能が制限される場合があります。

Tailscaleのアクセス制御方式は、最小権限(least privilege)ゼロトラスト(zero trust)の原則に従っています。
tailnetのアクセス制御を定義する方法には、アクセス制御リスト(ACL)とグラントの2つがあります。
どちらの方法も、デフォルト拒否(deny-by-default)の原則に従い、tailnetポリシーファイル内で宣言的なhuJSON構文を使って定義します。

ACLは、tailnet内でのアクセスを管理する従来のネットワーク層のアプローチであり、他のデバイスのポートにアクセスできるデバイスやユーザーの集合を定義します。
作成する各ACLには、送信元(source)と宛先(destination)を定義する必要があります。
これにより、Tailscaleネットワーク(tailnetと呼ばれます)上のユーザーとデバイスに対して、アクセス制御を正確に定義できます。

{
  "acls": [
    {
      "action": "accept",
      "src": [ <list-of-sources> ], // これらの送信元(デバイスまたはユーザー)は
      "dst": [ <destination>:<port> ], // 定義されたポートで、これらの宛先デバイスにアクセスできます
    }
  ]
}

ビジュアルポリシーエディタを使ってtailnetポリシーファイルを管理することもできます。
ビジュアルエディタの使い方については、ビジュアルエディタリファレンスを参照してください。

tailnetを最初に作成すると、デフォルトのtailnetポリシーファイルにより、tailnet内のすべてのデバイス間の通信が有効になります。
ニーズに合わせて、ACLの編集を含め、ポリシーファイルを変更できます。

ACLは、デフォルト拒否(deny-by-default)、方向性がある(directional)、ローカルで適用される(locally enforced)という性質を持ち、ローカルネットワークのトラフィックには影響しません。

Tailscaleのアクセス制御へのアプローチについて詳しくは、RBAC like it was meant to be(ブログ記事、英語)を参照してください。

アクセス制御ポリシーを何も定義しない場合、Tailscaleはデフォルトの全許可ACLポリシーを適用します。
すべてのトラフィックを拒否するには、tailnetポリシーファイルのaclsセクションに空のオブジェクトを指定してください。

ACLを編集する

tailnetのアクセスルールは、管理コンソールのAccess controlsページ、Tailscale ACL用のGitOps、またはTailscale APIを使って編集できます。
詳しくは、ACLの編集を参照してください。

アクセス制御ポリシーの作成についてはtailnetポリシーファイルの構文を、よくあるポリシーの例についてはACLのサンプルを参照してください。

プランごとの利用可否

ACLはすべてのプランで利用できますが、一部のプランでは特定の機能が制限される場合があります。

プランごとの利用可否
利用可否 すべてのプラン PremiumおよびEnterpriseプラン
アクセスルールの対象 Any、Tailscale IP、サブネットCIDR範囲、オートグループ、グループ、ユーザー、タグ、ホスト、IPセット
アクセスルールの指定内容 ポート、プロトコル
ACLのセクション aclgroupshoststeststagOwnersautoApproversnodeAttrspostures(デフォルトのデバイスポスチャ属性のみ)、ipsets aclgroupshoststeststagOwnersautoApproverspostures(デフォルト・カスタム・サードパーティの属性)、ipsets