
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Wed, 08 Apr 2026 19:45:35 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Shifting left at enterprise scale: how we manage Cloudflare with Infrastructure as Code]]></title>
            <link>https://blog.cloudflare.com/shift-left-enterprise-scale/</link>
            <pubDate>Tue, 09 Dec 2025 06:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare has shifted to Infrastructure as Code and policy enforcement to manage internal Cloudflare accounts. This new architecture uses Terraform, custom tooling, and Open Policy Agent to enforce security baselines and increase engineering velocity. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>The Cloudflare platform is a critical system for Cloudflare itself. We are our own Customer Zero – using our products to secure and optimize our own services. </p><p>Within our security division, a dedicated Customer Zero team uses its unique position to provide a constant, high-fidelity feedback loop to product and engineering that drives continuous improvement of our products<b>. </b>And we do this at a global scale — where a single misconfiguration can propagate across our edge in seconds and lead to unintended consequences. If you've ever hesitated before pushing a change to production, sweating because you know one small mistake could lock every employee out of critical application or take down a production service, you know the feeling. The risk of unintended consequences is real, and it keeps us up at night.</p><p>This presents an interesting challenge: How do we ensure hundreds of internal production Cloudflare accounts are secured consistently while minimizing human error?</p><p>While the Cloudflare dashboard is excellent for <a href="https://www.cloudflare.com/learning/performance/what-is-observability/">observability</a> and analytics, manually clicking through hundreds of accounts to ensure security settings are identical is a recipe for mistakes. To keep our sanity and our security intact, we stopped treating our configurations as manual point-and-click tasks and started treating them like code. We adopted “shift left” principles to move security checks to the earliest stages of development. </p><p>This wasn't an abstract corporate goal for us. It was a survival mechanism to catch errors before they caused an incident, and it required a fundamental change in our governance architecture.</p>
    <div>
      <h2>What Shift Left means to us</h2>
      <a href="#what-shift-left-means-to-us">
        
      </a>
    </div>
    <p>"Shifting left" refers to moving validation steps earlier in the software development lifecycle (SDLC). In practice, this means integrating testing, security audits, and policy compliance checks directly into the <a href="https://www.cloudflare.com/learning/serverless/glossary/what-is-ci-cd/">continuous integration and continuous deployment (CI/CD) pipeline</a>. By catching issues or misconfigurations at the merge request stage, we identify issues when the cost of remediation is lowest, rather than discovering them after deployment.</p><p>When we think about applying shift left principles at Cloudflare, four key principles stand out:</p><ul><li><p><b>Consistency</b>: Configurations must be easily copied and reused across accounts.</p></li><li><p><b>Scalability</b>: Large changes can be applied rapidly across multiple accounts.</p></li><li><p><b>Observability</b>: Configurations must be auditable by anyone for current state, accuracy, and security.</p></li><li><p><b>Governance</b>: Guardrails must be proactive — enforced before deployment to avoid incidents.</p></li></ul>
    <div>
      <h2>A production IaC operating model</h2>
      <a href="#a-production-iac-operating-model">
        
      </a>
    </div>
    <p>To support this model, we transitioned all production accounts to being managed with Infrastructure as Code (IaC). Every modification is tracked, tied to a user, commit, and an internal ticket. Teams still use the dashboard for analytics and insights, but critical production changes are all done in code.</p><p>This model ensures every change is peer-reviewed, and policies, though set by the security team, are implemented by the owning engineering teams themselves.</p><p>This setup is grounded in two major technologies: <a href="https://developer.hashicorp.com/terraform"><u>Terraform</u></a> and a custom CI/CD pipeline.</p>
    <div>
      <h2>Our enterprise IaC stack</h2>
      <a href="#our-enterprise-iac-stack">
        
      </a>
    </div>
    <p>We chose Terraform for its mature open-source ecosystem, strong community support, and deep integration with Policy as Code tooling. Furthermore, using the <a href="https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs"><u>Cloudflare Terraform Provider</u></a> internally allows us to actively <a href="https://blog.cloudflare.com/tag/dogfooding/"><u>dogfood</u></a> the experience and improve it for our customers.</p><p>To manage the scale of hundreds of accounts and around 30 merge requests per day, our CI/CD pipeline runs on <a href="https://www.runatlantis.io/"><u>Atlantis</u></a>, integrated with <a href="https://about.gitlab.com/"><u>GitLab</u></a>. We also use a custom go program, tfstate-butler, that acts as a broker to securely store state files.</p><p>tfstate-butler operates as an HTTP backend for Terraform. The primary design driver was security: It ensures unique encryption keys per state file to limit the blast radius of any potential compromise. </p><p>All internal account configurations are defined in a centralized <a href="https://developers.cloudflare.com/pages/configuration/monorepos/"><u>monorepo</u></a>. Individual teams own and deploy their specific configurations and are the designated code owners for their sections of this centralized repository, ensuring accountability. To read more about this configuration, check out <a href="https://blog.cloudflare.com/terraforming-cloudflare-at-cloudflare/"><u>How Cloudflare uses Terraform to manage Cloudflare</u></a>.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/17DDCeUrkEeWqtqpIPZoV4/114b63e0b8c408843b14c447ed27ed97/image1.png" />
          </figure><p><sup>Infrastructure as Code Data Flow Diagram</sup></p>
    <div>
      <h2>Baselines and Policy as Code</h2>
      <a href="#baselines-and-policy-as-code">
        
      </a>
    </div>
    <p>The entire shift left strategy hinges on establishing a strong security baseline for all internal production Cloudflare accounts. The baseline is a collection of security policies that are defined in code (Policy as Code). This baseline is not merely a set of guidelines but rather a required security configuration we enforce across the platform — e.g., maximum session length, required logs, specific WAF configurations, etc. </p><p>This setup is where policy enforcement shifts from manual audits to automated gates. We use the <a href="https://www.openpolicyagent.org/"><u>Open Policy Agent (OPA)</u></a> framework and its policy language, <a href="https://www.openpolicyagent.org/docs/policy-language#what-is-rego"><u>Rego</u></a>, via the Atlantis Conftest Policy Checking feature.</p>
    <div>
      <h2>Defining policies as code</h2>
      <a href="#defining-policies-as-code">
        
      </a>
    </div>
    <p>Rego policies define the specific security requirements that make up the baseline for all Cloudflare provider resources. We currently maintain approximately 50 policies.</p><p>For example, here is a Rego policy that validates only @cloudflare.com emails are allowed to be used in an access policy: </p>
            <pre><code># validate no use of non-cloudflare email
