SlideShare uma empresa Scribd logo
1 de 25
Implementatori (engineer, sviluppatori, DevOps, SRE)
Teorici (Architetti, Principal)
Pianificatori (Project Manager, Manager, Principal)
A quale categoria appartenete?
I nostri problemi
● 1500 Licenze Visual Studio
● 100 Teams
● 1350 Applicazioni
● 10 TB in Azure DevOps Databases
● 4000 Git repositories
● 5000 Azure DevOps Pipelines
● 1200 Octopus Deploy Projects
● 1300 Octopus Deploy Tentacles
● Diecine di milioni di righe di codice
● Escluso il mainframe
● Migrazione a Services: 6 mesi, 50 script per 3500 righe
● HIPPA, CCPA, GDPR-UK
● 7 anni di conservazione
giuliovdev@hotmail.com
@giulio_vian
Definizione
● IT governance (ITG) is defined as the processes that ensure the effective and efficient use of IT in
enabling an organization to achieve its goals. IT demand governance (ITDG—what IT should work on)
[…omiss…]. IT supply-side governance (ITSG—how IT should do what it does) is concerned with
ensuring that the IT organization operates in an effective, efficient and compliant fashion, and it is
primarily a CIO responsibility.
— Gartner Information Technology Glossary
● Sicurezza
○ ISO 27001 (Information Security)
○ NIS2 (Network and Information Security Directive)
○ DORA (Digital Operational Resilience Act)
● Privacy
○ GDPR (General Data Protection Regulation)
○ CCPA (California Consumer Privacy Act)
○ HIPAA (Health Insurance Portability and Accountability Act)
● Garanzie
○ PCI DSS (Payment Card Industry Data Security Standard)
○ Basilea II & III
○ SOX (Sarbanes–Oxley Act)
Evitare
incagliarsi
Condotta (Pipeline)
Principi
● Rintracciabilità
○ Non ripudiabilità
● Sicurezza
● Separazione delle responsabilità
○ Separation of Duties
● Visibilità
○ semplicità di utilizzo
Foto: Filippo Poli
Regole, regole
Limitare Actions / Tasks
● AzDO Extensions
● GH Action Sources
● AzDO Decorators 💣
Addomesticare
● Repo templates [GH]
● extends templates [AzDO]
● Workflow starter templates [GH]
● Step templates [AzDO]
● Composite Actions [GH]
● Pipeline Decorators [AzDO] 💣
Uniformare i nomi per ciascuna
categoria di oggetti
Primo passo verso la tracciabilità
Come implementarla in GitHub
Una policy
semplice
Esempio di Actions Workflow
name: Check Repo Names
on:
workflow_dispatch:
jobs:
check-repo-names:
runs-on: ubuntu-latest
steps:
- name: Search for new non-compliant repositories
run: |
$auditResponse = curl --silent --header "Authorization: Bearer ${env:MY_TOKEN}" --header "Accept:
application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28" --request GET --url
"https://api.github.com/${env:ENTERPRISE_ORGANIZATION_FILTER}/audit-
log?phrase=operation:create+action:repo+created:>=${cutoverDate}" | ConvertFrom-Json
$violations = $auditResponse | where { $_.action -eq 'repo.create' } | where { $_.repo -notmatch
$env:VALID_REPONAME_REGEX } | select external_identity_username,org,repo,created_at
foreach ($v in $violations) {
...
$adaptiveCardBody = Invoke-EpsTemplate -Template $env:MSTEAMS_ADAPTIVECARD_TEMPLATE -binding $bindings
$msteamsReponse = Invoke-RestMethod -Uri $env:WEBHOOKURL -Method Post -Body $adaptiveCardBody -ContentType
'application/json'
}
shell: pwsh
env:
MY_TOKEN: ${{ secrets.TOKEN_WITH_AUDIT_LOG_PERMISSION }}
WEBHOOKURL: ${{ secrets.WEBHOOKURL }}
VALID_REPONAME_REGEX: ${{ vars.VALID_REPONAME_REGEX }}
MSTEAMS_ADAPTIVECARD_TEMPLATE: ${{ vars.MSTEAMS_ADAPTIVECARD_TEMPLATE }}
ENTERPRISE_ORGANIZATION_FILTER: ${{ vars.ENTERPRISE_ORGANIZATION_FILTER }}
Esempio di Actions Workflow
$auditResponse = curl --silent --header "Authorization:
Bearer ${env:MY_TOKEN}" --header "Accept:
application/vnd.github+json" --header "X-GitHub-Api-
Version: 2022-11-28" --request GET --url
"https://api.github.com/${env:ENTERPRISE_ORGANIZATION_FILTER
}/audit-
log?phrase=operation:create+action:repo+created:>=${cutoverD
ate}" | ConvertFrom-Json
$violations = $auditResponse | where { $_.action -eq
'repo.create' } | where { $_.repo -notmatch
$env:VALID_REPONAME_REGEX } | select
external_identity_username,org,repo,created_at
Esempio di notifica
Si lascia al lettore il facile
compito di inviare una mail con
allegato all’indirizzo aziendale,
in quanto di semplice soluzione
Quale toolchain fu usata
● Una SBOM è impraticabile
● DYI
● Per Hosted Agents/Runners
○ ImageOS ubuntu22 / win22
○ ImageVersion 20240407.1.0
○ https://github.com/actions/runner-images/releases
Foto: Dave & Margie Hill Kleerup
Confidenza
↑ CERTO
firma crittografica storicizzata
con chiavi multiple
↑ FIDUCIA
registrazioni alterabili da un
amministratore
↓ DEBOLE
registrazioni facilmente alterabili
da chiunque abbia accesso
↓ NESSUNA
Audit Logs
● Finestra di 90gg
● Streaming
○ Splunk
○ Azure Events
○ Azure Monitor [AzDO]
○ AWS S3 / Az Blob [GH]
○ DataDog [GH]
Policies tipiche per SDLC
● No a vulnerabilità critiche o di grado elevato
● 100% dei test eseguiti con successo
● No a segnalazioni di qualità del codice di grado elevato
● Esame di sicurezza SAST / SCA / DAST non antecedente i tre giorni al rilascio
● Test di performance entro un margine del 20% dall’obiettivo
● Codice rivisto da una persona diversa dall’autore
● Separazione delle responsabilità
○ Approvazione al rilascio da persona diversa dall’autore
○ Separation of Duties
Policies “esterne” al SDLC
● Architetturali
○ Applicazioni esposte ad Internet devono usare XYZ per l’autenticazione
● Configurazione
○ La scadenza dei certificati SSL non può essere superiore all’anno
Violazioni permesse
● Situazioni d’emergenza dove si permette una temporanea inosservanza delle regole
● Per ogni policy deve essere possible registrare la violazione
○ Chi l’ha autorizzata, quando, perché
In sintesi
Ogni regola (policy) ha la funzione di limitare i rischi
Difficile farlo senza intaccare la velocità
e la semplicità operativa
Cardini nella prevenzione e nel riconoscimento
Riferimenti
https://www.gartner.com/en/information-technology/glossary/it-governance
https://billbensing.com/
https://itrevolution.com/product/devops-automated-governance-reference-architecture/
https://www.infoq.com/articles/enterprise-github-actions/
https://docs.github.com/en/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-
enterprise/enforcing-policies-for-github-actions-in-your-enterprise
https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-
webhook?tabs=newteams%2Cdotnet
https://www.powershellgallery.com/packages/EPS/1.0.0
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates
https://learn.microsoft.com/en-us/azure/devops/extend/develop/add-pipeline-decorator
https://dev.to/n3wt0n/github-composite-actions-vs-reusable-workflows-updated-2023-bl8
https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
https://docs.github.com/en/enterprise-cloud@latest/actions/using-workflows/reusing-workflows
https://docs.github.com/en/enterprise-cloud@latest/repositories/creating-and-managing-repositories/creating-a-
template-repository
https://docs.github.com/en/enterprise-cloud@latest/actions/managing-workflow-runs/reviewing-deployments
https://www.youtube.com/watch?v=dNl3qpJZ12w
Riferimenti
https://github.blog/2023-04-05-building-organization-wide-governance-and-re-use-for-ci-cd-and-automation-with-
github-actions/
https://docs.github.com/en/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise
https://www.youtube.com/watch?v=dNl3qpJZ12w (Scalable governance policies across your GitHub
organization)
Shift-left approach (GitHub)
Lessons Learned from Enterprise Usage of GitHub
Actions - InfoQ

