{"id":6525,"date":"2023-12-08T14:54:23","date_gmt":"2023-12-08T13:54:23","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=6525"},"modified":"2023-12-07T11:15:36","modified_gmt":"2023-12-07T10:15:36","slug":"incident-management-in-cloud-strumenti-e-best-practice-per-identificare-analizzare-e-risolvere-problemi-tempestivamente","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/incident-management-in-cloud-strumenti-e-best-practice-per-identificare-analizzare-e-risolvere-problemi-tempestivamente\/","title":{"rendered":"Incident management in Cloud: strumenti e best practice per identificare, analizzare e risolvere problemi tempestivamente"},"content":{"rendered":"\n
“Io non complico le cose. Sono cos\u00ec, di per s\u00e9”<\/em> – Martin Riggs, Arma Letale<\/p>\n\n\n\n Progettiamo architetture tenendo conto di tutte le best practice, formiamo i nostri collaboratori per far acquisire loro le migliori competenze e documentiamo tutte le nostre infrastrutture. MA\u2026 A volte qualcosa va ancora storto, e la parola \u201cincidente\u201d risuona nelle nostre orecchie.<\/p>\n\n\n\n Ma cos\u2019\u00e8 un incidente?<\/p>\n\n\n\n Un incidente \u00e8 un evento che riduce la qualit\u00e0 o le prestazioni di un servizio IT, ne causa l’interruzione o pone un rischio per la sicurezza. Pu\u00f2 essere il malfunzionamento di un server, un guasto di rete, un\u2019infezione da malware o una violazione dei dati (data breach).<\/p>\n\n\n\n Anche se facciamo tutto il possibile per fare in modo che non si verifichino e per essere sicuri di esporci al minimo rischio, gli incidenti IT sono inevitabili e possono avere un impatto significativo sulle performance, sulla reputazione e sull\u2019esperienza degli utenti. Gestire gli incidenti non \u00e8 una competenza facile da acquisire, ma \u00e8 necessario acquisirla nel corso delle nelle nostre carriere lavorative.<\/p>\n\n\n\n In questo articolo vedremo gli elementi chiave e le migliori pratiche per la gestione degli incidenti. Vi presenteremo anche AWS Systems Manager Incident Manager, una funzionalit\u00e0 di AWS Systems Manager che aiuta a prepararsi ed a rispondere agli incidenti applicativi e infrastrutturali.<\/p>\n\n\n\n Abbiamo detto che la gestione degli incidenti \u00e8 fondamentale per offrire un servizio affidabile e sicuro. Si tratta di un processo che aiuta a identificare, analizzare e risolvere qualsiasi evento o problema imprevisto che influisce sulla qualit\u00e0, sulla disponibilit\u00e0 o sulle prestazioni percepite dagli utenti.<\/p>\n\n\n\n Gli incident possono avere diversi livelli di gravit\u00e0 e impatto a seconda del tipo di servizio, del numero di utenti coinvolti, della durata dell\u2019interruzione e delle possibili conseguenze. <\/p>\n\n\n\n Un processo di gestione degli incidenti mira a ripristinare la normale operativit\u00e0 del servizio il pi\u00f9 rapidamente possibile. Implementando un processo efficace, possiamo migliorare l’esperienza utente, prevenire gli incidenti e ridurre (o eliminare) il downtime, e il tempo di risoluzione.<\/p>\n\n\n\n Un processo di incident management tipicamente contiene queste fasi:<\/p>\n\n\n\n Un altro punto critico consiste nell’identificare i ruoli responsabili della gestione di ogni fase. Questo dipende dalla dimensione e dalla struttura dell\u2019organizzazione e dalla complessit\u00e0 e natura dell\u2019incidente. Tuttavia, ci sono alcuni ruoli e responsabilit\u00e0 comuni che si trovano nella maggior parte dei team, ad esempio: <\/p>\n\n\n\n A questo punto dobbiamo trovare una soluzione per semplificarci la vita: Incident Manager, con la sua integrazione con gli altri servizi AWS, pu\u00f2 aiutarci nelle varie fasi.<\/p>\n\n\n\n Vediamo prima come pu\u00f2 mappare le fasi del processo.<\/p>\n\n\n\n Possiamo definire contatti<\/strong> e contact channels<\/strong> da utilizzare negli engagement plans<\/strong> per coinvolgere le persone giuste mantenendo una comunicazione comune chiara e sincronizzata: \u00e8 sempre la migliore strategia quando si affrontano i problemi. <\/p>\n\n\n\n Con le on-call schedules<\/strong> e gli escalation plans<\/strong> si possono ovviamente definire gli orari di reperibilit\u00e0 e le dovute escalation delle notifiche, quando necessario.<\/p>\n\n\n\n Possiamo anche definire degli Automation Runbooks<\/strong> che sfruttano AWS Systems Manager Automation per automatizzare i task operativi comuni ed evitare operazioni manuali (che possono essere soggette a errori). Sono utili per automatizzare le operazioni di risposta agli incidenti e fornire informazioni dettagliate agli operatori.<\/p>\n\n\n\n Un response plan <\/strong>collega tutti gli elementi di cui abbiamo parlato, definendo cosa deve essere fatto quando si verifica un incidente, come ad esempio chi \u00e8 tenuto a rispondere, il canale di comunicazione da utilizzare e le azioni automatiche da intraprendere.<\/p>\n\n\n\n Gli incidents<\/strong> possono essere creati in modo automatico, ad esempio sfruttando le regole di EventBridge, i risultati di SecurityHub e gli allarmi di CloudWatch.<\/p>\n\n\n\n Quando si verifica un incidente, AWS Incident Mkanager raccoglie automaticamente i dati sulle risorse AWS interessate, mostrandoli nella scheda Elementi correlati. \u00c8 possibile anche usare un runbook nel response plan per risolvere il problema. <\/p>\n\n\n\n I dati raccolti sulle risorse AWS interessate possono essere passati al runbook, che potr\u00e0 usarli per cercare di risolvere automaticamente il problema.<\/p>\n\n\n\n Vediamo un semplice caso d\u2019uso, che pu\u00f2 essere poi adattato a diverse esigenze.<\/p>\n\n\n\n Monitoreremo una VPN site-to-site per fare in modo che quando un tunnel non risulta operativo vengano eseguite queste azioni: <\/p>\n\n\n\n Questo \u00e8 un esempio di template; naturalmente deve essere poi esteso ed adattato per la configurazione reale<\/strong>:<\/p>\n\n\n\nIncident Management<\/h2>\n\n\n\n
\n
\n
\n
AWSTemplateFormatVersion: 2010-09-09\nDescription: A template that creates a CloudWatch alarm for a site-to-site VPN connection and an incident response plan for AWS Systems Manager Incident Manager.\n\nParameters:\n VpnConnectionId:\n Type: String\n Description: The ID of the VPN connection to monitor.\n AllowedPattern: ^vpn-[0-9a-f]{8,17}$\n ConstraintDescription: Must be a valid VPN connection ID.\n\nResources:\n VpnAlarm:\n Type: AWS::CloudWatch::Alarm\n Properties:\n AlarmName: !Sub \"VPN connection ${VpnConnectionId} status alarm\"\n AlarmDescription: An alarm that triggers when the VPN connection status is DOWN.\n Namespace: AWS\/VPN\n MetricName: TunnelState\n Dimensions:\n - Name: VpnId\n Value: !Ref VpnConnectionId\n Statistic: Minimum\n Period: 60\n EvaluationPeriods: 1\n Threshold: 1\n ComparisonOperator: LessThanThreshold\n AlarmActions:\n - !Ref IncidentResponsePlan\n\n IncidentResponsePlan:\n Type: AWS::SSMIncidents::ResponsePlan\n Properties:\n Name: !Sub \"VPN connection ${VpnConnectionId} incident response plan\"\n DisplayName: !Sub \"VPN connection ${VpnConnectionId} incident response plan\"\n ChatChannel:\n ChatbotSns: !Ref NotificationTopic\n IncidentTemplate:\n Title: !Sub \"VPN connection ${VpnConnectionId} is DOWN\"\n Impact: 3\n Summary: \"The VPN connection to the remote site is not working.\"\n DedupeString: !Sub \"VPN connection ${VpnConnectionId} is DOWN\"\n Actions:\n - SsmAutomation:\n RoleArn: !GetAtt AutomationRole.Arn\n DocumentName: AWSSupport-TroubleshootVPN\n DocumentVersion: \"1\"\n Parameters:\n VpnConnectionId: !Ref VpnConnectionId\n\n NotificationTopic:\n Type: AWS::SNS::Topic\n Properties:\n DisplayName: \"VPN connection status notification\"\n TopicName: \"vpn-connection-status-notification\"\n \n SlackChannelConfiguration:\n Type: AWS::Chatbot::SlackChannelConfiguration\n Properties:\n ConfigurationName: \"vpn-connection-status-slack\"\n IamRoleArn: !GetAtt ChatbotRole.Arn\n SlackChannelId: \"YourChannelID\"\n SlackWorkspaceId: \"SlackWorkspace\"\n SnsTopicArns:\n - !Ref NotificationTopic\n\n AutomationRole:\n Type: AWS::IAM::Role\n Properties:\n AssumeRolePolicyDocument:\n Version: \"2012-10-17\"\n Statement:\n - Effect: Allow\n Principal:\n Service: ssm.amazonaws.com\n Action: sts:AssumeRole\n Path: \"\/\"\n Policies:\n - PolicyName: \"vpn-troubleshoot-policy\"\n PolicyDocument:\n Version: \"2012-10-17\"\n Statement:\n - Effect: Allow\n Action:\n - ec2:DescribeVpnConnections\n - ec2:DescribeVpnGateways\n - ec2:DescribeCustomerGateways\n - ec2:ResetVpnConnection\n Resource: \"*\"\n\n ChatbotRole:\n Type: AWS::IAM::Role\n Properties:\n AssumeRolePolicyDocument:\n Version: \"2012-10-17\"\n Statement:\n - Effect: Allow\n Principal:\n Service: chatbot.amazonaws.com\n Action: sts:AssumeRole\n Path: \"\/\"\n Policies:\n - PolicyName: \"chatbot-policy\"\n PolicyDocument:\n Version: \"2012-10-17\"\n Statement:\n - Effect: Allow\n Action:\n - cloudwatch:DescribeAlarms\n - cloudwatch:ListMetrics\n - cloudwatch:GetMetricData\n - cloudwatch:GetMetricStatistics\n - cloudwatch:PutMetricData\n - ec2:DescribeInstances\n - ec2:DescribeRegions\n - ec2:DescribeVpnConnections\n - ec2:DescribeVpnGateways\n - ec2:DescribeCustomerGateways\n - ec2:ResetVpnConnection\n - sns:ListTopics\n - sns:ListSubscriptionsByTopic\n - sns:Publish\n Resource: \"*\"\n<\/code><\/pre>\n\n\n\n