Course Taxonomy: Technology Platforms

Cybersecurity for Developers

1. Introduction to Secure Development

1.1. The Importance of Secure Coding

  • Overview of cybersecurity in software development
  • The impact of insecure code on organizations and users

1.2. Developer Responsibilities in Cybersecurity

  • Understanding the developer's role in maintaining security
  • Security as a key part of the Software Development Lifecycle (SDLC)

2. Understanding Common Vulnerabilities

2.1. OWASP Top Ten Vulnerabilities

  • Definition and importance of OWASP
  • Overview of the OWASP Top Ten (e.g., SQL injection, XSS, CSRF)
  • Examples and impact of each vulnerability

2.2. Vulnerability Examples

  • Real-world cases of security breaches due to poor coding practices
  • Impact on companies and their employees from breaches
  • Analysis of how these breaches could have been prevented

2.3. Secure Coding Standards

  • Introduction to secure coding guidelines (e.g., CERT, SANS)
  • How to apply these standards in everyday coding practices

3. Secure Development Practices

3.1. Input Validation and Sanitization

  • Importance of validating and sanitizing user inputs
  • Techniques for preventing injection attacks (SQL, command, etc.)

3.2. Authentication and Authorization

  • Best practices for implementing secure authentication mechanisms
  • Managing authorization, authentication, user roles, and permissions securely

3.3. Data Encryption and Protection

  • How and when to use encryption to protect sensitive data
  • Secure storage and transmission of data at rest, in transit, and in use (e.g., HTTPS, SSL/TLS)

3.4. Error Handling and Logging

  • Importance of secure error handling to avoid information leakage
  • Best practices for logging without exposing sensitive information

4. Secure Software Development Lifecycle (SDLC)

4.1. Integrating Security into the SDLC

  • Overview of secure SDLC frameworks (e.g., Microsoft SDL, BSIMM)
  • Key stages where security should be integrated (planning, design, coding, testing)

4.2. Threat Modeling

  • Introduction to threat modeling and its importance
  • Tools and techniques for identifying potential threats early in the development process

4.3. Code Reviews and Static Analysis

  • Conducting secure code reviews and peer assessments
  • Using static analysis tools to identify vulnerabilities in code

5. Secure Development Tools and Resources

5.1. Security Testing Tools

  • Overview of tools for security testing (e.g., OWASP ZAP, Burp Suite)
  • How to integrate these tools into the development process

5.2. Dependency Management and Software Composition Analysis (SCA)

  • Importance of managing third-party libraries and dependencies
  • Tools for identifying vulnerabilities in open-source components

5.3. Continuous Integration/Continuous Deployment (CI/CD)

  • Securing the CI/CD pipeline
  • Best practices for automated security testing in CI/CD environments

6. Web Application Security

6.1. Securing Web Applications

  • Best practices for securing web applications (e.g., secure session management, CSRF protection)
  • Importance of HTTPS and secure cookie handling

6.2. API Security

  • Best practices for designing secure APIs (e.g., authentication, rate limiting)
  • Common API vulnerabilities and how to prevent them

6.3. Mobile Application Security

  • Overview of security considerations for mobile apps
  • Techniques for securing data on mobile devices

7. Incident Response and Handling Vulnerabilities

7.1. Security Incident Response for Developers

  • How developers should respond to security incidents
  • Role of developers in post-incident analysis and patching

7.2. Reporting and Managing Vulnerabilities

  • Best practices for reporting security vulnerabilities in code
  • Coordinating with security teams to address and remediate vulnerabilities

8. Continuous Learning and Staying Updated

8.1. Keeping Up with Security Trends

  • Importance of staying informed about the latest security threats and trends
  • Resources for continuous learning (blogs, forums, security conferences)

8.2. Community Involvement

  • Participating in security communities (e.g., OWASP, local meetups)
  • Contributing to open-source security projects

Cybersecurity for Employees

1. Introduction to Cybersecurity

1.1. Why Cybersecurity Matters

