Chapter 6 Flashcards
Application Security
Software Development Life Cycle (SDLC)
The steps in a model for software development throughout its life. The process of designing, creating, supporting, and maintaining that software.
Software Development Phases
It can differ and order may vary but generally this is the order.
- Planning Phase
- Requirements Definition Phase
- Design Phase
- Coding Phase
- Testing Phase
- Training and Transition Phase
- Operations and Maintenance Phase
- Decommissioning Phase
Planning Phase
Software Development Phases (SDLC)
Where initial investigations into whether the effort should occur are conducted.
Requirements Definition Phase
Customer input is sought to determine what the desired functionality is, what the current system or application currently does and doesn’t do, and what improvements are desired.
Design Phase
SDLC
Where security considerations are integrated into the planning and architecture of systems, applications, or networks. This proactive approach aims to minimize vulnerabilities before they are introduced during development.
Coding Phase
Write and compile the actual source code based on the design. Unit testing, the testing of small components individually to ensure they function properly, may occur in this phase.
Testing Phase
Formal testing with customers or others outside of the development team. Perform various types of tests (Unit, integration, system, user acceptance testing).
Training and Transition Phase
Ensuring that the end users are trained on the software and that the software has entered general use. (This phase may also be called: The acceptance, installation, and deployment phase.
Operations and Maintenance Phase
The longest phase. This phase includes patching, updating, minor modifications, and other work that goes into daily support.
Decommissioning Phase
When a product or system reaches the end of its life. Data migration or archiving, system shutdown, security assessments, documentation updates, and post decommission review all occur in this final phase.
Code Deployment Environments
There are many environments used but these are the most common:
- Development Environment
- Test Environment
- Staging Environment
- Production Environment
Development Environment
Typically used for developers or other “builders” to do their work.
Test Environment
This is where the software or systems can be tested without impacting the production environment.
Staging Environment
A transition environment for code that has successfully cleared testing and is waiting to be deployed into production.
Production Environment
“Code Deployment Environment”
The live system. Software, patches, and other changes that have been tested and approved move to production.
DevOps
Seeks to resolve issues of software development, quality assurance, and technology operations by bringing the three functions together in a single operational model. The word DevOps is a combination of development and operations, symbolizing that these functions must merge and cooperate to meet business requirements.
DevSecOps
DevOps model that includes security as a core component.
CI/CD pipeline
Automates the software release process.
Continuous integration (CI)
A development practice that checks code into a shared repository on a consistent, ongoing basis.
Continuous deployment (CD)
Sometimes called continuous delivery; it rolls out tested changes into production automatically as soon as they have been tested.
Continuous validation
Closely linked to Continuous Integration (CI) and Continuous Deployment (CD). It helps developers automatically test and verify new code before it is merged into the main system.
Continuous monitoring
A monitoring practice that uses automation to facilitate 24/7 monitoring of systems and networks.
Open Worldwide Application Security Project (OWASP)
The home of a broad community of developers and security practitioners, and it hosts many community- developed standards, guides, and best practice documents, as well as a multitude of open source tools.
Application Programming Interfaces (APIs)
Interfaces between clients and servers or applications and operating systems that define how the client should ask for information from the server and how the server will respond.
APIs allow application developers to interact directly with a web service through function calls.