Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
sorinboia committed Nov 2, 2023
2 parents d52a005 + 2e6f54b commit b91f269
Show file tree
Hide file tree
Showing 17 changed files with 216 additions and 4 deletions.
Binary file added .DS_Store
Binary file not shown.
Binary file added docs/__pycache__/custom_roles.cpython-311.pyc
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/class1/class1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ During this class we will:
var email = emailInput.value;
localStorage.setItem('email', email);
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/${btoa(email)}`, {
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/f5xcemeaworkshop/${btoa(email)}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
Expand Down
2 changes: 1 addition & 1 deletion docs/class1/modulea2/modulea2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
var email = emailInput.value;
localStorage.setItem('email', email);
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/${btoa(email)}`, {
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/f5xcemeaworkshop/${btoa(email)}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
Expand Down
2 changes: 1 addition & 1 deletion docs/class2/class2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ During this class we will:
var email = emailInput.value;
localStorage.setItem('email', email);
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/${btoa(email)}`, {
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/f5xcemeaworkshop/${btoa(email)}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
Expand Down
2 changes: 1 addition & 1 deletion docs/class3/class3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ During this class we will:
var email = emailInput.value;
localStorage.setItem('email', email);
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/${btoa(email)}`, {
fetch(`https://f5xclabmgmt.vltr.nginx-experience.com/v1/student/f5xcemeaworkshop/${btoa(email)}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
Expand Down
28 changes: 28 additions & 0 deletions docs/class4/class4.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Class 4 - API Protection
########################

Lab Maintainers:

Matthieu Dierick <[email protected]>

Sorin Boiangiu <[email protected]>

|
Welcome to the F5 Distributed Cloud - API Protection lab

Distributed Cloud API Security provides discovery and deep insights from use of AI/ML. Identify shadow APIs and block API attacks in real time and eliminate vulnerabilities at their source. The SaaS-based portal enables users to manage and go deep for threat analytics, forensics, and troubleshooting of API communications for modern applications.

APIs change frequently:

* Easily identify all API endpoints mapped to your applications and monitor anomalous activities or shadow APIs including blocking of suspicious requests and endpoints.
* Generate API schema and Swagger files to minimize manual tracking of API endpoints.
* Reduce time spent configuring and deploying API security policies.



.. toctree::
:maxdepth: 2
:glob:

module*/module*
105 changes: 105 additions & 0 deletions docs/class4/module1/lab1/lab1.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
Expose the modern API application on F5XC
=========================================

In this lab, we will use a modern application based on API first.
You can find more details about this app, on Github : https://github.com/f5devcentral/sentence-demo-app

In a nutshell, this application is composed of multiple technology frameworks.

This app will generate a sentence :)

.. image:: ../pictures/sentence-demo-app.png
:align: center

App Documentation
-----------------

Every ``WORD`` pod delivers a list of ``WORDS``. Then, the ``GENERATOR`` select one ``WORD`` per POD, and generates a ``SENTENCE`` in a JSON format

.. image:: ../pictures/topology.png
:align: center

.. code-block:: JSON
{
"adjectives": "proud",
"animals": "lion",
"colors": "blue",
"locations": "park"
}
Then, the frontend web application will ``display`` all the ``words`` in a ``sentence``. If one micro-service is not deployed, the word is not displayed.

In term of micro-services, this is how there are used by the Webapp frontend.

.. image:: ../pictures/webapp-containers.png
:align: center


Expose the application on your F5 Distributed Cloud Namespace
-------------------------------------------------------------

For this lab, we will use the following configuration

1. Create the Origin Pool targeting Sentence public app

a) Web App & API Protection -> Load Balancers -> Origin Pool -> Add Origin Pool -> Fill the bellow data

.. table::
:widths: auto

============================== ========================================================================================
Object Value
============================== ========================================================================================
**Name** sentence-public-endpoint

**Port** 80

**TLS** Disable
============================== ========================================================================================

b) In the same screen -> Origin Servers -> Add Item -> Fill the bellow data -> Apply -> Save and exit

.. table::
:widths: auto

==================== ========================================================================================
Object Value
==================== ========================================================================================
**DNS name** sentence.emea.f5se.com
==================== ========================================================================================

.. raw:: html

<script>c1m1l2a();</script>

1. Create the HTTP LB

a) Web App & API Protection -> Load Balancers -> HTTP Load Balancer -> Add HTTP Load Balancer -> Fill the bellow data -> Save and exit

.. table::
:widths: auto

==================================== =================================================================================================
Object Value
==================================== =================================================================================================
**Name** sentence-re-lb

**Domains** sentence-re-$$makeId$$.workshop.emea.f5se.com

**Load Balancer Type** HTTP

**Automatically Manage DNS Records** Enable

**Origin Pools** Click **Add Item**, for the **Origin Pool** select $$namespace$$/sentence-public-endpoint -> Apply
==================================== =================================================================================================

.. raw:: html

<script>c1m1l2b();</script>

3. So far, Sentence application is not protected but exposed all over the world on all F5XC RE.
Check your Sentence application is exposed and reachable from the F5XC Global Network by browsing to :ext_link:`http://sentence-re-$$makeId$$.workshop.emea.f5se.com`

.. warning:: Some Service Providers have a very long recursive cache. It can take several minutes to get a DNS response. You can change your DNS server to 1.1.1.1 or 8.8.8.8 to fix that.
21 changes: 21 additions & 0 deletions docs/class4/module1/lab2/lab2.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Protect the modern API application with F5XC - static protection
================================================================

Assign OpenAPI spec file to the LB
----------------------------------

Upload file
^^^^^^^^^^^

Create API Def
^^^^^^^^^^^^^^

Assign API def to LB
^^^^^^^^^^^^^^^^^^^^

Apply API Protection rules
--------------------------

Create the default API Protection rule
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

3 changes: 3 additions & 0 deletions docs/class4/module1/lab3/lab3.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Test your modern API application protection
===========================================

14 changes: 14 additions & 0 deletions docs/class4/module1/module1.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Static API Protection
#####################

In this section, we will protect a modern API application with F5 Distributed Cloud. We will start by a **static** protection where SecOps apply the OpenAPI file to the protected application.



**Module 1 - All sections**

.. toctree::
:maxdepth: 1
:glob:

lab*/lab*
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/class4/module1/pictures/topology.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions docs/class4/module2/lab1/lab1.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Enable API discovery
====================

Enable Endpoint Discovery
-------------------------


Enable PII Discovery
--------------------

18 changes: 18 additions & 0 deletions docs/class4/module2/lab2/lab2.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
API Discovery outcomes
======================

Endpoint Discovery
------------------


PII Discovery
-------------



Authentication Discovery
------------------------


AI/ML Security Posture
----------------------
13 changes: 13 additions & 0 deletions docs/class4/module2/module2.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Dynamic API Protection
######################

In this section, we will protect the same modern application with F5 Distributed Cloud, but we will enable the **dynamic** protection where SecOps apply the API Discovery and validation.


**Module 2 - All sections**

.. toctree::
:maxdepth: 1
:glob:

lab*/lab*

0 comments on commit b91f269

Please sign in to comment.