Coder Social home page Coder Social logo

davejroy / f5-hybrid-security-architectures Goto Github PK

View Code? Open in Web Editor NEW

This project forked from knowbase-demo/f5-hybrid-security-architectures

0.0 0.0 0.0 231 KB

Example hybrid security architectures utilizing DevSecOps principles to deploy F5 Distributed Cloud WAAP in conjunction with the F5 product portfolio.

License: Apache License 2.0

Shell 7.42% HCL 92.58%

f5-hybrid-security-architectures's Introduction

F5 Distributed Cloud Hybrid Security Architecture Deployments

Overview

Example hybrid security deployments utilizing F5 Distributed Cloud WAAP in conjunction with the F5 product portfolio.

Getting Started

Prerequisites

Assets

  • xc: F5 Distributed Cloud WAAP
  • nap: NGINX Ingress Controller for Kubernetes with NGINX App Protect (WAF and API Protection)
  • bigip: F5 BIG-IP (LTM and Advanced WAF)
  • infra: AWS Infrastructure (VPC, IGW, etc.)
  • eks: AWS Elastic Kubernetes Service
  • arcadia: Arcadia Finance test web application and API
  • juiceshop: OWASP Juice Shop test web application

Tools

  • Cloud Provider: AWS
  • IAC: Terraform
  • IAC State: Terraform Cloud
  • CI/CD: GitHub Actions

Terraform Cloud

  • Workspaces: Create a CLI or API workspace for each asset in the workflow chosen

    Workflow Assets/Workspaces
    xc-bigip infra, bigip, juiceshop, xc
    xc-nap infra, eks, nap, arcadia, xc
    xc-nap-api infra, eks, nap, arcadia, xc
    xc-nap-bot infra, eks, nap, arcadia, xc
  • Workspace Sharing: Under the settings for each Workspace, set the Remote state sharing to share with each Workspace created.

  • Variable Set: Create a Variable Set with the following values:

    Name Type Description
    AWS_ACCESS_KEY_ID Environment Your AWS Access Key ID
    AWS_SECRET_ACCESS_KEY Environment Your AWS Secret Access Key
    AWS_SESSION_TOKEN Environment Your AWS Session Token
    NGINX_JWT Environment Your NGINX JSON Web Token associated with your NGINX license. Set this to nginx-repo.jwt
    VOLT_API_P12_FILE Environment Your F5XC API certificate. Set this to api.p12
    VES_P12_PASSWORD Environment Set this to the password you supplied when creating your F5 XC API certificate
    ssh_key Terraform Your ssh key for access to created BIG-IP and compute assets
    admin_src_addr Terraform The source address and subnet in CIDR format of your administrative workstation
    tf_cloud_organization Terraform Your Terraform Cloud Organization name

GitHub

  • Fork and Clone Repo

  • Actions Secrets: Create the following GitHub Actions secrets in your forked repo

    • NGINX_JWT: The base64 encoded NGINX Java Web Token associated with your NGINX license
    • P12: The base64 encoded F5XC API certificate
    • TF_API_TOKEN: Your Terraform Cloud API token
    • TF_CLOUD_ORGANIZATION: Your Terraform Cloud Organization name
    • TF_CLOUD_WORKSPACE_<Workspace Name>: Create for each workspace in your workflow
      • EX: TF_CLOUD_WORKSPACE_BIGIP would be created with the value bigip

Workflow Runs

STEP 1: Check out a branch for the workflow you wish to run using the following naming convention

DEPLOY

Workflow Branch Name
xc-bigip deploy-xc-bigip
xc-nap deploy-xc-nap

DESTROY

Workflow Branch Name
xc-bigip destroy-xc-bigip
xc-nap destroy-xc-nap

STEP 2: Rename infra/terraform.tfvars.examples to infra/terraform.tfvars and add the following data:

  • project_prefix = "Your project identifier - this will be applied as a prefix to all assets"
  • resource_owner = "You"
  • aws_region = "AWS Region" ex. us-east-1
  • azs = ["us-east-1a", "us-east1b"] - Change to Correct Availability Zones based on Region

STEP 3: Rename bigip/terraform.tfvars.examples to bigip/terraform.tfvars and add the following data:

  • f5_ami_search_name = "F5 BIGIP-16.1.3* PAYG-Adv WAF Plus 25Mbps*" - You must be subscribed to the AMI in the AWS Marketplace
  • aws_secretmanager_auth = false
  • create_awaf_config = true
  • awaf_config_payload = "awaf-config.json"

Step 3: Rename xc/terraform.tfvars.examples to xc/terraform.tfvars and add the following data:

  • api_url = "Your F5XC tenant"
  • xc_namespace = "The XC namespace you are deploying to"
  • app_domain = "the FQDN of your app (cert will be autogenerated)"
  • xc_waf_blocking = "Set to true to enable blocking"

STEP 5: Commit and push your build branch to your forked repo

  • Build will run and can be monitored in the GitHub Actions tab and TF Cloud console

STEP 6: Once the pipeline completes, verify your assets were deployed or destroyed based on your workflow.
NOTE: The autocert process takes time. It may be 5 to 10 minutes before Let's Encrypt has provided the cert.

Development

Outline any requirements to setup a development environment if someone would like to contribute. You may also link to another file for this information.

Support

For support, please open a GitHub issue. Note, the code in this repository is community supported and is not supported by F5 Networks.

Community Code of Conduct

Please refer to the F5 DevCentral Community Code of Conduct.

License

Apache License 2.0

Copyright

Copyright 2014-2020 F5 Networks Inc.

F5 Networks Contributor License Agreement

Before you start contributing to any project sponsored by F5 Networks, Inc. (F5) on GitHub, you will need to sign a Contributor License Agreement (CLA).

If you are signing as an individual, we recommend that you talk to your employer (if applicable) before signing the CLA since some employment agreements may have restrictions on your contributions to other projects. Otherwise by submitting a CLA you represent that you are legally entitled to grant the licenses recited therein.

If your employer has rights to intellectual property that you create, such as your contributions, you represent that you have received permission to make contributions on behalf of that employer, that your employer has waived such rights for your contributions, or that your employer has executed a separate CLA with F5.

If you are signing on behalf of a company, you represent that you are legally entitled to grant the license recited therein. You represent further that each employee of the entity that submits contributions is authorized to submit such contributions on behalf of the entity pursuant to the CLA.

f5-hybrid-security-architectures's People

Contributors

knowbase avatar aknot242 avatar a500drvr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.