Table of Contents
        Introduction
 Lesson 1: Unveil GHAS Security Features
 1.1 Differentiate security features with open-source projects and the features available when GHAS pairs with GHEC or GHES
 1.2 Describe the features and benefits of Security Overview
 1.3 Describe the differences between secret scanning and code scanning
 1.4 Describe how secret scanning, code scanning, and Dependabot create a more secure software development life cycle
 1.5 Contrast a security scenario with isolated security review and an advanced scenario
  Lesson 2: Harness GHAS Features           
 2.1 Describe how vulnerable dependencies are identified
 2.2 Explain how to act on alerts from GHAS
 2.3 Explain the implications of ignoring an alert
 2.4 Explain the role of a developer when they discover a security alert
 2.5 Describe the differences in access management to view alerts for different security features          
 2.6 Describe a security policy in a GitHub repository
 2.7 Identify where to use Dependabot alerts in the software development lifecycle
  Lesson 3: Implement Secret Scanning 
 3.1 Describe secret scanning
 3.2 Choose when secret scanning occurs
 3.3 Contrast secret scanning availability for public and private repositories
 3.4 Enable secret scanning for private repositories
 3.5 Enable secret scanning for an organization
 3.6 Explain how to pick an appropriate response to a secret scanning alert
 3.7 Determine if an alert is generated for a given secret, pattern, or service provider
 3.8 Determine if a given user role will see secret scanning alerts
  Lesson 4: Tailor Secret Scanning 
 4.1 Configure the recipients of a secret scanning alert
 4.2 Describe how to exclude certain files from being scanned for secrets
 4.3 Explain how to enable custom secret scanning for a repository
 4.4 Explain how to enable custom secret scanning for an organization
  Lesson 5: Explore Dependency Vulnerability Tools          
 5.1 Define a vulnerability
 5.2 Describe Dependabot alerts
 5.3 Describe Dependabot security updates
 5.4 Define the dependency graph
 5.5 Describe how the dependency graph is generated
 5.6 Describe how alerts are generated for vulnerable dependencies
  Lesson 6: Set Up Vulnerability Management Tools
 6.1 Identify the default settings for Dependabot alerts in public and private repositories
 6.2 Identify the permissions and roles required to enable Dependabot alerts
 6.3 Identify the permissions and roles required to view Dependabot alerts
 6.4 Enable Dependabot alerts for private repositories
 6.5 Enable Dependabot alerts for organizations
 6.6 Create a valid Dependabot configuration file
 6.7 Configure notifications for vulnerable dependencies
  Lesson 7: Resolve Vulnerable Dependencies 
 7.1 Identify a vulnerable dependency from a Dependabot alert
 7.2 Identify vulnerable dependencies from a pull request
 7.3 Enable Dependabot security updates
 7.4 Remedy a vulnerability from a Dependabot alert in the Security tab
 7.5 Remedy a vulnerability from a Dependabot alert in the context of a pull request
 7.6 Act on any Dependabot alerts by testing and merging pull requests
  Lesson 8: Initiate Code Scanning             
 8.1 Describe code scanning
 8.2 List the steps for enabling code scanning in a repository using GitHub Actions
 8.3 Enable code scanning for use with a CodeQL analysis workflow
 8.4 Describe how code scanning relates to GitHub Actions consumption
  Lesson 9: Integrate Third-Party Code Scanning 
 9.1 Enable code scanning for use with a third-party analysis
 9.2 Contrast the steps for using CodeQL versus third-party analysis when enabling code scanning
 9.3 Contrast how to implement CodeQL analysis in a GitHub Actions workflow versus a third-party CI tool
  Lesson 10: Configure Code Scanning 
 10.1 Describe how code scanning fits in the software development life cycle
 10.2 Contrast the frequency of code scanning workflows
 10.3 Choose a triggering event for a given development pattern
 10.4 Edit the default template for Actions workflow to fit an active, open source, production repository
  Lesson 11: Discover CodeQL Scanning Capabilities
 11.1 Describe CodeQL
 11.2 Define a QL pack, code query, code suite
 11.3 Describe the default CodeQL query suites
 11.4 Describe how CodeQL analyzes code and produces results
  Lesson 12: Apply CodeQL Scanning
 12.1 Introduce a CodeQL analysis workflow to a repository
 12.2 List the locations in which CodeQL queries can be specified for use with code scanning
 12.3 Configure the language matrix in a CodeQL workflow
 12.4 Reference a CodeQL query from a public repository within a code scanning workflow
 12.5 Reference a CodeQL query from a private repository within a code scanning workflow
 12.6 Reference a CodeQL query from a local directory within a code scanning workflow
 12.7 Reference a configuration file within the same repository
 12.8 Reference a configuration file in a remote public repository
 12.9 Execute code scanning with the CodeQL CLI
 12.10 Contrast the steps to execute code scanning in GitHub Actions vs the CodeQL CLI
  Lesson 13: Triage CodeQL Analysis Results 
 13.1 Describe how to view code scanning results from CodeQL analysis
 13.2 Troubleshoot a failing code scanning workflow using CodeQL
 13.3 Follow the data flow through code using the show paths experience
 13.4 Explain the reason for a code scanning alert given documentation linked from the alert
 13.5 Determine if and why a code scanning alert needs to be dismissed
 13.6 Describe potential shortfalls in CodeQL via model of compilation and language support
 13.7 Optimize CodeQL analysis runtimes
  Lesson 14: Incorporate External Scanning Tools 
 14.1 Explain how to upload 3rd party SARIF results via the SARIF endpoint
 14.2 Explain the purpose of defining a SARIF category
  Lesson 15: Implement GHAS Best Practices 
 15.1 Use a CVE and CWE to describe a GitHub Advanced Security alert and list potential remediation
 15.2 Advanced Security alert and list potential remediation
 15.3 Describe the decision-making process for closing and dismissing security alerts
 15.4 Determine the roles and responsibilities of development and security teams on a software development workflow
 15.5 Explain how to set a review cadence with security teams, when appropriate
 15.6 Use security policies to instruct all contributors to better secure their repositories
 15.7 Compare the code scanning alert against the repositorys security policy
 15.8 Align repository branch protection configuration with written security policies
  Lesson 16: Administer GitHub Advanced Security 
 16.1 Explain how GitHub Advanced Security features are enabled on GitHub Enterprise Server
 16.2 Explain how GitHub Advanced Security features are enabled for an organization
 16.3 Set security policies for a repository
 16.4 Set security policies for an organization
 16.5 Describe how permissions are interpreted throughout security workflow
 16.6 Locate API endpoints for GHAS features, like secret scanning, code scanning, and dependabot
 16.7 List stakeholders that need to be involved in the security workflows enabled by GHAS
 16.8 Configure code scanning within a repository or organization using the default CodeQL workflow
 16.9 Identify the custom build steps necessary in a CodeQL workflow
 Summary