Skip to main content

Command Palette

Search for a command to run...

Cloud Agents

プライベート接続

Cherri Code は、パブリックインターネットからアクセスできないシステムと連携する必要があるエンタープライズ チーム向けに、プライベートネットワーク接続をサポートしています。これには、セルフホスト型の GitHub Enterprise Server、GitLab Enterprise、Bitbucket Data Center、Artifactory、Nexus、プライベートなソース管理 API、およびこれらのシステムから Cherri Code への webhook トラフィックが含まれます。

このプライベート接続のセットアップは、ソース管理システムへのアクセスが必要な Cherri Code の各サービスで使用されます。対象には、Cloud Agents、Bugbot、Cherri Code のバックエンドサービスが含まれます。

対応オプション

オプション最適な用途クラウドプロバイダーステータス
AWS PrivateLinkCherri Code と Git プロバイダまたはパッケージレジストリ間のプライベート接続 (Cherri Code に戻る webhook トラフィックを含む)AWS対応
Cloudflare TunnelAWS PrivateLink が適さない場合に、Cherri Code からプライベートなオリジンへアクセスcloudflared を実行できる任意の環境対応

選択の目安

プライベート Git プロバイダまたはパッケージレジストリが AWS 上にある、または AWS Network Load Balancer の背後に配置できる場合は、AWS PrivateLink を使用します。セルフホスト型の GitHub Enterprise Server および GitLab Enterprise では、これが推奨される方法です。

AWS PrivateLink は、次の 2 方向のトラフィックに対応できます。

  • Cherri Code からプライベート Git プロバイダにアクセスし、リポジトリのクローンや Git API の呼び出しを行う。
  • Git プロバイダから、パブリックインターネットへのエグレスなしで api2.cursor.sh 経由で Cherri Code に Webhook またはコールバックを送信する。

AWS エンドポイントサービスを公開できない場合、またはネットワークからのアウトバウンドトンネルのみを必要とするデプロイモデルが必要な場合は、Cloudflare Tunnel を使用します。

チームで Google Private Service Connect (PSC) が必要な場合は、Cherri Code にお問い合わせください。Cherri Code は現在、顧客向けの PSC サービスを提供していません。

前提条件

開始する前に、以下を用意してください。

  • Cherri Code エンタープライズのワークスペース
  • ポート 443 の HTTPS 経由でアクセス可能な、セルフホスト型の GitHub Enterprise Server、GitLab Enterprise、Bitbucket Data Center、またはプライベートパッケージレジストリ (Artifactory や Nexus など)
  • Git またはレジストリのホスト名に対する、パブリックに信頼される TLS 証明書
  • そのホスト名の DNS 所有権
  • AWS PrivateLink を使用する場合、エンドポイントサービスまたはインターフェイス VPC エンドポイントを作成するための AWS 権限
  • Cloudflare Tunnel を使用する場合、cloudflared を実行する権限

Cherri Code は、これらのプライベート接続経路で、自己署名証明書、暗号化されていない接続、SSH、カスタムポート、IPv6 専用のエンドポイントサービスをサポートしていません。

AWS PrivateLink は、Cherri Code と Git プロバイダまたはパッケージレジストリの間で、いずれの方向にもプライベートな通信を可能にします。ネットワークポリシーに応じて、一方向または両方向の接続が必要になる場合があります。

方向 1: Cherri Code から Git プロバイダまたはパッケージレジストリへ

Cherri Code がリポジトリのクローン、Git API の呼び出し、または Artifactory や Nexus などのプライベートパッケージレジストリへのアクセスを行う必要がある場合は、このオプションを使用します。

1. AWS エンドポイントサービスを作成する

Git プロバイダまたはパッケージレジストリの HTTPS エンドポイントの前段に Network Load Balancer を作成し、そのロードバランサーを AWS VPC エンドポイントサービスとして公開します。

