Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk8 min

Dal laptop alla produzione: guida pratica a deploy, sicurezza e automazione per web app full-stack

Una guida operativa al percorso dal commit al deploy: build verificabili, ambienti separati, sicurezza della pipeline, gestione dei segreti e credenziali cloud a durata limitata.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Un’applicazione full-stack è pronta per la produzione quando ogni rilascio può essere ricondotto a una revisione di codice precisa, viene costruito e testato da una pipeline automatica e arriva all’ambiente finale con permessi, segreti e approvazioni controllati. Non serve una piattaforma specifica per ottenere questo risultato: servono un flusso ripetibile, ambienti separati e una pipeline trattata come parte sensibile dell’infrastruttura. Di seguito il percorso dal commit al deploy, con i punti in cui la sicurezza entra davvero nel flusso.

Che cosa deve poter dimostrare un rilascio

Prima di scegliere strumenti, un rilascio va valutato con tre domande: quale revisione di codice è stata costruita, quali controlli automatici sono passati e quale artefatto è finito in produzione. Se una di queste risposte richiede di chiedere a qualcuno quale macchina ha fatto la build o di cercare un messaggio in chat, il processo non è ripetibile e non è verificabile.

As an Amazon Associate I earn from qualifying purchases.

La documentazione GitHub descrive il continuous deployment come l’uso dell’automazione per pubblicare e distribuire aggiornamenti software. In pratica, questo significa che la macchina, non una persona con un terminale aperto, deve eseguire build, test e distribuzione, e che ogni passaggio lascia una traccia.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Dal commit a un artefatto verificabile

Il flusso minimo è questo. Ogni passaggio produce un risultato che il successivo può verificare.

  1. Modifica e pull request. Lavora su un branch e apri una pull request. GitHub Actions può avviare un workflow su eventi come push, pull request o avvio manuale, dichiarati nella sezione on: del file YAML sotto .github/workflows/.
  2. Build dell’artefatto. Compila e impacchetta l’applicazione in un artefatto il cui nome o tag contenga l’identificativo del commit, per esempio ${{ github.sha }}. Un artefatto senza un legame con il commit rende impossibile sapere cosa sta girando in produzione.
  3. Test prima del deploy. Esegui test unitari e di integrazione in job separati e collegali con needs:, in modo che il job di deploy non parta se un test fallisce.
  4. Pubblicazione in un archivio. Carica l’artefatto in un registry o in uno storage di build, con un tag che non venga riscritto.
  5. Promozione, non nuova build. Il deploy verso staging e poi verso produzione riceve l’identificativo dell’artefatto già testato e non ricostruisce il codice. Ricostruire in ogni ambiente è una delle cause più comuni di differenze tra ciò che è stato testato e ciò che gira davvero.

I test confermano il comportamento che verificano. Non dimostrano l’assenza di bug né la sicurezza del sistema: vanno letti come un controllo di processo, non come una garanzia.

Separare staging e produzione

GitHub Actions rappresenta i target di deploy come environments, configurabili da Settings > Environments nel repository. Su ogni environment è possibile definire regole di protezione, restrizioni sui branch, segreti dedicati e limiti di concorrenza. Le regole disponibili dipendono dal piano dell’account e alcune funzionalità sono in anteprima o cambiano nel tempo: verifica la documentazione corrente prima di basare un processo su una singola opzione.

La tabella seguente mostra una configurazione di riferimento. Non descrive il comportamento predefinito di GitHub, ma le scelte raccomandabili per tenere separati i due ambienti.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Controllo Staging (configurazione consigliata) Produzione (configurazione consigliata)
Avvio del deploy Automatico, dopo build e test superati sul branch di integrazione Solo promozione di un artefatto già testato, avviata manualmente o da una regola esplicita
Branch ammessi Branch di integrazione Solo branch o tag di rilascio protetti
Approvazione Non richiesta Richiesta da reviewer designati prima dell’esecuzione del job
Segreti Credenziali di test, separate da quelle di produzione Credenziali di produzione visibili solo al relativo environment
Concorrenza Un solo deploy alla volta per environment; i run in attesa possono essere sostituiti Un solo deploy alla volta per environment; un run in corso non viene mai interrotto

