

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à.

# Sicurezza in Amazon MSK
<a name="security"></a>

La sicurezza del cloud AWS è la massima priorità. In qualità di AWS cliente, puoi beneficiare di un data center e di un'architettura di rete progettati per soddisfare i requisiti delle organizzazioni più sensibili alla sicurezza.

La sicurezza è una responsabilità condivisa tra AWS te e te. Il [modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/) descrive questo aspetto come sicurezza *del* cloud e sicurezza *nel* cloud:
+ **Sicurezza del cloud**: AWS è responsabile della protezione dell'infrastruttura che gestisce AWS i servizi nel AWS cloud. AWS ti fornisce anche servizi che puoi utilizzare in modo sicuro. I revisori esterni testano e verificano regolarmente l'efficacia della nostra sicurezza nell'ambito dei [AWS Programmi di AWS conformità dei Programmi di conformità](https://aws.amazon.com/compliance/programs/) dei di . Per ulteriori informazioni sui programmi di conformità applicabili a Streaming gestito da Amazon per Apache Kafka, consulta la pagina [Amazon Web Services in Scope by Compliance Program](https://aws.amazon.com/compliance/services-in-scope/).
+ **Sicurezza nel cloud**: la responsabilità dell'utente è determinata dal AWS servizio che utilizza. Inoltre, sei responsabile anche di altri fattori, tra cui la riservatezza dei dati, i requisiti dell’azienda e le leggi e le normative applicabili. 

La presente documentazione aiuta a comprendere come applicare il modello di responsabilità condivisa quando si utilizza Amazon MSK. Gli argomenti seguenti descrivono come configurare Amazon MSK per soddisfare gli obiettivi di sicurezza e conformità. Vengono inoltre fornite informazioni su come utilizzare altri servizi di Amazon Web Services che consentono di monitorare e proteggere le risorse Amazon MSK. 

**Topics**
+ [

# Protezione dei dati in Streaming gestito da Amazon per Apache Kafka
](data-protection.md)
+ [

# Autenticazione e autorizzazione per Amazon MSK APIs
](security-iam.md)
+ [

# Autenticazione e autorizzazione per Apache Kafka APIs
](kafka_apis_iam.md)
+ [

# Modifica del gruppo di sicurezza di un cluster Amazon MSK
](change-security-group.md)
+ [

# Controlla l'accesso ai ZooKeeper nodi Apache nel tuo cluster Amazon MSK
](zookeeper-security.md)
+ [

# Convalida della conformità per Streaming gestito da Amazon per Apache Kafka
](MSK-compliance.md)
+ [

# Resilienza in Streaming gestito da Amazon per Apache Kafka
](disaster-recovery-resiliency.md)
+ [

# Sicurezza dell'infrastruttura in Streaming gestito da Amazon per Apache Kafka
](infrastructure-security.md)

# Protezione dei dati in Streaming gestito da Amazon per Apache Kafka
<a name="data-protection"></a>

