SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
Cloud Application Security

CCSP Applying the Secure SDLC: Cloud Risks, Threat Modeling and Secure Coding

24 min readCCSP · Cloud Application SecurityUpdated

Applying the secure software development life cycle (SDLC) means building security into the actual design and code of a cloud application: designing for cloud-specific risks, threat modeling the design, avoiding common vulnerabilities while writing code, following recognized secure coding standards and keeping every version under configuration management. This lesson covers the four cloud-specific risks the CCSP names (shared technology issues, CSP insider threats, lack of visibility and control, and legal and jurisdiction issues) and the development controls that address each; when and where to threat model and how STRIDE, DREAD, PASTA and ATASM differ; how to remove injection, server-side request forgery and committed secrets at their root cause; what OWASP ASVS and SAFECode are for; and how software configuration management and versioning make releases controlled and reproducible.

What you’ll learn
  • Design tenant isolation into shared databases, caches and queues, and limit what provider insiders can see or do
  • Build application-level audit logging where PaaS, SaaS and serverless hide the lower layers
  • Treat residency as a requirement on every copy of the data and reduce compelled-disclosure risk with customer-held keys
  • Decide when to threat model and where to focus, and map STRIDE categories to the properties and controls they involve
  • Distinguish DREAD (rating) from PASTA and ATASM (processes) and choose the model that fits a need
  • Fix injection, SSRF to the metadata service and committed secrets at their root cause rather than with compensating layers
  • Explain how OWASP ASVS levels and SAFECode practices are used, and how configuration management makes releases reproducible

Shared technology issues: tenant isolation is the application's job

Shared technology issues are the risks that come from many customers (tenants) running on the same underlying components, and in development the most important consequence is that the provider isolates its infrastructure, not your data inside your application. The hypervisor keeps one customer's virtual machines apart from another's, but once a SaaS application puts several of its own customers into one database schema, one cache or one queue, nothing below the application can tell those customers' data apart. Tenant separation then has to be written into the code.

The CCSP outline names four cloud-specific risks that the secure SDLC must design for. This lesson takes them in turn:

  • Shared technology issues: tenants share databases, caches, queues and compute.
  • CSP insider threats: provider staff with privileged access to the systems holding your data.
  • Lack of visibility and control: in PaaS, SaaS and serverless, the customer cannot see or configure the layers below the application.
  • Legal and jurisdiction issues: where data and its copies sit, and which governments can compel the provider to disclose it.

Where tenant data is mixed, and the control that separates it

Shared componentHow tenants leak into each otherDevelopment control
One database schema for all tenantsA query that forgets its tenant filter returns other tenants' rowsScope every query to the caller's tenant through a mandatory data-access layer (or database row-level security), so a single forgotten filter cannot leak data
A shared cache or search indexEntries keyed or indexed without the tenant, so one tenant's lookup can return another tenant's entryMake the authenticated tenant identifier part of every key or index partition, and check it on read
A shared queue, worker pool or connection poolOne tenant's heavy usage starves the others (a "noisy neighbour" availability problem)Per-tenant quotas, rate limits and fair scheduling inside the shared component

The principle is to enforce separation at the exact point where tenants' data is mixed. Controls that act at a different layer (the host, the network edge, storage encryption, capacity) can be valuable for other reasons, but they cannot stop the application from handing one tenant's data, or one tenant's share of a resource, to another. A useful test when reviewing a design: if a developer forgets one check in one code path, does any tenant boundary still hold? If not, the separation is not yet designed in.

Fully separate infrastructure per tenant (a "silo" model) does remove sharing, and is a legitimate design for high-value tenants, but it costs more and is often ruled out by the business. The secure-SDLC skill is to make the shared design safe: the tenant identity comes from the authenticated session, never from a value the caller supplies, and it is enforced centrally rather than remembered by each developer.

CSP insider threats: limit what provider staff can see and control their access

A CSP insider threat is a provider employee or contractor who misuses privileged access to the infrastructure, platform or support tooling that holds customer data. Applications defend against it in two ways: by designing so that provider staff see as little as possible, and, where the provider must have access, by making that access customer-approved, time-limited and logged to the customer.

Minimizing what an insider can read

