<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harish Nataraj</title>
    <description>The latest articles on DEV Community by Harish Nataraj (@hnataraj).</description>
    <link>https://dev.to/hnataraj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F867891%2Fb8c5501f-008b-4457-b3dc-54889c12f474.jpeg</url>
      <title>DEV Community: Harish Nataraj</title>
      <link>https://dev.to/hnataraj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hnataraj"/>
    <language>en</language>
    <item>
      <title>Auto OpenAPI Generation — The Network Doesn’t Lie!</title>
      <dc:creator>Harish Nataraj</dc:creator>
      <pubDate>Tue, 14 Jun 2022 16:44:59 +0000</pubDate>
      <link>https://dev.to/hnataraj/auto-openapi-generation-the-network-doesnt-lie-n43</link>
      <guid>https://dev.to/hnataraj/auto-openapi-generation-the-network-doesnt-lie-n43</guid>
      <description>&lt;h2&gt;
  
  
  API Visibility Is Key
&lt;/h2&gt;

&lt;p&gt;Visibility of APIs is a fundamental necessity for governance, security, and productivity. Yet most organizations are unable to answer the following critical questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What APIs do I have?&lt;/li&gt;
&lt;li&gt;Are &lt;a href="https://swagger.io/specification/"&gt;OpenAPI schemas&lt;/a&gt; for the APIs documented and maintained?&lt;/li&gt;
&lt;li&gt;Which APIs process sensitive data?&lt;/li&gt;
&lt;li&gt;Which users access which APIs, under what roles (or scopes)?&lt;/li&gt;
&lt;li&gt;Which APIs are external vs. internal?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Annotation Based OpenAPI Generation Is Not Scalable
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Disparate Set of Open Source Tools
&lt;/h3&gt;

&lt;p&gt;There are a plethora of (language/framework specific) open source tools that generate OpenAPI specifications at build time, by scanning source code.&lt;/p&gt;

&lt;p&gt;They use &lt;a href="https://en.wikipedia.org/wiki/Java_annotation"&gt;code level annotations&lt;/a&gt; added by developers, to language/framework specific resources, methods, and controllers, to generate schema for APIs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qkU49zxa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p8ih9gc776bf2m7e82bp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qkU49zxa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p8ih9gc776bf2m7e82bp.png" alt="Java Annotations for Swagger-Core" width="880" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;center&gt;
    &lt;a href="https://en.wikipedia.org/wiki/Java_annotation"&gt; Java Annotations for Swagger-Core &lt;/a&gt;
  &lt;/center&gt;




&lt;p&gt;&lt;br&gt;&lt;br&gt;
Examples include &lt;a href="https://github.com/swagger-api/swagger-core"&gt;Swagger-Core&lt;/a&gt;, &lt;a href="https://github.com/springfox/springfox"&gt;SpringFox&lt;/a&gt;, &lt;a href="https://github.com/RSuter/NSwag"&gt;NSwag&lt;/a&gt; / &lt;a href="https://github.com/domaindrivendev/Swashbuckle"&gt;Swashbuckle&lt;/a&gt;, &lt;a href="https://github.com/fliptoo/swagger-express"&gt;Swagger-express&lt;/a&gt; / &lt;a href="https://github.com/glennjones/hapi-swagger"&gt;HAPI-Swagger&lt;/a&gt;, &lt;a href="https://github.com/marcgibbons/django-rest-swagger"&gt;Django-REST-Swagger&lt;/a&gt; / &lt;a href="https://github.com/noirbizarre/flask-restplus"&gt;Flask-RESTplus&lt;/a&gt;, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  These Tools Don’t Scale Well
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XR8z26i6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztfstebatihm0eyk0p4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XR8z26i6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztfstebatihm0eyk0p4j.png" alt="Polyglot Microservices" width="880" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;center&gt;
    &lt;p&gt; Polyglot Microservices &lt;/p&gt;
  &lt;/center&gt;




&lt;p&gt;Modern development environments are polyglot in nature, where you find several small teams, using a variety of technology stacks, and disparate programming languages.&lt;/p&gt;