Il modello di [responsabilità AWS condivisa modello](https://aws.amazon.com/compliance/shared-responsibility-model/) si applica alla protezione dei dati in Amazon Managed Streaming for Apache Kafka. Come descritto in questo modello, AWS è responsabile della protezione dell'infrastruttura globale che gestisce tutti i. Cloud AWS L’utente è responsabile del controllo dei contenuti ospitati su questa infrastruttura. L’utente è inoltre responsabile della configurazione della protezione e delle attività di gestione per i Servizi AWS utilizzati. Per maggiori informazioni sulla privacy dei dati, consulta le [Domande frequenti sulla privacy dei dati](https://aws.amazon.com/compliance/data-privacy-faq/). Per informazioni sulla protezione dei dati in Europa, consulta il post del blog relativo al [AWS Modello di responsabilità condivisa e GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) nel *AWS Blog sulla sicurezza*.

Ai fini della protezione dei dati, consigliamo di proteggere Account AWS le credenziali e configurare i singoli utenti con AWS IAM Identity Center or AWS Identity and Access Management (IAM). In tal modo, a ogni utente verranno assegnate solo le autorizzazioni necessarie per svolgere i suoi compiti. Suggeriamo, inoltre, di proteggere i dati nei seguenti modi:
+ Utilizza l’autenticazione a più fattori (MFA) con ogni account.
+  SSL/TLS Da utilizzare per comunicare con AWS le risorse. È richiesto TLS 1.2 ed è consigliato TLS 1.3.
+ Configura l'API e la registrazione delle attività degli utenti con AWS CloudTrail. Per informazioni sull'utilizzo dei CloudTrail percorsi per acquisire AWS le attività, consulta [Lavorare con i CloudTrail percorsi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) nella *Guida per l'AWS CloudTrail utente*.
+ Utilizza soluzioni di AWS crittografia, insieme a tutti i controlli di sicurezza predefiniti all'interno Servizi AWS.
+ Utilizza i servizi di sicurezza gestiti avanzati, come Amazon Macie, che aiutano a individuare e proteggere i dati sensibili archiviati in Amazon S3.
+ Se hai bisogno di moduli crittografici convalidati FIPS 140-3 per accedere AWS tramite un'interfaccia a riga di comando o un'API, usa un endpoint FIPS. Per ulteriori informazioni sugli endpoint FIPS disponibili, consulta il [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Ti consigliamo di non inserire mai informazioni riservate o sensibili, ad esempio gli indirizzi e-mail dei clienti, nei tag o nei campi di testo in formato libero, ad esempio nel campo **Nome**. Ciò include quando lavori con Amazon MSK o altro Servizi AWS utilizzando la console, l'API o AWS SDKs. AWS CLI I dati inseriti nei tag o nei campi di testo in formato libero utilizzati per i nomi possono essere utilizzati per i la fatturazione o i log di diagnostica. Quando si fornisce un URL a un server esterno, suggeriamo vivamente di non includere informazioni sulle credenziali nell’URL per convalidare la richiesta al server.

**Topics**
+ [

# Crittografia di Amazon MSK
](msk-encryption.md)
+ [

# Inizia a usare la crittografia Amazon MSK
](msk-working-with-encryption.md)
+ [

# Usa Amazon MSK APIs con endpoint VPC di interfaccia
](privatelink-vpc-endpoints.md)

# Crittografia di Amazon MSK
<a name="msk-encryption"></a>

Amazon MSK fornisce opzioni di crittografia dei dati che puoi utilizzare per soddisfare rigidi requisiti di gestione dei dati. I certificati utilizzati da Amazon MSK per la crittografia devono essere rinnovati ogni 13 mesi. Amazon MSK rinnova automaticamente questi certificati per tutti i cluster. I cluster Express broker rimangono attivi quando Amazon MSK avvia l'operazione di aggiornamento dei certificati. `ACTIVE` Per i cluster di broker standard, Amazon MSK imposta lo stato del cluster su `MAINTENANCE` quando avvia l'operazione di aggiornamento dei certificati. MSK lo riporta a quando l'aggiornamento è terminato. `ACTIVE` Mentre un cluster è in corso l'operazione di aggiornamento dei certificati, è possibile continuare a produrre e consumare dati, ma non è possibile eseguire alcuna operazione di aggiornamento su di esso.

## Crittografia Amazon MSK a riposo
<a name="msk-encryption-at-rest"></a>

Amazon MSK si integra con [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (KMS) per offrire una crittografia lato server trasparente. Amazon MSK esegue sempre la crittografia dei dati a riposo. Quando crei un cluster Amazon MSK, puoi specificare la AWS KMS key che desideri far utilizzare ad Amazon MSK per crittografare i dati a riposo. Se non specifichi una chiave KMS, Amazon MSK crea una chiave KMS gestita da [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) e la utilizza per tuo conto. Per ulteriori informazioni sulle chiavi KMS, consulta [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) nella *Guida per gli sviluppatori di AWS Key Management Service *.

## Crittografia Amazon MSK in transito
<a name="msk-encryption-in-transit"></a>

Amazon MSK utilizza TLS 1.2. Per impostazione predefinita, effettua la crittografia dei dati in transito tra i broker del cluster MSK. Puoi ignorare questa impostazione predefinita al momento della creazione del cluster. 

Per la comunicazione tra client e broker, è necessario specificare una delle tre impostazioni seguenti:
+ Consenti solo dati crittografati TLS. Questa è l'impostazione predefinita.
+ Consenti dati non crittografati e dati crittografati TLS.
+ Consenti solo dati non crittografati.

I broker Amazon MSK utilizzano certificati pubblici AWS Certificate Manager . Pertanto, qualsiasi truststore che considera attendibili gli Amazon Trust Services considera attendibili anche i certificati dei broker Amazon MSK.

Anche se consigliamo vivamente di abilitare la crittografia dei dati in transito, questa potrebbe aggiungere un sovraccarico aggiuntivo della CPU e alcuni millisecondi di latenza. Tuttavia, la maggior parte dei casi d'uso non è sensibile a queste differenze e l'entità dell'impatto dipende dalla configurazione del cluster, dei client e del profilo di utilizzo. 

# Inizia a usare la crittografia Amazon MSK
<a name="msk-working-with-encryption"></a>

Durante la creazione di un cluster MSK, puoi specificare le impostazioni di crittografia in formato JSON. Di seguito è riportato un esempio di :

```
{
   "EncryptionAtRest": {
       "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/abcdabcd-1234-abcd-1234-abcd123e8e8e"
    },
   "EncryptionInTransit": {
        "InCluster": true,
        "ClientBroker": "TLS"
    }
}
```

Per `DataVolumeKMSKeyId`, puoi specificare una [chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o la Chiave gestita da AWS per MSK nel tuo account (`alias/aws/kafka`). Se non lo specifichi`EncryptionAtRest`, Amazon MSK crittografa comunque i tuoi dati inattivi in base a. Chiave gestita da AWS Per determinare la chiave utilizzata dal cluster, invia una richiesta `GET` o richiama l'operazione API `DescribeCluster`. 

Per `EncryptionInTransit`, il valore predefinito di `InCluster` è true, ma puoi impostarlo su false se Amazon MSK non deve crittografare i dati durante il passaggio tra i broker.

Per specificare la modalità di crittografia per i dati in transito tra client e broker, imposta `ClientBroker` su uno di tre valori: `TLS`, `TLS_PLAINTEXT` o `PLAINTEXT`.

**Topics**
+ [

# Specificare le impostazioni di crittografia durante la creazione di un cluster Amazon MSK
](msk-working-with-encryption-cluster-create.md)
+ [

# Prova la crittografia TLS di Amazon MSK
](msk-working-with-encryption-test-tls.md)

# Specificare le impostazioni di crittografia durante la creazione di un cluster Amazon MSK
<a name="msk-working-with-encryption-cluster-create"></a>

Questo processo descrive come specificare le impostazioni di crittografia durante la creazione di un cluster Amazon MSK.

**Specificare le impostazioni di crittografia durante la creazione di un cluster**

1. Salvare il contenuto dell'esempio precedente in un file e assegnare al file il nome desiderato. Ad esempio, chiamarlo `encryption-settings.json`.

1. Eseguire il comando `create-cluster` e utilizzare l'opzione `encryption-info` per puntare al file in cui il JSON di configurazione è stato salvato. Di seguito è riportato un esempio di : Sostituisci *\$1YOUR MSK VERSION\$1* con una versione che corrisponda alla versione del client Apache Kafka. Per informazioni su come trovare la versione del cluster MSK in uso, consulta la pagina [Determinazione della versione del cluster MSK](create-topic.md#find-msk-cluster-version). Tieni presente che l'utilizzo di una versione del client Apache Kafka diversa da quella del cluster MSK può causare il danneggiamento, la perdita dei dati e tempi di inattività di Apache Kafka.

   ```
   aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --kafka-version "{YOUR MSK VERSION}" --number-of-broker-nodes 3
   ```

   Di seguito è riportato un esempio di una risposta corretta dopo l'esecuzione di questo comando.

   ```
   {
       "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e",
       "ClusterName": "ExampleClusterName",
       "State": "CREATING"
   }
   ```

# Prova la crittografia TLS di Amazon MSK
<a name="msk-working-with-encryption-test-tls"></a>

Questo processo descrive come testare la crittografia TLS su Amazon MSK.

**Per testare la crittografia TLS**

1. Creare un computer client seguendo le linee guida in [Passaggio 3: creazione di un computer client](create-client-machine.md).

1. Installare Apache Kafka sul computer client.

1. In questo esempio, utilizziamo il truststore JVM per comunicare con il cluster MSK. A tale scopo, creare innanzitutto una cartella denominata `/tmp` sul computer client. Quindi, passare alla cartella `bin` dell'installazione di Apache Kafka ed eseguire il seguente comando. (Il percorso JVM potrebbe essere diverso.)

   ```
   cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. Sempre nella cartella `bin` dell'installazione di Apache Kafka sul computer client, creare un file di testo denominato `client.properties` con il seguente contenuto.

   ```
   security.protocol=SSL
   ssl.truststore.location=/tmp/kafka.client.truststore.jks
   ```

1. Esegui il comando seguente su un computer su cui è AWS CLI installato, sostituendolo *clusterARN* con l'ARN del tuo cluster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   Se l'operazione riesce, il risultato sarà simile al seguente. Salvare questo risultato perché è necessario per la fase successiva.

   ```
   {
       "BootstrapBrokerStringTls": "a-1.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-3.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-2.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123"
   }
   ```

1. Esegui il comando seguente, sostituendolo *BootstrapBrokerStringTls* con uno degli endpoint del broker ottenuti nel passaggio precedente.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic
   ```

1. Apri una nuova finestra di comando e connettiti allo stesso computer client. Quindi, esegui il comando seguente per creare un utente della console.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic
   ```

1. Nella finestra del produttore, digita un messaggio di testo seguito da un invio e cerca lo stesso messaggio nella finestra del consumatore. Amazon MSK ha crittografato questo messaggio in transito.

Per ulteriori informazioni sulla configurazione dei client Apache Kafka per l'utilizzo di dati crittografati, consulta [Configuring Kafka Clients](https://kafka.apache.org/documentation/#security_configclients).

# Usa Amazon MSK APIs con endpoint VPC di interfaccia
<a name="privatelink-vpc-endpoints"></a>

Puoi utilizzare un endpoint VPC di interfaccia, alimentato da AWS PrivateLink, per impedire che il traffico tra Amazon VPC e Amazon MSK APIs lasci la rete Amazon. Gli endpoint VPC di interfaccia non richiedono un gateway Internet, un dispositivo NAT, una connessione VPN o una connessione Direct Connect AWS . [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)è una AWS tecnologia che consente la comunicazione privata tra AWS i servizi utilizzando un'interfaccia di rete elastica con private IPs nel tuo Amazon VPC. Per ulteriori informazioni, consulta [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) and [Interface VPC Endpoints ()](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint).AWS PrivateLink

Le tue applicazioni possono connettersi con Amazon MSK Provisioned e MSK Connect APIs utilizzando. AWS PrivateLink Per iniziare, crea un endpoint VPC di interfaccia per la tua API Amazon MSK per avviare il flusso di traffico da e verso le tue risorse Amazon VPC tramite l'endpoint VPC di interfaccia. Gli endpoint VPC con interfaccia FIPS sono disponibili per le regioni degli Stati Uniti. [Per ulteriori informazioni, consulta Create an Interface Endpoint.](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)

Utilizzando questa funzionalità, i client Apache Kafka possono recuperare dinamicamente le stringhe di connessione per connettersi alle risorse MSK Provisioned o MSK Connect senza dover attraversare Internet per recuperare le stringhe di connessione.

Quando crei un endpoint VPC di interfaccia, scegli uno dei seguenti endpoint con nome di servizio:

**Per MSK Provisioned:**
+ I seguenti endpoint con nomi di servizio non sono più supportati per le nuove connessioni:
  + com.amazonaws.region.kafka
  + com.amazonaws.region.kafka-fips (compatibile con FIPS)
+ I servizi endpoint Dualstack che supportano entrambi e il traffico sono i seguenti: IPv4 IPv6 
  + aws.api.region.kafka-api
  + aws.api.region. kafka-api-fips (abilitato per FIPS)

[Per configurare gli endpoint dualstack è necessario seguire le linee guida sugli endpoint Dual-stack e FIPS.](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)

Dove region è il nome della tua regione. Scegliete questo nome di servizio per utilizzare MSK Provisioned APIs Compatible. *Per ulteriori informazioni, vedere [Operazioni](https://docs.aws.amazon.com/msk/1.0/apireference/operations.html) nella versione 1.0/apireference/. https://docs.aws.amazon.com/msk/*

**Per MSK Connect:**
+ com.amazonaws.region.kafkaconnect

Dove regione è il nome della tua regione. Scegliete questo nome di servizio per lavorare con MSK Connect compatibile. APIs Per ulteriori informazioni, consulta [Azioni](https://docs.aws.amazon.com/MSKC/latest/mskc/API_Operations.html) nel *riferimento all'API Amazon MSK Connect*.

*Per ulteriori informazioni, incluse step-by-step le istruzioni per creare un endpoint VPC di interfaccia, vedere [Creazione di un endpoint di interfaccia nella Guida](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint).AWS PrivateLink *

## Controlla l'accesso agli endpoint VPC per Amazon MSK Provisioned o MSK Connect APIs
<a name="vpc-endpoints-control-access"></a>

Le policy degli endpoint VPC consentono di controllare l'accesso allegando una policy a un endpoint VPC o utilizzando campi aggiuntivi in una policy allegata a un utente, gruppo o ruolo IAM per limitare l'accesso solo tramite l'endpoint VPC specificato. Utilizzare la politica di esempio appropriata per definire le autorizzazioni di accesso per il servizio MSK Provisioned o MSK Connect.

Se non colleghi una policy durante la creazione di un endpoint, Amazon VPC collega una policy predefinita che consente l'accesso completo al servizio. Una policy endpoint non esclude né sostituisce policy IAM basate sull'identità o policy specifiche del servizio. Si tratta di una policy separata per controllare l'accesso dall'endpoint al servizio specificato.

*Per ulteriori informazioni, consulta [Controllare l'accesso ai servizi con gli endpoint VPC nella Guida](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).AWS PrivateLink *

------
#### [ MSK Provisioned — VPC policy example ]

**Accesso in sola lettura**  
Questa policy di esempio può essere associata a un endpoint VPC. Per ulteriori informazioni, consulta Controllo dell'accesso alle risorse VPC di Amazon. Limita le azioni solo a elencare e descrivere le operazioni tramite l'endpoint VPC a cui è collegato.

```
{
  "Statement": [
    {
      "Sid": "MSKReadOnly",
      "Principal": "*",
      "Action": [
        "kafka:List*",
        "kafka:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

**MSK Provisioned — Esempio di policy per gli endpoint VPC**  
Limita l'accesso a un cluster MSK specifico

Questa policy di esempio può essere associata a un endpoint VPC. Limita l'accesso a uno specifico cluster Kafka tramite l'endpoint VPC a cui è collegato.

```
{
  "Statement": [
    {
      "Sid": "AccessToSpecificCluster",
      "Principal": "*",
      "Action": "kafka:*",
      "Effect": "Allow",
      "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/MyCluster"
    }
  ]
}
```

------
#### [ MSK Connect — VPC endpoint policy example ]

**Elenca i connettori e crea un nuovo connettore**  
Di seguito è riportato un esempio di policy sugli endpoint per MSK Connect. Questa politica consente al ruolo specificato di elencare i connettori e creare un nuovo connettore.

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "MSKConnectPermissions",
            "Effect": "Allow",
            "Action": [
                "kafkaconnect:ListConnectors",
                "kafkaconnect:CreateConnector"
            ],
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/MyMSKConnectExecutionRole"
                ]
            }
        }
    ]
}
```

**MSK Connect — Esempio di policy per gli endpoint VPC**  
Consente solo le richieste provenienti da un indirizzo IP specifico nel VPC specificato

L'esempio seguente mostra una policy che consente l'esito positivo solo delle richieste provenienti da un indirizzo IP specificato nel VPC specificato. Le richieste provenienti da altri indirizzi IP avranno esito negativo.

```
{
    "Statement": [
        {
            "Action": "kafkaconnect:*",
            "Effect": "Allow",
            "Principal": "*",
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:VpcSourceIp": "192.0.2.123"
                },
        "StringEquals": {
                    "aws:SourceVpc": "vpc-555555555555"
                }
            }
        }
    ]
}
```

------

# Autenticazione e autorizzazione per Amazon MSK APIs
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) è uno strumento Servizio AWS che aiuta un amministratore a controllare in modo sicuro l'accesso alle risorse. AWS Gli amministratori IAM controllano chi può essere *autenticato* (accesso effettuato) e *autorizzato* (dotato di autorizzazioni) per utilizzare le risorse Amazon MSK. IAM è un software Servizio AWS che puoi utilizzare senza costi aggiuntivi.

**Topics**
+ [

# Funzionamento di Amazon MSK con IAM
](security_iam_service-with-iam.md)
+ [

# Esempi di policy basate sull'identità per Amazon MSK
](security_iam_id-based-policy-examples.md)
+ [

# Ruoli collegati ai servizi per Amazon MSK
](using-service-linked-roles.md)
+ [

# AWS politiche gestite per Amazon MSK
](security-iam-awsmanpol.md)
+ [

# Risolvi i problemi relativi all'identità e all'accesso ad Amazon MSK
](security_iam_troubleshoot.md)

# Funzionamento di Amazon MSK con IAM
<a name="security_iam_service-with-iam"></a>

Prima di utilizzare IAM per gestire l'accesso ad Amazon MSK, è necessario comprendere quali funzioni IAM sono disponibili per l'uso con Amazon MSK. Per avere una visione di alto livello di come Amazon MSK e altri AWS servizi funzionano con IAM, consulta [AWS Services That Work with IAM nella IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) *User Guide*.

**Topics**
+ [

# Policy basate sull'identità di Amazon MSK
](security_iam_service-with-iam-id-based-policies.md)
+ [

# Policy basate sulle risorse di Amazon MSK
](security_iam_service-with-iam-resource-based-policies.md)
+ [

# Autorizzazione basata sui tag Amazon MSK
](security_iam_service-with-iam-tags.md)
+ [

# Ruoli IAM di Amazon MSK
](security_iam_service-with-iam-roles.md)

# Policy basate sull'identità di Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies"></a>

Con le policy basate sull’identità di IAM, è possibile specificare quali operazioni e risorse sono consentite o respinte, nonché le condizioni in base alle quali le operazioni sono consentite o respinte. Amazon MSK supporta operazioni, risorse e chiavi di condizione specifiche. Per informazioni su tutti gli elementi utilizzati in una policy JSON, consulta [Documentazione di riferimento degli elementi delle policy JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) nella *Guida per l'utente IAM*.

## Azioni per le politiche basate sull'identità di Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L'elemento `Action` di una policy JSON descrive le operazioni che è possibile utilizzare per consentire o negare l'accesso in una policy. Includere le operazioni in una policy per concedere le autorizzazioni a eseguire l’operazione associata.

Le operazioni delle policy in Amazon MSK utilizzano il seguente prefisso prima dell'operazione: `kafka:`. Ad esempio, per concedere a qualcuno l'autorizzazione per descrivere un cluster MSK con l'operazione API `DescribeCluster` di Amazon MSK, includi l'operazione `kafka:DescribeCluster` nella policy. Le istruzioni della policy devono includere un elemento `Action` o `NotAction`. Amazon MSK definisce un proprio set di operazioni che descrivono le attività che puoi eseguire con quel servizio.

Tieni presente che le azioni politiche per l'argomento MSK APIs utilizzano il `kafka-cluster` prefisso prima dell'azione, consulta. [Semantica delle azioni e delle risorse della politica di autorizzazione IAM](kafka-actions.md)

Per specificare più azioni in una sola istruzione, separa ciascuna di esse con una virgola come mostrato di seguito:

```
"Action": ["kafka:action1", "kafka:action2"]
```

È possibile specificare più azioni tramite caratteri jolly (\$1). Ad esempio, per specificare tutte le azioni che iniziano con la parola `Describe`, includi la seguente azione:

```
"Action": "kafka:Describe*"
```



Per visualizzare un elenco delle operazioni di Amazon MSK, consulta la pagina [Actions, resources, and condition keys for Amazon Managed Streaming for Apache Kafka](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonmanagedstreamingforapachekafka.html) nella *Guida per l'utente di IAM*.

## Risorse per le politiche basate sull'identità di Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L’elemento JSON `Resource` della policy specifica l’oggetto o gli oggetti ai quali si applica l’operazione. Come best practice, specifica una risorsa utilizzando il suo [nome della risorsa Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Per le azioni che non supportano le autorizzazioni a livello di risorsa, si utilizza un carattere jolly (\$1) per indicare che l’istruzione si applica a tutte le risorse.

```
"Resource": "*"
```



La risorsa istanza di Amazon MSK dispone del seguente ARN:

```
arn:${Partition}:kafka:${Region}:${Account}:cluster/${ClusterName}/${UUID}
```

Per ulteriori informazioni sul formato di ARNs, consulta [Amazon Resource Names (ARNs) e AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Ad esempio, per specificare l'istanza `CustomerMessages` nell'istruzione, utilizza il seguente ARN:

```
"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomerMessages/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2"
```

Per specificare tutti le istanze che appartengono ad un account specifico, utilizza il carattere jolly (\$1):

```
"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*"
```

Alcune operazioni di Amazon MSK, ad esempio quelle per la creazione delle risorse, non possono essere eseguite su una risorsa specifica. In questi casi, è necessario utilizzare il carattere jolly (\$1).

```
"Resource": "*"
```

Per specificare più risorse in una singola istruzione, separale con virgole. ARNs 

```
"Resource": ["resource1", "resource2"]
```

*Per visualizzare un elenco dei tipi di risorse Amazon MSK e relativi ARNs, consulta [Resources Defined by Amazon Managed Streaming for Apache](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-resources-for-iam-policies) Kafka nella IAM User Guide.* Per informazioni sulle operazioni con cui è possibile specificare l'ARN di ogni risorsa, consulta la pagina [Actions Defined by Amazon Managed Service for Apache Kafka](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-actions-as-permissions).

## Chiavi di condizione per le politiche basate sull'identità di Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L’elemento `Condition` specifica quando le istruzioni vengono eseguite in base a criteri definiti. È possibile compilare espressioni condizionali che utilizzano [operatori di condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), ad esempio uguale a o minore di, per soddisfare la condizione nella policy con i valori nella richiesta. Per visualizzare tutte le chiavi di condizione AWS globali, consulta le chiavi di [contesto delle condizioni AWS globali nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) per l'*utente IAM*.

Amazon MSK definisce il proprio set di chiavi di condizione e supporta anche l'utilizzo di alcune chiavi di condizione globali. Per vedere tutte le chiavi di condizione AWS globali, consulta [AWS Global Condition Context Keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) nella *Guida per l'utente IAM*.



Per visualizzare un elenco delle chiavi di condizione di Amazon MSK, consulta la pagina [Condition Keys for Amazon Managed Streaming for Apache Kafka](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-policy-keys) nella *Guida per l'utente di IAM*. Per informazioni sulle operazioni e le risorse con le quali è possibile utilizzare una chiave di condizione, consulta la pagina [Actions Defined by Amazon Managed Service for Apache Kafka](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-actions-as-permissions).

## Esempi di policy basate sull'identità di Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Per visualizzare degli esempi di policy basate sull'identità di Amazon MSK, consulta la pagina [Esempi di policy basate sull'identità per Amazon MSK](security_iam_id-based-policy-examples.md).

# Policy basate sulle risorse di Amazon MSK
<a name="security_iam_service-with-iam-resource-based-policies"></a>

Amazon MSK supporta una policy del cluster (nota anche come policy basata sulle risorse) da utilizzare con i cluster Amazon MSK. Puoi utilizzare una policy del cluster per definire quali principali IAM dispongono delle autorizzazioni multi-account per configurare la connettività privata al tuo cluster Amazon MSK. In combinazione con l'autenticazione del client IAM, puoi utilizzare la policy del cluster anche per definire in modo granulare le autorizzazioni del piano dati Kafka per i client che si connettono.

La dimensione massima supportata per una policy di cluster è di 20 KB.

Per visualizzare un esempio di come configurare una policy del cluster, consulta la sezione [Passaggio 2: collegamento di una policy del cluster al cluster MSK](mvpc-cluster-owner-action-policy.md). 

# Autorizzazione basata sui tag Amazon MSK
<a name="security_iam_service-with-iam-tags"></a>

È possibile associare tag ai cluster Amazon MSK. Per controllare l’accesso basato su tag, fornire informazioni sui tag nell’[elemento condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di una policy utilizzando le chiavi di condizione `kafka:ResourceTag/key-name`, `aws:RequestTag/key-name` o `aws:TagKeys`. Per informazioni sull'etichettatura delle risorse Amazon MSK, consulta. [Contrassegna un tag a un cluster Amazon MSK](msk-tagging.md)

Puoi controllare l'accesso al cluster solo con l'aiuto dei tag. Per etichettare argomenti e gruppi di consumatori, devi aggiungere una dichiarazione separata nelle tue politiche senza tag.

Per visualizzare un esempio di politica basata sull'identità per limitare l'accesso a un cluster in base ai tag di quel cluster, vedi. [Accesso ai cluster Amazon MSK in base ai tag](security_iam_id-based-policy-examples-view-widget-tags.md)

Nella policy basata sull'identità, puoi utilizzare le condizioni per controllare l'accesso alle risorse Amazon MSK in base ai tag. L'esempio seguente mostra una policy che consente a un utente di descrivere il cluster, ottenere i relativi broker bootstrap, elencare i relativi nodi broker, aggiornarlo ed eliminarlo. Tuttavia, questa politica concede l'autorizzazione solo se il tag del cluster `Owner` ha il valore di quell'utente. `username` La seconda dichiarazione della seguente politica consente l'accesso agli argomenti del cluster. La prima dichiarazione di questa politica non autorizza l'accesso ad alcun argomento.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessClusterIfOwner",
      "Effect": "Allow",
      "Action": [
        "kafka:Describe*",
        "kafka:Get*",
        "kafka:List*",
        "kafka:Update*",
        "kafka:Delete*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Owner": "${aws:username}"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "kafka-cluster:*Topic*",
        "kafka-cluster:WriteData",
        "kafka-cluster:ReadData"
      ],
      "Resource": [
        "arn:aws:kafka:us-east-1:123456789012:topic/*"
      ]
    }
  ]
}
```

------

# Ruoli IAM di Amazon MSK
<a name="security_iam_service-with-iam-roles"></a>

Un [ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) è un'entità all'interno dell'account Amazon Web Services che dispone di autorizzazioni specifiche.

## Utilizzo delle credenziali temporanee con Amazon MSK
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

È possibile utilizzare credenziali temporanee per effettuare l'accesso con la federazione, assumere un ruolo IAM o un ruolo multi-account. È possibile ottenere credenziali di sicurezza temporanee chiamando operazioni AWS STS API come [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)o. [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) 

Amazon MSK supporta l'uso delle credenziali temporanee. 

## Ruoli collegati ai servizi
<a name="security_iam_service-with-iam-roles-service-linked"></a>

I [ruoli collegati ai servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) permettono ad Amazon Web Services di accedere a risorse in altri servizi per completare un'operazione a tuo nome. I ruoli collegati ai servizi sono visualizzati nell'account IAM e sono di proprietà del servizio. Un amministratore può visualizzare, ma non modificare le autorizzazioni dei ruoli collegati ai servizi.

Amazon MSK supporta i ruoli collegati ai servizi. Per maggiori dettagli su come creare e gestire i ruoli collegati ai servizi di Amazon MSK, consulta la pagina [Ruoli collegati ai servizi per Amazon MSK](using-service-linked-roles.md).

# Esempi di policy basate sull'identità per Amazon MSK
<a name="security_iam_id-based-policy-examples"></a>

Per impostazione predefinita, gli utenti e i ruoli IAM non sono autorizzati a eseguire le operazioni API di Amazon MSK. Un amministratore deve creare le policy IAM che concedono a utenti e ruoli l'autorizzazione per eseguire operazioni API specifiche sulle risorse specificate di cui hanno bisogno. L'amministratore deve quindi allegare queste policy a utenti o IAM che richiedono tali autorizzazioni.

Per informazioni su come creare una policy basata su identità IAM utilizzando questi documenti di policy JSON di esempio, consulta [Creazione di policy nella scheda JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) nella *Guida per l'utente IAM*.

**Topics**
+ [

# Best practice delle policy
](security_iam_service-with-iam-policy-best-practices.md)
+ [

# Consentire agli utenti di visualizzare le loro autorizzazioni
](security_iam_id-based-policy-examples-view-own-permissions.md)
+ [

# Accesso a un cluster Amazon MSK
](security_iam_id-based-policy-examples-access-one-cluster.md)
+ [

# Accesso ai cluster Amazon MSK in base ai tag
](security_iam_id-based-policy-examples-view-widget-tags.md)

# Best practice delle policy
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Le policy basate sull'identità determinano se qualcuno può creare, accedere o eliminare risorse Amazon MSK all'interno dell'account. Queste azioni possono comportare costi aggiuntivi per l’ Account AWS. Quando si creano o modificano policy basate sull’identità, seguire queste linee guida e raccomandazioni:
+ **Inizia con le policy AWS gestite e passa alle autorizzazioni con privilegi minimi: per iniziare a concedere autorizzazioni** a utenti e carichi di lavoro, utilizza le *politiche AWS gestite* che concedono le autorizzazioni per molti casi d'uso comuni. Sono disponibili nel tuo. Account AWS Ti consigliamo di ridurre ulteriormente le autorizzazioni definendo politiche gestite dai AWS clienti specifiche per i tuoi casi d'uso. Per maggiori informazioni, consulta [Policy gestite da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o [Policy gestite da AWS per le funzioni dei processi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) nella *Guida per l’utente di IAM*.
+ **Applicazione delle autorizzazioni con privilegio minimo** - Quando si impostano le autorizzazioni con le policy IAM, concedere solo le autorizzazioni richieste per eseguire un’attività. È possibile farlo definendo le azioni che possono essere intraprese su risorse specifiche in condizioni specifiche, note anche come *autorizzazioni con privilegio minimo*. Per maggiori informazioni sull’utilizzo di IAM per applicare le autorizzazioni, consulta [Policy e autorizzazioni in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) nella *Guida per l’utente di IAM*.
+ **Condizioni d’uso nelle policy IAM per limitare ulteriormente l’accesso** - Per limitare l’accesso ad azioni e risorse è possibile aggiungere una condizione alle policy. Ad esempio, è possibile scrivere una condizione di policy per specificare che tutte le richieste devono essere inviate utilizzando SSL. Puoi anche utilizzare le condizioni per concedere l'accesso alle azioni del servizio se vengono utilizzate tramite uno specifico Servizio AWS, ad esempio CloudFormation. Per maggiori informazioni, consultare la sezione [Elementi delle policy JSON di IAM: condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) nella *Guida per l’utente di IAM*.
+ **Utilizzo dello strumento di analisi degli accessi IAM per convalidare le policy IAM e garantire autorizzazioni sicure e funzionali** - Lo strumento di analisi degli accessi IAM convalida le policy nuove ed esistenti in modo che aderiscano al linguaggio (JSON) della policy IAM e alle best practice di IAM. Lo strumento di analisi degli accessi IAM offre oltre 100 controlli delle policy e consigli utili per creare policy sicure e funzionali. Per maggiori informazioni, consultare [Convalida delle policy per il Sistema di analisi degli accessi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) nella *Guida per l’utente di IAM*.
+ **Richiedi l'autenticazione a più fattori (MFA**): se hai uno scenario che richiede utenti IAM o un utente root nel Account AWS tuo, attiva l'MFA per una maggiore sicurezza. Per richiedere la MFA quando vengono chiamate le operazioni API, aggiungere le condizioni MFA alle policy. Per maggiori informazioni, consultare [Protezione dell’accesso API con MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) nella *Guida per l’utente di IAM*.

Per maggiori informazioni sulle best practice in IAM, consulta [Best practice di sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) nella *Guida per l’utente di IAM*.

# Consentire agli utenti di visualizzare le loro autorizzazioni
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Questo esempio mostra in che modo è possibile creare una policy che consente agli utenti IAM di visualizzare le policy inline e gestite che sono collegate alla relativa identità utente. Questa policy include le autorizzazioni per completare questa azione sulla console o utilizzando programmaticamente l'API o. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Accesso a un cluster Amazon MSK
<a name="security_iam_id-based-policy-examples-access-one-cluster"></a>

In questo esempio, si desidera concedere a un utente IAM nell'account Amazon Web Services l'accesso a uno dei cluster, `purchaseQueriesCluster`. Questa policy consente all'utente di descrivere il cluster, ottenere i broker bootstrap, elencare i nodi broker e aggiornarlo.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"UpdateCluster",
         "Effect":"Allow",
         "Action":[
            "kafka:Describe*",
            "kafka:Get*",
            "kafka:List*",
            "kafka:Update*"
         ],
         "Resource":"arn:aws:kafka:us-east-1:012345678012:cluster/purchaseQueriesCluster/abcdefab-1234-abcd-5678-cdef0123ab01-2"
      }
   ]
}
```

------

# Accesso ai cluster Amazon MSK in base ai tag
<a name="security_iam_id-based-policy-examples-view-widget-tags"></a>

Nella policy basata sull'identità, puoi utilizzare le condizioni per controllare l'accesso alle risorse Amazon MSK in base ai tag. In questo esempio viene illustrato come creare una policy che consente all'utente di descrivere il cluster, ottenere i broker bootstrap, elencare i nodi broker, aggiornarlo ed eliminarlo. Tuttavia, l'autorizzazione viene concessa solo se il valore del tag di cluster `Owner` è quello del nome utente.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessClusterIfOwner",
      "Effect": "Allow",
      "Action": [
        "kafka:Describe*",
        "kafka:Get*",
        "kafka:List*",
        "kafka:Update*",
        "kafka:Delete*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:012345678012:cluster/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Owner": "${aws:username}"
        }
      }
    }
  ]
}
```

