INTEGRITY Dokumentace

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:

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ů:

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 = true

Můž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 = true

Požadované role

Workers VPC používá následující role účtu:

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 login

Pokud se ověřujete pomocí API tokenu (CLOUDFLARE_API_TOKEN), ujistěte se, že token patří uživateli s požadovanými rolemi.

Další kroky