INTEGRITY Dokumentace

gRPC

gRPC je framework pro vzdálené volání procedur (RPC), který klientským aplikacím umožňuje volat metody na vzdáleném serveru, jako by běžely na stejném lokálním počítači. Servery a klienty gRPC můžete připojit ke globální síti Cloudflare, což usnadňuje vytváření aplikací využívajících služby napříč různými datacentry a prostředími.

Cloudflare Tunnel podporuje provoz gRPC prostřednictvím směrování privátní podsítě. Nasazení pomocí veřejného hostname v současné době nejsou podporována.



V tomto příkladu připojíme server gRPC ke Cloudflare pomocí cloudflared démon, zabezpečte server pomocí zásad Gateway a otevřete kanál gRPC k serveru pomocí aplikace Cloudflare One Client.

1. Nastavte server gRPC

  1. Chcete-li nastavit aplikaci gRPC Python, postupujte podle tohoto stručný úvodní návod.

  2. Spusťte server:

~/grpc/examples/python/helloworld $ python3 greeter_server.py
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1721770418.373806    3677 config.cc:230] gRPC experiments enabled: call_status_override_on_cancellation, event_engine_dns, event_engine_listener, http2_stats_fix, monitoring_experiment, pick_first_new, trace_record_callops, work_serializer_clears_time_cache
Server started, listening on 50051

2. Připojte server k Cloudflare

Chcete-li navázat zabezpečené, pouze odchozí připojení ke Cloudflare:

  1. V Cloudflare dashboardu přejděte na Sítě > Tunnels.

    Přejděte na Tunnels ↗
  2. Vytvořit nový tunel nebo upravit existující cloudflared tunel.

  1. V Cloudflare dashboardu přejděte na Sítě > Trasy.

    Přejděte na Trasy ↗
  2. Vyberte Vytvořit trasu > Tunnel CIDR. Vyberte právě vytvořený tunel, zadejte privátní IP adresu nebo adresu CIDR svého serveru a vyberte Vytvořit trasu.

3. Nasměrujte IP adresy privátní sítě přes Cloudflare One Client

WARP ve výchozím nastavení vylučuje provoz směřující na Prostor RFC 1918, což jsou IP adresy, které se obvykle používají v privátních sítích a nejsou dostupné z internetu. Aby mohl Cloudflare One Client odesílat provoz do vaší privátní sítě, musíte nakonfigurovat Split Tunnels tak, aby IP/CIDR vaší privátní sítě směrovala přes Cloudflare One Client.

  1. Nejprve zkontrolujte, zda váš Režim Split Tunnels je nastaveno na Vyloučit nebo Include režimu.

  2. Upravte trasy Split Tunnel podle režimu:

    Pokud používáte Vyloučit režimu:

    a. Odstraňte trasu obsahující rozsah IP/CIDR vaší privátní sítě. Pokud například vaše síť používá výchozí rozsah AWS 172.31.0.0/16, smažte 172.16.0.0/12.

    b. Znovu přidat rozsahy IP/CIDR které vaše privátní síť výslovně nepoužívá. Pro výše uvedený příklad AWS byste přidali nové položky pro 172.16.0.0/13, 172.24.0.0/14, 172.28.0.0/15, a 172.30.0.0/16. Tím se zajistí, že pouze provoz na 172.31.0.0/16 tras přes Cloudflare One Client.

    K určení, které IP adresy je třeba znovu přidat, můžete použít následující kalkulačku:

    Pokyny ke kalkulačce

    1. V Base CIDR, zadejte rozsah RFC 1918, který jste odstranili ze Split Tunnels.
    2. V Odečtené rozsahy CIDR, zadejte rozsah IP/CIDR používaný vaší privátní sítí.
    3. Znovu přidejte výsledky kalkulačky do seznamu režimu Split Tunnel Exclude.

    Zúžením rozsahu privátních IP adres zahrnutých v Cloudflare One Client snížíte riziko narušení uživatelova přístup k místním prostředkům.

    Pokud používáte Include režimu:

    1. Přidejte požadované Domény Zero Trust nebo IP adresy do seznamu Split Tunnel include.
    2. Přidejte trasu tak, aby to zahrnovalo rozsah IP/CIDR vaší privátní sítě.

Můžete nakonfigurovat Síťové zásady Gateway buď zablokovat, nebo povolit přístup k serveru gRPC. Následující příklad se skládá ze dvou zásad: první povoluje připojení gRPC ze zařízení, která projdou kontroly stavu zařízení, a druhá blokuje veškerý ostatní provoz. Ujistěte se, že zásada Allow má vyšší priorita.

1. Povolte zabezpečená zařízení

Selektor Operátor Hodnota Logika Akce
Cílový port je 50051 And Allow
Cílová IP adresa je 172.31.0.133 And
Splněné kontroly stavu zařízení je macOS firewall (Firewall) And
Splněné kontroly stavu zařízení je macOS disk encryption (Disk encryption)

2. Zablokujte vše ostatní

Selektor Operátor Hodnota Akce
Cílová IP adresa v 172.31.0.0/16 Block

Podrobnosti o nastavení proxy Gateway najdete v Filtrovat síťový provoz pomocí Gateway.

5. Nastavte klienta

Klienti gRPC se mohou k serveru připojit tak, že si do zařízení nainstalují Cloudflare One Client a zaregistrují ho do vaší organizace Zero Trust. Jakmile klient odešle požadavek na privátní IP adresu zpřístupněnou prostřednictvím Cloudflare Tunnel, WARP jeho připojení přesměruje přes síť Cloudflare do odpovídajícího tunelu.

Chcete-li nastavit klienta gRPC:

  1. Nasaďte Cloudflare One Client na vašem zařízení v režimu Traffic and DNS.
  2. Vytvořit pravidla registrace zařízení určit, která zařízení se mohou zaregistrovat do vaší organizace Zero Trust.
  3. Nainstalujte gRPC do zařízení podle tohoto stručný úvodní návod.
  4. Upravit greeter.py a nasměrovat na privátní IP adresu vašeho serveru gRPC. Jedná se o stejnou privátní IP adresu, jaká je nakonfigurována ve vašem Trasy Cloudflare Tunnel. Například,
def run():
    # NOTE(gRPC Python Team): .close() is possible on a channel and should be
    # used in circumstances in which the with statement does not fit the needs
    # of the code.
    print("Will try to greet world ...")
    with grpc.insecure_channel("172.31.0.133:50051") as channel:
        stub = helloworld_pb2_grpc.GreeterStub(channel)
        response = stub.SayHello(helloworld_pb2.HelloRequest(name="you"))
    print("Greeter client received: " + response.message)

6. Otestujte připojení

  1. Na klientském zařízení se ujistěte, že je Cloudflare One Client Connected.
  2. Spusťte klientskou aplikaci gRPC:
~/grpc/examples/python/helloworld $ python3 greeter_client.py
Will try to greet world ...
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1721771484.489711 4414247 config.cc:230] gRPC experiments enabled: call_status_override_on_cancellation, event_engine_dns, event_engine_listener, http2_stats_fix, monitoring_experiment, pick_first_new, trace_record_callops, work_serializer_clears_time_cache
Greeter client received: Hello, you!

Můžete zobrazit Protokoly tunelu k ověření, že požadavky přicházejí do tunelu a podle očekávání se dostávají na server gRPC.