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à.
Autenticazione delle credenziali di accesso con Secrets Manager AWS
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.
Questo argomento contiene le sezioni seguenti:
Come funziona
L'autenticazione delle credenziali di accesso di Amazon MSK supporta l'autenticazione SASL/SCRAM (Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism). Per configurare l'autenticazione delle credenziali di accesso per un cluster, crea una risorsa segreta in AWS Secrets Manager e associa le credenziali di accesso a quel segreto.
SASL/SCRAM è definito in RFC 5802
Nota
Quando configuri l'autenticazione SASL/SCRAM per il cluster, Amazon MSK attiva la crittografia TLS per tutto il traffico tra client e broker.
Configurazione dell'autenticazione SASL/SCRAM per un cluster Amazon MSK
Per impostare un segreto in AWS Secrets Manager, segui il tutorial Creazione e recupero di un segreto nella Guida per l'utente di AWS Secrets Manager.
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_.
È 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 Dimensionamento corretto del cluster: numero di partizioni 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' BatchAssociateScramSecretoperazione.
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.
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
Dopo aver creato un segreto e averlo collegato al cluster, è possibile collegare il client al cluster. I seguenti passaggi di esempio mostrano come connettere un client a un cluster che utilizza l'autenticazione SASL/SCRAM e come produrre e utilizzare un argomento di esempio.
Esegui il comando seguente su un computer su cui è installata la AWS CLI, sostituendo clusterARN con l'ARN del tuo cluster.
aws kafka get-bootstrap-brokers --cluster-arn clusterARN
Per creare un argomento di esempio, esegui il comando seguente, sostituendo
BootstrapServerString
con uno degli endpoint del broker ottenuti nel passaggio precedente.<path-to-your-kafka-installation>
/bin/kafka-topics.sh --create --bootstrap-server BootstrapServerString --replication-factor 3 --partitions 1 --topic ExampleTopicNameSul 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"; };
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.confNella directory
./tmp
, crea un file denominatokafka.client.truststore.jks
.-
Utilizza il comando seguente per copiare il file dell'archivio chiavi JDK dalla cartella
cacerts
JVM nel filekafka.client.truststore.jks
creato nel passaggio precedente. SostituisciJDKFolder
con il nome della cartella JDK sull'istanza. Ad esempio, la tua cartella JDK potrebbe avere il nomejava-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64
.cp /usr/lib/jvm/
JDKFolder
/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks Nella directory
bin
di installazione di Apache Kafka, crea un file delle proprietà del client chiamatoclient_sasl.properties
con il seguente contenuto. Questo file definisce il meccanismo e il protocollo SASL.security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512 ssl.truststore.location=
<path-to-keystore-file>
/kafka.client.truststore.jksRecupera la stringa dei broker di bootstrap con il comando seguente. Sostituisci
ClusterArn
con l'Amazon Resource Name (ARN) del tuo cluster:aws kafka get-bootstrap-brokers --cluster-arn
ClusterArn
Dal risultato JSON del comando, salva il valore associato alla stringa denominata
BootstrapBrokerStringSaslScram
.Per produrre l'argomento di esempio che hai creato, esegui il comando seguente sul computer client. Sostituisci
BootstrapBrokerStringSaslScram
con il valore recuperato nel passaggio precedente.<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --broker-listBootstrapBrokerStringSaslScram
--topicExampleTopicName
--producer.config client_sasl.propertiesPer utilizzare l'argomento che hai creato, esegui il comando seguente sul tuo computer client. Sostituisci
BootstrapBrokerStringSaslScram
con il valore che hai ottenuto in precedenza.<path-to-your-kafka-installation>
/bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBrokerStringSaslScram
--topicExampleTopicName
--from-beginning --consumer.config client_sasl.properties
Operazioni con gli utenti
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 ACL Apache Kafka.
Per i cluster che utilizzano ZooKeeper la modalità, si consiglia di limitare l'accesso ai ZooKeeper nodi per impedire agli utenti di modificare gli ACL. Per ulteriori informazioni, consulta Controllo dell'accesso ad Apache ZooKeeper.
Limitazioni
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 an AWS KMS key con il tuo Secret. 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.
Non è possibile utilizzare una chiave KMS asimmetrica con Secrets Manager.
È possibile associare fino a 10 segreti a un cluster alla volta utilizzando l' BatchAssociateScramSecretoperazione.
Il nome dei segreti associati a un cluster Amazon MSK deve avere il prefisso AmazonMSK_.
I segreti associati a un cluster Amazon MSK devono trovarsi nello stesso account e nella stessa AWS regione Amazon Web Services del cluster.