o  Importance of cybersecurity in protecting company data and assets

o  The role every employee plays in maintaining security

1.2. Understanding Cyber Threats

o  Overview of common threats (malware, phishing, ransomware, and insider threats)

o  The impact of cyberattacks on individuals and the organization

2. The Role of Employees in Cybersecurity

2.1. Collective Responsibility

o  How every employee contributes to the organization’s cybersecurity

o  The impact of individual actions on overall security

2.2. Encouraging a Proactive Approach

o  Taking initiative in identifying and addressing potential security risks

o  Supporting a team-based approach to cybersecurity

3. Recognizing Cyber Threats

3.1. Phishing and Social Engineering

o  How to identify phishing emails and social engineering attacks

o  Examples of common phishing tactics

3.2. Malware and Ransomware

o  What is malware, and how it spreads

o  Signs of a potential malware infection

3.3. Insider Threats

o  Understanding the risk of insider threats

o  How to report suspicious behavior

4. Best Practices for Cyber Hygiene

4.1. Password Security

o  The importance of strong, unique passwords

o  How password attacks happen

o  How to manage passwords securely (e.g., password managers)

4.2. Safe Internet and Email Use

o  Best practices for browsing the web and handling email

o  Avoiding risky downloads and websites

4.3. Device and Network Security

o  Keeping work devices secure (updating software, antivirus)

o  Safe use of public Wi-Fi and remote access

5. Data Protection and Privacy

5.1. Handling Sensitive Company Information

o  Guidelines for handling and sharing sensitive company data

o  Avoiding accidental data leaks

5.2. Protecting Personal Information

o  Understanding the importance of personal data privacy

o  Steps to protect your personal information at work and online

6. Incident Reporting and Response

6.1. Recognizing a Security Incident

o  What constitutes a security incident (e.g., suspicious emails, unauthorized access)

o  Signs that your device or account may be compromised

6.2. What to Do in Case of an Incident

o  The importance of timely reporting in minimizing damage

o  Immediate actions to take if you suspect a security breach

o  How to report potential security incidents promptly

o  Who to contact and how to document the incident

7. Safe Use of Technology and Social Media

7.1. Social Media Risks

o  Understanding the risks of sharing work-related information on social media

o  Best practices for safe social media use

7.2. Personal Device Security (BYOD)

o  Guidelines for securing personal devices used for work

o  Risks associated with Bring Your Own Device (BYOD) policies

Advanced Splunk Boot Camp

Advanced Splunk Boot Camp

Part 1: Advanced Data Ingestion

  • Advanced Indexing Concepts
  • Handling High Volume Data
  • Data Parsing and Transformation
  • Exercise: Advanced Data Parsing Techniques

Part 2: Advanced Search Processing Language (SPL)

  • Advanced Search Commands
  • Data Models and Pivots
  • Creating and Using Macros
  • Exercise: Writing Advanced SPL Queries
  • Custom Commands and Scripts
  • Exercise: Developing Custom Commands
  • Transaction Searches and Anomalies
  • Exercise: Complex Searches and Data Correlation

Part 3: Performance Optimization

  • Search Performance Tuning
  • Resource Management
  • Index and Search Head Performance Optimization
  • Exercise: Optimizing Search Performance
  • Monitoring Console and Usage Dashboards
  • Exercise: Using Monitoring Console for Optimization

Part 4: Security and Monitoring

  • Role-Based Access Control (RBAC)
  • Data Integrity and Confidentiality
  • Auditing and Monitoring User Activity
  • Exercise: Implementing Security Best Practices
  • Incident Detection and Response
  • Exercise: Building Incident Response Dashboards

Part 5: Advanced Dashboard and Visualization

  • Advanced Dashboarding Techniques
  • Custom Visualization Options
  • Integrating with External Systems
  • Exercise: Creating Advanced Dashboards
  • Real-time Dashboards and Alerts
  • Exercise: Building Real-time Monitoring Dashboards