------

Puoi allegare questa policy agli utenti IAM nel tuo account. Se un utente denominato `richard-roe` tenta di aggiornare un cluster MSK, al cluster deve essere applicato il tag `Owner=richard-roe` o `owner=richard-roe`. In caso contrario, gli viene negato l'accesso. La chiave di tag di condizione `Owner` corrisponde a `Owner` e `owner` perché i nomi delle chiavi di condizione non effettuano la distinzione tra maiuscole e minuscole. Per ulteriori informazioni, consulta la sezione [Elementi delle policy JSON di IAM: condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) nella *Guida per l'utente di IAM*.

# Ruoli collegati ai servizi per Amazon MSK
<a name="using-service-linked-roles"></a>

Amazon MSK utilizza ruoli collegati ai [servizi AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) (IAM). Un ruolo collegato ai servizi è un tipo di ruolo IAM univoco collegato direttamente ad Amazon MSK. I ruoli collegati ai servizi sono predefiniti da Amazon MSK e includono tutte le autorizzazioni richieste dal servizio per chiamare altri AWS servizi per tuo conto. 

Un ruolo collegato ai servizi semplifica la configurazione di Amazon MSK perché consente di evitare l'aggiunta manuale delle autorizzazioni necessarie. Amazon MSK definisce le autorizzazioni dei ruoli collegati ai servizi. Se non diversamente definito, solo Amazon MSK può assumere i suoi ruoli. Le autorizzazioni definite includono la policy di attendibilità e la policy delle autorizzazioni. Una policy delle autorizzazioni specifica non può essere collegata a un'altra entità IAM.

Per informazioni sugli altri servizi che supportano i ruoli collegati ai servizi, consulta la pagina [Amazon Web Services That Work with IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) e cerca i servizi che riportano **Sì **nella colonna **Ruolo collegato ai servizi**. Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio.

**Topics**
+ [Autorizzazioni del ruolo collegato ai servizi](slr-permissions.md)
+ [Crea un ruolo collegato al servizio](create-slr.md)
+ [Modifica di un ruolo collegato al servizio](edit-slr.md)
+ [Regioni supportate per i ruoli collegati ai servizi](slr-regions.md)

# Autorizzazioni del ruolo collegato ai servizi per Amazon MSK
<a name="slr-permissions"></a>

Amazon MSK usa il ruolo collegato ai servizi denominato **AWSServiceRoleForKafka**. Amazon MSK utilizza questo ruolo per accedere alle risorse ed eseguire operazioni come:
+ `*NetworkInterface`: crea e gestisci interfacce di rete nell'account cliente che rendano i broker del cluster accessibili ai client nel VPC del cliente.
+ `*VpcEndpoints`— gestire gli endpoint VPC nell'account cliente che rendono i broker di cluster accessibili ai clienti nel VPC del cliente utilizzando. AWS PrivateLink Amazon MSK utilizza le autorizzazioni per `DescribeVpcEndpoints`, `ModifyVpcEndpoint` e `DeleteVpcEndpoints`.
+ `secretsmanager`— gestisci le credenziali dei clienti con. Gestione dei segreti AWS
+ `GetCertificateAuthorityCertificate`: recupera il certificato per la tua autorità di certificazione privata.
+ `*Ipv6Addresses`— assegna e annulla l'assegnazione di IPv6 indirizzi alle interfacce di rete nell'account cliente per abilitare la connettività per i cluster MSK. IPv6 
+ `ModifyNetworkInterfaceAttribute`— modifica gli attributi dell'interfaccia di rete nell'account cliente per configurare IPv6 le impostazioni per la connettività del cluster MSK.

Questo ruolo collegato ai servizi è collegato alle seguenti policy gestite: `KafkaServiceRolePolicy`. Per gli aggiornamenti a questa policy, consulta [KafkaServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/KafkaServiceRolePolicy.html).

Ai fini dell’assunzione del ruolo, il ruolo collegato al servizio AWSServiceRoleForKafka considera attendibili i seguenti servizi:
+ `kafka.amazonaws.com`

La policy delle autorizzazioni del ruolo consente ad Amazon MSK di completare le seguenti operazioni sulle risorse.

Per consentire a un'entità IAM (come un utente, un gruppo o un ruolo) di creare, modificare o eliminare un ruolo collegato al servizio è necessario configurare le relative autorizzazioni. Per ulteriori informazioni, consulta [Autorizzazioni del ruolo collegato ai servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) nella *Guida per l'utente di IAM*.

# Crea un ruolo collegato ai servizi per Amazon MSK
<a name="create-slr"></a>

Non è necessario creare manualmente un ruolo collegato ai servizi. Quando crei un cluster Amazon MSK nell'API Console di gestione AWS, nell'o nell' AWS API AWS CLI, Amazon MSK crea automaticamente il ruolo collegato al servizio. 

Se elimini questo ruolo collegato al servizio, è possibile ricrearlo seguendo lo stesso processo utilizzato per ricreare il ruolo nell’account. Quando si crea un cluster Amazon MSK, Amazon MSK crea di nuovo automaticamente il ruolo collegato ai servizi per conto dell'utente. 

# Modificare un ruolo collegato al servizio per Amazon MSK
<a name="edit-slr"></a>

Amazon MSK non consente di modificare il ruolo collegato al servizio AWSServiceRoleForKafka. Dopo avere creato un ruolo collegato al servizio, non sarà possibile modificarne il nome perché varie entità potrebbero farvi riferimento. È possibile tuttavia modificarne la descrizione utilizzando IAM. Per ulteriori informazioni, consulta la sezione [Modifica di un ruolo collegato ai servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role) nella *Guida per l'utente di IAM*.

# Regioni supportate per i ruoli collegati ai servizi di Amazon MSK
<a name="slr-regions"></a>

Amazon MSK supporta l'utilizzo di ruoli collegati ai servizi in tutte le regioni in cui il servizio è disponibile. Per ulteriori informazioni, consulta [AWS Regioni ed endpoint](https://docs.aws.amazon.com/general/latest/gr/rande.html).

# AWS politiche gestite per Amazon MSK
<a name="security-iam-awsmanpol"></a>

Una politica AWS gestita è una politica autonoma creata e amministrata da. AWS AWS le politiche gestite sono progettate per fornire autorizzazioni per molti casi d'uso comuni, in modo da poter iniziare ad assegnare autorizzazioni a utenti, gruppi e ruoli.

Tieni presente che le policy AWS gestite potrebbero non concedere le autorizzazioni con il privilegio minimo per i tuoi casi d'uso specifici, poiché sono disponibili per tutti i clienti. AWS Si consiglia pertanto di ridurre ulteriormente le autorizzazioni definendo [policy gestite dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) specifiche per i propri casi d'uso.

