You fire up a Cloud Run service, route some traffic, and everything looks fine until you realize nothing outside your project should ever touch it. Enter FortiGate. It promises strong perimeter control, but pairing it with Cloud Run often feels like asking two cloud bouncers to share a guest list. Done wrong, you get dropped packets. Done right, you get frictionless, policy-backed access.
Cloud Run handles containerized apps that scale automatically. FortiGate, built by Fortinet, handles inspection, logging, and security policy enforcement. When combined, they give your stack both speed and defense: ephemeral compute guarded by persistent control. The trick is wiring identity and routing together so Cloud Run doesn’t lose the benefits of isolation while FortiGate keeps visibility.
In a proper Cloud Run FortiGate integration, traffic flows through FortiGate using static outbound IPs or secure tunnels before reaching Cloud Run’s managed endpoints. Authentication travels with requests, usually via OIDC tokens tied to a cloud identity provider like Okta or Google Identity. Each service call is verified, logged, and filtered. You get least-privilege access and auditable egress routes without messy VPN configurations.
The best practice is clear. Let Cloud Run stay dynamic while FortiGate enforces policy at the edge. Map roles in IAM to FortiGate policies, rotate keys through Secret Manager, and define outbound tags instead of hardcoded IP lists. Then inspection and rate control happen intelligently, not manually.
Featured snippet answer (for the busy reader):
To connect Cloud Run with FortiGate, route traffic through a static NAT or tunnel managed by FortiGate, use service identities for each Cloud Run app, and apply OIDC-based verification for authenticated requests. This keeps workloads secure and compliant without sacrificing elasticity.