アプリコネクターの設定
最終検証日:
翻訳: 竹洞 陽一郎
アプリコネクターはすべてのプランでご利用いただけます。
アプリコネクターを使用すると、Tailscaleネットワーク(tailnet)のトラフィックを、SaaS(Software as a Service)・クラウド・自社ホストのアプリケーションにルーティングできます。これにより、tailnet上のユーザとデバイスは、IPアドレスではなくドメイン名でアプリケーションにアクセスできるようになります。また、アプリコネクターの設定にモニタリング・最適化・セキュリティ・信頼性の機能を組み込むことも可能です。
アプリコネクターの詳細については、アプリコネクターの仕組みをご参照ください。
Kubernetes OperatorをしてKubernetesクラスターにアプリコネクターをデプロイすることもできます。
要件
アプリコネクターを設定するには、以下が必要です。
- tailnetポリシーファイルの編集と管理コンソールでのアプリコネクター設定を管理するための、Owner・Admin・またはNetwork adminロールを持つユーザアカウントと既存のtailnet。
- アプリコネクターとして使用するLinuxデバイスで、以下の条件を満たすもの:
- 公開IPアドレスがある。
- IPフォワーディングが有効になっている。
- 物理デバイスまたはVMをアプリコネクターデバイスとして使用できる。
- 管理者アクセス権限を持つSaaSまたは自社ホストアプリケーション。
はじめに
tailnetにプリセットアプリタイプのアプリコネクターを追加するには、以下の手順を完了する必要があります。
- 管理コンソールでアプリコネクターを追加し、アプリケーションへのトラフィックをルーティングします。プリセットアプリを追加すると、tailnetポリシーファイルの
nodeAttrsセクションにアプリコネクター用の新しいtargetエントリが自動的に追加されます。tagOwners・autoApprovers・grantsエントリはtailnetポリシーファイルに手動で追加する必要があります。 - tailnetポリシーファイルに
tagOwners・autoApprovers・grantsエントリを追加して、tailnet内のデバイスがアプリコネクターを使用できるようにします。 - tailnet内のLinuxノードをアプリコネクターデバイスとして設定します。
- (任意)アプリケーションでIPアローリストを設定して、アプリコネクターデバイスのみにアプリケーションへのアクセスを制限します。
tailnetにカスタムアプリタイプのアプリコネクターを追加するには、以下の手順を完了する必要があります。
- tailnetポリシーファイルの
nodeAttrs・tagOwners・autoApprovers・grantsセクションにエントリを追加して、tailnet内のデバイスがアプリコネクターを使用できるようにします。 - tailnet内のLinuxノードをアプリコネクターデバイスとして設定します。
- 管理コンソールでアプリコネクター設定を追加し、アプリケーションへのトラフィックをルーティングします。
- (任意)アプリケーションでIPアローリストを設定して、アプリコネクターデバイスのみにアプリケーションへのアクセスを制限します。
tailnetポリシーファイルの更新
デバイスがアプリコネクターデバイスを使用できるように、tailnetポリシーファイルに必要な権限を設定します。
tailnetポリシーファイルを編集するには、Owner・Admin・またはNetwork adminである必要があります。
-
管理コンソールのアクセス制御ページを開きます。
-
tagOwnersルールを追加して、タグ名を定義し、そのタグを他のデバイスに割り当てることができるユーザを指定します。これにより、アプリコネクターへの接続が可能になります。以下の例では、github-adminsグループをgithub-app-connectorタグのオーナーとして定義しています。"tagOwners": { "tag:github-app-connector": [ "group:github-admins", ], }, -
アプリコネクタータグの特定ルートを自動承認するための
autoApproversルールを追加します。アプリトラフィックをアプリコネクター経由でルーティングするよう設定すると、設定されたアプリドメインへのDNSリクエストがルート検出をトリガーします。プリセットアプリは、ほとんどの場合ルートの
autoApproversルールを必要としません。Tailscaleはプリセットアプリのルートを更新・管理しており、これらは自動的に承認されます。
ただし、プリセットアプリはDNSを通じて新しいルートを発見する場合があります。これらの学習ルートは自動的に承認されないため、autoApproversルールが必要です。
カスタムアプリのルートには常にautoApproversルールが必要です。以下の自動承認ポリシーの例では、
github-app-connectorタグを使用するデバイスのすべてのIPv4およびIPv6ルートを自動的に承認します。"autoApprovers": { "routes": { "0.0.0.0/0": ["tag:github-app-connector"], "::/0": ["tag:github-app-connector"], }, }, -
アプリコネクタータグを通じてアプリ固有のトラフィックをルーティングするための
grantsルールを追加します。tailnetデバイスがアプリコネクターのアドバタイズするルートにアクセスできるようにする必要があります。その方法の一つは、tailnetポリシーファイルにアクセス制御ポリシーを追加して、tailnetメンバーに
autogroup:internet(任意のポート番号)へのアクセスを付与することです。これにより、tailnet内のすべての出口ノードへのアクセスも付与されます。"grants": [ { "src": ["autogroup:member"], "dst": ["autogroup:internet"], "ip": ["*"] } ]デバイスはDNS検出のためにアプリコネクタータグへのアクセスが必要です。アプリコネクターはPeerAPIを使用してDoH呼び出しを行います。ピア検出を有効にするには、ポート
53のTCPまたはUDPを使用して最小限のアクセスを付与してください:"grants": [ { "src": ["autogroup:member"], "dst": ["tag:github-app-connector"], "ip": ["tcp:53", "udp:53"] } ] -
nodeAttrsルールを追加して、アプリコネクタータグをアプリ固有のドメインにマッピングします。以下のノード属性定義の例では、github-app-connectorタグをGitHubドメイン用に設定しています。プリセットアプリタイプのアプリコネクターを設定する場合、tailnetポリシーファイルの
nodeAttrsセクションは自動的に更新されるため、この手順はスキップできます。"nodeAttrs": [ { "target": ["*"], "app": { "tailscale.com/app-connectors": [ { "name": "GitHub", "connectors": ["tag:github-app-connector"], "domains": [ "github.com", "*.github.com" ] } ] } } ]
デバイスをアプリコネクターとして設定する
tailnetポリシーファイルを更新したら、デバイスをアプリコネクターとして機能させるよう設定します。
アプリコネクターデバイスはLinuxを実行しており、すでにtailnetに追加されていて、パブリックIPアドレスを持ち、IPポートフォワーディングが有効になっている必要があります。
以下のTailscale CLIコマンドを実行します。山括弧(<>)内の変数を実際のアプリコネクタータグ名に置き換えてください。
tailscale up --advertise-connector --advertise-tags=tag:<connector-tag-name>
--advertise-connectorフラグは、tailnetポリシーファイルの設定に従って特定のドメインへのトラフィックをルーティングするデバイスを有効にします。--advertise-tagsフラグは、指定したタグでデバイスを認証するようTailscaleクライアントに指示します。
プリセットアプリの追加
プリセットアプリは、アプリケーションに必要なドメインを自動的に追加することをサポートするアプリケーションであり、アプリコネクターの設定に必要な時間を短縮できます。設定後、プリセットアプリはアプリケーションの信頼できる設定からドメインとルートを定期的に取得し、変更をtailnetに反映します。
Tailscaleは以下のプリセットアプリをサポートしています。
- AWS CloudFront(グローバル)
- AWS Elastic Compute Cloud(EC2)/ Elastic Load Balancing(ELB)
- AWS Simple Storage Service(S3)
- Confluence
- GitHub
- Google Workspace
- Jira
- Microsoft 365
- Okta
- Salesforce(Hyperforce環境)
- Salesforce(Salesforceホスト)
- Stripe
プリセットアプリを設定するには、tailnetのOwner・Admin・またはNetwork adminである必要があります。
-
管理コンソールのアプリページを開きます。
-
「アプリを追加」ダイアログに以下の情報を入力します。
- 名前:アプリケーションを識別するための一意の名前を入力します。
- ターゲット:プリセットアプリを選択すると、アプリケーションのドメインが自動的に追加されます。
- コネクター:tailnetポリシーファイルでアプリコネクター用に設定したタグを1つまたは複数選択します。
-
「保存」を選択します。
アプリコネクター名の横に緑のアイコンが表示されている場合、現在アクティブで正常に動作していることを示しています。
追加したアプリコネクターを選択すると、tailnetとアプリケーションの両方の設定管理に役立つ詳細情報を確認できます。
設定されたドメインへのトラフィックは、インターネット上のターゲットドメインに到達する前に、タグ付きアプリコネクターを経由してルーティングされます。このルーティングは、送信元デバイスが出口ノードを使用している場合でも同様です。このトラフィックの送信元IPアドレスは、アプリコネクターとして動作しているデバイスのパブリックIPアドレスのいずれかとして表示されます。
カスタムアプリの追加
アプリケーションが管理コンソールのプリセットアプリとして利用できない場合は、手動で設定できます。
アプリコネクターを追加・編集するには、tailnetのOwner・Admin・またはNetwork adminである必要があります。
-
管理コンソールのアプリページを開きます。
-
「アプリを追加」ダイアログに以下の情報を入力します。
- 名前:アプリケーションを識別するための一意の名前を入力します。
- ターゲット:「カスタム」を選択して、アプリケーションのドメイン名を手動で入力します。複数のドメインエントリを追加する場合は、カンマで区切ってください。ドメインを指定する際、サブドメインにはワイルドカードを使用できますが、トップレベルドメイン(TLD)には使用できません。例えば、
*.example.com・*.example.co.uk・*.example.infoは有効ですが、*.com・*.co.uk・*.infoは無効です。 - コネクター:tailnetポリシーファイルでアプリコネクター用に設定したタグを1つまたは複数選択します。
-
「保存」を選択します。
アプリコネクター名の横に緑のアイコンが表示されている場合、現在アクティブで正常に動作していることを示しています。
追加したアプリコネクターを選択すると、tailnetとアプリケーションの両方の設定管理に役立つ詳細情報を確認できます。
プリセットアプリの編集
管理コンソールのアプリページは、プリセットアプリを設定する主な方法であり、アプリコネクターを追加するとpresetAppIDが自動的に更新されます。tailnetポリシーファイルでアプリのpresetAppIDを手動で変更することも可能です。
以下は、GitHubをプリセットアプリとした設定スニペットの例です。
"nodeAttrs": [
{
"target": ["*"],
"app": {
"tailscale.com/app-connectors": [
{
"name": "github app",
"connectors": ["tag:code", "tag:ci-cd"],
"presetAppID": "github"
}
]
}
}
]
以下は、tailnetポリシーファイルに記載されるサポート済みプリセットアプリの一覧です。
| プリセットアプリ名 | presetAppIDの値 |
|---|---|
| AWS CloudFront(グローバル) | aws-cloudfront-global |
| AWS EC2/ELB | aws-ec2-<region>-<availability-zone>-<local-zone> |
| AWS S3 | aws-s3-<region>-<availability-zone>-<local-zone> |
| Confluence | confluence |
| GitHub | github |
| Google Workspace | google-workspace |
| Jira | jira |
| Microsoft 365 | microsoft-365 |
| Okta | okta |
| Salesforce(Hyperforce環境) | salesforce-hyperforce |
| Salesforce(Salesforceホスト) | salesforce |
| Stripe | stripe |
アプリコネクターの削除
アプリコネクターを削除するには、tailnetのOwner・Admin・またはNetwork adminである必要があります。
- 管理コンソールのアプリページを開きます。
- 削除したいアプリコネクターの横にある「…」メニューを選択し、「削除」を選択します。
アプリコネクターを削除すると、アプリケーションへのトラフィックはアプリコネクターを経由しなくなります。代わりに、アプリケーションのドメイン名へのトラフィックは、クライアントデバイスから直接、またはデバイスが出口ノードを使用している場合は出口ノードを経由してルーティングされます。
tailnetでアプリコネクターデバイスが不要になった場合は、デバイスを削除できます。
IPアドレスによるアプリケーションアクセスの制限
多くのアプリケーションでは、接続できるIPアドレスを指定してアクセスを制御できます。アプリコネクターを使用すると、tailnetからターゲットアプリケーションへのすべてのトラフィックは、アプリコネクターのパブリックエグレスIPアドレスから発信されているように見えます。これにより、アプリコネクターのエグレスIPアドレスをターゲットアプリケーションの信頼済みイングレスIPアドレスのリスト(IPアローリスト)に追加できます。これにより、アプリコネクターへのアクセス権を持つユーザのみがターゲットアプリケーションにアクセスできるようになります。
設定するには、アプリケーションのIPアローリスト設定を見つけて、アプリコネクターとして動作している各デバイスのパブリックIPアドレスを追加してください。冗長性のために複数のアプリコネクターを使用する場合は、すべてのパブリックIPアドレスを追加してください。これらのIPアドレスはクラウドプロバイダーの管理インターフェースで確認できます。
以下は、Tailscaleのサポート済みプリセットアプリ一覧と、アプリコネクターデバイスへの排他的アクセスを提供するためのIPアドレス設定(IPアローリスト)に関するリンクです。
TailscaleはプリセットアプリのIPアドレスを自動的に検出します。管理コンソールのアプリページで設定したいアプリの詳細を選択し、表示されたエグレスIPをコピーします。このリストには、関連タグに設定されたすべてのコネクターのIPアドレスが含まれています。新しいアプリコネクターを追加した場合は、IPアローリストを更新することを忘れないでください。
アプリコネクターデバイスには2種類のIPアドレスがあります。tailnetのみでアクセス可能なプライベートなTailscale IPアドレスと、インターネット上の他のアプリケーションからアクセス可能なパブリックIPアドレスです。IPアクセス制御を設定する際は、Tailscale IPアドレスではなく、パブリックIPアドレスが必要です。
制限事項
- tailnetでアプリコネクターデバイスとして使用できるオペレーティングシステムはLinuxのみです。
- アプリコネクターは複数のtailnetで共有できません。
- 1つのインスタンスまたはtailnet全体で10,000件を超えるルートをアドバタイズすると、接続クライアントに重大な機能障害が発生します。
- tailnetはすべてのアプリケーションを合わせて最大250ドメインまでアドバタイズできます。
- 頻繁に変更される、またはエフェメラルなリソースをアプリコネクターとして使用することは推奨されません。アプリコネクターは時間とともに学習し、接続されたドメインへのルートを構築するため、安定したルーティングインフラを使用することでパフォーマンスと信頼性が向上します。
- TerraformやGitOpsなどの外部プロバイダーを使用してtailnetポリシーファイルを管理している場合、管理コンソールでアプリコネクターに加えた変更は次の同期時に上書きされます。外部プロバイダー経由でアプリコネクターを管理するようにしてください。