Non è possibile modificare le autorizzazioni definite nelle politiche gestite. AWS Se AWS aggiorna le autorizzazioni definite in una politica AWS gestita, l'aggiornamento ha effetto su tutte le identità principali (utenti, gruppi e ruoli) a cui è associata la politica. AWS è più probabile che aggiorni una policy AWS gestita quando ne Servizio AWS viene lanciata una nuova o quando diventano disponibili nuove operazioni API per i servizi esistenti.

Per ulteriori informazioni, consultare [Policy gestite da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) nella *Guida per l'utente di IAM*.

# AWS politica gestita: Amazon MSKFull Access
<a name="security-iam-awsmanpol-AmazonMSKFullAccess"></a>

Questa policy concede autorizzazioni amministrative che consentono a un principale l'accesso completo a tutte le operazioni di Amazon MSK. Le autorizzazioni in questa policy sono raggruppate come segue:
+ Le autorizzazioni Amazon MSK consentono tutte le operazioni di Amazon MSK.
+ **`Amazon EC2`autorizzazioni**: in questa politica sono necessarie per convalidare le risorse passate in una richiesta API. Questo serve a garantire che Amazon MSK sia in grado di utilizzare correttamente le risorse di un cluster. Le altre autorizzazioni di Amazon EC2 incluse in questa policy consentono ad Amazon MSK di creare AWS le risorse necessarie per consentirti di connetterti ai tuoi cluster.
+ **`AWS KMS`autorizzazioni**: vengono utilizzate durante le chiamate API per convalidare le risorse passate in una richiesta. Sono necessarie per consentire ad Amazon MSK di utilizzare la chiave passata con il cluster Amazon MSK.
+ **`CloudWatch Logs, Amazon S3, and Amazon Data Firehose`autorizzazioni**: sono necessarie per consentire ad Amazon MSK di garantire che le destinazioni di consegna dei log siano raggiungibili e che siano valide per l'utilizzo dei log da parte dei broker.
+ **`IAM`autorizzazioni**: sono necessarie per consentire ad Amazon MSK di creare un ruolo collegato al servizio nel tuo account e per consentirti di passare un ruolo di esecuzione del servizio ad Amazon MSK.

------
#### [ JSON ]

****  

```
    {
    	"Version":"2012-10-17",		 	 	 
    	"Statement": [{
    			"Effect": "Allow",
    			"Action": [
    				"kafka:*",
    				"ec2:DescribeSubnets",
    				"ec2:DescribeVpcs",
    				"ec2:DescribeSecurityGroups",
    				"ec2:DescribeRouteTables",
    				"ec2:DescribeVpcEndpoints",
    				"ec2:DescribeVpcAttribute",
    				"kms:DescribeKey",
    				"kms:CreateGrant",
    				"logs:CreateLogDelivery",
    				"logs:GetLogDelivery",
    				"logs:UpdateLogDelivery",
    				"logs:DeleteLogDelivery",
    				"logs:ListLogDeliveries",
    				"logs:PutResourcePolicy",
    				"logs:DescribeResourcePolicies",
    				"logs:DescribeLogGroups",
    				"S3:GetBucketPolicy",
    				"firehose:TagDeliveryStream"
    			],
    			"Resource": "*"
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateVpcEndpoint"
    			],
    			"Resource": [
    				"arn:*:ec2:*:*:vpc/*",
    				"arn:*:ec2:*:*:subnet/*",
    				"arn:*:ec2:*:*:security-group/*"
    			]
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateVpcEndpoint"
    			],
    			"Resource": [
    				"arn:*:ec2:*:*:vpc-endpoint/*"
    			],
    			"Condition": {
    				"StringEquals": {
    					"aws:RequestTag/AWSMSKManaged": "true"
    				},
    				"StringLike": {
    					"aws:RequestTag/ClusterArn": "*"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateTags"
    			],
    			"Resource": "arn:*:ec2:*:*:vpc-endpoint/*",
    			"Condition": {
    				"StringEquals": {
    					"ec2:CreateAction": "CreateVpcEndpoint"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:DeleteVpcEndpoints"
    			],
    			"Resource": "arn:*:ec2:*:*:vpc-endpoint/*",
    			"Condition": {
    				"StringEquals": {
    					"ec2:ResourceTag/AWSMSKManaged": "true"
    				},
    				"StringLike": {
    					"ec2:ResourceTag/ClusterArn": "*"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:PassRole",
    			"Resource": "*",
    			"Condition": {
    				"StringEquals": {
    					"iam:PassedToService": "kafka.amazonaws.com"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:CreateServiceLinkedRole",
    			"Resource": "arn:aws:iam::*:role/aws-service-role/kafka.amazonaws.com/AWSServiceRoleForKafka*",
    			"Condition": {
    				"StringLike": {
    					"iam:AWSServiceName": "kafka.amazonaws.com"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"iam:AttachRolePolicy",
    				"iam:PutRolePolicy"
    			],
    			"Resource": "arn:aws:iam::*:role/aws-service-role/kafka.amazonaws.com/AWSServiceRoleForKafka*"
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:CreateServiceLinkedRole",
    			"Resource": "arn:aws:iam::*:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery*",
    			"Condition": {
    				"StringLike": {
    					"iam:AWSServiceName": "delivery.logs.amazonaws.com"
    				}
    			}
    		}

    	]
    }
```

------

# AWS politica gestita: Amazon MSKRead OnlyAccess
<a name="security-iam-awsmanpol-AmazonMSKReadOnlyAccess"></a>

Questa policy concede autorizzazioni di sola lettura che consentono agli utenti di visualizzare informazioni in Amazon MSK. I principali ai quali è collegata questa policy non possono effettuare aggiornamenti o eliminare risorse esistenti, né possono creare nuove risorse Amazon MSK. Ad esempio, i principali con queste autorizzazioni possono visualizzare l'elenco dei cluster e delle configurazioni associati al proprio account, ma non possono modificare la configurazione o le impostazioni di alcun cluster. Le autorizzazioni in questa policy sono raggruppate come segue:
+ **`Amazon MSK`autorizzazioni**: consentono di elencare le risorse Amazon MSK, descriverle e ottenere informazioni su di esse.
+ **`Amazon EC2`autorizzazioni**: vengono utilizzate per descrivere Amazon VPC, le sottoreti, i gruppi di sicurezza ENIs e sono associati a un cluster.
+ **`AWS KMS`autorizzazione**: viene utilizzata per descrivere la chiave associata al cluster.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "kafka:Describe*",
                "kafka:List*",
                "kafka:Get*",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "kms:DescribeKey"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

# AWS politica gestita: KafkaServiceRolePolicy
<a name="security-iam-awsmanpol-KafkaServiceRolePolicy"></a>

Non puoi collegarti KafkaServiceRolePolicy alle tue entità IAM. Questa policy è collegata a un ruolo collegato ai servizi che consente ad Amazon MSK di eseguire operazioni come la gestione degli endpoint VPC (connettori) nei cluster MSK, la gestione delle interfacce di rete e la gestione delle credenziali del cluster con Gestione dei segreti AWS. Per ulteriori informazioni, consulta [Ruoli collegati ai servizi per Amazon MSK](using-service-linked-roles.md).

La tabella seguente descrive gli aggiornamenti alla policy KafkaServiceRolePolicy gestita da quando Amazon MSK ha iniziato a tracciare le modifiche.


| Modifica | Descrizione | Data | 
| --- | --- | --- | 
|  [IPv6 supporto per la connettività aggiunto a KafkaServiceRolePolicy](#security-iam-awsmanpol-KafkaServiceRolePolicy): aggiornamento di una policy esistente  |  Amazon MSK ha aggiunto le autorizzazioni per KafkaServiceRolePolicy abilitare la IPv6 connettività per i cluster MSK. Queste autorizzazioni consentono ad Amazon MSK di assegnare e annullare l'assegnazione di IPv6 indirizzi alle interfacce di rete e di modificare gli attributi dell'interfaccia di rete nell'account del cliente.  | 17 novembre 2025 | 
|  [KafkaServiceRolePolicy](#security-iam-awsmanpol-KafkaServiceRolePolicy): aggiornamento di una policy esistente  |  Amazon MSK ha aggiunto le autorizzazioni per supportare la connettività privata multi-VPC.  | 8 marzo 2023 | 
|  Amazon MSK ha iniziato a tenere traccia delle modifiche  |  Amazon MSK ha iniziato a tracciare le modifiche per le policy KafkaServiceRolePolicy gestite.  | 8 marzo 2023 | 

# AWS politica gestita: AWSMSKReplicator ExecutionRole
<a name="security-iam-awsmanpol-AWSMSKReplicatorExecutionRole"></a>

La `AWSMSKReplicatorExecutionRole` policy concede le autorizzazioni al replicatore Amazon MSK per replicare i dati tra cluster MSK. Le autorizzazioni in questa policy sono raggruppate come segue:
+ **`cluster`**— Concede ad Amazon MSK Replicator le autorizzazioni per connettersi al cluster utilizzando l'autenticazione IAM. Concede inoltre le autorizzazioni per descrivere e modificare il cluster.
+ **`topic`**— Concede ad Amazon MSK Replicator le autorizzazioni per descrivere, creare e modificare un argomento e per modificare la configurazione dinamica dell'argomento.
+ **`consumer group`**— Concede ad Amazon MSK Replicator le autorizzazioni per descrivere e modificare gruppi di consumatori, leggere e scrivere dati da un cluster MSK e eliminare argomenti interni creati dal replicatore.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "ClusterPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:Connect",
				"kafka-cluster:DescribeCluster",
				"kafka-cluster:AlterCluster",
				"kafka-cluster:DescribeTopic",
				"kafka-cluster:CreateTopic",
				"kafka-cluster:AlterTopic",
				"kafka-cluster:WriteData",
				"kafka-cluster:ReadData",
				"kafka-cluster:AlterGroup",
				"kafka-cluster:DescribeGroup",
				"kafka-cluster:DescribeTopicDynamicConfiguration",
				"kafka-cluster:AlterTopicDynamicConfiguration",
				"kafka-cluster:WriteDataIdempotently"
			],
			"Resource": [
				"arn:aws:kafka:*:*:cluster/*"
			]
		},
		{
			"Sid": "TopicPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:DescribeTopic",
				"kafka-cluster:CreateTopic",
				"kafka-cluster:AlterTopic",
				"kafka-cluster:WriteData",
				"kafka-cluster:ReadData",
				"kafka-cluster:DescribeTopicDynamicConfiguration",
				"kafka-cluster:AlterTopicDynamicConfiguration",
				"kafka-cluster:AlterCluster"
			],
			"Resource": [
				"arn:aws:kafka:*:*:topic/*/*"
			]
		},
		{
			"Sid": "GroupPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:AlterGroup",
				"kafka-cluster:DescribeGroup"
			],
			"Resource": [
				"arn:aws:kafka:*:*:group/*/*"
			]
		}
	]
}
```

------

# Amazon MSK aggiorna le politiche AWS gestite
<a name="security-iam-awsmanpol-updates"></a>

Visualizza i dettagli sugli aggiornamenti delle politiche AWS gestite per Amazon MSK da quando questo servizio ha iniziato a tracciare queste modifiche.


| Modifica | Descrizione | Data | 
| --- | --- | --- | 
|  [WriteDataIdempotently autorizzazione aggiunta a AWSMSKReplicator ExecutionRole](security-iam-awsmanpol-AWSMSKReplicatorExecutionRole.md): aggiornamento a una politica esistente  |  Amazon MSK ha aggiunto WriteDataIdempotently l'autorizzazione alla AWSMSKReplicator ExecutionRole policy per supportare la replica dei dati tra cluster MSK.  | 12 marzo 2024 | 
|  [AWSMSKReplicatorExecutionRole](security-iam-awsmanpol-AWSMSKReplicatorExecutionRole.md): nuova policy  |  Amazon MSK ha aggiunto una AWSMSKReplicator ExecutionRole policy per supportare Amazon MSK Replicator.  | 04 dicembre 2023 | 
|  [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md): aggiornamento a una politica esistente  |  Amazon MSK ha aggiunto le autorizzazioni per supportare il replicatore Amazon MSK.  | 28 settembre 2023 | 
|  [KafkaServiceRolePolicy](security-iam-awsmanpol-KafkaServiceRolePolicy.md): aggiornamento di una policy esistente  |  Amazon MSK ha aggiunto le autorizzazioni per supportare la connettività privata multi-VPC.  | 8 marzo 2023 | 
| [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md): aggiornamento a una politica esistente |  Amazon MSK ha aggiunto nuove autorizzazioni Amazon EC2 per consentire la connessione a un cluster.  | 30 novembre 2021 | 
|  [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md): aggiornamento a una politica esistente  |  Amazon MSK ha aggiunto una nuova autorizzazione per consentirgli di descrivere le tabelle di routing di Amazon EC2.  | 19 novembre 2021 | 
|  Amazon MSK ha iniziato a tenere traccia delle modifiche  |  Amazon MSK ha iniziato a tracciare le modifiche per le sue politiche AWS gestite.  | 19 novembre 2021 | 

# Risolvi i problemi relativi all'identità e all'accesso ad Amazon MSK
<a name="security_iam_troubleshoot"></a>

Utilizza le informazioni seguenti per eseguire la diagnosi e risolvere i problemi comuni che possono verificarsi durante l'utilizzo di Amazon MSK e IAM.

**Topics**
+ [

## Non dispongo dell'autorizzazione per eseguire un'operazione in Amazon MSK
](#security_iam_troubleshoot-no-permissions)

## Non dispongo dell'autorizzazione per eseguire un'operazione in Amazon MSK
<a name="security_iam_troubleshoot-no-permissions"></a>

Se ti Console di gestione AWS dice che non sei autorizzato a eseguire un'azione, devi contattare l'amministratore per ricevere assistenza. L’amministratore è colui che ti ha fornito le credenziali di accesso.

L'errore di esempio seguente si verifica quando l'utente IAM `mateojackson` cerca di utilizzare la console per eliminare un cluster senza disporre delle autorizzazioni `kafka:DeleteCluster`.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: kafka:DeleteCluster on resource: purchaseQueriesCluster
```

In questo caso, Mateo chiede al suo amministratore di aggiornare le policy per poter accedere alla risorsa `purchaseQueriesCluster` mediante l'operazione `kafka:DeleteCluster`.

# Autenticazione e autorizzazione per Apache Kafka APIs
<a name="kafka_apis_iam"></a>

Puoi utilizzare IAM per autenticare i client e consentire o rifiutare le operazioni di Apache Kafka. In alternativa, puoi utilizzare TLS o SASL/SCRAM per autenticare i client e Apache ACLs Kafka per consentire o negare azioni.

