← Cloudflare Workers VPC / workers-vpc / configuration
VPC služby
VPC Services jsou základním stavebním prvkem Workers VPC. Představují konkrétní prostředky ve vaší privátní síti, ke kterým mohou Workers přistupovat přes Cloudflare Tunnel.
K připojení k VPC Services z Workers můžete použít vazby. Každý požadavek na VPC Service pomocí jeho fetch funkce se bezpečně nasměruje ke službě nastavené v soukromé síti.
VPC Services zajišťují, že jsou požadavky směrovány pouze k určené službě, aniž by byla vystavena celá síť, čímž zabezpečují vaše workloady a předcházejí útokům typu server-side request forgery (SSRF).
Členové s Connectivity Directory Bind role se může navázat na existující VPC Services z Workers. Vytváření VPC Services vyžaduje Connectivity Directory Admin role.
Konfigurace VPC Service
VPC Service se skládá z:
- Typ:
httppro služby HTTP/HTTPS, nebotcppro služby TCP (například PostgreSQL, MySQL) - Tunnel ID: Cloudflare Tunnel, který zajišťuje síťové připojení
- Hostname nebo adresy IPv4/IPv6: Hostname nebo adresy IPv4 a/nebo IPv6 použité ke směrování na vaši službu z tunelu ve vaší privátní síti
- Porty: Pro
httptyp, konfiguraci portu HTTP a/nebo HTTPS (volitelné, výchozí 80/443). Protcptyp, port TCP (povinné). - Protokol aplikace (pouze TCP): Volitelně zadejte
postgresqlnebomysqlpro označení protokolu aplikační vrstvy pro službu TCP - Režim ověřování certifikátu TLS: Volitelně nastavte, jak připojení k origin ověřuje certifikáty TLS
- IP adresy resolveru: Volitelně lze zadat konkrétní IP adresu resolveru, pokud není zadána,
cloudflarednasměruje DNS provoz na aktuálně nastavený výchozí systémový resolver.
Služby HTTP
Služby HTTP VPC Service umožňují Workers vytvářet fetch() požadavky na soukromé endpointy HTTP/HTTPS.
Požadavky jsou během přenosu šifrované, dokud se přes tunel nedostanou do vaší sítě, bez ohledu na schéma použité v URL zadané do fetch. Pokud http schéma se použije, tunel naváže ke službě nešifrované připojení.
https schéma lze použít pro šifrované připojení ve vaší síti mezi tunelem a vaší službou. Pokud je zadané schéma https schéma, hostname předaný do fetch() operace se použije jako hodnota Server Name Indication (SNI).
VPC Services ve výchozím nastavení povolují jak http a https schémata, která lze použít. Hodnotu můžete zadat jen pro jedno z http_port nebo https_port pro vynucení použití konkrétního schématu.
Když se Workers VPC nedokáže připojit k vaší službě, fetch() vyvolá výjimku.
Služby TCP
TCP VPC Services umožňují připojení ke službám založeným na TCP, jako jsou databáze PostgreSQL a MySQL. Použijte tcp typ služby s --tcp-port pro zpřístupnění služby TCP.
Volitelně můžete zadat --app-protocol z postgresql nebo mysql pro označení protokolu aplikační vrstvy. Tato metadata používají další produkty Cloudflare, například Hyperdrive, k vyhledání služeb TCP pomocí podporovaného síťového protokolu.
TCP VPC Services se používají s Hyperdrive pro připojení Workers k soukromým databázím. Viz Připojení k privátní databázi pomocí Workers VPC pro úplný návod.
Podporované certifikáty TLS
Při použití https schéma, tunel ověří certifikát TLS předložený vaší origin službou. Workers VPC důvěřuje těmto typům certifikátů:
- Veřejně důvěryhodné certifikáty : Certifikáty vydané známými veřejnými certifikačními autoritami (například Let's Encrypt, DigiCert).
- certifikáty Cloudflare Origin CA : Bezplatné certifikáty vydané Cloudflare, které šifrují provoz mezi Cloudflare a vaším origin serverem. Prohlížeče certifikátům Origin CA nedůvěřují, ale Workers VPC jim důvěřuje při připojování k vašim soukromým službám.
Pokud vaše origin služba předloží certifikát, který nebyl vydán veřejně důvěryhodnou certifikační autoritou ani Cloudflare Origin CA, TLS handshake selže a fetch() vyvolá výjimku.
Režim ověřování certifikátu TLS
Způsob, jakým připojení k vaší origin službě ověřuje TLS certifikáty, můžete nastavit pomocí --cert-verification-mode možnost při vytváření nebo aktualizaci VPC Service. Platí to pro oba typy služeb, HTTP i TCP.
| Režim | Popis |
|---|---|
verify_full |
Ověřit celý řetězec certifikátů i hostname (výchozí) |
verify_ca |
Ověřit pouze řetězec certifikátů, ověření hostname přeskočit |
disabled |
Neověřovat certifikát serveru |
Příklady konfigurace
Tyto konfigurace představují očekávaný kontrakt prvku REST API pro vytvoření VPC Service, typ služby v rámci širšího adresáře připojení.
Služba HTTP s IP adresami
Následuje příklad HTTP VPC Service s vlastními porty HTTP a HTTPS a s adresami IPv4 i IPv6.
{
"type": "http",
"name": "human-readable-name",
// Port configuration (optional - defaults to 80/443)
"http_port": 80,
"https_port": 443,
// Host configuration
"host": {
"ipv4": "10.0.0.1",
"ipv6": "fe80::",
"network": {
"tunnel_id": "0191dce4-9ab4-7fce-b660-8e5dec5172da",
},
},
}Služba HTTP s hostname
Následuje příklad HTTP VPC Service, která používá hostname. Při použití hostname zadejte resolver_network která volitelně obsahuje resolver_ips.
{
"type": "http",
"name": "human-readable-name",
// Port configuration (optional - defaults to 80/443)
"http_port": 80,
"https_port": 443,
// Hostname Host (with DNS resolver)
"host": {
"hostname": "example.com",
"resolver_network": {
"tunnel_id": "0191dce4-9ab4-7fce-b660-8e5dec5172da",
"resolver_ips": ["10.0.0.1"], // Optional
},
},
}Služba TCP (například PostgreSQL)
Následuje příklad TCP VPC Service pro databázi PostgreSQL.
{
"type": "tcp",
"name": "my-postgres-db",
"tcp_port": 5432,
"app_protocol": "postgresql", // Optional: "postgresql" or "mysql"
"host": {
"ipv4": "10.0.0.5",
"network": {
"tunnel_id": "0191dce4-9ab4-7fce-b660-8e5dec5172da",
},
},
}Služba s ověřováním certifikátu TLS
Následující příklad vytvoří TCP službu s verify_ca režim ověřování certifikátu.
{
"type": "tcp",
"name": "my-postgres-db",
"tcp_port": 5432,
"app_protocol": "postgresql",
"host": {
"ipv4": "10.0.0.5",
"network": {
"tunnel_id": "0191dce4-9ab4-7fce-b660-8e5dec5172da",
},
},
"tls_settings": {
"cert_verification_mode": "verify_ca",
},
}Konfigurace vazby Workers
Jakmile vytvoříte VPC Service, můžete ji svázat se svým Workerem:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker",
"main": "src/index.js",
"vpc_services": [
{
"binding": "PRIVATE_API",
"service_id": "e6a0817c-79c5-40ca-9776-a1c019defe70",
"remote": true // When true, utilizes [remote bindings](/workers/local-development/#remote-bindings) to allow access to the VPC Service during local development.
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
main = "src/index.js"
[[vpc_services]]
binding = "PRIVATE_API"
service_id = "e6a0817c-79c5-40ca-9776-a1c019defe70"
remote = trueMůžete mít více vazeb VPC service:
{
"vpc_services": [
{
"binding": "PRIVATE_API",
"service_id": "daf43e8c-a81a-4242-9912-4a2ebe4fdd79",
"remote": true
},
{
"binding": "PRIVATE_DATABASE",
"service_id": "453b6067-1327-420d-89b3-2b6ad16e6551",
"remote": true
},
{
"binding": "INTERNAL_CACHE",
"service_id": "6c39b574-237e-49f4-852a-cea5a93ed8f9",
"remote": true
}
]
}[[vpc_services]]
binding = "PRIVATE_API"
service_id = "daf43e8c-a81a-4242-9912-4a2ebe4fdd79"
remote = true
[[vpc_services]]
binding = "PRIVATE_DATABASE"
service_id = "453b6067-1327-420d-89b3-2b6ad16e6551"
remote = true
[[vpc_services]]
binding = "INTERNAL_CACHE"
service_id = "6c39b574-237e-49f4-852a-cea5a93ed8f9"
remote = truePožadované role
Workers VPC používá následující role účtu:
Connectivity Directory Readpro zobrazení Workers VPC Services a Tunnels.Connectivity Directory Bindpro výpis, čtení a navázání VPC Services ve Workers.Connectivity Directory Adminpro vytváření, aktualizaci a mazání VPC Services a přímé navázání na tunely prostřednictvím VPC Network binding.
Definice rolí najdete v Role.
Pokud jste své role nedávno aktualizovali a příkazy stále selhávají, obnovte ověření Wrangler:
npx wrangler logout
npx wrangler loginPokud se ověřujete pomocí API tokenu (CLOUDFLARE_API_TOKEN), ujistěte se, že token patří uživateli s požadovanými rolemi.
Další kroky
- Nakonfigurujte VPC Services pomocí nástroje Terraform pro správu VPC Services jako infrastruktury
- Nastavení Cloudflare Tunnel pro vaše prostředí
- Přečtěte si o Service Binding API
- Viz příklady běžných případů užití