Mais conteúdo relacionado

Semelhante a Come implementare la governance nella vostra piattaforma e lavorare felici senza l'audit tra i piedi

Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)
Fabio Armani
 

Semelhante a Come implementare la governance nella vostra piattaforma e lavorare felici senza l'audit tra i piedi (20)

Costruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsCostruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio Devops
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)
 
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioniOpen Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
 
WSO2 ITALIA SMART TALK #5 - APIFICATION: OPPORTUNITÀ DELLE ORGANIZZAZIONI MOD...
WSO2 ITALIA SMART TALK #5 - APIFICATION: OPPORTUNITÀ DELLE ORGANIZZAZIONI MOD...WSO2 ITALIA SMART TALK #5 - APIFICATION: OPPORTUNITÀ DELLE ORGANIZZAZIONI MOD...
WSO2 ITALIA SMART TALK #5 - APIFICATION: OPPORTUNITÀ DELLE ORGANIZZAZIONI MOD...
 
Praticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesPraticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web Services
 
Progettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSProgettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWS
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native EnterpriseRed Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureCDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
 
Enabling DevOps for Machine Learning with Azure Pipelines
Enabling DevOps for Machine Learning with Azure PipelinesEnabling DevOps for Machine Learning with Azure Pipelines
Enabling DevOps for Machine Learning with Azure Pipelines
 
DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017
 

Mais de Giulio Vian

Mais de Giulio Vian (20)

Is Technical Debt the right metaphor for Continuous Update?
Is Technical Debt the right metaphor for Continuous Update?Is Technical Debt the right metaphor for Continuous Update?
Is Technical Debt the right metaphor for Continuous Update?
 
Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022
Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022
Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022
 
Software rotting - DevOpsCon Berlin
Software rotting - DevOpsCon BerlinSoftware rotting - DevOpsCon Berlin
Software rotting - DevOpsCon Berlin
 
Software rotting
Software rottingSoftware rotting
Software rotting
 
Software rotting - 28 Apr - DeveloperWeek Europe 2022
Software rotting - 28 Apr - DeveloperWeek Europe 2022Software rotting - 28 Apr - DeveloperWeek Europe 2022
Software rotting - 28 Apr - DeveloperWeek Europe 2022
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
A map for DevOps on Microsoft Stack - MS DevSummit
A map for DevOps on Microsoft Stack - MS DevSummitA map for DevOps on Microsoft Stack - MS DevSummit
A map for DevOps on Microsoft Stack - MS DevSummit
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps Serie
 
Database deployments - dotnetsheff
Database deployments - dotnetsheffDatabase deployments - dotnetsheff
Database deployments - dotnetsheff
 
Database deployment: still hard after all these years - Data Saturday #1
Database deployment: still hard after all these years - Data Saturday #1Database deployment: still hard after all these years - Data Saturday #1
Database deployment: still hard after all these years - Data Saturday #1
 
Pipeline your Pipelines - 2020 All Day DevOps
Pipeline your Pipelines - 2020 All Day DevOpsPipeline your Pipelines - 2020 All Day DevOps
Pipeline your Pipelines - 2020 All Day DevOps
 
How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020
How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020
How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020
 
Top 10 pipeline mistakes - dotnetsheff
Top 10 pipeline mistakes - dotnetsheffTop 10 pipeline mistakes - dotnetsheff
Top 10 pipeline mistakes - dotnetsheff
 
Introduction to Terraform with Azure flavor
Introduction to Terraform with Azure flavorIntroduction to Terraform with Azure flavor
Introduction to Terraform with Azure flavor
 
How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...
How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...
How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...
 
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
 
Pipeline your pipelines!
Pipeline your pipelines!Pipeline your pipelines!
Pipeline your pipelines!
 
Why is DevOps vital for my company’s business
Why is DevOps vital for my company’s businessWhy is DevOps vital for my company’s business
Why is DevOps vital for my company’s business
 
Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)
 

Come implementare la governance nella vostra piattaforma e lavorare felici senza l'audit tra i piedi

Notas do Editor

  1. Chiaramente una semplificazione perché: ci troviamo di fronte ad un grafo diretto con cicli manca il flusso in ingress Analogia della condotta: Il flusso è incanalato in tubi (governance) Controllato da valvole Serbatoi di accumulo Punti di distribuzione Minimizzare le perdite (shift-left)
  2. Scroll Fragment of The Odyssey (Roman, fr Egypt, 100-1 BC). Papyrus. A fragment of Book 10, ll. 397-404 (in the palace of Circe)