Part 6: Splunk Machine Learning Toolkit



  • Introduction to the Splunk Machine Learning Toolkit
  • Building Machine Learning Models in Splunk
  • Using Pre-built Machine Learning Algorithms
  • Exercise: Implementing Machine Learning Use Cases
  • Anomaly Detection and Predictive Analytics
  • Exercise: Building and Applying Predictive Models
  • Monitoring and Tuning Machine Learning Models

IT Service Empathy Workshop

IT Service Empathy Workshop

Introduction 

  • Welcome and introductions
  • Workshop objectives and agenda overview
  • Context setting using insights from the pre-work survey

Example Scenario: Unexpected Outage 

  • Setup: Our online trading platform experiences an unexpected outage during peak trading hours. The incident impacts all users, leading to potential financial losses and severe customer dissatisfaction.

  • Role-Playing
    • Teams work together to resolve the scenario, using their existing knowledge, tools, and processes. Some team members will role-play as a customer with limited information, while others will act as IT service agents triaging, resolving, and/or fulfilling the customer's request while operating off of their own limited data set, promoting empathy and exercising unique problem-solving skills.

  • IT Service Management
    • Incident Management: Rapid identification and resolution of critical incidents to minimize impact.
    • Root Cause Analysis: Conducting thorough investigations to prevent recurrence and improve future response.
    • Change Management: Ensuring that firewall changes are properly tested and documented to avoid similar issues.

*2-3 additional scenarios based on clients' unique problems and customized to match their environment.

Closing Session

  • Review of key takeaways and lessons learned
  • Q&A session and open discussion
  • Closing remarks and next steps
  • Distribution of take-home materials and resources

GitLab with Git Basics

Part 1: GitLab Overview

  • What is GitLab?
  • Sequential DevOps vs. Concurrent DevOps
  • Concurrent DevOps with GitLab
  • GitLab Flows
  • GitLab Recommended Process
  • GitLab Workflow Components
  • Demo Exercises: GitLab Features

Part 2: GitLab Components and Navigation

  • GitLab Organization
  • GitLab Epics
  • Issue: The Starting Point for your workflow
  • Issue Organization
  • GitLab Workflow Example
  • Demo Exercises: GitLab Navigation
  • Hands-On Labs: Create a Project & Issue

Part 3: Git Basics

  • What is Git?
  • Git Key Terms
  • Why Git is so popular
  • Centralized vs. Distributed
  • Basic Git workflow within GitLab
  • Common Commands
  • Demo Exercises: Working Locally with Git
  • Hands-On Labs: Working Locally with Git

Part 4: Basic Code Creation in GitLab

  • Code Review- Typical Workflow
  • Code Review Workflow- GitLab tools to use
  • Additional Tools for Code Review & Collaboration
  • Demo Exercises: Merge Request in GitLab
  • Demo Exercises: Assigning, Reviewing, and Approving in GitLab
  • Demo Exercises: Additional Tools for working with code
  • Hands-On Labs: Code Creation and Review

Part 5: GitLab's CI/CD Functions

  • What is CI/CD?
  • CI/CD Advantages
  • Concurrent DevOps lifecycle
  • CI/CD Features in GitLab
  • CI/CD Automated tasks
  • GitLab CI/CD Key Ingredients
  • Anatomy of a CI/CD Pipeline
  • Demo Exercises: CI/CD Examples
  • Hands-on Labs: CI/CD Pipelines

Part 6: GitLab's Package and Release Features

  • What are Package and Container Registries?
  • Release Features in GitLab
  • What is Auto DevOps?
  • Demo Exercises: Auto DevOps and Interactive Web Terminal

Part 7: GitLab Security Scanning

  • Demo Exercises: Using SAST Templates
  • Hands-On Labs: How to run a SAST scan
  • Hands-On Labs: View the scanning reports in the Security Dashboard

ITIL® 4 Foundation

Part 1: ITIL 4 OVERVIEW

  • Introduction to ITIL
  • Key Concepts of ITIL

Part 2: The ITIL Framework

  • The Four Dimensions of Service Management
  • The ITIL Service Value System