An insider with access to storage already sits behind the network controls, so only protection that travels with the data helps. Encrypting sensitive fields in the application before storage, with keys held in a customer-controlled HSM or key service outside the provider, leaves the insider holding ciphertext. Encryption whose keys the provider itself manages keeps keys and data under the same administrative domain: it protects against lost media and outside attackers, not against the provider's own privileged staff, whatever its rotation schedule. This is the same "separate the keys from the provider" principle covered with key management in the data security lessons; here it becomes a design decision made during development (which fields, encrypted where, with whose keys).

When the provider must have access

Customer-held encryption has a cost: data the provider cannot read is data its engineers cannot troubleshoot. When the business needs provider support on a managed database or service, the control shifts from preventing access to governing it:

  • the customer approves each support session (many providers offer a customer lockbox or access-approval feature for this);
  • the access is time-limited to the case;
  • the customer receives the access records, so it knows whenever provider staff touched the data.

What assurance documents do and do not do

Third-party attestations and certifications describe how the provider screens, separates and monitors its staff. That is valuable assurance when choosing and reviewing a provider, but it is evidence about the provider's process, not a control the customer operates, and it does not reveal or limit any individual access to the customer's data. When judging a control against this risk, ask whose behaviour it constrains: a control that governs the customer's own staff, however sound, addresses a different actor. The provider-insider risk as an entry in a risk register is covered in the infrastructure risk assessment lesson; this lesson is about building the application so the risk is smaller.

Lack of visibility and control: the application must log for itself

Lack of visibility and control is the risk that, in PaaS, SaaS and serverless, the customer cannot see or configure the hosts, networks and much of the platform its application runs on, so the evidence an investigation needs must be produced by the application itself. Platform logs describe the platform; only the application knows which end user did what to which record.

The gap is sharpest when the application reaches its data through one service identity (a function role or a database connection account). Every query the database sees then comes from that single identity, so the database's own logs cannot name the end user behind a request.

Log sourceWhat it recordsWhat it cannot tell you
Control-plane (management) activity logWho created, changed or deleted cloud resources and their configurationAnything about application users or the data they read
Platform runtime logsInvocations, durations, errors, the application's own debug outputA reliable who-did-what audit trail; more detail is not the same as identity
Data-tier and network-edge logsStatements run, connecting accounts, inbound requestsThe end user behind a shared service identity, or whether a request was authorized
Application audit eventsAuthenticated user, action, access decision (allowed or denied) and the record or object touchedNothing it is designed to capture, provided developers emit it

Building this is a development task, so it belongs in the secure SDLC from the requirements stage: define the security events (sign-ins, failed and successful access decisions, reads and changes of sensitive data, administrative actions), the fields each event carries, and where events go. For audit use the record must be tamper-evident: sent to central, append-only (write-once) storage that the application itself cannot alter or delete, ideally in a separate account. An attacker who compromises the application should not also be able to erase the evidence. Never log secrets or full sensitive values; log identifiers.

The general rule: the provider can tell you what happened to its platform; only your application can tell you what happened to your data and on whose behalf.

Threat modeling: when to do it, where to look, and STRIDE

Threat modeling is the structured analysis of a system's design to find what could go wrong, how an attacker could cause it and which controls should prevent it. It delivers the most value during design, when a flaw can be fixed on paper, and it must be repeated whenever the architecture, data flows, trust boundaries or dependencies change; otherwise it describes a system that no longer exists. Adding a mobile client, exposing an internal API publicly, or moving a component to a new service model are all reasons to update the model before building. A calendar-based review or post-release testing is valuable but comes after the design decision it should have informed; testing verifies the mitigations the model identified, it does not replace the model.

Where to look first: trust boundaries

Most threat models start from a data flow diagram (external entities, processes, data stores, data flows) with trust boundaries drawn where the level of trust changes: browser to API gateway, gateway to internal functions, functions to a managed database, and any call to or from a third party. Threats cluster on flows that cross a boundary, because that is where identity must be established, input validated and data protected in transit. With limited time, enumerate threats on boundary-crossing flows first; the assets behind a boundary are reached through those flows. Picking a control before the analysis is done is a common mistake: a single control usually answers one STRIDE category, and the model exists to find the others.

STRIDE: six threat categories, six violated properties

STRIDE is a mnemonic for classifying threats, usually applied to each element of the data flow diagram. Each category violates one security property, and the matching control restores that property.

