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)という性質を持ち、ローカルネットワークのトラフィックには影響しません。
- デフォルト拒否(Deny-by-default)。デフォルト拒否ポリシーを使うことで、明示的なアクセス許可のないデバイス間の通信を防ぎます。ただし、tailnetポリシーファイルに
aclsセクションがない場合、Tailscaleはデフォルトの全許可ポリシーを適用します。 - 方向性がある(Directional)。送信元から宛先への接続を許可しても、(ポリシーで明示的に許可されない限り)宛先から送信元への接続が許可されるわけではありません。
- ローカルで適用される(Locally enforced)。デバイスは、tailnet内のすべてのデバイスに配布されたアクセスルールに基づいて、受信接続を適用します。ルールの適用は各デバイス上で直接行われ、Tailscaleのコーディネーションサーバーがそれ以上関与することはありません。
- ACLは、デバイスがローカルネットワーク上でアクセスできる、またはできない対象には影響しません。
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のセクション | acl、groups、hosts、tests、tagOwners、autoApprovers、nodeAttrs、postures(デフォルトのデバイスポスチャ属性のみ)、ipsets |
acl、groups、hosts、tests、tagOwners、autoApprovers、postures(デフォルト・カスタム・サードパーティの属性)、ipsets |