Per la concorrenza, il gruppo va definito a livello di workflow o di job. Per la produzione, l’opzione che evita l’interruzione di un deploy già partito è questa:

concurrency:
  group: deploy-production
  cancel-in-progress: false

Con cancel-in-progress: false un deploy in corso non viene interrotto da uno successivo: il secondo attende. Questo evita rilasci a metà, al prezzo di una coda più lunga.

Sicurezza della pipeline

Una pipeline esegue codice che può finire in produzione e può accedere a segreti e ambienti reali, quindi è una superficie d’attacco. OWASP tratta il CI/CD come un ambiente da proteggere con configurazione sicura, revisioni del codice, build isolate, logging, scansioni e controlli prima del rilascio. Nella pagina CI/CD Security, OWASP definisce il least privilege citando il NIST con questa formulazione: «The principle that a security architecture is designed so that each entity is granted the minimum system resources and authorizations that the entity needs to perform its function». Il testo non è attribuito a una persona specifica, quindi va citato come definizione e non come parola di un autore.

Revisione dei file workflow

Un file workflow modificato in una pull request può cambiare cosa viene eseguito e con quali segreti. Tratta le modifiche a .github/workflows/ come modifiche al codice di produzione: richiedi revisione, eventualmente tramite un file CODEOWNERS che assegni quella cartella a un gruppo ristretto. Presta attenzione ai trigger che eseguono codice proveniente da fork con accesso ai segreti: le pull request da fork ricevono per default un token ridotto e nessun segreto, e l’uso di trigger che aggirano questa protezione va valutato caso per caso.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Permessi minimi del token

Il token che GitHub Actions assegna ai job può essere limitato. Parti da permessi di sola lettura a livello di workflow e concedi scritture solo dove servono, per singolo job:

Rank #3
Sale
Web Design with HTML, CSS, JavaScript and jQuery Set
  • Brand: Wiley
  • Set of 2 Volumes
  • A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
permissions:
  contents: read

jobs:
  release:
    permissions:
      contents: write
    runs-on: ubuntu-latest

Il job di test non dovrebbe mai avere permessi di scrittura. Solo il job che pubblica una release o un artefatto ne ha bisogno.

Scansioni con soglie definite

OWASP raccomanda scansioni statiche e dinamiche, scansioni di configurazione dell’infrastruttura come codice, logging degli eventi di sicurezza e approvazione prima dei deploy in produzione. Attivare tutti gli scanner insieme, però, produce spesso rumore che viene ignorato. Per ogni strumento definisci in anticipo quali risultati bloccano il rilascio, per esempio vulnerabilità critiche per cui esiste già una correzione, e quali generano solo un avviso da esaminare. Una soglia scritta nel workflow è più affidabile di una decisione presa durante l’emergenza.

Segreti e credenziali cloud

I segreti tipici di una web app full-stack sono token di registry, password di database, chiavi API e credenziali con cui il workflow pubblica l’applicazione. Non devono comparire nel repository, nei manifest di configurazione, nelle immagini o nell’output dei job.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Iniezione del segreto solo dove serve

Il segreto va definito nell’environment corretto e referenziato solo nel job che ne ha bisogno:

jobs:
  deploy:
    environment: production
    runs-on: ubuntu-latest
    steps:
      - name: Deploy
        run: ./scripts/deploy.sh
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}

GitHub maschera nei log i valori dei segreti, ma questo non basta. Un comando che stampa il segreto codificato, per esempio in base64, produce un output che il mascheramento non riconosce. Il controllo efficace è non stampare mai il valore, non l’affidamento sul mascheramento.