&lt;p&gt;These tools don’t scale well in these environments due to the following reasons:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--veprSP0R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2g0u2kfcsy8l7cpeiah9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--veprSP0R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2g0u2kfcsy8l7cpeiah9.png" alt="Achieving Consistency Across Teams is Challenging" width="320" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;center&gt;
    &lt;p&gt; Achieving Consistency Across Teams is Challenging &lt;/p&gt;
  &lt;/center&gt;




&lt;ul&gt;
&lt;li&gt;It is hard to achieve consistency (of API documentation) across so many small teams, disparate programming languages, and variety of language frameworks.&lt;/li&gt;
&lt;li&gt;Developers need to correctly annotate the code in appropriate places, lest the documentation will be incomplete and inaccurate.&lt;/li&gt;
&lt;li&gt;Developers need to maintain the annotations as they continuously refactor code, lest the documentation will be incomplete and inaccurate.&lt;/li&gt;
&lt;li&gt;Annotations are static in nature. When APIs return dynamic objects, the auto documented specification will be incorrect, or incomplete.&lt;/li&gt;
&lt;li&gt;There is no guarantee that what is auto documented, is the actual wire behavior exhibited by the API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Network Doesn’t Lie
&lt;/h2&gt;

&lt;p&gt;APIs transact by exchanging JSON data over the network. This makes the &lt;strong&gt;&lt;em&gt;network&lt;/em&gt;&lt;/strong&gt;, the &lt;strong&gt;&lt;em&gt;ultimate source of truth&lt;/em&gt;&lt;/strong&gt; for API behavior, and schema.&lt;/p&gt;

&lt;p&gt;Harnessing the network to auto discover &amp;amp; auto document APIs, in a &lt;em&gt;consistent&lt;/em&gt; and &lt;em&gt;scalable&lt;/em&gt; manner, has been challenging until recently.&lt;/p&gt;

&lt;h2&gt;
  
  
  eBPF Based Automatic OpenAPI Generation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Achieve Consistency &amp;amp; Scale, while Preserving Privacy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://ebpf.io/"&gt;eBPF&lt;/a&gt; is revolutionary technology, that enables auto documentation of APIs in a consistent, scalable, and language/framework agnostic manner.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2376LhyL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rolxbhvuwb6rbgsu1m8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2376LhyL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rolxbhvuwb6rbgsu1m8w.png" alt="Frictionless &amp;amp; Privacy-Preserving API observability" width="853" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;center&gt;
    &lt;a href="https://docs.levo.ai/beta/beta-features#frictionless-api-observability"&gt; Frictionless &amp;amp; Privacy-Preserving API observability &lt;/a&gt;
  &lt;/center&gt;




&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://levo.ai/"&gt;Levo&lt;/a&gt; provides a free service that automatically generates OpenAPI documentation for all your APIs, by &lt;a href="https://docs.levo.ai/beta/api-observability/concepts#sensor"&gt;passively observing&lt;/a&gt; your runtime API traffic via eBPF.&lt;/p&gt;

&lt;p&gt;The installation involves a single &lt;a href="https://docs.levo.ai/beta/api-observability/quickstart"&gt;Helm Chart&lt;/a&gt; for Kubernetes, or a single &lt;a href="https://docs.levo.ai/beta/api-observability/install-guide/install-sensor#install-on-linux-host-via-docker"&gt;Docker command&lt;/a&gt; for other environments. The installation does not require code changes, configuration changes, or SDK additions to your applications.&lt;/p&gt;

&lt;p&gt;Ensuring the privacy of your customer data is paramount. You can read more about privacy-preserving features &lt;a href="https://docs.levo.ai/beta/api-observability/concepts#your-data-stays-with-you"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auto Generate OpenAPI with Sensitive Data Annotations
&lt;/h3&gt;

&lt;p&gt;All APIs active in the runtime environments are auto discovered, and OpenAPI specifications are auto generated for them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--38E153Hh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/86moi1t67ug03pjpvbp5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--38E153Hh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/86moi1t67ug03pjpvbp5.png" alt="Auto Discovered API Catalog" width="880" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;center&gt;
    &lt;a href="https://docs.levo.ai/concepts/api-catalog"&gt; Auto Discovered API Catalog &lt;/a&gt;
  &lt;/center&gt;