Part 3: The ITIL Guiding Principles

  • Focus on Value
  • Start Where You Are
  • Progress Iteratively with Feedback
  • Collaborate and Promote Visibility
  • Think and Work Holistically
  • Keep It Simple and Practical
  • Optimize and Automate

Part 4: THE ITIL SERVICE VALUE SYSTEM (SVS)

  • Governance
  • The Service Value Chain
  • Continual Improvement

Part 5: Key ITIL Practices

  • Continual Improvement
  • Service Level Management
  • Change Control
  • Incident Management
  • Service Request Management
  • Service Desk
  • Problem Management

Part 6: Other ITIL Practices

  • General Management Practices
  • Service Management Practices
  • Technical Management Practices

Zero Trust Security Boot Camp

Part 1:

  • Introductions
  • Brief Evolution of IT Security
  • The Perimeter Model
  • Brief Threat Landscape History
  • Problems with the Traditional Model
  • Brief History of Zero Trust
  • Zero Trust AuthN & AuthZ
  • Zero Trust Tenants
  • Zero Trust Basic Concepts
    • Team Knowledge Check

Part 2:

  • Zero Trust Network Design Part 1
  • Zero Trust 5 Steps of Transformation
  • Zero Trust Threats
    • Team Knowledge Check
  • Zero Trust Access Control
    • Mid-Team Quiz
  • Zero Trust Risk Management
  • Zero Trust Governance
  • Zero Trust Vendor Selection
    • Team Knowledge Check
  • Zero Trust Reference Architecture
    • Team Knowledge Check

Part 3:

  • Zero Trust Network Design Part 2
    • Team Knowledge Check
  • Zero Trust Implementation
    • Team Knowledge Check
  • Zero Trust Migration
  • Zero Trust Challenges
    • Team Knowledge Check
  • Zero Trust Wrap Up
    • Final Team Quiz
  • Ending- Bonus

GitLab for Project Managers

Part 1: GitLab Overview and Organization

  • GitLab Workflow Components
  • Planning a Project
  • The Plan Stage: Project Management
  • GitLab Organization – Groups, Projects, and Issues, oh my!

Part 2: GitLab Plan Stage

  • Organizing the Work
  • Planning the Work
  • Doing the Work
  • Document the Work
  • GitLab Agile Planning Structures

Part 3: Planning Functions in GitLab

  • Issues: The Starting Point for your Workflow
  • Issues Keep Everyone Connected and Synchronized
  • What Can you Expect on an Issue Page?
  • Hands-On Lab: Issues and Labels
  • Hands-On Lab: Quick Actions
  • Why Milestones are Important
  • The Use of Kanban Boards
  • GitLab's Service Desk
  • Utilizing Wikis
  • Hands-On Lab: Create a Wiki Page
  • Hands-On Lab: Epics and Kanban Boards
  • Project Management Review Quiz
  • Hands-On Lab: Practice Lab 1
  • Hands-On Lab: Practice Lab 2

GitOps Boot Camp

Part 1: Introduction

  1. Required knowledge
    1. Git: Committing code and creating pull requests
    2. Kubernetes: Deploying a service to Kubernetes and basic checks with kubectl
    3. Docker: Pushing an image to a Docker repository
    4. CI/CD: GitOps reverses the traditional understanding of continuous integration/continuous development.
  2. Core concepts: A quick introduction
    1. Immutable infrastructure
    2. Infrastructure as code
    3. Orchestration
    4. Convergence
    5. CI/CD
  3. What GitOps is not
    1. GitOps is not infrastructure as code.
    2. GitOps doesn't replace continuous integration (CI).
  4. The use case: Deploying a highly available microservice
    1. Deploying a microservice to Kubernetes, with all the surrounding infrastructure to make it available

