Tailscaleロゴ

アプリコネクターの設定

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

アプリコネクターはすべてのプランでご利用いただけます。

アプリコネクターを使用すると、Tailscaleネットワーク(tailnet)のトラフィックを、SaaS(Software as a Service)・クラウド・自社ホストのアプリケーションにルーティングできます。これにより、tailnet上のユーザとデバイスは、IPアドレスではなくドメイン名でアプリケーションにアクセスできるようになります。また、アプリコネクターの設定にモニタリング・最適化・セキュリティ・信頼性の機能を組み込むことも可能です。

アプリコネクターの詳細については、アプリコネクターの仕組みをご参照ください。

Kubernetes OperatorをしてKubernetesクラスターにアプリコネクターをデプロイすることもできます。

要件

アプリコネクターを設定するには、以下が必要です。

はじめに

tailnetにプリセットアプリタイプのアプリコネクターを追加するには、以下の手順を完了する必要があります。

  1. 管理コンソールでアプリコネクターを追加し、アプリケーションへのトラフィックをルーティングします。プリセットアプリを追加すると、tailnetポリシーファイルnodeAttrsセクションにアプリコネクター用の新しいtargetエントリが自動的に追加されます。tagOwnersautoApproversgrantsエントリはtailnetポリシーファイルに手動で追加する必要があります。
  2. tailnetポリシーファイルにtagOwnersautoApproversgrantsエントリを追加して、tailnet内のデバイスがアプリコネクターを使用できるようにします。
  3. tailnet内のLinuxノードをアプリコネクターデバイスとして設定します。
  4. (任意)アプリケーションでIPアローリストを設定して、アプリコネクターデバイスのみにアプリケーションへのアクセスを制限します。

tailnetにカスタムアプリタイプのアプリコネクターを追加するには、以下の手順を完了する必要があります。

  1. tailnetポリシーファイルnodeAttrstagOwnersautoApproversgrantsセクションにエントリを追加して、tailnet内のデバイスがアプリコネクターを使用できるようにします。
  2. tailnet内のLinuxノードをアプリコネクターデバイスとして設定します。
  3. 管理コンソールでアプリコネクター設定を追加し、アプリケーションへのトラフィックをルーティングします。
  4. (任意)アプリケーションでIPアローリストを設定して、アプリコネクターデバイスのみにアプリケーションへのアクセスを制限します。

tailnetポリシーファイルの更新

デバイスがアプリコネクターデバイスを使用できるように、tailnetポリシーファイルに必要な権限を設定します。

tailnetポリシーファイルを編集するには、Owner・Admin・またはNetwork adminである必要があります。

  1. 管理コンソールのアクセス制御ページを開きます。

  2. tagOwnersルールを追加して、タグ名を定義し、そのタグを他のデバイスに割り当てることができるユーザを指定します。これにより、アプリコネクターへの接続が可能になります。以下の例では、github-adminsグループをgithub-app-connectorタグのオーナーとして定義しています。

    "tagOwners": {
      "tag:github-app-connector": [
        "group:github-admins",
      ],
    },
  3. アプリコネクタータグの特定ルートを自動承認するための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"],
      },
    },
  4. アプリコネクタータグを通じてアプリ固有のトラフィックをルーティングするための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"]
      }
    ]
  5. 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は以下のプリセットアプリをサポートしています。

プリセットアプリを設定するには、tailnetのOwner・Admin・またはNetwork adminである必要があります。

  1. 管理コンソールのアプリページを開きます。

  2. アプリを追加」ダイアログに以下の情報を入力します。

    1. 名前:アプリケーションを識別するための一意の名前を入力します。
    2. ターゲット:プリセットアプリを選択すると、アプリケーションのドメインが自動的に追加されます。
    3. コネクター:tailnetポリシーファイルでアプリコネクター用に設定したタグを1つまたは複数選択します。
  3. 保存」を選択します。

アプリコネクター名の横に緑のアイコンが表示されている場合、現在アクティブで正常に動作していることを示しています。

追加したアプリコネクターを選択すると、tailnetとアプリケーションの両方の設定管理に役立つ詳細情報を確認できます。

設定されたドメインへのトラフィックは、インターネット上のターゲットドメインに到達する前に、タグ付きアプリコネクターを経由してルーティングされます。このルーティングは、送信元デバイスが出口ノードを使用している場合でも同様です。このトラフィックの送信元IPアドレスは、アプリコネクターとして動作しているデバイスのパブリックIPアドレスのいずれかとして表示されます。

カスタムアプリの追加

アプリケーションが管理コンソールのプリセットアプリとして利用できない場合は、手動で設定できます。

アプリコネクターを追加・編集するには、tailnetのOwner・Admin・またはNetwork adminである必要があります。

  1. 管理コンソールのアプリページを開きます。

  2. アプリを追加」ダイアログに以下の情報を入力します。

    1. 名前:アプリケーションを識別するための一意の名前を入力します。
    2. ターゲット:「カスタム」を選択して、アプリケーションのドメイン名を手動で入力します。複数のドメインエントリを追加する場合は、カンマで区切ってください。ドメインを指定する際、サブドメインにはワイルドカードを使用できますが、トップレベルドメイン(TLD)には使用できません。例えば、*.example.com*.example.co.uk*.example.infoは有効ですが、*.com*.co.uk*.infoは無効です。
    3. コネクター:tailnetポリシーファイルでアプリコネクター用に設定したタグを1つまたは複数選択します。
  3. 保存」を選択します。

アプリコネクター名の横に緑のアイコンが表示されている場合、現在アクティブで正常に動作していることを示しています。

追加したアプリコネクターを選択すると、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である必要があります。

  1. 管理コンソールのアプリページを開きます。
  2. 削除したいアプリコネクターの横にある「…」メニューを選択し、「削除」を選択します。

アプリコネクターを削除すると、アプリケーションへのトラフィックはアプリコネクターを経由しなくなります。代わりに、アプリケーションのドメイン名へのトラフィックは、クライアントデバイスから直接、またはデバイスが出口ノードを使用している場合は出口ノードを経由してルーティングされます。

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アドレスが必要です。

制限事項