Per informazioni su come controllare chi può eseguire le [operazioni di Amazon MSK](https://docs.aws.amazon.com/msk/1.0/apireference/operations.html) sul tuo cluster, consulta la pagina [Autenticazione e autorizzazione per Amazon MSK APIs](security-iam.md).

**Topics**
+ [

# Controllo degli accessi IAM
](iam-access-control.md)
+ [

# Autenticazione client TLS reciproca per Amazon MSK
](msk-authentication.md)
+ [

# Autenticazione delle credenziali di accesso con Secrets Manager AWS
](msk-password.md)
+ [

# Apache Kafka ACLs
](msk-acls.md)

# Controllo degli accessi IAM
<a name="iam-access-control"></a>

Il Controllo degli accessi IAM per Amazon MSK ti consente di gestire sia l'autenticazione sia l'autorizzazione per il cluster MSK. Ciò elimina la necessità di utilizzare meccanismi separati per l'autenticazione e l'autorizzazione. Ad esempio, quando un client tenta di scrivere sul cluster, Amazon MSK utilizza IAM per verificare se tale client è un'identità autenticata e se è autorizzato a produrre nel cluster.

Il controllo degli accessi IAM funziona per client Java e non Java, inclusi i client Kafka scritti in Python, Go e.NET. JavaScript Il controllo degli accessi IAM per client non Java è disponibile per i cluster MSK con Kafka versione 2.7.1 o successiva.

Per rendere possibile il Controllo degli accessi IAM, Amazon MSK apporta piccole modifiche al codice sorgente di Apache Kafka. Queste modifiche non causeranno differenze evidenti nella tua esperienza con Apache Kafka. Amazon MSK registra gli eventi di accesso in modo da poterli controllare.

È possibile richiamare Apache Kafka ACL per un cluster MSK che utilizza il controllo degli accessi IAM. APIs Tuttavia, Apache Kafka ACLs non ha alcun effetto sull'autorizzazione per le identità IAM. È necessario utilizzare le policy IAM per controllare l'accesso alle identità IAM.

**Considerazioni importanti**  
Quando utilizzi il controllo degli accessi IAM con il tuo cluster MSK, tieni presenti le seguenti importanti considerazioni:  
Il controllo degli accessi IAM non si applica ai nodi ZooKeeper Apache. Per ulteriori informazioni sul controllo degli accessi a tali nodi, consulta la pagina [Controlla l'accesso ai ZooKeeper nodi Apache nel tuo cluster Amazon MSK](zookeeper-security.md).
L'impostazione `allow.everyone.if.no.acl.found` di Apache Kafka non ha effetto se il cluster utilizza il Controllo degli accessi IAM. 
Puoi richiamare Apache Kafka ACL APIs per un cluster MSK che utilizza il controllo degli accessi IAM. Tuttavia, Apache Kafka ACLs non ha alcun effetto sull'autorizzazione per le identità IAM. È necessario utilizzare le policy IAM per controllare l'accesso alle identità IAM.

# Come funziona il Controllo degli accessi IAM per Amazon MSK
<a name="how-to-use-iam-access-control"></a>

Per utilizzare il controllo degli accessi IAM per Amazon MSK, esegui i seguenti passaggi, descritti in dettaglio in questi argomenti:
+ [Crea un cluster Amazon MSK che utilizza il controllo degli accessi IAM](create-iam-access-control-cluster-in-console.md) 
+ [Configurazione dei client per il Controllo degli accessi IAM](configure-clients-for-iam-access-control.md)
+ [Crea politiche di autorizzazione per il ruolo IAM](create-iam-access-control-policies.md)
+ [Recupero dei broker di bootstrap per il Controllo degli accessi IAM](get-bootstrap-brokers-for-iam.md)

# Crea un cluster Amazon MSK che utilizza il controllo degli accessi IAM
<a name="create-iam-access-control-cluster-in-console"></a>

Questa sezione spiega come utilizzare Console di gestione AWS, l'API o il AWS CLI per creare un cluster Amazon MSK che utilizza il controllo degli accessi IAM. Per informazioni su come attivare il Controllo degli accessi IAM per un cluster esistente, consulta la pagina [Aggiornamento delle impostazioni di sicurezza di un cluster Amazon MSK](msk-update-security.md).

**Utilizza il Console di gestione AWS per creare un cluster che utilizza il controllo degli accessi IAM**

1. Apri la console Amazon MSK all'indirizzo [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. Scegli **Crea cluster**.

1. Scegli **Crea cluster con impostazioni personalizzate**.

1. Nella sezione **Autenticazione**, scegli **Controllo degli accessi IAM**.

1. Completa il resto del flusso di lavoro per creare un cluster.

**Utilizza l'API o il AWS CLI per creare un cluster che utilizza il controllo degli accessi IAM**
+ Per creare un cluster con il controllo degli accessi IAM abilitato, utilizza l'[CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster)API o il comando [CLI create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/create-cluster.html) e passa il seguente JSON per il parametro:. `ClientAuthentication` `"ClientAuthentication": { "Sasl": { "Iam": { "Enabled": true } }` 

# Configurazione dei client per il Controllo degli accessi IAM
<a name="configure-clients-for-iam-access-control"></a>

Per consentire ai client di comunicare con un cluster MSK che utilizza il controllo degli accessi IAM, è possibile utilizzare uno di questi meccanismi:
+ Configurazione client non Java tramite meccanismo SASL\$1OAUTHBEARER
+ Configurazione del client Java mediante SASL\$1OAUTHBEARER meccanismo o AWS\$1MSK\$1IAM meccanismo

## Usa il SASL\$1OAUTHBEARER meccanismo per configurare IAM
<a name="configure-clients-for-iam-access-control-sasl-oauthbearer"></a>

1. Modifica il tuo file di configurazione client.properties usando il seguente esempio di client Python Kafka. Le modifiche alla configurazione sono simili in altri linguaggi.

   ```
   from kafka import KafkaProducer
   from kafka.errors import KafkaError
   from kafka.sasl.oauth import AbstractTokenProvider
   import socket
   import time
   from aws_msk_iam_sasl_signer import MSKAuthTokenProvider
   
   class MSKTokenProvider():
       def token(self):
           token, _ = MSKAuthTokenProvider.generate_auth_token('<my Regione AWS>')
           return token
   
   tp = MSKTokenProvider()
   
   producer = KafkaProducer(
       bootstrap_servers='<myBootstrapString>',
       security_protocol='SASL_SSL',
       sasl_mechanism='OAUTHBEARER',
       sasl_oauth_token_provider=tp,
       client_id=socket.gethostname(),
   )
   
   topic = "<my-topic>"
   while True:
       try:
           inp=input(">")
           producer.send(topic, inp.encode())
           producer.flush()
           print("Produced!")
       except Exception:
           print("Failed to send message:", e)
   
   producer.close()
   ```

1. Scarica la libreria di supporto per la lingua di configurazione scelta e segui le istruzioni nella sezione *Guida introduttiva* della home page della libreria di lingue in questione.
   + JavaScript: [https://github.com/aws/aws-msk-iam-sasl-signer-js \$1getting -started](https://github.com/aws/aws-msk-iam-sasl-signer-js#getting-started)
   + Python: [https://github.com/aws/aws-msk-iam-sasl-signer-python \$1get -avviato](https://github.com/aws/aws-msk-iam-sasl-signer-python#get-started)
   + Vai: [https://github.com/aws/aws-msk-iam-sasl-signer-go \$1getting -started](https://github.com/aws/aws-msk-iam-sasl-signer-go#getting-started)
   + [.NET: -signer-net \$1getting -iniziato https://github.com/aws/ aws-msk-iam-sasl](https://github.com/aws/aws-msk-iam-sasl-signer-net#getting-started)
   + JAVA: SASL\$1OAUTHBEARER il supporto per Java è disponibile tramite il file jar [https://github.com/aws/aws-msk-iam-auth/releases](https://github.com/aws/aws-msk-iam-auth/releases)

## Utilizza il AWS\$1MSK\$1IAM meccanismo personalizzato MSK per configurare IAM
<a name="configure-clients-for-iam-access-control-msk-iam"></a>

1. Aggiungi quanto segue al file `client.properties`. Sostituisci *<PATH\$1TO\$1TRUST\$1STORE\$1FILE>* con il percorso completo del file di trust store sul client.
**Nota**  
Se non desideri utilizzare un certificato specifico, puoi rimuovere `ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>` dal tuo file `client.properties`. Se non specifichi un valore per `ssl.truststore.location`, il processo Java utilizza il certificato predefinito.

   ```
   ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
   sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
   ```

   Per utilizzare un profilo denominato creato per AWS le credenziali, includilo `awsProfileName="your profile name";` nel file di configurazione del client. Per informazioni sui profili denominati, consulta [Profili denominati](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) nella AWS CLI documentazione.

1. Scaricate l'ultimo file [aws-msk-iam-auth](https://github.com/aws/aws-msk-iam-auth/releases)JAR stabile e inseritelo nel percorso della classe. Se utilizzi Maven, aggiungi la seguente dipendenza, modificando il numero di versione secondo necessità:

   ```
   <dependency>
       <groupId>software.amazon.msk</groupId>
       <artifactId>aws-msk-iam-auth</artifactId>
       <version>1.0.0</version>
   </dependency>
   ```

Il plug-in client di Amazon MSK è open source con licenza Apache 2.0.

# Crea politiche di autorizzazione per il ruolo IAM
<a name="create-iam-access-control-policies"></a>

Collega una policy di autorizzazione al ruolo IAM corrispondente al client. In una policy di autorizzazione, specifichi quali operazioni consentire o rifiutare per il ruolo. Se il tuo client è su un'istanza Amazon EC2, associa la policy di autorizzazione al ruolo IAM per quell'istanza Amazon EC2. In alternativa, puoi configurare il client per utilizzare un profilo denominato e quindi associare la policy di autorizzazione al ruolo per quel profilo denominato. [Configurazione dei client per il Controllo degli accessi IAM](configure-clients-for-iam-access-control.md) descrive come configurare un client per utilizzare un profilo denominato.

Per informazioni sulla creazione di una policy IAM, consulta la pagina [Creating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html). 

Di seguito è riportato un esempio di politica di autorizzazione per un cluster denominato MyTestCluster. Per comprendere la semantica degli elementi `Action` e `Resource`, consulta la pagina [Semantica delle azioni e delle risorse della politica di autorizzazione IAM](kafka-actions.md).

**Importante**  
Le modifiche apportate a una policy IAM si riflettono nell'IAM APIs e nell' AWS CLI immediatezza. Tuttavia, può trascorrere molto tempo prima che la modifica della policy abbia effetto. Nella maggior parte dei casi, le modifiche alle policy entrano in vigore in meno di un minuto. A volte le condizioni della rete possono aumentare il ritardo.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:111122223333:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

Per informazioni su come creare una policy con elementi di operazione che corrispondano ai casi d'uso comuni di Apache Kafka, come la produzione e l'utilizzo di dati, consulta la pagina [Casi d'uso comuni per la politica di autorizzazione dei client](iam-access-control-use-cases.md).

[Per le versioni di Kafka 2.8.0 e successive, l'**WriteDataIdempotently**autorizzazione è obsoleta (KIP-679).](https://cwiki.apache.org/confluence/display/KAFKA/KIP-679%3A+Producer+will+enable+the+strongest+delivery+guarantee+by+default) Per impostazione predefinita, viene utilizzato `enable.idempotence = true`. Pertanto, per le versioni di Kafka 2.8.0 e successive, IAM non offre le stesse funzionalità di Kafka. ACLs Non è possibile accedere a un argomento fornendo solo `WriteDataIdempotently` l'accesso a quell'argomento. `WriteData` Ciò non influisce sul caso in cui `WriteData` venga fornito a **TUTTI gli** argomenti. In tal caso, l'operazione `WriteDataIdempotently` è consentita. Ciò è dovuto alle differenze nell'implementazione della logica IAM e nel modo in cui ACLs vengono implementati i Kafka. Inoltre, scrivere su un argomento in modo idempotente richiede anche l'accesso a. `transactional-ids`

Per ovviare a questo problema, consigliamo di utilizzare una politica simile alla seguente politica.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster",
                "kafka-cluster:WriteDataIdempotently"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic",
                "arn:aws:kafka:us-east-1:123456789012:transactional-id/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*"
            ]
        }
    ]
}
```

------

In questo caso, `WriteData` consente le scritture sul `TestTopic`, mentre `WriteDataIdempotently` consente le scritture idempotenti sul cluster. Questa politica aggiunge anche l'accesso alle `transactional-id` risorse che saranno necessarie.

Poiché `WriteDataIdempotently` si tratta di un'autorizzazione a livello di cluster, non è possibile utilizzarla a livello di argomento. Se `WriteDataIdempotently` è limitato al livello di argomento, questo criterio non funzionerà.

# Recupero dei broker di bootstrap per il Controllo degli accessi IAM
<a name="get-bootstrap-brokers-for-iam"></a>

Per informazioni, consulta [Ottieni i broker bootstrap per un cluster Amazon MSK](msk-get-bootstrap-brokers.md).

# Semantica delle azioni e delle risorse della politica di autorizzazione IAM
<a name="kafka-actions"></a>

**Nota**  
Per i cluster che eseguono Apache Kafka versione 3.8 o successiva, il controllo degli accessi IAM supporta l'API per terminare le transazioni. WriteTxnMarkers Per i cluster che eseguono versioni di Kafka precedenti alla 3.8, il controllo degli accessi IAM non supporta le azioni interne del cluster, tra cui. WriteTxnMarkers Per queste versioni precedenti, per terminare le transazioni, utilizza l'autenticazione SCRAM o MTLS con l'autenticazione appropriata anziché l'autenticazione IAM. ACLs 

In questa sezione viene illustrata la semantica degli elementi di operazione e risorsa che è possibile utilizzare in una policy di autorizzazione IAM. Per un esempio di policy, consulta [Crea politiche di autorizzazione per il ruolo IAM](create-iam-access-control-policies.md).

## Azioni relative alla politica di autorizzazione
<a name="actions"></a>

La tabella seguente elenca le operazioni che è possibile includere in una policy di autorizzazione quando si utilizza il Controllo degli accessi IAM per Amazon MSK. Quando includi nella tua policy di autorizzazione un'operazione dalla colonna *Operazione* della tabella, devi includere anche le operazioni corrispondenti dalla colonna *Operazioni richieste*. 


| Azione | Description | Operazioni necessarie | Risorse obbligatorie | Applicabile ai cluster serverless | 
| --- | --- | --- | --- | --- | 
| kafka-cluster:Connect | Concede l'autorizzazione per connettersi e autenticarsi al cluster. | Nessuno | cluster | Sì | 
| kafka-cluster:DescribeCluster | Concede l'autorizzazione per descrivere vari aspetti del cluster, equivalente all'ACL DESCRIBE CLUSTER di Apache Kafka. |  `kafka-cluster:Connect`  | cluster | Sì | 
| kafka-cluster:AlterCluster | Concede l'autorizzazione per modificare vari aspetti del cluster, equivalente all'ACL ALTER CLUSTER di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeCluster`  | cluster | No | 
| kafka-cluster:DescribeClusterDynamicConfiguration | Concede l'autorizzazione per descrivere la configurazione dinamica di un cluster, equivalente all'ACL DESCRIBE\$1CONFIGS CLUSTER di Apache Kafka. |  `kafka-cluster:Connect`  | cluster | No | 
| kafka-cluster:AlterClusterDynamicConfiguration | Concede l'autorizzazione per modificare la configurazione dinamica di un cluster, equivalente all'ACL ALTER\$1CONFIGS CLUSTER di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | cluster | No | 
| kafka-cluster:WriteDataIdempotently | Concede l'autorizzazione per scrivere dati in modo idempotente su un cluster, equivalente all'ACL IDEMPOTENT\$1WRITE CLUSTER di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:WriteData`  | cluster | Sì | 
| kafka-cluster:CreateTopic | Concede l'autorizzazione a creare argomenti su un cluster, equivalente all'ACL CREATE di Apache Kafka. CLUSTER/TOPIC  |  `kafka-cluster:Connect`  | topic | Sì | 
| kafka-cluster:DescribeTopic | Concede l'autorizzazione per descrivere gli argomenti in un cluster, equivalente all'ACL DESCRIBE TOPIC di Apache Kafka. |  `kafka-cluster:Connect`  | topic | Sì | 
| kafka-cluster:AlterTopic | Concede l'autorizzazione per modificare gli argomenti in un cluster, equivalente all'ACL ALTER TOPIC di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | topic | Sì | 
| kafka-cluster:DeleteTopic | Concede l'autorizzazione per eliminare gli argomenti in un cluster, equivalente all'ACL DELETE TOPIC di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | topic | Sì | 
| kafka-cluster:DescribeTopicDynamicConfiguration | Concede l'autorizzazione per descrivere la configurazione dinamica degli argomenti in un cluster, equivalente all'ACL DESCRIBE\$1CONFIGS TOPIC di Apache Kafka. |  `kafka-cluster:Connect`  | topic | Sì | 
| kafka-cluster:AlterTopicDynamicConfiguration | Concede l'autorizzazione per modificare la configurazione dinamica degli argomenti in un cluster, equivalente all'ACL ALTER\$1CONFIGS TOPIC di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration`  | topic | Sì | 
| kafka-cluster:ReadData | Concede l'autorizzazione per leggere i dati da argomenti in un cluster, equivalente all'ACL READ TOPIC di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterGroup`  | topic | Sì | 
| kafka-cluster:WriteData | Concede l'autorizzazione per scrivere dati su argomenti in un cluster, equivalente all'ACL WRITE TOPIC di Apache Kafka |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | topic | Sì | 
| kafka-cluster:DescribeGroup | Concede l'autorizzazione per descrivere i gruppi in un cluster, equivalente all'ACL DESCRIBE GROUP di Apache Kafka. |  `kafka-cluster:Connect`  | gruppo | Sì | 
| kafka-cluster:AlterGroup | Concede l'autorizzazione per unire dei gruppi all'interno di un cluster, equivalente all'ACL READ GROUP di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | gruppo | Sì | 
| kafka-cluster:DeleteGroup | Concede l'autorizzazione per eliminare gruppi all'interno di un cluster, equivalente all'ACL DELETE GROUP di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | gruppo | Sì | 
| kafka-cluster:DescribeTransactionalId | Concede l'autorizzazione a descrivere le transazioni IDs su un cluster, equivalente all'ACL DESCRIBE TRANSACTIONAL\$1ID di Apache Kafka. |  `kafka-cluster:Connect`  | transactional-id | Sì | 
| kafka-cluster:AlterTransactionalId | Concede l'autorizzazione a modificare le transazioni su un cluster, equivalente all'ACL WRITE IDs TRANSACTIONAL\$1ID di Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:WriteData`  | transactional-id | Sì | 

In un'operazione, dopo i due punti, è possibile utilizzare qualsiasi quantità di caratteri jolly asterisco (\$1). Di seguito vengono mostrati gli esempi.
+ `kafka-cluster:*Topic` sta per `kafka-cluster:CreateTopic`, `kafka-cluster:DescribeTopic`, `kafka-cluster:AlterTopic` e `kafka-cluster:DeleteTopic`. Non include `kafka-cluster:DescribeTopicDynamicConfiguration` o `kafka-cluster:AlterTopicDynamicConfiguration`.
+ `kafka-cluster:*` indica tutte le autorizzazioni.

## Risorse relative alla politica di autorizzazione
<a name="msk-iam-resources"></a>

La tabella seguente mostra i quattro tipi di risorse che è possibile utilizzare in una policy di autorizzazione quando si utilizza il Controllo degli accessi IAM per Amazon MSK. Puoi ottenere il cluster Amazon Resource Name (ARN) da o utilizzando l'[DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API Console di gestione AWS o il comando [AWS CLI describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html). È quindi possibile utilizzare l'ARN del cluster per creare un argomento, un gruppo e un ID transazionale. ARNs Per specificare una risorsa nella policy di autorizzazione, utilizza l'ARN della risorsa.


| Risorsa | Formato ARN | 
| --- | --- | 
| Cluster | arn:aws:kafka: :cluster//regionaccount-idcluster-namecluster-uuid | 
| Topic | arn:aws:kafka: region ::argomento///account-idcluster-namecluster-uuidtopic-name | 
| Gruppo | arn:aws:kafka: region :group///account-idcluster-namecluster-uuidgroup-name | 
| ID transazionale | arn:aws:kafka: region ::identificativo-transazione///account-idcluster-namecluster-uuidtransactional-id | 

È possibile utilizzare qualsiasi quantità di caratteri jolly asterisco (\$1) in qualsiasi punto dell'ARN successivo a `:cluster/`, `:topic/`, `:group/` e `:transactional-id/`. Di seguito sono riportati alcuni esempi di come utilizzare il carattere jolly asterisco (\$1) per fare riferimento a più risorse:
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*`: tutti gli argomenti di qualsiasi cluster denominato, indipendentemente dall'UUID del cluster. MyTestCluster
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test`: tutti gli argomenti il cui nome termina con «\$1test» nel cluster il cui nome è MyTestCluster e il cui UUID è abcd1234-0123-abcd-5678-1234abcd-1.
+ `arn:aws:kafka:us-east-1:0123456789012:transactional-id/MyTestCluster/*/5555abcd-1111-abcd-1234-abcd1234-1`: tutte le transazioni il cui ID transazionale è MyTestCluster 5555abcd-1111-abcd-1234-abcd1234-1, in tutte le incarnazioni di un cluster denominato nel tuo account. Ciò significa che se si crea un cluster denominato MyTestCluster, quindi lo si elimina e quindi si crea un altro cluster con lo stesso nome, è possibile utilizzare questa risorsa ARN per rappresentare lo stesso ID delle transazioni su entrambi i cluster. Tuttavia, il cluster eliminato non è accessibile.

# Casi d'uso comuni per la politica di autorizzazione dei client
<a name="iam-access-control-use-cases"></a>

La prima colonna della tabella seguente mostra alcuni casi d'uso comuni. Per autorizzare un client a eseguire un determinato caso d'uso, includi le operazioni richieste per tale caso d'uso nella policy di autorizzazione del client e imposta `Effect` su `Allow`.

Per informazioni su tutte le operazioni che fanno parte del Controllo degli accessi IAM per Amazon MSK, consulta la pagina [Semantica delle azioni e delle risorse della politica di autorizzazione IAM](kafka-actions.md).

**Nota**  
Le operazioni non sono consentite per impostazione predefinita. È necessario consentire esplicitamente ogni operazione che si desidera autorizzare il client a eseguire.


****  

| Caso d’uso | Operazioni necessarie | 
| --- | --- | 
| Admin |  `kafka-cluster:*`  | 
| Crea un argomento |  `kafka-cluster:Connect` `kafka-cluster:CreateTopic`  | 
| Produzione di dati |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData`  | 
| Utilizzo di dati |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DescribeGroup` `kafka-cluster:AlterGroup` `kafka-cluster:ReadData`  | 
| Produzione di dati in modo idempotente |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:WriteDataIdempotently`  | 
| Produzione di dati in modo transazionale |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:AlterTransactionalId`  | 
| Descrizione della configurazione di un cluster |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | 
| Aggiornamento della configurazione di un cluster |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration` `kafka-cluster:AlterClusterDynamicConfiguration`  | 
| Descrizione della configurazione di un argomento |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` | 
| Aggiornamento della configurazione di un argomento |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` `kafka-cluster:AlterTopicDynamicConfiguration`  | 
| Modifica di un argomento |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterTopic`  | 

# Autenticazione client TLS reciproca per Amazon MSK
<a name="msk-authentication"></a>

Puoi abilitare l'autenticazione client con TLS per le connessioni dalle tue applicazioni ai broker Amazon MSK. Per utilizzare l'autenticazione client, è necessario un CA privata AWS. CA privata AWS Possono appartenere allo Account AWS stesso cluster o a un account diverso. Per informazioni su CA privata AWS s, vedere [Creazione e gestione di un CA privata AWS](https://docs.aws.amazon.com/acm-pca/latest/userguide/create-CA.html).

Amazon MSK non supporta gli elenchi di revoca dei certificati ()CRLs. Per controllare l'accesso agli argomenti del cluster o bloccare i certificati compromessi, usa Apache ACLs Kafka e i gruppi di sicurezza. AWS Per informazioni sull'uso di Apache Kafka, consulta. ACLs [Apache Kafka ACLs](msk-acls.md)

**Topics**
+ [

# Crea un cluster Amazon MSK che supporti l'autenticazione dei client
](msk-authentication-cluster.md)
+ [

# Configura un client per utilizzare l'autenticazione
](msk-authentication-client.md)
+ [

# Produci e consuma messaggi utilizzando l'autenticazione
](msk-authentication-messages.md)

# Crea un cluster Amazon MSK che supporti l'autenticazione dei client
<a name="msk-authentication-cluster"></a>

Questa procedura mostra come abilitare l'autenticazione del client utilizzando un CA privata AWS.
**Nota**  
Si consiglia vivamente di utilizzare Independent CA privata AWS per ogni cluster MSK quando si utilizza il TLS reciproco per controllare l'accesso. In questo modo assicurerai che i certificati TLS firmati da si autentichino PCAs solo con un singolo cluster MSK.

1. Crea un file denominato `clientauthinfo.json` con i seguenti contenuti. Sostituisci *Private-CA-ARN* con l'ARN del tuo PCA.

   ```
   {
      "Tls": {
          "CertificateAuthorityArnList": ["Private-CA-ARN"]
       }
   }
   ```

1. Crea un file denominato `brokernodegroupinfo.json` come descritto in [Crea un cluster Amazon MSK di cui è stato effettuato il provisioning utilizzando il AWS CLI](create-cluster-cli.md).

1. L'autenticazione client richiede di abilitare anche la crittografia dei dati in transito tra client e broker. Crea un file denominato `encryptioninfo.json` con i seguenti contenuti. Sostituisci *KMS-Key-ARN* con l'ARN della tua chiave KMS. Puoi impostare `ClientBroker` su `TLS` o `TLS_PLAINTEXT`.

   ```
   {
      "EncryptionAtRest": {
          "DataVolumeKMSKeyId": "KMS-Key-ARN"
       },
      "EncryptionInTransit": {
           "InCluster": true,
           "ClientBroker": "TLS"
       }
   }
   ```

   Per ulteriori informazioni sulla crittografia, consulta [Crittografia di Amazon MSK](msk-encryption.md).

1. Su una macchina su cui è AWS CLI installata, esegui il comando seguente per creare un cluster con l'autenticazione e la crittografia in transito abilitate. Salva l'ARN del cluster fornito nella risposta.

   ```
   aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "{YOUR KAFKA VERSION}" --number-of-broker-nodes 3
   ```

# Configura un client per utilizzare l'autenticazione
<a name="msk-authentication-client"></a>

Questo processo descrive come configurare un'istanza Amazon EC2 da utilizzare come client per utilizzare l'autenticazione.

Questo processo descrive come produrre e utilizzare messaggi utilizzando l'autenticazione creando una macchina client, creando un argomento e configurando le impostazioni di sicurezza richieste.

1. Crea un'istanza Amazon EC2 da utilizzare come un computer client. Per semplicità, creare questa istanza nello stesso VPC utilizzato per il cluster. Consulta [Passaggio 3: creazione di un computer client](create-client-machine.md) per un esempio di come creare un computer client di questo tipo.

1. Creazione di un argomento. Per un esempio, consulta le istruzioni in [Fase 4: creare un argomento nel cluster Amazon MSK](create-topic.md).

1. Su una macchina su cui è AWS CLI installato, esegui il comando seguente per ottenere i broker bootstrap del cluster. Sostituisci *Cluster-ARN* con l'ARN del tuo cluster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN
   ```

   Salvare la stringa associata a `BootstrapBrokerStringTls` nella risposta.

1. Sul computer client, eseguire il comando seguente per utilizzare il truststore JVM per creare il truststore client. Se il percorso JVM è diverso, modificare il comando di conseguenza.

   ```
   cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
   ```

1. Sul computer client, eseguire il comando seguente per creare una chiave privata per il client. Sostituisci *Distinguished-Name**Example-Alias*,*Your-Store-Pass*, e *Your-Key-Pass* con stringhe a tua scelta.

   ```
   keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12 -keyalg rsa
   ```

1. Sul computer client, eseguire il comando seguente per creare una richiesta di certificato con la chiave privata creata nella fase precedente.

   ```
   keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
   ```

1. Aprire il file `client-cert-sign-request` e accertarsi che inizi con `-----BEGIN CERTIFICATE REQUEST-----` e termini con `-----END CERTIFICATE REQUEST-----`. Se inizia con `-----BEGIN NEW CERTIFICATE REQUEST-----`, eliminare la parola `NEW` (e il singolo spazio che la segue) dall'inizio e dalla fine del file.

1. Su un computer in cui è AWS CLI installato, esegui il comando seguente per firmare la richiesta di certificato. Sostituisci *Private-CA-ARN* con l'ARN del tuo PCA. Se lo si desidera, è possibile modificare il valore di validità. In questo esempio viene utilizzato 300.

   ```
   aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"
   ```

   Salvare il certificato ARN fornito nella risposta.
**Nota**  
Per recuperare il certificato client, utilizza il comando `acm-pca get-certificate` e specifica l'ARN del certificato. Per ulteriori informazioni, consulta la sezione [get-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm-pca/get-certificate.html) nella *documentazione di riferimento alla AWS CLI *.

1. Esegui il comando seguente per ottenere il certificato CA privata AWS firmato per te. Sostituisci *Certificate-ARN* con l'ARN ottenuto dalla risposta al comando precedente.

   ```
   aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN
   ```

1. Dal risultato JSON dell'esecuzione del comando precedente, copiare le stringhe associate a `Certificate` e `CertificateChain`. Incolla queste due stringhe in un nuovo file denominato. signed-certificate-from-acm Incollare innanzitutto la stringa associata a `Certificate`, seguita dalla stringa associata a `CertificateChain`. Sostituire i caratteri `\n` con nuove righe. Di seguito è riportata la struttura del file dopo aver incollato al suo interno il certificato e la catena di certificati.

   ```
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   ```

1. Eseguire il comando seguente sul computer client per aggiungere questo certificato al keystore in modo da poterlo presentare quando si parla con i broker MSK.

   ```
   keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
   ```

1. Crea un file denominato `client.properties` con i seguenti contenuti. Regolare le posizioni del truststore e del keystore sui percorsi in cui è stato salvato `kafka.client.truststore.jks`. Sostituisci i segnaposto con la versione del tuo client Kafka. *\$1YOUR KAFKA VERSION\$1*

   ```
   security.protocol=SSL
   ssl.truststore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.truststore.jks
   ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.keystore.jks
   ssl.keystore.password=Your-Store-Pass
   ssl.key.password=Your-Key-Pass
   ```

# Produci e consuma messaggi utilizzando l'autenticazione
<a name="msk-authentication-messages"></a>

Questo processo descrive come produrre e utilizzare messaggi utilizzando l'autenticazione.

1. Eseguire il comando seguente per creare un argomento. Il file denominato `client.properties` è quello creato nella procedura precedente.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBroker-String --replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties
   ```

1. Eseguire il comando seguente per avviare un produttore della console. Il file denominato `client.properties` è quello creato nella procedura precedente.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --producer.config client.properties
   ```

1. In una nuova finestra di comando sul computer client, eseguire il comando seguente per avviare un consumatore della console.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties
   ```

1. Digitare i messaggi nella finestra del produttore e guardarli apparire nella finestra del consumatore.

# Autenticazione delle credenziali di accesso con Secrets Manager AWS
<a name="msk-password"></a>

Puoi controllare l'accesso ai tuoi cluster Amazon MSK utilizzando credenziali di accesso archiviate e protette tramite Secrets Manager. AWS L'archiviazione delle credenziali utente in Secrets Manager riduce il sovraccarico dell'autenticazione del cluster, ad esempio il controllo, l'aggiornamento e la rotazione delle credenziali. Secrets Manager consente inoltre di condividere le credenziali utente tra i cluster.

Dopo aver associato un segreto a un cluster MSK, MSK sincronizza periodicamente i dati delle credenziali.

**Topics**
+ [

# Come funziona l'autenticazione delle credenziali di accesso
](msk-password-howitworks.md)
+ [

# Configurare SASL/SCRAM l'autenticazione per un cluster Amazon MSK
](msk-password-tutorial.md)
+ [

# Operazioni con gli utenti
](msk-password-users.md)
+ [

# Limitazioni nell'uso dei segreti SCRAM
](msk-password-limitations.md)

# Come funziona l'autenticazione delle credenziali di accesso
<a name="msk-password-howitworks"></a>

L'autenticazione delle credenziali di accesso per Amazon MSK utilizza l'autenticazione SASL/SCRAM (Simple Authentication and Security Layer/ Salted Challenge Response Mechanism). Per configurare l'autenticazione delle credenziali di accesso per un cluster, crea una risorsa segreta in [AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/?id=docs_gateway) e associa le credenziali di accesso a quel segreto. 

SASL/SCRAM è definito in [RFC 5802](https://tools.ietf.org/html/rfc5802). SCRAM utilizza algoritmi di hashing protetti e non trasmette credenziali di accesso non crittografate tra client e server. 

**Nota**  
Quando configuri SASL/SCRAM l'autenticazione per il tuo cluster, Amazon MSK attiva la crittografia TLS per tutto il traffico tra clienti e broker.

# Configurare SASL/SCRAM l'autenticazione per un cluster Amazon MSK
<a name="msk-password-tutorial"></a>

Per impostare un segreto in AWS Secrets Manager, segui il tutorial [Creazione e recupero di un segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) nella Guida per l'[utente di AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Tieni presente i seguenti requisiti quando crei un segreto per un cluster Amazon MSK:
+ Per il tipo di segreto, scegli **Altro tipo di segreto (es. chiave API)**.
+ Il nome del segreto deve iniziare con il prefisso **AmazonMSK\$1**.
+ È necessario utilizzare una AWS KMS chiave personalizzata esistente o creare una nuova AWS KMS chiave personalizzata per il segreto. Secrets Manager utilizza la AWS KMS chiave predefinita per un segreto per impostazione predefinita. 
**Importante**  
Un segreto creato con la AWS KMS chiave predefinita non può essere utilizzato con un cluster Amazon MSK.
+ I dati delle credenziali di accesso devono essere nel seguente formato per inserire coppie chiave-valore utilizzando l'opzione **Non crittografato**.

  ```
  {
    "username": "alice",
    "password": "alice-secret"
  }
  ```
+ Prendi nota del valore del nome della risorsa Amazon (ARN) del segreto. 
+ 
**Importante**  
Non è possibile associare un segreto di Secrets Manager a un cluster che supera i limiti descritti in [Dimensioni corrette del cluster: numero di partizioni per broker Standard](bestpractices.md#partitions-per-broker).
+ Se si utilizza il AWS CLI per creare il segreto, specificare un ID chiave o un ARN per il `kms-key-id` parametro. Non specificare un alias.
+ Per associare il segreto al cluster, utilizza la console Amazon MSK o l'[ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operazione. 
**Importante**  
Quando associ un segreto a un cluster, Amazon MSK collega al segreto una policy delle risorse che consente al cluster di accedere e leggere i valori del segreto che hai definito. Questa policy delle risorse non dovrebbe essere modificata. In questo modo, è possibile impedire al cluster di accedere al segreto. Se apporti modifiche alla policy delle risorse Secrets e/o alla chiave KMS utilizzata per la crittografia segreta, assicurati di riassociare i segreti al tuo cluster MSK. In questo modo il cluster potrà continuare ad accedere al segreto.

  L'esempio seguente di input JSON per l'operazione `BatchAssociateScramSecret` associa un segreto a un cluster:

  ```
  {
    "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
    "secretArnList": [
      "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
    ]
  }
  ```

# Connessione al cluster con credenziali di accesso
<a name="msk-password-tutorial-connect"></a>

Dopo aver creato un segreto e averlo collegato al cluster, è possibile collegare il client al cluster. La procedura seguente mostra come connettere un client a un cluster che utilizza SASL/SCRAM l'autenticazione. Viene inoltre illustrato come produrre e consumare partendo da un argomento di esempio.

**Topics**
+ [

## Connessione di un client al cluster tramite SASL/SCRAM l'autenticazione
](#w2aab9c13c29c17c13c11b9b7)
+ [

## Risoluzione dei problemi di connessione
](#msk-password-tutorial-connect-troubleshooting)

## Connessione di un client al cluster tramite SASL/SCRAM l'autenticazione
<a name="w2aab9c13c29c17c13c11b9b7"></a>

1. Esegui il comando seguente su un computer che è stato AWS CLI installato. Sostituisci *clusterARN* con l'ARN del tuo cluster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   Dal risultato JSON di questo comando, salva il valore associato alla stringa denominata. `BootstrapBrokerStringSaslScram` Utilizzerai questo valore nei passaggi successivi.

1. Sul tuo computer client, crea un file di configurazione JAAS che contenga le credenziali utente archiviate nel tuo segreto. Ad esempio, per l'utente **alice**, crea un file chiamato `users_jaas.conf` con il seguente contenuto.

   ```
   KafkaClient {
      org.apache.kafka.common.security.scram.ScramLoginModule required
      username="alice"
      password="alice-secret";
   };
   ```

1. Utilizza il seguente comando per esportare il file di configurazione JAAS come parametro di ambiente `KAFKA_OPTS`.

   ```
   export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf
   ```

1. Nella directory `/tmp`, crea un file denominato `kafka.client.truststore.jks`.

1. (Facoltativo) Utilizzate il seguente comando per copiare il file dell'archivio chiavi JDK dalla `cacerts` cartella JVM nel `kafka.client.truststore.jks` file creato nel passaggio precedente. *JDKFolder*Sostituiscilo con il nome della cartella JDK sull'istanza. Ad esempio, la tua cartella JDK potrebbe avere il nome `java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64`.

   ```
   cp /usr/lib/jvm/JDKFolder/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. Nella directory `bin` di installazione di Apache Kafka, crea un file delle proprietà del client chiamato `client_sasl.properties` con il seguente contenuto. Questo file definisce il meccanismo e il protocollo SASL.

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=SCRAM-SHA-512
   ```

1. Per creare un argomento di esempio, esegui il comando seguente. Sostituisci *BootstrapBrokerStringSaslScram* con la stringa del broker bootstrap ottenuta nel passaggio 1 di questo argomento.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBrokerStringSaslScram --command-config <path-to-client-properties>/client_sasl.properties --replication-factor 3 --partitions 1 --topic ExampleTopicName
   ```

1. Per produrre l'argomento di esempio che hai creato, esegui il comando seguente sul computer client. Sostituiscila *BootstrapBrokerStringSaslScram* con la stringa del broker bootstrap recuperata nel passaggio 1 di questo argomento.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
   ```

1. Per utilizzare l'argomento che hai creato, esegui il comando seguente sul tuo computer client. Sostituiscila *BootstrapBrokerStringSaslScram* con la stringa del broker bootstrap ottenuta nel passaggio 1 di questo argomento.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties
   ```

## Risoluzione dei problemi di connessione
<a name="msk-password-tutorial-connect-troubleshooting"></a>

Quando si eseguono i comandi del client Kafka, è possibile riscontrare errori nella memoria heap di Java, specialmente quando si lavora con argomenti o set di dati di grandi dimensioni. Questi errori si verificano perché gli strumenti Kafka vengono eseguiti come applicazioni Java con impostazioni di memoria predefinite che potrebbero essere insufficienti per il carico di lavoro.

Per risolvere `Out of Memory Java Heap` gli errori, è possibile aumentare la dimensione dell'heap Java modificando la variabile di `KAFKA_OPTS` ambiente per includere le impostazioni di memoria.

L'esempio seguente imposta la dimensione massima dell'heap su 1 GB (). `-Xmx1G` È possibile regolare questo valore in base alla memoria di sistema disponibile e ai requisiti.

```
export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf -Xmx1G"
```

Per approfondire argomenti di grandi dimensioni, prendi in considerazione l'utilizzo di parametri basati sul tempo o sull'offset anziché `--from-beginning` limitare l'utilizzo della memoria:

```
<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --max-messages 1000 --consumer.config client_sasl.properties
```

# Operazioni con gli utenti
<a name="msk-password-users"></a>

**Creazione di utenti:** crea utenti nel tuo segreto come coppie chiave-valore. Quando si utilizza l'opzione **Non crittografato** nella console Secrets Manager, è necessario specificare i dati delle credenziali di accesso nel formato seguente.

```
{
  "username": "alice",
  "password": "alice-secret"
}
```

**Revoca dell'accesso utente:** per revocare le credenziali di accesso a un cluster di un utente, si consiglia di rimuovere o applicare un'ACL al cluster e successivamente annullare l'associazione del segreto. Ciò può essere dovuto ai motivi seguenti:
+ La rimozione di un utente non chiude le connessioni esistenti.
+ La propagazione delle modifiche al segreto richiede fino a 10 minuti.

Per ulteriori informazioni sull'utilizzo delle ACL con Amazon MSK, consulta la pagina [Apache Kafka ACLs](msk-acls.md).

Per i cluster che utilizzano ZooKeeper la modalità, si consiglia di limitare l'accesso ai ZooKeeper nodi per impedire agli utenti di apportare modifiche. ACLs Per ulteriori informazioni, consulta [Controlla l'accesso ai ZooKeeper nodi Apache nel tuo cluster Amazon MSK](zookeeper-security.md).

# Limitazioni nell'uso dei segreti SCRAM
<a name="msk-password-limitations"></a>

Quando utilizzi i segreti SCRAM, tieni presente le limitazioni seguenti:
+ Amazon MSK supporta solo l'autenticazione SCRAM-SHA-512.
+ Un cluster Amazon MSK può avere fino a 1.000 utenti.
+ Devi usare un AWS KMS key con il tuo segreto. Non è possibile utilizzare un segreto che utilizza la chiave di crittografia Secrets Manager predefinita con Amazon MSK. Per ulteriori informazioni sulla creazione di una chiave KMS, consulta la pagina [Creating symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk).
+ Non è possibile utilizzare una chiave KMS asimmetrica con Secrets Manager.
+ È possibile associare fino a 10 segreti a un cluster alla volta utilizzando l'[ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operazione.
+ Il nome dei segreti associati a un cluster Amazon MSK deve avere il prefisso **AmazonMSK\$1.**
+ I segreti associati a un cluster Amazon MSK devono trovarsi nello stesso account e nella stessa AWS regione Amazon Web Services del cluster.

# Apache Kafka ACLs
<a name="msk-acls"></a>

Apache Kafka dispone di un autorizzatore collegabile e viene fornito con un'implementazione di autorizzazione. out-of-box Amazon MSK abilita questo provider di autorizzazioni nel file `server.properties` sui broker.

Apache Kafka ACLs ha il formato «Principal P è [Consentita/Negata] Operazione O dall'host H su qualsiasi risorsa R corrispondente a RP». ResourcePattern Se RP non corrisponde a una risorsa specifica R, allora R non ha alcuna risorsa associata ACLs e quindi solo gli utenti privilegiati possono accedere a R. Per modificare questo comportamento di Apache Kafka, impostate la proprietà su true. `allow.everyone.if.no.acl.found` In Amazon MSK è impostata su true per impostazione predefinita. Ciò significa che con i cluster Amazon MSK, se non ACLs imposti esplicitamente una risorsa, tutti i principali possono accedere a tale risorsa. Se abiliti una ACLs risorsa, solo i responsabili autorizzati possono accedervi. Se desideri limitare l'accesso a un argomento e autorizzare un client utilizzando l'autenticazione reciproca TLS, aggiungi ACLs utilizzando la CLI di autorizzazione Apache Kafka. [Per ulteriori informazioni sull'aggiunta, la rimozione e l'elenco, consulta Kafka Authorization Command Line ACLs Interface.](https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Authorization+Command+Line+Interface)

Poiché Amazon MSK configura i broker come utenti privilegiati, possono accedere a tutti gli argomenti. Questo aiuta i broker a replicare i messaggi dalla partizione primaria indipendentemente dal fatto che la `allow.everyone.if.no.acl.found` proprietà sia definita o meno per la configurazione del cluster.

**Per aggiungere o rimuovere l'accesso in lettura e scrittura a un argomento**

1. Aggiungi i tuoi broker alla tabella ACL per consentire loro di leggere tutti gli argomenti esistenti. ACLs Per concedere ai broker l'accesso in lettura a un argomento, esegui il comando seguente su un computer client in grado di comunicare con il cluster MSK. 

   Sostituiscila *Distinguished-Name* con il DNS di uno qualsiasi dei broker bootstrap del tuo cluster, quindi sostituisci la stringa prima del primo punto di questo nome distinto con un asterisco (). `*` Ad esempio, se uno dei broker di bootstrap del tuo cluster dispone del DNS`b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com`, sostituiscilo nel comando seguente con. *Distinguished-Name* `*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com` Per informazioni su come ottenere i broker bootstrap, consulta [Ottieni i broker bootstrap per un cluster Amazon MSK](msk-get-bootstrap-brokers.md).

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
   ```

1. Per concedere a un'applicazione client l'accesso in lettura a un argomento, esegui il comando seguente sul computer client. Se utilizzi l'autenticazione TLS reciproca, utilizza la stessa *Distinguished-Name* che hai usato quando hai creato la chiave privata.

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
   ```

   Per rimuovere l'accesso in lettura, è possibile eseguire lo stesso comando, sostituendo `--add` con `--remove`.

1. Per concedere l'accesso in scrittura a un argomento, eseguire il comando seguente sul computer client. Se utilizzi l'autenticazione TLS reciproca, utilizza la stessa *Distinguished-Name* che hai usato per creare la chiave privata.

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name
   ```

   Per rimuovere l'accesso in scrittura, è possibile eseguire lo stesso comando, sostituendo `--add` con `--remove`.

# Modifica del gruppo di sicurezza di un cluster Amazon MSK
<a name="change-security-group"></a>

Questa pagina spiega come modificare il gruppo di sicurezza di un cluster MSK esistente. Potrebbe essere necessario modificare il gruppo di sicurezza di un cluster per fornire l'accesso a un determinato gruppo di utenti o per limitare l'accesso al cluster. Per ulteriori informazioni sui gruppi di sicurezza, consulta la pagina [Security groups for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) nella Guida per l'utente di Amazon VPC.

1. Usa l'[ListNodes](https://docs.amazonaws.cn/en_us/msk/1.0/apireference/clusters-clusterarn-nodes.html#ListNodes)API o il comando [list-nodes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/list-nodes.html) in AWS CLI per ottenere un elenco dei broker del tuo cluster. I risultati di questa operazione includono le interfacce IDs di rete elastiche (ENIs) associate ai broker.

1. Accedi Console di gestione AWS e apri la console Amazon EC2 all'indirizzo. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Utilizzando l'elenco a discesa nell'angolo in alto a destra della schermata, seleziona la regione in cui è implementato il cluster.

1. Nel riquadro a sinistra, in **Rete e sicurezza**, scegli **Interfacce di rete**.

1. Seleziona il primo ENI che hai ottenuto nel primo passaggio. Scegli il menu **Operazioni** nella parte superiore dello schermo, quindi scegli **Modifica gruppi di sicurezza**. Assegna il nuovo gruppo di sicurezza a questo ENI. Ripeti questo passaggio per ognuno dei ENIs passaggi ottenuti nel primo passaggio.
**Nota**  
Le modifiche apportate al gruppo di sicurezza di un cluster utilizzando la console Amazon EC2 non si riflettono nelle **Impostazioni di rete** della console MSK.

1. Configura le regole del nuovo gruppo di sicurezza per garantire che i tuoi client abbiano accesso ai broker. Per informazioni sull'impostazione delle regole del gruppi di sicurezza, consulta la pagina [Adding, Removing, and Updating Rules](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#AddRemoveRules) nella guida per l'utente di Amazon VPC.

**Importante**  
Se modifichi il gruppo di sicurezza associato ai broker di un cluster e poi aggiungi nuovi broker a tale cluster, Amazon MSK associa i nuovi broker al gruppo di sicurezza originale associato al cluster al momento della creazione dello stesso. Tuttavia, affinché un cluster funzioni correttamente, tutti i relativi broker devono essere associati allo stesso gruppo di sicurezza. Pertanto, se si aggiungono nuovi broker dopo aver modificato il gruppo di sicurezza, è necessario seguire nuovamente la procedura precedente e aggiornare i ENIs nuovi broker.

# Controlla l'accesso ai ZooKeeper nodi Apache nel tuo cluster Amazon MSK
<a name="zookeeper-security"></a>

Per motivi di sicurezza, puoi limitare l'accesso ai ZooKeeper nodi Apache che fanno parte del tuo cluster Amazon MSK. Per limitare l'accesso ai nodi, puoi assegnare loro un gruppo di sicurezza separato. Puoi quindi stabilire chi ottiene l'accesso a tale gruppo di sicurezza.

**Importante**  
Questa sezione non si applica ai cluster in esecuzione in modalità. KRaft Per informazioni, consulta [KRaft modalità](metadata-management.md#kraft-intro).

**Topics**
+ [

# Per collocare i ZooKeeper nodi Apache in un gruppo di sicurezza separato
](zookeeper-security-group.md)
+ [

# Utilizzo della sicurezza TLS con Apache ZooKeeper
](zookeeper-security-tls.md)

# Per collocare i ZooKeeper nodi Apache in un gruppo di sicurezza separato
<a name="zookeeper-security-group"></a>

Per limitare l'accesso ai ZooKeeper nodi Apache, puoi assegnare loro un gruppo di sicurezza separato. Puoi scegliere chi ha accesso a questo nuovo gruppo di sicurezza impostando le regole del gruppo di sicurezza.

1. Ottieni la stringa di ZooKeeper connessione Apache per il tuo cluster. Per scoprire come, consulta [ZooKeeper modalità](metadata-management.md#msk-get-connection-string). La stringa di connessione contiene i nomi DNS dei tuoi nodi ZooKeeper Apache.

1. Utilizzare uno strumento simile a `host` o `ping` per convertire i nomi DNS ottenuti nel passaggio precedente in indirizzi IP. Salvare questi indirizzi IP perché saranno necessari più avanti in questa procedura.

1. Accedi Console di gestione AWS e apri la console Amazon EC2 all'indirizzo. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Nel riquadro di navigazione, in **NETWORK & SECURITY (Rete e sicurezza)**, scegliere **Network Interfaces (Interfacce di rete)**.

1. Nel campo di ricerca sopra la tabella delle interfacce di rete, digitare il nome del cluster, quindi premere Invio. Questo limita il numero di interfacce di rete visualizzate nella tabella a quelle associate al cluster.

1. Selezionare la casella di controllo all'inizio della riga corrispondente alla prima interfaccia di rete nell'elenco.

1. Nel riquadro dei dettagli in fondo alla pagina, cerca l'** IPv4 IP privato primario**. Se questo indirizzo IP corrisponde a uno degli indirizzi IP ottenuti nel primo passaggio di questa procedura, significa che questa interfaccia di rete è assegnata a un ZooKeeper nodo Apache che fa parte del cluster. In caso contrario, deselezionare la casella di controllo accanto a questa interfaccia di rete e selezionare l'interfaccia di rete successiva nell'elenco. L'ordine di selezione delle interfacce di rete non ha importanza. Nei passaggi successivi, eseguirai le stesse operazioni su tutte le interfacce di rete assegnate ai ZooKeeper nodi Apache, una per una.

1. Quando selezioni un'interfaccia di rete che corrisponde a un ZooKeeper nodo Apache, scegli il menu **Azioni** nella parte superiore della pagina, quindi scegli **Cambia** gruppi di sicurezza. Assegnare un nuovo gruppo di sicurezza a questa interfaccia di rete. Per ulteriori informazioni sulla creazione dei gruppi di sicurezza, consulta la pagina [Creating a Security Group](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#CreatingSecurityGroups) nella documentazione di Amazon VPC.

1. Ripeti il passaggio precedente per assegnare lo stesso nuovo gruppo di sicurezza a tutte le interfacce di rete associate ai ZooKeeper nodi Apache del cluster.

1. È ora possibile scegliere chi dispone dell'accesso a questo nuovo gruppo di sicurezza. Per informazioni sull'impostazione delle regole dei gruppi di sicurezza, consulta la pagina [Adding, Removing, and Updating Rules](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#AddRemoveRules) nella documentazione di Amazon VPC.

# Utilizzo della sicurezza TLS con Apache ZooKeeper
<a name="zookeeper-security-tls"></a>

Puoi utilizzare la sicurezza TLS per la crittografia in transito tra i tuoi client e i tuoi nodi Apache. ZooKeeper Per implementare la sicurezza TLS con i tuoi ZooKeeper nodi Apache, procedi come segue:
+ I cluster devono utilizzare Apache Kafka versione 2.5.1 o successiva per utilizzare la sicurezza TLS con Apache. ZooKeeper
+ Abilita la sicurezza TLS quando crei o configuri il cluster. I cluster creati con Apache Kafka versione 2.5.1 o successiva con TLS abilitato utilizzano automaticamente la sicurezza TLS con gli endpoint Apache. ZooKeeper Per informazioni sulla configurazione della sicurezza TLS, consulta la pagina [Inizia a usare la crittografia Amazon MSK](msk-working-with-encryption.md).
+ Recupera gli endpoint TLS Apache utilizzando l'operazione. ZooKeeper [DescribeCluster ](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)
+ Crea un file di ZooKeeper configurazione Apache da utilizzare con [https://kafka.apache.org/documentation/#security_authz_cli](https://kafka.apache.org/documentation/#security_authz_cli)gli strumenti `kafka-configs.sh` and o con la shell. ZooKeeper Con ogni strumento, si utilizza il `--zk-tls-config-file` parametro per specificare la configurazione di Apache ZooKeeper .

  L'esempio seguente mostra un tipico file di configurazione di Apache ZooKeeper : 

  ```
  zookeeper.ssl.client.enable=true
  zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
  zookeeper.ssl.keystore.location=kafka.jks
  zookeeper.ssl.keystore.password=test1234
  zookeeper.ssl.truststore.location=truststore.jks
  zookeeper.ssl.truststore.password=test1234
  ```
+ Per altri comandi (come`kafka-topics`), è necessario utilizzare la variabile di `KAFKA_OPTS` ambiente per configurare i parametri di Apache ZooKeeper. L'esempio seguente mostra come configurare la variabile di `KAFKA_OPTS` ambiente per passare i ZooKeeper parametri Apache ad altri comandi:

  ```
  export KAFKA_OPTS="
  -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty 
  -Dzookeeper.client.secure=true 
  -Dzookeeper.ssl.trustStore.location=/home/ec2-user/kafka.client.truststore.jks
  -Dzookeeper.ssl.trustStore.password=changeit"
  ```

  Dopo aver configurato la variabile di ambiente `KAFKA_OPTS`, è possibile utilizzare normalmente i comandi della CLI. L'esempio seguente crea un argomento di Apache Kafka utilizzando la ZooKeeper configurazione di Apache dalla variabile di ambiente: `KAFKA_OPTS`

  ```
  <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --zookeeper ZooKeeperTLSConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic
  ```

**Nota**  
I nomi dei parametri utilizzati nel file di ZooKeeper configurazione di Apache e quelli utilizzati nella variabile di `KAFKA_OPTS` ambiente non sono coerenti. Presta attenzione ai nomi che usi con ciascun parametri nel file di configurazione e nella variabile di ambiente `KAFKA_OPTS`.

Per ulteriori informazioni sull'accesso ai ZooKeeper nodi Apache con TLS, vedi [KIP-515: Abilita il client ZK a usare la nuova autenticazione supportata da](https://cwiki.apache.org/confluence/display/KAFKA/KIP-515%3A+Enable+ZK+client+to+use+the+new+TLS+supported+authentication) TLS.

# Convalida della conformità per Streaming gestito da Amazon per Apache Kafka
<a name="MSK-compliance"></a>

Revisori di terze parti valutano la sicurezza e la conformità di Streaming gestito da Amazon per Apache Kafka nell'ambito dei programmi di conformità di AWS . Questi includono PCI e HIPAA BAA.

Per un elenco di AWS servizi nell'ambito di programmi di conformità specifici, consulta [Amazon Services in Scope by Compliance Program](https://aws.amazon.com/compliance/services-in-scope/) . Per informazioni generali, consulta Programmi di [AWS conformità Programmi](https://aws.amazon.com/compliance/programs/) di di .

È possibile scaricare report di audit di terze parti utilizzando AWS Artifact. Per ulteriori informazioni, consulta [Scaricamento dei report in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

La tua responsabilità di conformità quando usi Amazon MSK è determinata dalla sensibilità dei tuoi dati, dagli obiettivi di conformità della tua azienda e dalle leggi e dai regolamenti applicabili. AWS fornisce le seguenti risorse per contribuire alla conformità:
+ [Le guide rapide per la sicurezza e la conformità](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance): queste guide all'implementazione illustrano considerazioni architettoniche e forniscono i passaggi per l'implementazione di ambienti di base incentrati sulla sicurezza e sulla conformità su AWS.
+ [Whitepaper sull'architettura per la sicurezza e la conformità HIPAA: questo white paper](https://docs.aws.amazon.com/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.html) descrive come le aziende possono utilizzare per creare applicazioni conformi allo standard HIPAA. AWS 
+ AWS Risorse per [la conformità Risorse per la conformità](https://aws.amazon.com/compliance/resources/): questa raccolta di potrebbe riguardare il settore e la località in cui operate.
+ [Valutazione delle risorse con le regole](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) nella *Guida per gli AWS Config sviluppatori*: il AWS Config servizio valuta la conformità delle configurazioni delle risorse alle pratiche interne, alle linee guida del settore e alle normative.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)— Questo AWS servizio offre una visione completa dello stato di sicurezza dell'utente, AWS che consente di verificare la conformità agli standard e alle best practice del settore della sicurezza.

# Resilienza in Streaming gestito da Amazon per Apache Kafka
<a name="disaster-recovery-resiliency"></a>

L'infrastruttura AWS globale è costruita attorno a regioni e zone di disponibilità. AWS AWS Le regioni forniscono più zone di disponibilità fisicamente separate e isolate, collegate con reti a bassa latenza, ad alto throughput e altamente ridondanti. Con le zone di disponibilità è possibile progettare e gestire applicazioni e database che eseguono automaticamente il failover tra zone di disponibilità senza interruzioni. Le zone di disponibilità sono più disponibili, tolleranti ai guasti e scalabili rispetto alle infrastrutture a data center singolo o multiplo tradizionali. 

[Per ulteriori informazioni su AWS regioni e zone di disponibilità, consulta Global Infrastructure.AWS](https://aws.amazon.com/about-aws/global-infrastructure/)

# Sicurezza dell'infrastruttura in Streaming gestito da Amazon per Apache Kafka
<a name="infrastructure-security"></a>

In quanto servizio gestito, Amazon Managed Streaming for Apache Kafka è protetto AWS dalle procedure di sicurezza di rete globali descritte nel white paper di [Amazon Web Services:](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) Overview of Security Processes.

Utilizzi chiamate API AWS pubblicate per accedere ad Amazon MSK attraverso la rete. I client devono supportare Transport Layer Security (TLS) 1.0 o versioni successive. È consigliabile TLS 1.2 o versioni successive. I client devono, inoltre, supportare le suite di cifratura con PFS (Perfect Forward Secrecy), ad esempio Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La maggior parte dei sistemi moderni, come Java 7 e versioni successive, supporta tali modalità.

Inoltre, le richieste devono essere firmate utilizzando un ID chiave di accesso e una chiave di accesso segreta associata a un principale IAM. In alternativa è possibile utilizzare [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) per generare credenziali di sicurezza temporanee per sottoscrivere le richieste.