&lt;p&gt;&lt;br&gt;&lt;br&gt;
OpenAPI specifications are annotated with sensitive data types (PII, PSI, PHI, etc).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--38h_XkzS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/auwupnvlvzdtyaea88lu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--38h_XkzS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/auwupnvlvzdtyaea88lu.png" alt="Auto Generated OpenAPI Specifications" width="880" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;center&gt;
    &lt;a href="https://docs.levo.ai/how-it-works#model"&gt; Auto Generated OpenAPI Specifications &lt;/a&gt;
  &lt;/center&gt;




&lt;p&gt;&lt;br&gt;&lt;br&gt;
The API documentation is always fresh, and is based on the &lt;code&gt;single source of truth&lt;/code&gt;, which is the actual API behavior observed on the network.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuously Validate Existing OpenAPI Documentation
&lt;/h3&gt;

&lt;p&gt;Teams building API documentation with an &lt;a href="https://swagger.io/resources/articles/adopting-an-api-first-approach/#:~:text=An%20API%2Dfirst%20approach%20means,be%20consumed%20by%20client%20applications."&gt;API-First&lt;/a&gt; approach, can also benefit.&lt;/p&gt;

&lt;p&gt;Cross validate existing OpenAPI documentation with auto generated documentation for accuracy and completeness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interested in trying Auto OpenAPI Generation?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S71axhws--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hubj0zbhjkujqjdnnhwt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S71axhws--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hubj0zbhjkujqjdnnhwt.png" alt="OpenAPI Auto Generation — Forever Free" width="506" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;center&gt;
    &lt;p&gt; OpenAPI Auto Generation — Forever Free &lt;/p&gt;
  &lt;/center&gt;




&lt;p&gt;Levo is a &lt;a href="https://docs.levo.ai/how-it-works"&gt;purpose-built&lt;/a&gt;, developer-first API security solution that fully automates API Observability, API Documentation &amp;amp; API Testing in CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levo.ai/levo-signup/"&gt;Signup&lt;/a&gt; for a forever free account, and start auto documenting all your APIs within minutes.&lt;/p&gt;

&lt;p&gt;Have questions? Contact us at &lt;code&gt;info@levo.ai&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>openapi</category>
      <category>java</category>
      <category>tooling</category>
    </item>
    <item>
      <title>API Contract Testing - Forever Free</title>
      <dc:creator>Harish Nataraj</dc:creator>
      <pubDate>Sat, 28 May 2022 21:05:30 +0000</pubDate>
      <link>https://dev.to/hnataraj/api-contract-testing-forever-free-66o</link>
      <guid>https://dev.to/hnataraj/api-contract-testing-forever-free-66o</guid>
      <description>&lt;p&gt;Calling all API Architects and Developers.&lt;/p&gt;

&lt;p&gt;Your customers, partners, and internal consumers get immense value by integrating with your APIs.&lt;/p&gt;

&lt;p&gt;How do you ensure these integrations are not disrupted due to &lt;a href="https://community.blackbaud.com/blogs/69/3219"&gt;breaking changes&lt;/a&gt; that are inadvertently deployed to production?&lt;/p&gt;

&lt;p&gt;How do you ensure that your API implementation is always in sync with its &lt;a href="https://www.adobe.com/sign/hub/document-types/what-s-included-in-an-api-contract"&gt;contract&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levo.ai/"&gt;Levo’s&lt;/a&gt; &lt;a href="https://microsoft.github.io/code-with-engineering-playbook/automated-testing/cdc-testing/"&gt;API Contract Testing&lt;/a&gt; empowers you to build and maintain resilient APIs, by detecting breaking changes before they hit production!&lt;/p&gt;