Credenziali cloud a durata limitata

Le chiavi cloud permanenti salvate come segreti sono il punto di maggior rischio, perché restano valide finché qualcuno non le revoca. Dove il provider lo supporta, OIDC permette al workflow di ottenere un token a vita breve dal provider, senza conservare una chiave statica nel repository. Per farlo servono due condizioni: il job deve dichiarare permissions: id-token: write, e il provider deve essere configurato per fidarsi dell’identità GitHub di quel repository e di quell’environment. Non tutti i provider e non tutti i servizi supportano questo meccanismo; la presenza di OIDC va verificata caso per caso nella documentazione del provider.

Dove resta necessario un segreto statico, applica due regole: il minimo privilegio sull’account che lo usa e una rotazione programmata, con un processo per revocarlo immediatamente se compare in un log o in una pull request.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Protezione degli account che possono cambiare il rilascio

Non sono solo i segreti a contare. Chi può fare push su un branch protetto, modificare un workflow o approvare un deploy in produzione ha un potere equivalente a quello della pipeline. OWASP raccomanda l’autenticazione a più fattori dove possibile. Per gli account con questi permessi, un metodo resistente al phishing, come una chiave di sicurezza FIDO2, è una scelta da valutare. La compatibilità dipende dal provider di identità, dal dispositivo e dal metodo configurato: verificala prima di renderla obbligatoria per il team.

Configurazione e provenienza dell’artefatto al deploy

Prima di eseguire il deploy, la pipeline dovrebbe controllare che l’artefatto corrisponda al commit approvato. Il controllo più semplice è confrontare il digest o il checksum dell’artefatto con quello registrato al momento della build. Dove la piattaforma supporta attestazioni di provenienza, queste rendono verificabile non solo il contenuto dell’artefatto ma anche il workflow che lo ha prodotto.

Le differenze tra staging e produzione dovrebbero stare in configurazione esterna: variabili dell’environment, file di configurazione versionati separatamente o servizi di configurazione del provider. Le modifiche manuali fatte direttamente sul server sono la fonte più frequente di deriva, cioè di ambienti che non corrispondono più a ciò che è descritto nel repository. Ogni differenza che non può essere descritta in configurazione è un punto da documentare o eliminare.

I segreti vanno forniti al runtime da un meccanismo fidato, non inseriti nell’immagine o nell’artefatto durante la build. Un’immagine che contiene una credenziale resta compromessa anche dopo che la credenziale viene cambiata, perché la copia è già stata distribuita.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ciò che dipende dalla piattaforma e dal tipo di applicazione

Rollback, backup, migrazioni del database, monitoraggio e test di ripristino non si possono risolvere con un’unica ricetta. Il comportamento dipende dalla piattaforma di hosting, dal tipo di applicazione e dai dati che gestisce. Una migrazione che rimuove una colonna richiede, per esempio, una strategia in più fasi, con una versione dell’applicazione che tollera entrambi gli schemi, mentre un servizio senza stato può tornare alla versione precedente con un nuovo deploy. Per i dettagli operativi, la documentazione del provider e della piattaforma è la fonte da seguire.

Una fonte specifica sull’argomento è la guida OWASP DevSecOps, che indica tra le misure per la fase di deploy l’uso di identità di workload, credenziali temporanee, verifica degli artefatti e riduzione della deriva tra ambienti. Le scelte concrete restano a carico del team e della piattaforma adottata.

Le funzionalità di GitHub Actions citate in questo articolo, incluse le regole degli environment e la gestione della concorrenza, possono cambiare o dipendere dal piano. Prima di adottarle in un processo di produzione, confronta il comportamento con la documentazione GitHub Docs aggiornata.

Fonti usate per questo articolo: GitHub Docs, pagine su continuous deployment, GitHub Actions ed environments; OWASP, pagina CI/CD Security; OWASP DevSecOps Guideline.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.