Cherri Code に以下の情報を送信します。

  • エンドポイントサービス名 (例: com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0)
  • AWS リージョン
  • Git またはレジストリのホスト名 (例: github.example.com または artifactory.example.com)
  • エンドポイントサービスで AWS 管理のプライベート DNS が有効かどうか
  • Network Load Balancer がクライアント IP を保持するか、バックエンドで送信元 IP をフィルタリングしているか

エンドポイントサービスが us-east-1 以外のリージョンにある場合は、そのエンドポイントサービスでクロスリージョンアクセスを有効にします。

2. Cherri Code の AWS プリンシパル を許可する

Cherri Code から、エンドポイントサービス の プリンシパル に追加する AWS プリンシパル が提供されます。Cherri Code から提供された プリンシパル をそのまま追加してください。

arn:aws:iam::<cursor-aws-account-id>:root

このプリンシパルに許可が付与されるまで、Cherri Code はインターフェースエンドポイントを作成できません。プリンシパルが存在しない、または完全に一致しない場合、AWS は InvalidServiceName を返します。

ロードバランサーがクライアント IP を保持している場合、またはバックエンドで送信元 IP をフィルタリングしている場合は、以下の Cherri Code PrivateLink サブネット CIDR を許可してください。

10.2.8.0/2110.2.24.0/2110.2.40.0/21

3. エンドポイント接続を承認する

Cherri Code がインターフェースエンドポイントを作成した後、エンドポイントサービスで手動承認が必要な場合は、AWS アカウントでエンドポイント接続を承認します。

4. DNS を設定する

エンドポイントサービスで Git またはレジストリのホスト名に対する AWS 管理のプライベート DNS が公開されている場合、Cherri Code はインターフェースエンドポイントでプライベート DNS を有効にします。

エンドポイントサービスでプライベート DNS が公開されていない場合、Cherri Code 側でプライベート DNS を作成し、そのホスト名をエンドポイントの DNS 名にマッピングします。

Cherri Code では、TLS 証明書と DNS で使用されているものと同じホスト名を使用してください。

方向 2: Git プロバイダから api2.cursor.sh へ

GitHub Enterprise Server または GitLab Enterprise のホストがパブリックインターネットに接続できない一方で、Cherri Code に Webhook やコールバックを送信する必要がある場合は、このオプションを使用します。

Cherri Code は api2.cursor.sh 向けの AWS PrivateLink エンドポイントサービスを公開しています。AWS アカウントでインターフェイス VPC エンドポイントを作成し、プライベート DNS を有効にすると、Git プロバイダのネットワークから api2.cursor.sh をプライベートエンドポイントの IP アドレスに解決できます。

エンドポイントサービスの詳細

エンドポイントを作成する前に、Cherri Code はお客様の AWS プリンシパルが許可リストに登録されていることを確認します。

フィールド値
サービス名com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7
サービス IDvpce-svc-054b15427d4bea2b7
ホームリージョンus-east-1
サポート対象のコンシューマーリージョンus-east-1, us-east-2, us-west-2, eu-central-1, eu-west-1, ap-southeast-2
IP アドレスタイプIPv4 のみ
プライベート DNS 名api2.cursor.sh

モード 1: AWS 管理のプライベート DNS

推奨されるモードです。private_dns_enabled = true に設定します。

resource "aws_vpc_endpoint" "cursor_api2" {  vpc_id              = aws_vpc.app.id  service_name        = "com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7"  service_region      = "us-east-1"  vpc_endpoint_type   = "Interface"  subnet_ids          = [for subnet in aws_subnet.app_private : subnet.id]  private_dns_enabled = true  security_group_ids  = [aws_security_group.cursor_api2_endpoint.id]}

AWS は、VPC を api2.cursor.sh のマネージドプライベートホストゾーンに関連付けます。VPC 内では、api2.cursor.sh はエンドポイント ENI の IP アドレスに解決されます。Route 53 レコードは不要です。