ThreatWhat happensProperty violatedTypical controls
SpoofingPretending to be another user, service or system, for example a token signed by an issuer the service never meant to trustAuthenticationStrong authentication of users and of message or service origin
TamperingUnauthorized modification of data in storage, in transit or in codeIntegrityMessage authentication codes, digital signatures, integrity checks, write restrictions
RepudiationDenying an action because the system cannot prove who did itNon-repudiationAuthenticated actions recorded in protected audit logs, signed records
Information disclosureExposing data to someone not authorized to see itConfidentialityEncryption, access restrictions on reading, data minimization
Denial of serviceMaking the system unavailable or degradedAvailabilityRate limits, quotas, scaling, resilient design
Elevation of privilegeGaining capabilities beyond those grantedAuthorizationAuthorization checks on every operation, least privilege

Neighbouring categories are easy to swap, so reason from the violated property: ask what the attacker gains (a false identity, changed data, deniability, read access, an outage, extra rights) and the property follows. Note the dependency between two of them: authorization decisions rely on an identity that authentication has already established, so authorization controls cannot repair a spoofing weakness.

DREAD, PASTA and ATASM: rating threats and running the process

STRIDE classifies threats; the other three named models do different jobs. DREAD rates and ranks threats that have already been identified, while PASTA and ATASM are end-to-end processes for producing a threat model.

DREAD: scoring identified threats

