

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Implementa controlli di accesso basati su attributi investigativi per sottoreti pubbliche utilizzando AWS Config
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config"></a>

*Alberto Menéndez, Amazon Web Services*

## Riepilogo
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-summary"></a>

Le architetture di rete periferiche distribuite si basano sulla sicurezza perimetrale della rete che funziona insieme ai carichi di lavoro nei loro cloud privati virtuali (). VPCs Ciò offre una scalabilità senza precedenti rispetto all'approccio centralizzato più comune. Sebbene l'implementazione di sottoreti pubbliche negli account di carico di lavoro possa offrire vantaggi, introduce anche nuovi rischi per la sicurezza perché aumenta la superficie di attacco. Si consiglia di distribuire solo risorse Elastic Load Balancing, come Application Load Balancer o gateway NAT nelle relative sottoreti pubbliche. VPCs L'utilizzo di sistemi di bilanciamento del carico e gateway NAT in sottoreti pubbliche dedicate consente di implementare un controllo granulare del traffico in entrata e in uscita.

Ti consigliamo di implementare controlli sia preventivi che investigativi per limitare i tipi di risorse che possono essere distribuite nelle sottoreti pubbliche. [Per ulteriori informazioni sull'utilizzo del controllo degli accessi basato sugli attributi (ABAC) per implementare controlli preventivi per le sottoreti pubbliche, consulta Implementare controlli di accesso preventivi basati sugli attributi per le sottoreti pubbliche.](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-preventative-attribute-based-access-controls-for-public-subnets.html) Sebbene efficaci per la maggior parte delle situazioni, questi controlli preventivi potrebbero non risolvere tutti i possibili casi d'uso. Pertanto, questo modello si basa sull'approccio ABAC e consente di configurare gli avvisi sulle risorse non conformi distribuite nelle sottoreti pubbliche. La soluzione verifica se le interfacce di rete elastiche appartengono a una risorsa non consentita nelle sottoreti pubbliche.

[A tal fine, questo modello utilizza [regole AWS Config personalizzate](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html) e ABAC.](https://aws.amazon.com/identity/attribute-based-access-control/) La regola personalizzata elabora la configurazione di un'interfaccia di rete elastica ogni volta che viene creata o modificata. A un livello elevato, questa regola esegue due azioni per determinare se l'interfaccia di rete è conforme:

1. Per determinare se l'interfaccia di rete rientra nell'ambito della regola, la regola verifica se la sottorete ha [AWS tag](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) specifici che indicano che si tratta di una sottorete pubblica. Ad esempio, questo tag potrebbe essere. `IsPublicFacing=True`

1. Se l'interfaccia di rete è distribuita in una sottorete pubblica, la regola verifica chi Servizio AWS ha creato questa risorsa. Se la risorsa non è una risorsa Elastic Load Balancing o un gateway NAT, la contrassegna come non conforme.

## Prerequisiti e limitazioni
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ AWS Config, [configurato](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html) nell'account del carico di lavoro
+ Autorizzazioni per distribuire le risorse richieste nell'account del carico di lavoro
+ Un VPC con sottoreti pubbliche
+ Tag applicati correttamente per identificare le sottoreti pubbliche di destinazione
+ (Facoltativo) Un'organizzazione in AWS Organizations
+ (Facoltativo) Un account di sicurezza centrale che funge da amministratore delegato per AWS Config e AWS Security Hub CSPM

## Architecture
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-architecture"></a>

**Architettura Target**

![\[Utilizzo di una regola personalizzata AWS Config per rilevare risorse non conformi nelle sottoreti pubbliche\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/85d54ead-7f00-4381-89fb-cffe307c4cfc/images/a8c19913-d260-4b70-96ba-732bb1b9881f.png)


Il diagramma illustra quanto segue:

1. Quando una risorsa di elastic network interface (`AWS::EC2::NetworkInterface`) viene distribuita o modificata, AWS Config acquisisce l'evento e la configurazione.

1. AWS Config confronta questo evento con la regola personalizzata utilizzata per valutare la configurazione.

1. Viene richiamata la AWS Lambda funzione associata a questa regola personalizzata. La funzione valuta la risorsa e applica la logica specificata per determinare se la configurazione della risorsa è`COMPLIANT`, `NON_COMPLIANT` o. `NOT_APPLICABLE`

1. Se si determina che una risorsa lo è`NON_COMPLIANT`, AWS Config invia un avviso tramite Amazon Simple Notification Service (Amazon SNS).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html)

**Logica di valutazione della funzione Lambda**

Il diagramma seguente mostra la logica applicata dalla funzione Lambda per valutare la conformità dell'elastic network interface.

![\[Diagramma della logica delle funzioni Lambda\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/85d54ead-7f00-4381-89fb-cffe307c4cfc/images/9575e20f-142b-4eba-b34d-3b9bda163144.png)


**Automazione e scalabilità**

Questo schema è una soluzione investigativa. È inoltre possibile integrarlo con una regola di correzione per risolvere automaticamente le risorse non conformi. Per ulteriori informazioni, vedere [Risanamento delle risorse non conformi con le regole. AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/remediation.html)

È possibile scalare questa soluzione in base a:
+ Imposizione dell'applicazione dei AWS tag corrispondenti stabiliti per identificare le sottoreti rivolte al pubblico. Per ulteriori informazioni, consulta le politiche relative ai [tag](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html) nella documentazione. AWS Organizations 
+ Configurazione di un account di sicurezza centralizzato che applichi la regola AWS Config personalizzata a ogni account di carico di lavoro dell'organizzazione. Per ulteriori informazioni, consulta [Automatizzare la conformità alla configurazione su larga scala in AWS](https://aws.amazon.com/blogs/mt/automate-configuration-compliance-at-scale-in-aws/) (AWS post del blog).
+ Integrazione AWS Config con AWS Security Hub CSPM per acquisire, centralizzare e notificare su larga scala. Per ulteriori informazioni, consulta [Configurazione AWS Config nella documentazione](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-prereq-config.html). AWS Security Hub CSPM 

## Tools (Strumenti)
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-tools"></a>
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)fornisce una visualizzazione dettagliata delle risorse presenti Account AWS e di come sono configurate. Ti aiuta a identificare in che modo le risorse sono correlate tra loro e in che modo le loro configurazioni sono cambiate nel tempo.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuisce il traffico di applicazioni o di rete in entrata su più destinazioni. Ad esempio, puoi distribuire il traffico tra istanze Amazon Elastic Compute Cloud (Amazon EC2), contenitori e indirizzi IP in una o più zone di disponibilità.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail. 
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ti aiuta a lanciare AWS risorse in una rete virtuale che hai definito. Questa rete virtuale è simile a una comune rete da gestire all'interno del proprio data center, ma con i vantaggi dell'infrastruttura scalabile di AWS.

## Best practice
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-best-practices"></a>

Per altri esempi e best practice per lo sviluppo di AWS Config regole personalizzate, consulta il [AWS Config Rules Repository](https://github.com/awslabs/aws-config-rules) ufficiale su. GitHub

## Epiche
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-epics"></a>

### Implementazione della soluzione
<a name="deploy-the-solution"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Creazione della funzione Lambda | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 
| Aggiungi le autorizzazioni al ruolo di esecuzione della funzione Lambda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 
| Recupera la funzione Lambda Amazon Resource Name (ARN). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 
| Crea la regola AWS Config personalizzata. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 
| Configura le notifiche. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 

### Test della soluzione
<a name="test-the-solution"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una risorsa conforme. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 
| Crea una risorsa non conforme. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 
| Crea una risorsa non applicabile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.html) | Informazioni generali su AWS | 

## Risorse correlate
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-resources"></a>

**AWS documentazione**
+ [Configurazione AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)
+ [AWS Config regole personalizzate](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html)
+ [ABAC per AWS](https://aws.amazon.com/identity/attribute-based-access-control/)
+ [Implementa controlli di accesso preventivi basati sugli attributi per le sottoreti pubbliche](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-preventative-attribute-based-access-controls-for-public-subnets.html)

** AWS Altre risorse**
+ [Automatizza la conformità alla configurazione su larga scala in AWS](https://aws.amazon.com/blogs/mt/automate-configuration-compliance-at-scale-in-aws/)
+ [Architetture di ispezione distribuite con Gateway Load Balancer](https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/distributed-inspection-architectures-gwlb-ra.pdf)

## Informazioni aggiuntive
<a name="deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config-additional"></a>

Di seguito è riportato un esempio di funzione Lambda fornita a scopo dimostrativo.

```
import boto3
import json
import os

# Init clients
config_client = boto3.client('config')
ec2_client = boto3.client('ec2')

def lambda_handler(event, context):

    # Init values
    compliance_value = 'NOT_APPLICABLE'
    invoking_event = json.loads(event['invokingEvent'])
    configuration_item = invoking_event['configurationItem']
    
    status = configuration_item['configurationItemStatus']
    eventLeftScope = event['eventLeftScope']

    # First check if the event configuration applies. Ex. resource event is not delete
    if (status == 'OK' or status == 'ResourceDiscovered') and not eventLeftScope:
        compliance_value = evaluate_change_notification_compliance(configuration_item)
    
    
    config_client.put_evaluations(
       Evaluations=[
           {
               'ComplianceResourceType': invoking_event['configurationItem']['resourceType'],
               'ComplianceResourceId': invoking_event['configurationItem']['resourceId'],
               'ComplianceType': compliance_value,
               'OrderingTimestamp': invoking_event['configurationItem']['configurationItemCaptureTime']
           },
       ],
       ResultToken=event['resultToken'])
    
# Function with the logs to evaluate the resource
def evaluate_change_notification_compliance(configuration_item):
    is_in_scope = is_in_scope_subnet(configuration_item['configuration']['subnetId'])
    
    if (configuration_item['resourceType'] != 'AWS::EC2::NetworkInterface') or not is_in_scope:
        return 'NOT_APPLICABLE'

    else:
        alb_condition = configuration_item['configuration']['requesterId'] in ['amazon-elb']
        nlb_condition = configuration_item['configuration']['interfaceType'] in ['network_load_balancer']
        nat_gateway_condition = configuration_item['configuration']['interfaceType'] in ['nat_gateway']

        if alb_condition or nlb_condition or nat_gateway_condition:
            return 'COMPLIANT'
    return 'NON_COMPLIANT'

# Function to check if elastic network interface is in public subnet
def is_in_scope_subnet(eni_subnet):

    subnet_description = ec2_client.describe_subnets(
        SubnetIds=[eni_subnet]
    )

    for subnet in subnet_description['Subnets']:
        for tag in subnet['Tags']:
            if tag['Key'] == os.environ.get('TAG_KEY') and tag['Value'] == os.environ.get('TAG_VALUE'):
                return True
    
    return False
```