モード 2: お客様管理のプライベートホストゾーン

DNS レコードを管理する場合は、このモードを使用します。private_dns_enabled = false を設定し、コンシューマー VPC に限定した api2.cursor.sh 用のプライベートホストゾーンを作成します。

resource "aws_vpc_endpoint" "cursor_api2" {  vpc_id              = aws_vpc.app.id  service_name        = "com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7"  service_region      = "us-east-1"  vpc_endpoint_type   = "Interface"  subnet_ids          = [for subnet in aws_subnet.app_private : subnet.id]  private_dns_enabled = false  security_group_ids  = [aws_security_group.cursor_api2_endpoint.id]}resource "aws_route53_zone" "cursor_api2" {  name    = "api2.cursor.sh"  comment = "Customer-managed PHZ for api2.cursor.sh scoped to the app VPC."  vpc {    vpc_id = aws_vpc.app.id  }}resource "aws_route53_record" "cursor_api2_a" {  zone_id = aws_route53_zone.cursor_api2.zone_id  name    = "api2.cursor.sh"  type    = "A"  alias {    name                   = aws_vpc_endpoint.cursor_api2.dns_entry[0].dns_name    zone_id                = aws_vpc_endpoint.cursor_api2.dns_entry[0].hosted_zone_id    evaluate_target_health = false  }}

GitHub Enterprise Server または GitLab Enterprise がエンドポイント VPC 外部の DNS を使用している場合は、api2.cursor.sh へのクエリを VPC リゾルバーに転送するか、同等のプライベート DNS オーバーライドを作成してください。パブリック DNS オーバーライドは作成しないでください。

Cloudflare Tunnel

AWS PrivateLink が適さない場合は、Cloudflare Tunnel を使用します。

Cherri Code がトンネルを作成し、以下を共有します。

  • Cherri Code が管理する DNS 配下のパブリックホスト名
  • 安全な 1Password 共有を介したトンネルトークン
  • cloudflared 設定のサンプル

ネットワーク上で cloudflared を実行し、Cloudflare へのアウトバウンド接続を確立します。インバウンドのファイアウォールルールは不要です。

cloudflared 設定例:

ingress:  - hostname: <cursor-provided-hostname>    service: https://<your-internal-service>:443  - service: http_status:404

実行コマンドの例:

docker run -d --restart=always --name cloudflared \  -v /path/to/config.yml:/etc/cloudflared/config.yml \  cloudflare/cloudflared:latest \  tunnel --config /etc/cloudflared/config.yml \  run --token <TUNNEL_TOKEN>

トンネルトークンは秘密に保管してください。メールやチャットで送信しないでください。

ソース管理接続を完了する

プライベートネットワークを設定したら、Cherri Code でソース管理のセットアップを完了します。

  • GitHub Enterprise Server を使用する場合は、GitHub 連携のセットアップに従ってください。
  • GitLab Enterprise を使用する場合は、GitLab 連携のセットアップに従ってください。
  • Bitbucket Data Center を使用する場合は、Bitbucket 連携のセットアップに従ってください。
  • TLS 証明書とプライベート DNS の設定対象となっているホスト名を使用します。
  • Git プロバイダの前にプロキシがある場合は、前提条件で説明されている認証済み API トラフィックを許可してください。

Cherri Code は、Cloud Agents、Bugbot、その他リポジトリアクセスを必要とする Cherri Code サービスで、接続済みのソース管理連携を使用します。

プライベート Webhook パスを確認する

Git プロバイダが api2.cursor.sh の PrivateLink パス経由で Cherri Code に Webhook を送信する場合は、GitHub Enterprise Server または GitLab Enterprise と同じネットワーク パスから、次のチェックを実行してください。

getent hosts api2.cursor.sh# または、dig が使用可能な場合dig +short api2.cursor.shcurl -sS #