DREAD scores each threat on five factors and uses the totals (or averages) to rank the list: damage potential (the CCSP outline expands the first letter as "Disaster"; Microsoft's original model used "Damage"), Reproducibility, Exploitability, Affected users and Discoverability. Its well-known weakness is subjectivity: two analysts can score the same threat very differently, which makes rankings inconsistent. The root-cause fix, when an organization wants to keep DREAD, is to write explicit scoring criteria for each level of every factor and calibrate the analysts on worked examples. Changing how the numbers are processed afterwards does not help while the analysts still interpret the scale differently.

DREAD is not the same thing as CVSS. CVSS (the Common Vulnerability Scoring System) uses defined metrics to score the severity of a specific vulnerability; DREAD rates the risk of a threat in your own design. CVSS is more consistent because its metrics are defined, but it measures something different.

PASTA: risk-centric, seven stages

PASTA (Process for Attack Simulation and Threat Analysis) is a risk-centric, attacker-focused methodology in seven stages:

  1. Define business objectives
  2. Define the technical scope
  3. Decompose the application
  4. Analyze threats (using threat intelligence about real attackers)
  5. Analyze vulnerabilities and weaknesses
  6. Model and simulate attacks
  7. Analyze risk and impact

Starting from business objectives and ending with business impact is what makes it the fit when leadership wants results expressed as business risk and wants threat intelligence used. It is typically the most resource-intensive of the four.

ATASM: lightweight and architecture-first

ATASM, popularized by Brook Schoenfield, runs four steps in order: Architecture (understand how the system is built), Threats (the threat agents, their goals and methods), Attack Surfaces (where those agents can reach the system) and Mitigations (the defences to apply). It has no scoring model and is easy to teach to development teams, which is its main appeal.

ModelWhat it isUse it when
STRIDESix-category classification mnemonicEnumerating threats per element of a data flow diagram
DREADFive-factor rating schemeRanking a list of threats already found
PASTASeven-stage, risk-centric processResults must tie to business objectives and impact, using threat intelligence
ATASMFour-step, architecture-first processA lightweight, teachable approach without scoring

Models combine: a team might follow ATASM or PASTA as the process, use STRIDE to enumerate threats inside it and DREAD to rank them. Attack trees are another valid technique that decomposes an attacker's goal into the ways to reach it.

Avoiding injection: separate code from data

Injection happens when user-controlled input is combined into something an interpreter parses (a SQL query, a shell command, a template, a query language), so the input is executed as syntax instead of being treated as data. The root-cause fix during development is always the same idea: use an interface that keeps the structure and the data separate, so the interpreter never parses the input.

FlawWhat goes wrongRoot-cause fix
SQL injectionA query string is assembled from inputParameterized queries (prepared statements with bound parameters)
Dynamic SQL inside the databaseA procedure or function concatenates its inputs into a new statement and executes itBind the inputs inside the dynamic statement, or avoid dynamic SQL
NoSQL or query-language injectionInput is parsed as query operators or expressions (for example a JSON object where a string was expected)Typed query builders; enforce the expected type before the query
OS command injectionA command line is built as one string and handed to a shellCall the program through an API that takes arguments as a list, with no shell in between (or use a library instead of a program)

The dynamic-SQL case is a common trap: safe parameter binding at one boundary does not protect a later point where the same value is concatenated into code, so the injection simply moves. Follow the value to wherever it is finally parsed. Declaring a parameter with a strict data type and length is not a substitute: it constrains numbers and dates usefully, but a string parameter can still carry SQL syntax within its length, and if the receiving code concatenates that string into a statement it is parsed as code all the same. The same logic applies to the shell: escaping tries to make input safe for a parser that should not be in the path at all.

Other layers still matter as defence in depth: allowlist validation of expected formats reduces attack surface, least privilege limits the damage of a successful injection, and filtering at the edge can buy time. Each one compensates for the flaw rather than removing it, because it works by recognising bad input, and a determined attacker routinely finds input that a filter misses. Awareness lists such as the OWASP Top 10 are covered in the application security awareness lesson; how testing finds these flaws is covered in the software assurance lesson.

Cloud-shaped flaws: SSRF against the metadata service and secrets in source code

Two development flaws are especially damaging in the cloud because they hand an attacker the workload's cloud credentials: server-side request forgery (SSRF) that reaches the instance metadata service, and secrets committed to source control.

SSRF and the metadata service

SSRF is a flaw where an attacker makes the server send a request to a destination the attacker chooses, typically through a feature that fetches a user-supplied URL, such as link previews, document import from a URL or a callback address. In the cloud the prize is the instance metadata service, a link-local address that returns the machine's temporary role credentials. Closing it takes controls at two levels:

  • In the code: allowlist the permitted destinations and check the address after DNS resolution, not the URL string, rejecting private and link-local ranges. Apply the check to every hop: if the HTTP client follows redirects, a public host can answer with a redirect to the metadata address, so either stop following redirects or resolve and validate each one. (DNS rebinding, where a name resolves differently on a second lookup, is a separate bypass, which pinning the resolved address for the actual connection prevents.) String blocklists of the metadata IP are trivially bypassed with alternative encodings and hostnames.
  • On the platform: require a session token for metadata requests, obtained beforehand by a separate call (or a header a plain forged request cannot set). SSRF usually lets an attacker choose only the URL of a simple request, so this blocks credential theft without a code change, which makes it the right immediate step while a code fix is pending.

Ask of any proposed control whether it stops the credentials being returned. Controls that limit what stolen credentials can do, or detect the theft afterwards, are worthwhile damage limitation but leave the request path open; controls that restrict who may use the feature do not help when the abuser is a legitimate user; and network changes that break the feature's purpose are not a fix.

Secrets in source code

A secret committed to a repository must be treated as compromised. Deleting the line in a new commit changes only the newest version: the old value remains in version history and in every clone, fork and cached copy, none of which can be recalled. The response has three parts:

  1. Revoke or rotate the secret at its issuer, which is the only step that closes the exposure.
  2. Move the replacement out of the repository: the workload retrieves it at runtime from a secrets manager using its own identity. Any variant that keeps the secret, encrypted or not, in files that travel with the code keeps it tied to source control.
  3. Prevent recurrence with automated secret scanning on commits (pre-commit hooks and server-side scanning).

Clean-up steps on the repository itself are reasonable follow-ups, but the test is whether a step makes the leaked value useless. Only revocation at the issuer does that, because copies already outside your control cannot be recalled.

Secure coding standards: OWASP ASVS and SAFECode

The CCSP outline names two secure-coding sources that do different jobs: OWASP ASVS defines what to build and verify, and SAFECode describes how to run a secure development program.

OWASP Application Security Verification Standard (ASVS)

ASVS is a catalogue of specific, testable security requirements for web applications and services, grouped into chapters by area, covering topics such as authentication, session management, authorization, encoding and validation of input, file handling, cryptography and logging. Teams use it to write security requirements into the SDLC and then to verify that the application meets them in design review, code review and testing. The current version is ASVS 5.0 (2025).

  • Three cumulative levels. Each level includes every requirement of the levels below it, so an application claiming Level 2 must meet all Level 1 and all Level 2 requirements; requirements that appear only at a higher level are not needed to claim the level below it. Level 1 is the baseline, Level 2 is the level most applications should strive for, and Level 3 is for applications that must demonstrate the highest level of security.
  • Documented decisions are verified separately from their implementation. Where ASVS cannot know the right value (permitted file types, size limits, which data is sensitive), it requires the organization to document its decision, and a related requirement checks that the implementation enforces it. The two are separate checks: having the decision written down satisfies only the documentation requirement, and the implementation requirement needs evidence that the code enforces what was written. ASVS leaves the values themselves to the organization.

SAFECode

SAFECode (the Software Assurance Forum for Excellence in Code) is a nonprofit formed by software companies to share secure development practice. Its best-known publication, Fundamental Practices for Secure Software Development, distils the practices that established vendors use across design, secure coding, managing third-party components, testing and validation, and handling reported vulnerabilities. It guides how the program is run, not a checklist to verify code against.

SourceWhat it isTypical use
OWASP ASVSLeveled catalogue of testable requirementsSpecify security requirements and verify an application against them
SAFECode Fundamental PracticesPractice guidance from vendors' secure development programsShape how a secure development process is run
ISO/IEC 27034International consensus standard for application security, built around organization-level and application-level processes and controlsFormally integrating application security into an organization's management processes, for example alongside an ISO/IEC 27001 program
OWASP Top 10Ranked awareness list of critical web application risk categoriesTraining and awareness (covered in the awareness lesson)
CSA Cloud Controls MatrixCloud control framework mapped to other standardsAssessing cloud security posture, including a provider's

SAFECode and ISO/IEC 27034 both address process, but they differ in origin: SAFECode is practice guidance distilled from what member software companies already do, while ISO/IEC 27034 is a formal standard agreed through the international standards process. The two named sources complement each other: an organization can use SAFECode to design its development process and ASVS as the requirement set that process verifies. For the formal lifecycle frameworks (phases, methodologies, the NIST SSDF), see the secure SDLC process lesson.

Software configuration management and versioning

Software configuration management (CM) is the discipline of identifying, controlling and recording every item that makes up a system (source code, build scripts, dependencies, infrastructure and application configuration) so that any version can be reproduced, traced and rolled back. Versioning is the mechanism: every change is a recorded version, and every release is a named baseline.

Control the path, not just the record

The strongest CM control makes the recorded path the only path. When configuration lives in version control and production can be changed only by promoting reviewed commits through the pipeline, an engineer cannot change a setting by hand without it being recorded, and the current baseline is always known. Ask of any CM control whether it prevents an unrecorded change or only finds one later, and whether it is technically enforced or relies on people following a procedure. Prevention by enforced path is strongest; detection still has a place, catching what slips past and confirming that the controlled path is the only one in use.

Reproducible releases

A release is reproducible only when its source is tagged and every build input is pinned. If builds pull a "latest" base image or unpinned library versions, rebuilding an old release produces a different artifact, which matters for audits, incident investigation and any patch to an older version. The practice is to tag each release in version control and pin base-image and dependency versions in version-controlled build files (lock files, image digests). Note the difference between keeping what a release produced (a stored artifact, useful for rollback) and being able to reproduce it from source (needed to change it): only pinned, versioned inputs give the second.

Good CM also supports security directly: reviewed, versioned changes give an audit trail of who changed what, rollback limits the impact of a bad release, and pinned dependencies make it possible to know exactly which component versions are in production. The supply-chain side of this (SBOMs, provenance, verifying third-party components) belongs to the verified secure software lesson.

Tip. Questions on this topic mix short recall items with design scenarios. Recall items ask what a STRIDE category means or which property it violates, which model rates threats rather than finding them, the order of ATASM's steps, PASTA's starting and finishing stages, what ASVS levels require and what ASVS or SAFECode is for. Scenario items describe a multitenant data layer, cache or queue, a provider-insider concern, a missing audit trail behind a shared service identity, a residency rule or a foreign provider, and ask for the design decision that addresses the stated risk under a stated constraint (keep caching, allow provider troubleshooting, no per-tenant infrastructure). Development items present injection, SSRF or a committed secret and ask for the root-cause fix or the right immediate step, while configuration management items turn on preventing unrecorded changes and rebuilding an old release exactly.

Key takeaways
  • The provider isolates its infrastructure; in a shared schema, cache or queue, tenant separation is application code, enforced centrally from the authenticated tenant identity.
  • Against CSP insiders, encrypt sensitive fields with keys held outside the provider; where the provider must have access, make it customer-approved, time-limited and logged to the customer.
  • Platform, control-plane and database logs cannot name end users behind a shared service identity: the application must emit audit events to append-only storage.
  • Residency covers every copy, including replicas, backups, logs, caches and indexes; compelled disclosure follows the provider, so customer-held keys are what make disclosed data unreadable.
  • Threat model during design, update the model whenever architecture or data flows change, and start with flows that cross trust boundaries.
  • STRIDE maps to properties: Spoofing-authentication, Tampering-integrity, Repudiation-non-repudiation, Information disclosure-confidentiality, Denial of service-availability, Elevation of privilege-authorization.
  • DREAD ranks threats but is subjective (fix it with per-factor scoring criteria and calibration); PASTA is the seven-stage risk-centric process; ATASM is Architecture, Threats, Attack Surfaces, Mitigations.
  • Fix injection by separating code from data (bound parameters, argument lists), including inside stored procedures; filters, WAFs and least privilege only compensate.
  • SSRF defence validates the resolved address of every hop and requires tokens for metadata calls; a committed secret is compromised and must be rotated, moved to a secrets manager and scanned for.
  • ASVS is a leveled, cumulative catalogue of testable requirements (Level 2 for most applications); SAFECode guides how to run secure development; CM means reviewed, versioned changes and pinned, tagged builds.

Frequently asked questions

What are the cloud-specific risks in CCSP secure software development?

The CCSP outline names four cloud-specific risks for the secure SDLC: shared technology issues (tenants sharing databases, caches, queues and compute, so the application must enforce tenant isolation), CSP insider threats (provider staff with privileged access, countered with customer-held keys and controlled support access), lack of visibility and control (PaaS, SaaS and serverless hide lower layers, so the application must produce its own audit events), and legal and jurisdiction issues (residency of every data copy and compelled disclosure by the provider's home jurisdiction).

What does each letter of STRIDE stand for?

STRIDE is a threat classification mnemonic: Spoofing (violates authentication), Tampering (integrity), Repudiation (non-repudiation), Information disclosure (confidentiality), Denial of service (availability) and Elevation of privilege (authorization). Teams usually apply it to each element of a data flow diagram, and the matching control restores the violated property, for example signed audit records for repudiation.

What is the difference between STRIDE and DREAD?

STRIDE identifies and classifies threats into six categories, while DREAD rates threats that have already been identified on five factors (damage potential, reproducibility, exploitability, affected users and discoverability) so they can be ranked. DREAD's weakness is subjective scoring; organizations that keep it write explicit criteria for each score level and calibrate their analysts.

How do PASTA and ATASM differ?

PASTA (Process for Attack Simulation and Threat Analysis) is a seven-stage, risk-centric methodology that starts by defining business objectives, uses threat intelligence and attack simulation, and ends with risk and impact analysis. ATASM is a lighter, architecture-first approach in four steps: Architecture, Threats, Attack Surfaces, Mitigations, with no scoring model. PASTA suits business-risk reporting; ATASM suits teaching development teams.

When should threat modeling be done in the SDLC?

Threat modeling is most valuable during design, when flaws can be fixed before code is written, and it should be repeated whenever the architecture, data flows, trust boundaries or dependencies change, such as a new partner integration. Analysis should focus first on data flows that cross trust boundaries. Testing later in the lifecycle verifies the mitigations the threat model identified.

What is the root-cause fix for SQL injection?

The root-cause fix for SQL injection is to use parameterized queries (prepared statements with bound parameters), so the database receives the query structure and the input separately and never interprets input as SQL. Dynamic SQL built inside stored procedures needs the same treatment. Input filtering, edge filtering and least-privilege accounts are defence in depth that limits risk without removing the flaw.

What levels does OWASP ASVS have?

OWASP ASVS 5.0 has three cumulative levels: each includes every requirement of the levels below it, so Level 2 means meeting all Level 1 and Level 2 requirements. Level 1 is the baseline, Level 2 is the level most applications should aim for, and Level 3 is for applications that must demonstrate the highest security. ASVS is used to specify security requirements and verify that an application meets them.

What should a team do when a password is committed to a Git repository?

A secret committed to a repository should be treated as compromised, because version history and every existing clone keep the old value even after the line is deleted. The team should revoke or rotate the secret at its issuer, have the workload retrieve the replacement at runtime from a secrets manager instead of storing it in the repository, and add automated secret scanning on commits to prevent recurrence.

Source

This lesson covers the "Cloud Application Security" domain of the official CCSP exam guide. Vendors revise their guides — check the source for the current version.

Test yourself on this topic
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.

Spotted a mistake in this lesson?