warn contains reason if {
    r := tfplan.resource_changes[_]
    r.mode == "managed"
    r.type == "cloudflare_access_policy"

    include := r.change.after.include[_]
    email_address := include.email[_]
    not endswith(email_address, "@cloudflare.com")

    reason := sprintf("%-40s :: only @cloudflare.com emails are allowed", [r.address])
}
warn contains reason if {
    r := tfplan.resource_changes[_]
    r.mode == "managed"
    r.type == "cloudflare_access_policy"

    require := r.change.after.require[_]
    email_address := require.email[_]
    not endswith(email_address, "@cloudflare.com")

    reason := sprintf("%-40s :: only @cloudflare.com emails are allowed", [r.address])
}</code></pre>
            
    <div>
      <h2>Enforcing the baseline</h2>
      <a href="#enforcing-the-baseline">
        
      </a>
    </div>
    <p>The policy check runs on every merge request (MR), ensuring configurations are compliant <i>before</i> deployment. Policy check output is shown directly in the GitLab MR comment thread. </p><p>Policy enforcement operates in two modes:</p><ol><li><p><b>Warning:</b> Leaves a comment on the MR, but allows the merge.</p></li><li><p><b>Deny:</b> Blocks the deployment outright.</p></li></ol><p>If the policy check determines the configuration being applied in the MR deviates from the baseline, the output will return which resources are out of compliance.</p><p>The example below shows an output from a policy check identifying 3 discrepancies in a merge request:</p>
            <pre><code>WARN - cloudflare_zero_trust_access_application.app_saas_xxx :: "session_duration" must be less than or equal to 10h

WARN - cloudflare_zero_trust_access_application.app_saas_xxx_pay_per_crawl :: "session_duration" must be less than or equal to 10h

WARN - cloudflare_zero_trust_access_application.app_saas_ms :: you must have at least one require statement of auth_method = "swk"