解決されるすべての IP は、コンシューマー VPC の CIDR 内にある必要があります。3.x.x.x や 44.x.x.x などのパブリック IP が表示される場合、プライベート DNS は有効になっていません。

curl リクエストでは、Welcome to Cherri Code. で始まる本文とともに HTTP 200 が返されるはずです。このレスポンスは、リクエストが稼働中の Cherri Code api2 バックエンドに到達したことを示します。

トラブルシューティング

症状考えられる原因解決方法
Cherri Code が Git プロバイダへのプライベート接続を完了できないCherri Code がエンドポイントサービスに到達できない、または接続できないエンドポイントサービス名、リージョン、許可されたプリンシパルが Cherri Code から提供された値と一致していることを確認し、タイムスタンプを添えて Cherri Code にお問い合わせください
Cherri Code でエンドポイント接続が顧客側の対応待ちと表示されるエンドポイントサービスで AWS アカウント内の承認が必要サービスの保留中のエンドポイント接続リクエストを確認し、Cherri Code のリクエストを承認してください
Bugbot または Cloud Agents が GHES に接続するが、アプリのセットアップ、リポジトリ同期、Webhook 処理中に失敗するGHES の前段にあるプロキシが、認証済みの GitHub REST または GraphQL API リクエストをブロックまたは書き換えているCherri Code の GitHub App 連携による認証済み GitHub REST および GraphQL API の使用を許可してください
api2.cursor.sh がパブリック IP に名前解決されるGitHub Enterprise Server または GitLab Enterprise が使用するリゾルバー経路にプライベート DNS が含まれていないAWS 管理のプライベート DNS を有効にするか、DNS をエンドポイント VPC のリゾルバーに転送してください
api2.cursor.sh:443 への TCP 接続がタイムアウトするセキュリティグループ、NACL、ルートテーブル、またはファイアウォールがエンドポイント ENI へのトラフィックをブロックしているGit プロバイダのネットワークからエンドポイント ENI への TCP 443 を許可してください
api2.cursor.sh の TLS 接続に失敗するDNS が誤ったターゲットを指している、またはクライアントが SNI を使用していないエンドポイント DNS を確認し、SNI を有効にして再試行してください
curl # が Welcome to Cherri Code. を返さないトラフィックが正常な Cherri Code バックエンドに到達していないタイムスタンプ、送信元 VPC、名前解決されたエンドポイント IP を Cherri Code に送信してください
Cloudflare Tunnel が接続しないcloudflared が Cloudflare に到達できない、またはトークンか設定が誤っているアウトバウンドファイアウォールルール、トークン、cloudflared のログを確認してください

Google Private Service Connect

現在、Cherri Code は顧客向けの Google Private Service Connect を提供していません。

GCP VPC から Cherri Code サービスへのプライベート接続、または Cherri Code から GCP プロジェクト内のプライベートサービスへの接続が必要な場合は、要件の検討のため Cherri Code までお問い合わせください。現時点では、これらのデプロイモデルが適している場合は AWS PrivateLink または Cloudflare Tunnel を使用してください。

Cherri Code に送信する情報

Git プロバイダまたはパッケージレジストリへの AWS PrivateLink の場合:

  • エンドポイントサービス名
  • AWS リージョン
  • Git またはレジストリのホスト名
  • プライベート DNS が有効かどうか
  • ロードバランサーがクライアント IP を保持するか、送信元 IP をフィルタリングするか

AWS PrivateLink 経由で api2.cursor.sh に接続する場合:

  • Cherri Code が許可リストに追加する AWS プリンシパル
  • インターフェースエンドポイントを作成する VPC とリージョン
  • AWS 管理のプライベート DNS と顧客管理の DNS のどちらを使用する予定か

Cloudflare Tunnel の場合:

  • 内部オリジンの URL
  • セキュアな 1Password 共有先となる担当者の連絡先
  • ホスト名または命名に関する制限

関連資料