&lt;p&gt;Below is a brief video tour of Levo’s Forever Free &lt;a href="https://microsoft.github.io/code-with-engineering-playbook/automated-testing/cdc-testing/"&gt;API Contract Testing&lt;/a&gt; features.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/v-20vox6HXM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Thanks for watching! &lt;a href="https://levo.ai/levo-signup/"&gt;Signup&lt;/a&gt; for a forever free account, and start building secure and resilient APIs in minutes.&lt;/p&gt;

</description>
      <category>api</category>
      <category>devops</category>
      <category>microservices</category>
      <category>testing</category>
    </item>
    <item>
      <title>Supercharge API RBAC with eBPF</title>
      <dc:creator>Harish Nataraj</dc:creator>
      <pubDate>Thu, 26 May 2022 01:37:46 +0000</pubDate>
      <link>https://dev.to/hnataraj/supercharge-iam-with-ebpf-3o2n</link>
      <guid>https://dev.to/hnataraj/supercharge-iam-with-ebpf-3o2n</guid>
      <description>&lt;h2&gt;
  
  
  IAM is complex in Microservices
&lt;/h2&gt;

&lt;p&gt;Modern applications are comprised of APIs and complex Identity &amp;amp; Access Management (&lt;a href="https://www.gartner.com/en/information-technology/glossary/identity-and-access-management-iam"&gt;IAM&lt;/a&gt;) constraints.&lt;/p&gt;

&lt;p&gt;IAM involves Role Based Access Control (RBAC) policies, that try to answer the following questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the identity of the user making the request?&lt;/li&gt;
&lt;li&gt;What are their role (or scope) entitlements?&lt;/li&gt;
&lt;li&gt;Does the role give them access to the API operation they are attempting?&lt;/li&gt;
&lt;li&gt;Does the role given them access to specific JSON objects being requested?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Suboptimal IAM configuration leads to authorization exploits
&lt;/h2&gt;

&lt;p&gt;Given the complexity of API, roles, and associated RBAC policies, it is very easy to misconfigure authorization, resulting in dangerous exploits that leak customer data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2f2GDWFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9yn7rzwoziu1sbyfmzz8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2f2GDWFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9yn7rzwoziu1sbyfmzz8.png" alt="Horizontal Authorization Exploit" width="880" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;a href="https://docs.levo.ai/vulnerabilities/v1/OWASP-API-10/A1-BOLA"&gt; Horizontal Authorization Exploit&lt;/a&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zm_a5JMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yov4f5x2thdr4diuyc2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zm_a5JMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yov4f5x2thdr4diuyc2v.png" alt="Vertical Authorization Exploit" width="789" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;a href="https://docs.levo.ai/vulnerabilities/v1/OWASP-API-10/A5-BFLA"&gt; Vertical Authorization Exploit&lt;/a&gt;




&lt;h2&gt;
  
  
  Preventing IAM abuse requires API observability
&lt;/h2&gt;

&lt;p&gt;Preventing authentication &amp;amp; authorization exploits requires the continuous monitoring of your users, their role entitlements and the specific APIs/JSON objects they are trying to access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5uNNDi5C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3c8jpkowkf13f3cygln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5uNNDi5C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3c8jpkowkf13f3cygln.png" alt="User Entitlements" width="400" height="288"&gt;&lt;/a&gt;&lt;br&gt;
At a minimum you need to be able to answer the following questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Who are my users?&lt;/li&gt;
&lt;li&gt;What are the role entitlements for these users?&lt;/li&gt;
&lt;li&gt;What specific API endpoints and JSON objects are being accessed via the role entitlements?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Current observability methods are too intrusive
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UMASjADX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cgocbgv5qpppy672vtrs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UMASjADX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cgocbgv5qpppy672vtrs.png" alt="Network Packet Capture" width="641" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;a href="https://en.wikipedia.org/wiki/Pcap"&gt; Packet Capture — no TLS visibility &amp;amp; too CPU intensive &lt;/a&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hCtsZUjp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pv49rmlyujf4hoiap05l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hCtsZUjp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pv49rmlyujf4hoiap05l.png" alt="Open Telemetry" width="641" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;a href="https://opentelemetry.io/docs/collector/getting-started/#agent"&gt;  InApp Agents — require code changes &amp;amp; lead to increased latency&lt;/a&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dhk7rDFW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1b6qcd4z0calb79s1l9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dhk7rDFW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1b6qcd4z0calb79s1l9w.png" alt="Side-car Proxy" width="641" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;a href="https://istio.io/latest/docs/reference/config/networking/sidecar/"&gt;  Sidecar Agents — require code changes &amp;amp; lead to increased latency&lt;/a&gt;