Part 2: Setting up the Tools

  1. Kubernetes
    1. In advance: Setting up a cluster from scratch is time-consuming, even if you use a managed solution like EKS. Pre-allocating a cluster per person is something you can do in advance.
  2. Preparation: Setting up kubectl
    1. Every participant should have credentials to connect to the cluster using kubectl.
  3. Preparation: Access a cluster through kubectl/k9s.
    1. Check running pods.
      1. Check deployments.
  4. Repository
  5. Preparation: Infrastructure repository
    1. An empty repository in GitHub/GitLab to use for deploying infrastructure
  6. Application repository
    1. Strictly speaking, you don't need to separate the application and infrastructure, but it's easier to understand what goes where this way.
      1. A sample application that serves a web server with a hello world response as the baseline (NodeJS-based, for instance)
  7. ArgoCD
  8. Why ArgoCD?
    1. ArgoCD is tightly integrated with Kubernetes and closely follows the GitOps mindset. Therefore, it's a good tool to showcase GitOps.
  9. Exercise: Add ArgoCD to the cluster.
    1. Create namespace.
    2. Deploy ArgoCD to the cluster.
    3. Access ArgoCD using the CLI.

Part 3: Deploying a Microservice

  1. Exercise: Prepare a simple microservice to be deployed in k8s.
    1. Build sample application as a Docker container (Dockerfile can be provided in advance)
    2. Push service to a Docker registry (cloud-native, docker.io, or quay.io)
  2. Exercise: Create a k8s deployment.
    1. Create a Kubernetes deployment definition in code for the application (here's a sample).
    2. Push code to infrastructure repository.
    3. Create an application in ArgoCD.
    4. This time, you'll use the ArgoCD CLI so you can see that part. You'll move to use Git from here on, which is more aligned to GitOps.
    5. Sync the application.
    6. Again, use the CLI.
    7. Test: Use kubectl check to ensure that deployment works.
  3. Automated synchronization
    1. Pull versus push: How ArgoCD can read from a repository and automatically apply the changes
    2. Exercise: Activate synchronization so that further changes happen when you push code to the infrastructure repository.
  4. Exercise: Create a k8s service. (A deployment alone doesn't expose the microservice, so let's build on that.)
    1. Create service definition.
  5. Pull request
    1. This is an opportunity to introduce the pull request aspect of the flow. You can extend pull requests so that extra checks are performed, using something like GitHub Actions.
      1. Implementing CI with something like GitHub Actions isn't part of the exercise, although it's something that you can complete as an extra exercise. (See the bonus section at the end of this post.)
      2. Test: Carry out a kubectl check to prove that service was deployed.
  6. Exercise: Create a load balancer. (You still can't access service from the outside.)
    1. Create loadbalancer k8s definition for cloud provider.
    2. Pull request
    3. Test: Curl to load balancer address to ensure that service is actually online.
  7. Exercise: Update the application.
    1. Change something in the application, such as the body of the response of a route in the application.
    2. Rebuild container with a new tag and push it to Docker registry.
    3. Update k8s deployment to use new tag.
    4. Pull request
    5. Test: New version of the app should be deployed.
  8. Exercise: Update the infrastructure. (Why do this? So you can demonstrate that changing the application and the infrastructure results in blurry boundaries.)
    1. Update k8s deployment to be highly available (more than one replica).
    2. Pull request
    3. Test: kubectl shows that there are multiple pods running.
  9. Wrap-up: This covers the workflow of deploying an application and then performing updates and changes on it.
    1. This is the core of GitOps!
    2. There are also other, more advanced use cases to cover.

Part 4: Promoting Changes Through Different Environments 

  1. In advance: Prepare a second cluster.
    1. As with the first cluster, this is something to have prepared in advance.
  2. Preparation: Register the cluster in ArgoCD to allow deployments to it.
  3. From development to production
    1. Which options are there to represent different stages?
    2. This is an open discussion, as there's no set recipe to do environment promotion, with different options:
    3. Use different infrastructure repositories.
    4. Use different folders in the same infrastructure repository.
    5. Use branches.
  4. Exercise: Promotion of a version
    1. Set up a second cluster (production) to read from a different folder.
    2. Copy the infrastructure created for the first folder into this one.
    3. Pull request
    4. Test: Second cluster should have the service available as well.
  5. More advanced deployment scenarios (Controlled release is an important part of releasing traffic, especially to production. It's worth talking about the options that you have that can be based on the exact same building blocks as explained before.)
  6. Exercise: Blue/Green
    1. Enable Argo Rollouts in cluster.
      1. Test: Observe rolling deployment with kubectl.
    2. Install argo-rollouts plugin for kubectl.
    3. Create rollout to apply to existing microservice.
  7. Canary release
    1. Theory only (This can be a good lead-in to a discussion of the merits and tradeoffs of different deployment strategies.)
  8.  Exercise: Error handling (This exercise shows that failure in infra deployment is expected and is handled through code changes—not panicked actions!)
    1. Introduce an error in the hello world application (this results in a thrown exception instead of starting the webserver).
    2. Rebuild the container with a new tag and push it to Docker registry.
    3. Update k8s deployment to use new tag.
    4. Pull request
    5. Test: Confirm with kubectl that deployment is failing.
    6. Revert a failed change through code.

Part 4: Security in GitOps

  1. Accessing resources
    1. kubectl shouldn't replace observability, such as logging and monitoring (similar to secure shell—SSH—into a production server)
  2. Secrets
    1. No plaintext secrets should ever be stored in Git.
  3. Vault
    1. This is theory only because it's probably too much to do for a practical exercise.
  4. Exercise: Sealed secrets
    1. Depending on time, this can be treated as theory or as an exercise. Furthermore, you can split it in two depending on how much time you have.
      1. Modify microservice to read the secret and make it available through a request.
    2. Provision secrets in the infrastructure repository.
    3. Use secrets from either the cluster or the application.
    4. Install the sealed secrets controller.
    5. Inject an encrypted secret in the infrastructure repository.
    6. Modify Kubernetes deployment to inject a secret into the microservice.

Part 7: Recap

  1. Core concepts: Infra as code, Git as the source of truth, pull model, converging changes
  2. Core flow: declare infrastructure, commit it, pull request for review, merge to apply
  3. Next steps
    1. Automated promotion (If a deployment to a staging environment succeeds, then trigger a deployment to production.)
    2. Observability (microservices that export metrics, logging aggregator, and monitoring)

Bonus exercises

  1. Replace manual steps (push Docker container, build application code) with CI, such as GitHub actions.
  2. Introduce templating (Jsonnet, Helm) to foster reuse of Kubernetes resources.
    1. Exercise: Parameterize deployment so that port can be defined as configuration. Deploy a second copy of the same service with a different name, running on a different port.
  3. Install more advanced resources in the cluster using the same mechanism, such as an ingress controller.

Azure DevOps for Teams

Part 1: Getting Started

  1. Introductions
  2. Course Goal
  3. Team Agreement

Part 2: Azure DevOps Overview

  1. Hierarchy
  2. List
  3. Board
  4. Backlog
  5. Work items

Part 3: Agile & Scrum Review

  1. Manifesto
  2. Principle
  3. Scrum Overview

Part 4: Accessing Azure DevOps

  1. Login
  2. Navigation

Part 5: Managing Iterations

  1. Configure the time box iteration
  2. Setting interaction goal
  3. Configure Team Capacity

Part 6: Backlog Hierarchy

  1. Product backlog
  2. Attributes
  3. Epics, Feature, Stories
  4. Managing Work Item
  5. Adding Stories
  6. Link Epics to Feature to Stories to Tasks
  7. Prioritization guide line
  8. Adding Priority
  9. Estimating Guidelines
  10. Add Estimates
  11. Task Breakdown
  12. Adding Task
  13. Adding PBI’s to Iterations
  14. Blocking Tasks
  15. Kanban Overview

Part 7: Queries

  1. Creating Queries
  2. Running Queries

Part 8: Wikis

  1. Creating
  2. Editing

Part 9: Dashboards

  1. Configure Widgets
  2. Creating the Dashboard