41 tests, 38 passed, 3 warnings, 0 failures, 0 exception</code></pre>
            
    <div>
      <h2>Handling policy exceptions</h2>
      <a href="#handling-policy-exceptions">
        
      </a>
    </div>
    <p>We understand that exceptions are necessary, but they must be managed with the same rigor as the policy itself. When a team requires an exception, they submit a request via Jira.</p><p>Once approved by the Customer Zero team, the exception is formalized by submitting a pull request to the central exceptions.rego repository. Exceptions can be made at various levels:</p><ul><li><p><b>Account:</b> Exclude account_x from policy_y.</p></li><li><p><b>Resource Category</b>: Exclude all resource_a’s in account_x from policy_y.</p></li><li><p><b>Specific Resource: </b>Exclude resource_a_1 in account_x from policy_y.</p></li></ul><p>This example shows a session length exception for five specific applications under two separate Cloudflare accounts: </p>
            <pre><code>{  
    "exception_type": "session_length",
    "exceptions": [
        {
            "account_id": "1xxxx",
              "tf_addresses": [
                "cloudflare_access_application.app_identity_access_denied",
                "cloudflare_access_application.enforcing_ext_auth_worker_bypass",
                "cloudflare_access_application.enforcing_ext_auth_worker_bypass_dev",
            ],
        },
        {
            "account_id": "2xxxx",
              "tf_addresses": [
                "cloudflare_access_application.extra_wildcard_application",
                "cloudflare_access_application.wildcard",
            ],
        },
    ],
}</code></pre>
            
    <div>
      <h2>Challenges and lessons learned</h2>
      <a href="#challenges-and-lessons-learned">
        
      </a>
    </div>
    <p>Our journey wasn't without obstacles. We had years of clickops (manual changes made directly in the dashboard) scattered across hundreds of accounts. Trying to import the existing chaos into a strict infrastructure as code system felt like trying to change the tires on a moving car. To this day, importing resources continues to be an ongoing process.</p><p>We also ran into limitations of our own tools. We found edge cases in the Cloudflare Terraform provider that only appear when you try to manage infrastructure at this scale. These weren't just minor speed bumps. They were hard lessons on the necessity of eating our own dogfood, so we could build even better solutions.</p><p>That friction clarified exactly what we were up against, leading us to three hard-earned lessons.</p>
    <div>
      <h2>Lesson 1: high barriers to entry stall adoption </h2>
      <a href="#lesson-1-high-barriers-to-entry-stall-adoption">
        
      </a>
    </div>
    <p>The first hurdle for any large-scale IaC rollout is onboarding existing, manually configured resources. We gave teams two options: manually creating Terraform resources and import blocks, or using <a href="https://github.com/cloudflare/cf-terraforming"><u>cf-terraforming</u></a>.</p><p>We quickly discovered that Terraform fluency varies across teams, and the learning curve for manually importing existing resources proved to be much steeper than we anticipated.</p><p>Luckily the cf-terraforming command-line utility uses the Cloudflare API to automatically generate the necessary Terraform code and import statements, significantly accelerating the migration process. </p><p>We also formed an internal community where experienced engineers could guide teams through the nuances of the provider and help unblock complex imports.</p>
    <div>
      <h2>Lesson 2: drift happens </h2>
      <a href="#lesson-2-drift-happens">
        
      </a>
    </div>
    <p>We also had to tackle configuration drift, which occurs when the IaC process is bypassed to expedite urgent changes. While making edits directly in the dashboard is faster during an incident, it leaves the Terraform state out of sync with reality.</p><p>We implemented a custom drift detection service that constantly compares the state defined by Terraform with the actual deployed state via the Cloudflare API. When drift is detected, an automated system creates an internal ticket and assigns it to the owning team with varying Service Level Agreements (SLAs) for remediation. </p>
    <div>
      <h2>Lesson 3: automation is key</h2>
      <a href="#lesson-3-automation-is-key">
        
      </a>
    </div>
    <p>Cloudflare innovates quickly, so our set of products and APIs is ever-growing. Unfortunately, that meant that our Terraform provider was often behind in terms of feature parity with the product. </p><p>We solved that issue with the release of our <a href="https://blog.cloudflare.com/automatically-generating-cloudflares-terraform-provider/"><u>v5 provider</u></a>, which automatically generates the Terraform provider based on the OpenAPI specification. This transition wasn’t without bumps as we hardened our approach to code generation, but this approach ensures that the API and Terraform stay in sync, reducing the chance of capability drift. </p>
    <div>
      <h2>The core lesson: proactive &gt; reactive</h2>
      <a href="#the-core-lesson-proactive-reactive">
        
      </a>
    </div>
    <p>By centralizing our security baselines, mandating peer reviews, and enforcing policies before any change hits production, we minimize the possibility of configuration errors, accidental deletions, or policy violations. The architecture not only helps to prevent manual mistakes, but actually increases engineering velocity because teams are confident their changes are compliant. </p><p>The key lesson from our work with Customer Zero is this: While the Cloudflare dashboard is excellent for day-to-day operations, achieving enterprise-level scale and consistent governance requires a different approach. When you treat your Cloudflare configurations as living code, you can scale securely and confidently. </p><p>Have thoughts on Infrastructure as Code? Keep the conversation going and share your experiences over at <a href="http://community.cloudflare.com"><u>community.cloudflare.com</u></a>.</p> ]]></content:encoded>
            <category><![CDATA[Infrastructure as Code]]></category>
            <category><![CDATA[Customer Zero]]></category>
            <category><![CDATA[Terraform]]></category>
            <category><![CDATA[Dogfooding]]></category>
            <guid isPermaLink="false">6Kx2Ob32avdygaasok3ZCr</guid>
            <dc:creator>Chase Catelli</dc:creator>
            <dc:creator>Ryan Pesek</dc:creator>
            <dc:creator>Derek Pitts</dc:creator>
        </item>
        <item>
            <title><![CDATA[Securing Cloudflare with Cloudflare: a Zero Trust journey]]></title>
            <link>https://blog.cloudflare.com/securing-cloudflare-with-cloudflare-zero-trust/</link>
            <pubDate>Tue, 05 Mar 2024 14:00:51 GMT</pubDate>
            <description><![CDATA[ A deep dive into how we have deployed Zero Trust at Cloudflare while maintaining user privacy ]]></description>
            <content:encoded><![CDATA[ <p></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4r1CIssX038rlnrx4n00m8/5893d5cb949bc417ad6eb899c88ebb75/image1-8.png" />
            
            </figure><p>Cloudflare is committed to providing our customers with industry-leading <a href="https://www.cloudflare.com/network-security/">network security solutions</a>. At the same time, we recognize that establishing robust security measures involves identifying potential threats by using processes that may involve scrutinizing sensitive or personal data, which in turn can pose a risk to privacy. As a result, we work hard to balance privacy and security by building privacy-first security solutions that we offer to our customers and use for our own network.</p><p>In this post, we'll walk through how we deployed Cloudflare products like Access and our Zero Trust Agent in a privacy-focused way for employees who use the Cloudflare network. Even though global legal regimes generally afford employees a lower level of privacy protection on corporate networks, we work hard to make sure our employees understand their privacy choices because Cloudflare has a strong culture and history of respecting and furthering user privacy on the Internet. We’ve found that many of our customers feel similarly about ensuring that they are protecting privacy while also securing their networks.</p><p>So how do we balance our commitment to privacy with ensuring the security of our internal corporate environment using Cloudflare products and services? We start with the basics: We only retain the minimum amount of data needed, we de-identify personal data where we can, we communicate transparently with employees about the security measures we have in place on corporate systems and their privacy choices, and we retain necessary information for the shortest time period needed.</p>
    <div>
      <h2>How we secure Cloudflare using Cloudflare</h2>
      <a href="#how-we-secure-cloudflare-using-cloudflare">
        
      </a>
    </div>
    <p>We take a comprehensive approach to securing our globally distributed hybrid workforce with both organizational controls and technological solutions. Our organizational approach includes a number of measures, such as a company-wide Acceptable Use Policy, employee privacy notices tailored by jurisdiction, required annual and new-hire privacy and security trainings, role-based access controls (<a href="https://www.cloudflare.com/learning/access-management/role-based-access-control-rbac/">RBAC</a>), and least privilege principles. These organizational controls allow us to communicate expectations for both the company and the employees that we can implement with technological controls and that we enforce through logging and other mechanisms.</p><p>Our technological controls are rooted in <a href="https://www.cloudflare.com/learning/security/glossary/what-is-zero-trust/">Zero Trust best practices</a> and start with a focus on our Cloudflare One services to secure our workforce as described below.</p>
    <div>
      <h3>Securing access to applications</h3>
      <a href="#securing-access-to-applications">
        
      </a>
    </div>
    <p>Cloudflare <a href="https://www.cloudflare.com/application-services/solutions/">secures access to self-hosted and SaaS applications</a> for our workforce, whether remote or in-office, using our own <a href="https://www.cloudflare.com/learning/access-management/what-is-ztna/">Zero Trust Network Access</a> (ZTNA) service, Cloudflare Access, to verify identity, <a href="/how-cloudflare-implemented-fido2-and-zero-trust/">enforce multi-factor authentication with security keys</a>, and evaluate device posture using the Zero Trust client for every request. This approach evolved over several years and has enabled Cloudflare to more effectively protect our growing workforce.</p>
    <div>
      <h3>Defending against cyber threats</h3>
      <a href="#defending-against-cyber-threats">
        
      </a>
    </div>
    <p>Cloudflare leverages <a href="https://www.cloudflare.com/network-services/products/magic-wan/">Cloudflare Magic WAN</a> to secure our office networks and <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/">the Cloudflare Zero Trust agent</a> to secure our workforce. We use both of these technologies as an onramp to our own <a href="https://www.cloudflare.com/zero-trust/products/gateway/">Secure Web Gateway (also known as Gateway)</a> to secure our workforce from a rise in online threats.</p><p>As we have evolved our hybrid work and office configurations, our security teams have benefited from additional controls and visibility for forward-proxied Internet traffic, including:</p><ul><li><p><b>Granular HTTP controls</b>: Our security teams <a href="https://www.cloudflare.com/learning/security/what-is-https-inspection/">inspect HTTPS traffic</a> to block access to specific websites identified as malicious by our security team, conduct <a href="https://developers.cloudflare.com/cloudflare-one/policies/gateway/http-policies/antivirus-scanning/">antivirus scanning</a>, and apply identity-aware browsing policies.</p></li><li><p><b>Selectively isolating Internet browsing</b>: With <a href="https://www.cloudflare.com/learning/access-management/what-is-browser-isolation/">remote browser isolated (RBI)</a> sessions, all web code is run on Cloudflare’s network far from local devices, insulating users from any untrusted and malicious content. Today, Cloudflare isolates social media, news outlets, personal email, and other potentially risky Internet categories, and we have set up feedback loops for our employees to help us fine-tune these categories.</p></li><li><p><b>Geography-based logging</b>: Seeing where outbound requests originate helps our security teams understand the geographic distribution of our workforce, including our presence in high-risk areas.</p></li><li><p><b>Data Loss Prevention:</b> To keep sensitive data inside our corporate network, this tool allows us to identify data we’ve flagged as sensitive in outbound HTTP/S traffic and prevent it from leaving the network.</p></li><li><p><b>Cloud Access Security Broker:</b> This tool allows us to monitor our SaaS apps for misconfigurations and sensitive data that is potentially exposed or shared too broadly.</p></li></ul>
    <div>
      <h3>Protecting inboxes with cloud email security</h3>
      <a href="#protecting-inboxes-with-cloud-email-security">
        
      </a>
    </div>
    <p>Additionally, we have deployed our <a href="https://www.cloudflare.com/zero-trust/products/email-security/">Cloud Email Security</a> solution to protect our workforce from increased phishing and <a href="https://www.cloudflare.com/learning/email-security/business-email-compromise-bec/">business email compromise</a> attacks that we have not only seen directed against our employees, but that are <a href="/2023-phishing-report">plaguing organizations globally</a>. One key feature we use is <a href="/safe-email-links/">email link isolation</a>, which uses RBI and email security functionality to open potentially suspicious links in an isolated browser. This allows us to be slightly more relaxed with blocking suspicious links without compromising security. This is a big win for productivity for our employees and the security team, as both sets of employees aren’t having to deal with large volumes of false positives.</p><p>More details on our implementation can be found in our <a href="https://www.cloudflare.com/case-studies/cloudflare-one/">Securing Cloudflare with Cloudflare One</a> case study.</p>
    <div>
      <h2>How we respect privacy</h2>
      <a href="#how-we-respect-privacy">
        
      </a>
    </div>
    <p>The very nature of these powerful security technologies Cloudflare has created and deployed underscores the responsibility we have to use privacy-first principles in handling this data, and to recognize that the data should be respected and protected at all times.</p><p>The journey to respecting privacy starts with the products themselves. We develop products that have privacy controls built in at their foundation. To achieve this, our product teams work closely with Cloudflare’s product and privacy counsels to practice privacy by design. A great example of this collaboration is the ability to manage personally identifiable information (PII) in the Secure Web Gateway logs. You can choose to <a href="https://developers.cloudflare.com/cloudflare-one/insights/logs/gateway-logs/manage-pii/#exclude-pii">exclude PII from Gateway logs</a> entirely or <a href="https://developers.cloudflare.com/cloudflare-one/insights/logs/gateway-logs/manage-pii/#redact-pii">redact PII from the logs</a> and gain granular control over access to PII with the <a href="https://developers.cloudflare.com/cloudflare-one/roles-permissions/#cloudflare-zero-trust-pii">Zero Trust PII Role</a>.</p><p>In addition to building privacy-first security products, we are also committed to communicating transparently with Cloudflare employees about how these security products work and what they can – and can’t – see about traffic on our internal systems. This empowers employees to see themselves as part of the security solution, rather than set up an “us vs. them” mentality around employee use of company systems.</p><p>For example, while our employee privacy policies and our Acceptable Use Policy provide broad notice to our employees about what happens to data when they use the company’s systems, we thought it was important to provide even more detail. As a result, our security team collaborated with our privacy team to create an internal wiki page that plainly explains the data our security tools collect and why. We also describe the privacy choices available to our employees. This is particularly important for the “bring your own device” (BYOD) employees who have opted for the convenience of using their personal mobile device for work. BYOD employees must install endpoint management (provided by a third party) and Cloudflare’s Zero trust client on their devices if they want to access Cloudflare systems. We described clearly to our employees what this means about what traffic on their devices can be seen by Cloudflare teams, and we explained how they can take steps to protect their privacy when they are using their devices for purely personal purposes.</p><p>For the teams that develop for and support our <a href="https://www.cloudflare.com/zero-trust/solutions/">Zero Trust services</a>, we ensure that data is available only on a strict, need-to-know basis and is restricted to Cloudflare team members that require access as an essential part of their job. The set of people with access are required to take training that reminds them of their responsibility to respect this data and provides them with best practices for handling sensitive data. Additionally, to ensure we have full auditability, we log all the queries run against this database and by whom they are run.</p><p>Cloudflare has also made it easy for our employees to express any concerns they may have about how their data is handled or what it is used for. We have mechanisms in place that allow employees to ask questions or express concerns about the use of Zero Trust Security on Cloudflare’s network.</p><p>In addition, we make it easy for employees to reach out directly to the leaders responsible for these tools. All of these efforts have helped our employees better understand what information we collect and why. This has helped to expand our strong foundation for security and privacy at Cloudflare.</p>
    <div>
      <h2>Encouraging privacy-first security for all</h2>
      <a href="#encouraging-privacy-first-security-for-all">
        
      </a>
    </div>
    <p>We believe firmly that great security is critical for ensuring data privacy, and that privacy and security can co-exist harmoniously. We also know that it is possible to secure a corporate network in a way that respects the employees using those systems.</p><p>For anyone looking to secure a corporate network, we encourage focusing on network security products and solutions that build in personal data protections, like our Zero Trust suite of products. If you are curious to explore <a href="https://www.cloudflare.com/learning/access-management/how-to-implement-zero-trust/">how to implement</a> these Cloudflare services in your own organizations, <a href="https://www.cloudflare.com/products/zero-trust/plans/enterprise/">request a consultation on Zero Trust here</a>.</p><p>We also urge organizations to make sure they communicate clearly with their users. In addition to making sure company policies are transparent and accessible, it is important to help employees understand their privacy choices. Under the laws of almost every jurisdiction globally, individuals have a lower level of privacy on a company device or a company’s systems than they do on their own personal accounts or devices, so it’s important to communicate clearly to help employees understand the difference. If an organization has privacy champions, works councils, or other employee representation groups, it is critical to communicate early and often with these groups to help employees understand what controls they can exercise over their data.</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <category><![CDATA[Privacy]]></category>
            <guid isPermaLink="false">6l7ydA66mxLvZMpnAgzEhD</guid>
            <dc:creator>Derek Pitts</dc:creator>
            <dc:creator>Ankur Aggarwal</dc:creator>
            <dc:creator>Emily Hancock</dc:creator>
        </item>
        <item>
            <title><![CDATA[How Cloudflare implemented hardware keys with FIDO2 and Zero Trust to prevent phishing]]></title>
            <link>https://blog.cloudflare.com/how-cloudflare-implemented-fido2-and-zero-trust/</link>
            <pubDate>Thu, 29 Sep 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[ Adopting a phishing resistant second factor, like a YubiKey with FIDO2, is the number one way to prevent phishing attacks. Cloudflare has used phishing resistant second factors only since February 2021, and these were the steps we took to accomplish that. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Cloudflare’s security architecture a few years ago was a classic “castle and moat” VPN architecture. Our employees would use our corporate VPN to connect to all the internal applications and servers to do their jobs. We enforced two-factor authentication with time-based one-time passcodes (TOTP), using an authenticator app like Google Authenticator or Authy when logging into the VPN but only a few internal applications had a second layer of auth. That architecture has a strong looking exterior, but the security model is weak. We recently detailed <a href="/2022-07-sms-phishing-attacks/">the mechanics of a phishing attack we prevented</a>, which walks through how attackers can phish applications that are “secured” with second factor authentication methods like TOTP. Happily, we had long done away with TOTP and replaced it with hardware security keys and Cloudflare Access. This blog details how we did that.</p><p>The solution to the phishing problem is through a <a href="https://www.cloudflare.com/learning/access-management/what-is-multi-factor-authentication/">multi-factor  authentication (MFA)</a> protocol called <i>FIDO2/WebAuthn</i>. Today, all Cloudflare employees log in with FIDO2 as their secure multi-factor and authenticate to our systems using our own <a href="https://www.cloudflare.com/learning/security/glossary/what-is-zero-trust/">Zero Trust</a> products. Our newer architecture is phish proof and allows us to more easily enforce the least privilege access control.</p>
    <div>
      <h3>A little about the terminology of security keys and what we use</h3>
      <a href="#a-little-about-the-terminology-of-security-keys-and-what-we-use">
        
      </a>
    </div>
    <p>In 2018, we knew we wanted to migrate to phishing-resistant MFA. We had seen <a href="https://github.com/kgretzky/evilginx2">evilginx2</a> and the maturity around phishing push-based mobile authenticators, and TOTP. The only phishing-resistant MFA that withstood social engineering and credential stealing attacks were security keys that implement FIDO standards. FIDO-based MFA introduces new terminology, such as FIDO2, WebAuthn, hard(ware) keys, security keys, and specifically, the YubiKey (the name of a well-known manufacturer of hardware keys), which we will reference throughout this post.</p><p><b>WebAuthn</b> refers to the <a href="https://www.w3.org/TR/webauthn-2/">web authentication standard</a>, and we wrote in depth about how that protocol works when we released <a href="/cloudflare-now-supports-security-keys-with-web-authentication-webauthn/">support for security keys in the Cloudflare dashboard</a>.</p><p><b>CTAP1(U2F) and CTAP2</b> refers to the client to authenticator protocol which details how software or hardware devices interact with the platform performing the WebAuthn protocol.</p><p><b>FIDO2</b> is the collection of these two protocols being used for authentication. The distinctions aren’t important, but the nomenclature can be confusing.</p><p>The most important thing to know is all of these protocols and standards were developed to create open authentication protocols that are phishing-resistant and can be implemented with a hardware device. In software, they are implemented with Face ID, Touch ID, Windows Assistant, or similar. In hardware a YubiKey or other separate physical device is used for authentication with USB, Lightning, or NFC.</p><p>FIDO2 is phishing-resistant because it implements a challenge/response that is cryptographically secure, and the challenge protocol incorporates the specific website or domain the user is authenticating to. When logging in, the security key will produce a different response on example.net than when the user is legitimately trying to log in on example.com.</p><p>At Cloudflare, we’ve issued multiple types of security keys to our employees over the years, but we currently issue two different FIPS-validated security keys to all employees. The first key is a YubiKey 5 Nano or YubiKey 5C Nano that is intended to stay in a USB slot on our employee laptops at all times. The second is the YubiKey 5 NFC or YubiKey 5C NFC that works on desktops and on mobile either through NFC or USB-C.</p><p>In late 2018 we distributed security keys at a whole company event. We asked all employees to enroll their keys, authenticate with them, and ask questions about the devices during a short workshop. The program was a huge success, but there were still rough edges and applications that didn’t work with WebAuthn. We weren’t ready for full enforcement of security keys and needed some middle-ground solution while we worked through the issues.</p>
    <div>
      <h3>The beginning: selective security key enforcement with Cloudflare Zero Trust</h3>
      <a href="#the-beginning-selective-security-key-enforcement-with-cloudflare-zero-trust">
        
      </a>
    </div>
    <p>We have thousands of applications and servers we are responsible for maintaining, which were protected by our VPN. We started <a href="https://www.cloudflare.com/learning/access-management/how-to-implement-zero-trust/">migrating</a> all of these applications to our Zero Trust access proxy at the same time that we issued our employees their set of security keys.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7z0izoSKAEICEWz1ExjagE/759d732a44cd0d0a4e3558ea29703405/image4-24.png" />
            
            </figure><p>Cloudflare Access allowed our employees to securely access sites that were once protected by the VPN. Each internal service would validate a signed credential to authenticate a user and ensure the user had signed in with our identity provider. Cloudflare Access <i>was necessary</i> for our rollout of security keys because it gave us a tool to selectively enforce the first few internal applications that would require authenticating with a security key.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2NfwXv0gUUeZvJ8MyCQnMb/e71d44fb185a171800ce164dcf1849ff/image6-13.png" />
            
            </figure><p>We used Terraform when onboarding our applications to our <a href="https://www.cloudflare.com/zero-trust/solutions/">Zero Trust products</a> and this is the Cloudflare Access policy where we first enforced security keys. We set up Cloudflare Access to use OAuth2 when integrating with our identity provider and the identity provider informs Access about which type of second factor was used as part of the OAuth flow.</p><p>In our case, <a href="https://datatracker.ietf.org/doc/html/draft-ietf-oauth-amr-values-04">swk</a> is a proof of possession of a security key. If someone logged in and didn’t use their security key they would be shown a helpful error message instructing them to log in again and press on their security key when prompted.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/72cbptDgJcHyaqg8MVsJrU/f231888bb983e593e265e2cf32a96704/image2-62.png" />
            
            </figure><p>Selective enforcement instantly changed the trajectory of our security key rollout. We began enforcement on a single service on July 29, 2020, and authentication with security keys massively increased over the following two months. This step was critical to give our employees an opportunity to familiarize themselves with the new technology. A window of selective enforcement should be at least a month to account for people on vacation, but in hindsight it doesn’t need to be much longer than that.</p><p>What other security benefits did we get from moving our applications to use our Zero Trust products and off of our VPN? With legacy applications, or applications that don’t implement SAML, this migration was necessary for enforcement of role based access control and the principle of the least privilege. A VPN will authenticate your network traffic but all of your applications will have no idea who the network traffic belongs to. Our applications struggled to enforce multiple levels of permissions and each had to re-invent their own auth scheme.</p><p>When we onboarded to Cloudflare Access we created groups to enforce <a href="https://www.cloudflare.com/learning/access-management/role-based-access-control-rbac/">RBAC</a> and tell our applications what permission level each person should have.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3EZfrzqPeyfD7TUf39kdao/663301d89fe227e8f8208398eb049347/image5-23.png" />
            
            </figure><p>Here’s a site where only members of the ACL-CFA-CFDATA-argo-config-admin-svc group have access. It enforces that the employee used their security key when logging in, and no complicated OAuth or SAML integration was needed for this. We have over 600 internal sites using this same pattern and all of them enforce security keys.</p>
    <div>
      <h3>The end of optional: the day Cloudflare dropped TOTP completely</h3>
      <a href="#the-end-of-optional-the-day-cloudflare-dropped-totp-completely">
        
      </a>
    </div>
    <p>In February 2021, our employees started to report social engineering attempts to our security team. They were receiving phone calls from someone claiming to be in our IT department, and we were alarmed. We decided to begin requiring security keys to be used for all authentication to prevent any employees from being victims of the social engineering attack.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6mQQiEEno9jPICKiUCm3kk/0d2179a903c2e60f7d8cf0feb8471493/image1-74.png" />
            
            </figure><p>After disabling all other forms of MFA (SMS, TOTP etc.), except for WebAuthn, we were officially FIDO2 only. “Soft token” (TOTP) isn’t perfectly at zero on this graph though. This is caused because those who lose their security keys or become locked out of their accounts need to go through a secure offline recovery process where logging in is facilitated through an alternate method. Best practice is to distribute multiple security keys for employees to allow for a back-up, in case this situation arises.</p><p>Now that all employees are using their YubiKeys for phishing-resistant MFA are we finished? Well, what about <a href="https://www.cloudflare.com/learning/access-management/what-is-ssh/">SSH</a> and non-HTTP protocols? We wanted a single unified approach to <a href="https://www.cloudflare.com/learning/access-management/what-is-identity-and-access-management/">identity and access management</a> so bringing security keys to arbitrary other protocols was our next consideration.</p>
    <div>
      <h3>Using security keys with SSH</h3>
      <a href="#using-security-keys-with-ssh">
        
      </a>
    </div>
    <p>To support bringing security keys to SSH connections we deployed <a href="https://www.cloudflare.com/products/tunnel/">Cloudflare Tunnel</a> to all of our production infrastructure. Cloudflare Tunnel seamlessly integrates with Cloudflare Access regardless of the protocol transiting the tunnel, and running a tunnel requires the tunnel client <a href="https://github.com/cloudflare/cloudflared">cloudflared</a>. This means that we could deploy the cloudflared binary to all of our infrastructure and create a tunnel to each machine, create Cloudflare Access policies where security keys are required, and ssh connections would start requiring security keys through Cloudflare Access.</p><p>In practice these steps are less intimidating than they sound and the Zero Trust developer docs have a <a href="https://developers.cloudflare.com/cloudflare-one/tutorials/ssh-cert-bastion/">fantastic tutorial</a> on how to do this. Each of our servers have a configuration file required to start the tunnel. Systemd invokes cloudflared which uses this (or similar) configuration file when starting the tunnel.</p>
            <pre><code>tunnel: 37b50fe2-a52a-5611-a9b1-ear382bd12a6
credentials-file: /root/.cloudflared/37b50fe2-a52a-5611-a9b1-ear382bd12a6.json

ingress:
  - hostname: &lt;identifier&gt;.ssh.cloudflare.com
    service: ssh://localhost:22
  - service: http_status:404</code></pre>
            <p>When an operator needs to SSH into our infrastructure they use the ProxyCommand SSH directive to invoke cloudflared, authenticate using Cloudflare Access, and then forward the SSH connection through Cloudflare. Our employees’ SSH configurations have an entry that looks kind of like this, and can be generated with a helper command in cloudflared:</p>
            <pre><code>Host *.ssh.cloudflare.com
    ProxyCommand /usr/local/bin/cloudflared access ssh –hostname %h.ssh.cloudflare.com</code></pre>
            <p>It’s worth noting that OpenSSH has supported FIDO2 since <a href="https://www.openssh.com/txt/release-8.2">version 8.2</a>, but we’ve found there are benefits to having a unified approach to access control where all access control lists are maintained in a single place.</p>
    <div>
      <h3>What we’ve learned and how our experience can help you</h3>
      <a href="#what-weve-learned-and-how-our-experience-can-help-you">
        
      </a>
    </div>
    <p>There’s no question after the past few months that the future of authentication is FIDO2 and WebAuthn. In total this took us a few years, and we hope these learnings can prove helpful to other organizations who are looking to modernize with FIDO-based authentication.</p><p>If you’re interested in rolling out security keys at your organization, or you’re interested in Cloudflare’s Zero Trust products, reach out to us at <a>securitykeys@cloudflare.com</a>. Although we’re happy that our <a href="https://www.cloudflare.com/learning/email-security/how-to-prevent-phishing/">preventative efforts</a> helped us resist the latest round of phishing and social engineering attacks, our <a href="https://www.cloudflare.com/careers/jobs/?department=Security">security team</a> is still growing to help prevent whatever comes next.</p> ]]></content:encoded>
            <category><![CDATA[Birthday Week]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <category><![CDATA[Cloudflare Zero Trust]]></category>
            <guid isPermaLink="false">6isY2SPrEWA0iIZ9XgEUmq</guid>
            <dc:creator>Evan Johnson</dc:creator>
            <dc:creator>Derek Pitts</dc:creator>
        </item>
        <item>
            <title><![CDATA[How Cloudflare Security does Zero Trust]]></title>
            <link>https://blog.cloudflare.com/how-cloudflare-security-does-zero-trust/</link>
            <pubDate>Fri, 24 Jun 2022 14:15:31 GMT</pubDate>
            <description><![CDATA[ How Cloudflare’s security team implemented Zero Trust controls ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Throughout Cloudflare One week, we provided playbooks on how to replace your legacy appliances with Zero Trust services. Using our own products is part of our team’s culture, and we want to share our experiences when we <a href="https://www.cloudflare.com/learning/access-management/how-to-implement-zero-trust/">implemented Zero Trust</a>.</p><p>Our journey was similar to many of our customers. Not only did we want better <a href="https://www.cloudflare.com/security/">security solutions</a>, but the tools we were using made our work more difficult than it needed to be. This started with just a search for an alternative to remotely connecting on a clunky VPN, but soon we were deploying <a href="https://www.cloudflare.com/learning/security/glossary/what-is-zero-trust/">Zero Trust solutions</a> to protect our employees’ web browsing and email. Next, we are looking forward to upgrading our SaaS security with our new <a href="https://www.cloudflare.com/products/zero-trust/casb/">CASB</a> product.</p><p>We know that getting started with Zero Trust can seem daunting, so we hope that you can learn from our own journey and see how it benefited us.</p>
    <div>
      <h3>Replacing a VPN: launching Cloudflare Access</h3>
      <a href="#replacing-a-vpn-launching-cloudflare-access">
        
      </a>
    </div>
    <p>Back in 2015, all of Cloudflare’s internally-hosted applications were reached via a hardware-based VPN. On-call engineers would fire up a client on their laptop, connect to the VPN, and log on to Grafana. This process was frustrating and slow.</p><p>Many of the products we build are a direct result of the challenges our own team is facing, and Access is a perfect example. Launching as an internal project in 2015, Access enabled employees to access internal applications through our identity provider. We started with just one application behind Access with the goal of improving incident response times. Engineers who received a notification on their phones could tap a link and, after authenticating via their browser, would immediately have the access they needed. As soon as people started working with the new authentication flow, they wanted it everywhere. Eventually our security team mandated that we move our apps behind Access, but for a long time it was totally organic: teams were eager to use it.</p><p>With authentication occuring at our network edge, we were able to support a globally-distributed workforce without the latency of a VPN, and we were able to do so securely. Moreover, our team is committed to protecting our internal applications with the most secure and usable authentication mechanisms, and two-factor authentication is one of the most important security controls that can be implemented. With Cloudflare Access, we’re able to rely on the strong two-factor authentication mechanisms of our identity provider.</p><p>Not all second factors of authentication deliver the same level of security. Some methods are still vulnerable to man-in-the-middle (MITM) attacks. These attacks often feature bad actors stealing one-time passwords, commonly through phishing, to gain access to private resources. To eliminate that possibility, we implemented <a href="https://fidoalliance.org/specs/fido-v2.0-rd-20161004/fido-client-to-authenticator-protocol-v2.0-rd-20161004.html">FIDO2</a> supported security keys. FIDO2 is an authenticator protocol designed to <a href="https://www.cloudflare.com/learning/email-security/how-to-prevent-phishing/">prevent phishing</a>, and we saw it as an improvement to our reliance on soft tokens at the time.</p><p>While the implementation of FIDO2 can present compatibility challenges, we were enthusiastic to improve our security posture. Cloudflare Access enabled us to limit access to our systems to only FIDO2. Cloudflare employees are now required to use their hardware keys to reach our applications. The onboarding of Access was not only a huge win for ease of use, the enforcement of security keys was a massive improvement to our security posture.</p>
    <div>
      <h3>Mitigate threats &amp; prevent data exfiltration: Gateway and Remote Browser Isolation</h3>
      <a href="#mitigate-threats-prevent-data-exfiltration-gateway-and-remote-browser-isolation">
        
      </a>
    </div>
    
    <div>
      <h4>Deploying secure DNS in our offices</h4>
      <a href="#deploying-secure-dns-in-our-offices">
        
      </a>
    </div>
    <p>A few years later, in 2020, many customers’ security teams were struggling to extend the controls they had enabled in the office to their remote workers. In response, we launched Cloudflare Gateway, offering customers protection from malware, ransomware, phishing, command &amp; control, shadow IT, and other Internet risks over all ports and protocols. Gateway directs and filters traffic according to the policies implemented by the customer.</p><p>Our security team started with Gateway to implement DNS filtering in all of our offices. Since Gateway was built on top of the same network as 1.1.1.1, the world’s fastest DNS resolver, any current or future Cloudflare office will have DNS filtering without incurring additional latency. Each office connects to the nearest data center and is protected.</p>
    <div>
      <h4>Deploying secure DNS for our remote users</h4>
      <a href="#deploying-secure-dns-for-our-remote-users">
        
      </a>
    </div>
    <p>Cloudflare’s WARP client was also built on top of our 1.1.1.1 DNS resolver. It extends the <a href="https://www.cloudflare.com/products/zero-trust/remote-workforces/">security and performance</a> offered in offices to remote corporate devices. With the WARP client deployed, corporate devices connect to the nearest Cloudflare data center and are routed to Cloudflare Gateway. By sitting between the corporate device and the Internet, the entire connection from the device is secure, while also offering improved speed and privacy.</p><p>We sought to extend secure DNS filtering to our remote workforce and deployed the Cloudflare WARP client to our fleet of endpoint devices. The deployment enabled our security teams to better preserve our privacy by encrypting DNS traffic over DNS over HTTPS (DoH). Meanwhile, Cloudflare Gateway categorizes domains based on <a href="https://radar.cloudflare.com/">Radar</a>, our own threat intelligence platform, enabling us to block high risk and suspicious domains for users everywhere around the world.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5yfcgPWAmGAzf01s7NMBM0/fbe39dcf04d00f61570528c68fa907d1/pasted-image-0.png" />
            
            </figure>
    <div>
      <h4>Adding on HTTPS filtering and Browser Isolation</h4>
      <a href="#adding-on-https-filtering-and-browser-isolation">
        
      </a>
    </div>
    <p>DNS filtering is a valuable security tool, but it is limited to blocking entire domains. Our team wanted a more precise instrument to block only malicious URLs, not the full domain. Since Cloudflare One is an integrated platform, most of the deployment was already complete. All we needed was to add the Cloudflare Root CA to our endpoints and then enable HTTP filtering in the Zero Trust dashboard. With those few simple steps, we were able to implement more granular blocking controls.</p><p>In addition to precision blocking, HTTP filtering enables us to implement <a href="https://developers.cloudflare.com/cloudflare-one/policies/filtering/http-policies/tenant-control/">tenant control</a>. With tenant control, Gateway HTTP policies regulate access to corporate SaaS applications. Policies are implemented using custom HTTP headers. If the custom request header is present and the request is headed to an organizational account, access is granted. If the request header is present and the request goes to a non-organizational account, such as a personal account, the request can be blocked or opened in an isolated browser.</p><p>After protecting our users’ traffic at the <a href="https://www.cloudflare.com/learning/dns/what-is-dns/">DNS</a> and HTTP layers, we implemented Browser Isolation. When Browser Isolation is implemented, all browser code executes in the cloud on Cloudflare’s network. This isolates our endpoints from malicious attacks and <a href="https://www.cloudflare.com/learning/security/what-is-data-exfiltration/">common data exfiltration techniques</a>. Some <a href="https://www.cloudflare.com/learning/access-management/what-is-browser-isolation/">remote browser isolation</a> products introduce latency and frustrate users. Cloudflare’s Browser Isolation uses the power of our network to offer a seamless experience for our employees. It quickly improved our security posture without compromising user experience.</p>
    <div>
      <h3>Preventing phishing attacks: Onboarding Area 1 email security</h3>
      <a href="#preventing-phishing-attacks-onboarding-area-1-email-security">
        
      </a>
    </div>
    <p>Also in early 2020, we saw an uptick in employee-reported phishing attempts. Our cloud-based email provider had strong spam filtering, but they fell short at blocking malicious threats and other advanced attacks. As we experienced increasing phishing attack volume and frequency we felt it was time to explore more thorough email protection options.</p><p>The team looked for four main things in a vendor: the ability to scan email attachments, the ability to analyze suspected malicious links, business email compromise protection, and strong APIs into cloud-native email providers. After testing many vendors, Area 1 became the clear choice to protect our employees. We implemented Area 1’s solution in early 2020, and the results have been fantastic.</p><p>Given the overwhelmingly positive response to the product and the desire to build out our Zero Trust portfolio, <a href="/why-we-are-acquiring-area-1/">Cloudflare acquired Area 1 Email Security</a> in April 2022. We are excited to offer the same protections we use to our customers.</p>
    <div>
      <h3>What’s next: Getting started with Cloudflare’s CASB</h3>
      <a href="#whats-next-getting-started-with-cloudflares-casb">
        
      </a>
    </div>
    <p><a href="/cloudflare-acquires-vectrix-to-expand-zero-trust-saas-security/">Cloudflare acquired Vectrix</a> in February 2022. Vectrix’s CASB offers functionality we are excited to add to Cloudflare One. SaaS security is an increasing concern for many security teams. SaaS tools are storing more and more sensitive corporate data, so misconfigurations and external access can be a significant threat. However, securing these platforms can present a significant resource challenge. Manual reviews for misconfigurations or externally shared files are time-consuming, yet necessary processes for many customers. <a href="https://www.cloudflare.com/learning/access-management/what-is-a-casb/">CASB</a> reduces the burden on teams by ensuring security standards by scanning SaaS instances and identifying vulnerabilities with just a few clicks.</p><p>We want to ensure we maintain the best practices for SaaS security, and like many of our customers, we have many SaaS applications to secure. We are always seeking opportunities to make our processes more efficient, so we are excited to onboard one of our newest Zero Trust products.</p>
    <div>
      <h3>Always striving for improvement</h3>
      <a href="#always-striving-for-improvement">
        
      </a>
    </div>
    <p>Cloudflare takes pride in deploying and testing our own products. Our security team works directly with Product to “dog food” our own products first. It’s our mission to help build a better Internet — and that means providing valuable feedback from our internal teams. As the number one consumer of Cloudflare’s products, the Security team is not only helping keep the company safer, but also contributing to build better products for our customers.</p><p>We hope you have enjoyed Cloudflare One week. We really enjoyed sharing our stories with you. To check out our recap of the week, please visit our <a href="https://gateway.on24.com/wcc/eh/2153307/lp/3824611/?_gl=1%2a1gzme6u%2a_ga%2aMTkxODk3NTg2MC4xNjMyMTUzNjc4%2a_gid%2aNjI2NDA3OTcxLjE2NTQ1MzM5MjQ">Cloudflare TV segment</a>.</p> ]]></content:encoded>
            <category><![CDATA[Cloudflare One Week]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Cloudflare Zero Trust]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <category><![CDATA[Cloudflare Access]]></category>
            <category><![CDATA[Dogfooding]]></category>
            <guid isPermaLink="false">3se8QfBZjWolhVUDZFngeV</guid>
            <dc:creator>Noelle Kagan</dc:creator>
            <dc:creator>Tim Obezuk</dc:creator>
            <dc:creator>Derek Pitts</dc:creator>
        </item>
    </channel>
</rss>