&lt;p&gt;Conventional observability is based on Traffic Mirroring (packet capture), In-App Agents, or Sidecar Proxy Agents.&lt;/p&gt;

&lt;p&gt;All these techniques require application code/config changes, lead to increased application latency, and increased operational overhead (additional steps during debugging, upgrading, etc.)&lt;/p&gt;

&lt;p&gt;Conventional tools result in increased friction between Developers, Operations, and Security.&lt;/p&gt;

&lt;h2&gt;
  
  
  eBPF enables frictionless IAM Observability
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.brendangregg.com/blog/2016-03-05/linux-bpf-superpowers.html"&gt;eBPF&lt;/a&gt; is a revolutionary technology that provides &lt;a href="https://levo.ai/iam_observability_via_ebpf/"&gt;superpowers&lt;/a&gt; for API observability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ebpf.io/"&gt;eBPF&lt;/a&gt; probes can be used to passively instrument modern API driven apps, and capture the full request/response payloads of APIs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1KNU2wKf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ph7ylcel6dzgim48dyih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1KNU2wKf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ph7ylcel6dzgim48dyih.png" alt="Levo's eBPF Based API Observability" width="853" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below are top benefits of an eBPF based API observability solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instant &amp;amp; comprehensive observability for your APIs, roles, and users.&lt;/li&gt;
&lt;li&gt;Agent-less, and does not require code or configuration changes to your applications.&lt;/li&gt;
&lt;li&gt;Full TLS / SSL visibility for all applications and services.&lt;/li&gt;
&lt;li&gt;TLS observability does not require sharing of private keys.&lt;/li&gt;
&lt;li&gt;Completely passive, and not inline with the application.&lt;/li&gt;
&lt;li&gt;No impact to the application’s latency.&lt;/li&gt;
&lt;li&gt;No impact to daily operational workflows (debugging, upgrading, etc.).&lt;/li&gt;
&lt;li&gt;Eliminates friction between Developers, Operations, and Security, that is common with conventional tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Want to learn more about eBPF powered API Observability?
&lt;/h2&gt;

&lt;p&gt;You can learn more about frictionless API Observability &amp;amp; Security &lt;a href="https://levo.ai/"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>iam</category>
      <category>apisecurity</category>
      <category>ebpf</category>
      <category>apiobservability</category>
    </item>
    <item>
      <title>Making Security Fun for Developers</title>
      <dc:creator>Harish Nataraj</dc:creator>
      <pubDate>Wed, 25 May 2022 19:01:44 +0000</pubDate>
      <link>https://dev.to/hnataraj/making-security-fun-for-developers-1a9j</link>
      <guid>https://dev.to/hnataraj/making-security-fun-for-developers-1a9j</guid>
      <description>&lt;h2&gt;
  
  
  Developers do care about security
&lt;/h2&gt;

&lt;p&gt;Developers want to do the right thing for security. The real challenge is that they do not understand what that “right thing” is.&lt;/p&gt;

&lt;p&gt;Developers are naturally curious souls, and tend to operate based on principles and causation of things. They will easily do the “right thing”, when application security issues are presented in a format that is well aligned with how they absorb information.&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP crAPI aims to make security fun
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://owasp.org/www-project-crapi/"&gt;OWASP crAPI&lt;/a&gt; is a vulnerable demo application from the OWASP foundation, that makes learning about API security fun for developers.&lt;/p&gt;

