Establish security standards, metrics, and governance
This practice focuses on continually updating and communicating security requirements to reflect changes in functionality and to the regulatory and threat landscape.
Clear guidance and rules are required to guide team members (product line leaders, product owners, developers, operations, and other roles) through what they need to do for security, how success is measured, and what resources are available to help them.
The need to consider security and privacy is a fundamental aspect of developing highly secure applications and systems and regardless of development methodology being used. Security requirements must be continually updated to reflect changes in required functionality and changes to the threat landscape. Obviously, the optimal time to define the security requirements is during the initial design and planning stages as this allows development teams to integrate security in ways that minimize disruption. Factors that influence security requirements include (but are not limited to) the legal and regulatory requirements, internal standards and coding practices, review of previous incidents, and known threats. These requirements should be tracked through either a work-tracking system or through telemetry derived from the engineering pipeline.
It is essential to define the minimum acceptable levels of security quality and to hold engineering teams accountable to meeting that criteria. Defining these early helps a team understand risks associated with security issues, identify and fix security defects during development, and apply the standards throughout the entire project. Setting a meaningful bug bar involves clearly defining the severity thresholds of security vulnerabilities (for example, all known vulnerabilities discovered with a “critical” or “important” severity rating must be fixed with a specified time frame) and never relaxing it once it's been set. In order to track key performance indicators (KPIs) and ensure security tasks are completed, the bug tracking and/or work tracking mechanisms used by an organization (such as Azure DevOps) should allow for security defects and security work items to be clearly labeled as security and marked with their appropriate security severity. This allows for accurate tracking and reporting of security work.
A formal mechanism for tracking exceptions to the standards is needed to effectively manage risk. Eventually, every organization encounters circumstances that require security risks to be accepted temporarily due to business priorities and resource constraints. The hallmark of a mature governance process is that such risk acceptance is handled by well-defined processes to triage, justify, approve, and track temporary exceptions to security standards. Primary reasons for formally tracking exceptions to security requirements include:
- Exceptions are approved at the appropriate management level based on their security risk.
- Formal tracking lets management know the nature of the security risks they are accepting and what the remediation plan is so that appropriate resources can be allocated to fix security issues in a timely fashion.
- Exceptions are timebound and must be renewed and re-approved if they expire before they are remediated.
1.1 Identify Required Standards – Every organization will have their own definition of requirements for appropriate security standards. You can begin by reviewing the information provided in the following guides:
- The NIST Secure Software Development Framework
- Industry-specific regulations e.g. where payment account data is stored, processed or transmitted, PCI Data Security Standard (PCI DSS) should be met. Health Insurance Portability and Accountability Act (HIPAA) regulations for U.S. companies that work with protected health information (PHI).
1.2 Define Security Requirements – Establish a minimum-security baseline that takes account of both security and compliance controls. Ensure these are baked into the DevOps process and pipeline. At the very minimum, ensure the baseline takes into account real-world threats such as the OWASP Top 10 or SANS Top 25, and industry or regulatory requirements and issues known to exist or that could be introduced by human error in the technology stack you select. Use Azure DevOps to help record security requirements once defined:
Microsoft: Azure DevOps Boards
1.3 Define metrics and compliance reporting – It is essential to define the minimum acceptable levels of security quality and to hold engineering teams accountable to meeting that criteria. Defining these early helps a team understand risks associated with security issues, identify and fix security defects during development, and apply the standards throughout the entire project. Setting a meaningful bug bar involves clearly defining the severity thresholds of security vulnerabilities (for example, all known vulnerabilities discovered with a “critical” or “important” severity rating must be fixed with a specified time frame) and never relaxing it once it's been set. The bug bar should be maintained to reflect the changing threat landscape, both the type of issue and their severity. The bug bar is a great way to ensure that everyone involved in triaging issues understands why a security issue has a certain severity and what action is required.
In order to track key performance indicators (KPIs) and ensure security tasks are completed, the bug tracking and/or work tracking mechanisms used by an organization (such as Azure DevOps) should allow for security defects and security work items to be clearly labeled as security and marked with their appropriate security severity. This allows for accurate tracking and reporting of security work.
- Microsoft Learn: Add or modify a field to track work - Azure DevOps
- Microsoft Learn: AI/ML Pivots to the SDL Bug Bar
- Microsoft Learn: SDL Security Bug Bar
1.4 Create a Security Exception Process – Key aspects of managing security risk for an organization include making risks visible and holding the organization accountable for accepting such risks and remediating them in a timely fashion. It is not reasonable to expect that organizations can or should achieve 100% compliance with their security policies all of the time. For example, when new policies are added or existing ones are changed to raise the bar for security, it takes time for engineering teams to reach this new level of compliance. So, the very act of raising security standards can cause non-compliance.
When an engineering team cannot achieve compliance with a security policy within the timeframe of defined SLAs, they must request a temporary exception to the policy. A security program should provide a clear process for requesting and managing such security exceptions. This should include steps such as:
- Triaging the security risk of non-compliance with the policy and documenting:
- The reason why an exception is needed.
- Any short-term actions that can reduce the risk.
- A remediation plan to achieve compliance.
- An expiration date for the exception.
- Determining which level of management must review the risk, based on its severity.
- Requesting an exception to the policy via an approval workflow.
- Formal review and approval/denial of the exception request by the proper level of management.
- Tracking of the exception to its resolution or expiration.
- Reviewing the exception again when the security risk changes.
- Restarting the exception approval workflow if the exception expires before being remediated.
The benefits of such a risk management process include:
- Management is aware of the risks and can allocate resources to address them.
- Deviations from policy must be justified and only exist temporarily.
- Security risks are discussed openly, fostering a culture of honesty.