&lt;p&gt;crAPI stands for Completely Ridiculous API, and is built on modern API/microservices based architecture. &lt;a href="https://www.linkedin.com/in/coreyball/"&gt;Corey Ball&lt;/a&gt;, author of &lt;a href="https://nostarch.com/sites/default/files/styles/uc_product_full/public/HackingAPI_front.png?itok=Sha90KYS"&gt;Hacking APIs&lt;/a&gt; refers to crAPI extensively in his lab exercises.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ORSk9rLU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tgg2jpbum1osry1sp42y.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ORSk9rLU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tgg2jpbum1osry1sp42y.jpeg" alt="Image description" width="195" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Levo gives crAPI a facelift
&lt;/h2&gt;

&lt;p&gt;We at &lt;a href="https://levo.ai"&gt;Levo.ai&lt;/a&gt; have made a number of improvements to the original crAPI, leading to a much better learning experience. Below is a summary of these improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fast Install &amp;amp; Startup
&lt;/h3&gt;

&lt;p&gt;As part of &lt;a href="https://github.com/levoai/demo-apps/blob/main/crAPI/docs/quick-start.md"&gt;quick-start&lt;/a&gt;, we offer a single pre-built docker container, that gets you instant access to crAPI on your laptop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full OpenAPI Specifications
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BdOalVvO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0obc4rzzbnwnwodb1po.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BdOalVvO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0obc4rzzbnwnwodb1po.png" alt="Image description" width="880" height="550"&gt;&lt;/a&gt;&lt;br&gt;
crAPI now has an embedded API explorer with full &lt;a href="https://github.com/levoai/demo-apps/blob/main/crAPI/api-specs/openapi.json"&gt;OpenAPI 3.x specifications&lt;/a&gt;, for all its endpoints. You can invoke these APIs directly from this interface and elicit responses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pre-populated user accounts &amp;amp; data
&lt;/h3&gt;

&lt;p&gt;User accounts and related data have been &lt;a href="https://github.com/levoai/demo-apps/blob/main/crAPI/docs/user-asset-info.md"&gt;pre-populated&lt;/a&gt; for rapid access to crAPI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fby0SgVY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3e7z4w3xegvcc13t1ln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fby0SgVY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3e7z4w3xegvcc13t1ln.png" alt="Image description" width="880" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  User Roles for Privilege Escalation Exercises
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wbn0H9_v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2a0egv2ru1roxetysqkc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wbn0H9_v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2a0egv2ru1roxetysqkc.png" alt="Image description" width="880" height="550"&gt;&lt;/a&gt;&lt;br&gt;
CrAPI’s APIs now have clearly defined &lt;a href="https://github.com/levoai/demo-apps/blob/main/crAPI/docs/user-asset-info.md#user-info"&gt;roles&lt;/a&gt;. This is critical in learning about privilege escalation and abuse.&lt;/p&gt;

&lt;h3&gt;
  
  
  HackPad
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--51sFz4L9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qdez7ca9x514n83b8t3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--51sFz4L9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qdez7ca9x514n83b8t3i.png" alt="Image description" width="880" height="550"&gt;&lt;/a&gt;&lt;br&gt;
Embedded within crAPI is a &lt;a href="https://github.com/levoai/demo-apps/blob/main/crAPI/docs/hackpad.md"&gt;HackPad&lt;/a&gt; interface, that allows you to interactively hack crAPI’s APIs, and learn more about API vulnerabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved Documentation
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://github.com/levoai/demo-apps/blob/main/crAPI/README.md"&gt;documentation&lt;/a&gt; has been spruced up for quick access to important information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay tuned for the hacking APIs series
&lt;/h2&gt;

&lt;p&gt;We will be posting a series of &lt;a href="https://levo.ai/blog/"&gt;articles&lt;/a&gt; on hacking crAPI’s APIs. In meantime we encourage you to take crAPI for a spin on your laptop.&lt;/p&gt;

&lt;p&gt;If you prefer to try a fully hosted version of crAPI, &lt;a href="https://levo.ai/levo-signup/"&gt;signup&lt;/a&gt; for a forever free account, and experience crAPI via Levo SaaS.&lt;/p&gt;

</description>
      <category>api</category>
      <category>security</category>
      <category>openapi</category>
      <category>owasp</category>
    </item>
  </channel>
</rss>
