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à.
IAMcontrollo degli accessi
IAMil controllo degli accessi per Amazon ti MSK consente di gestire sia l'autenticazione che l'autorizzazione per il tuo MSK cluster. Ciò elimina la necessità di utilizzare meccanismi separati per l'autenticazione e l'autorizzazione. Ad esempio, quando un client tenta di scrivere sul tuo cluster, MSK Amazon IAM verifica se quel client è un'identità autenticata e anche se è autorizzato a produrre sul tuo cluster. IAMil controllo degli accessi funziona per client Java e non Java, inclusi i client Kafka scritti in Python, Go e. JavaScript NET.
Amazon MSK registra gli eventi di accesso in modo che tu possa controllarli. Per ulteriori informazioni, consulta Registrazione delle chiamate con API AWS CloudTrail.
Per rendere possibile il controllo degli IAM accessi, Amazon MSK apporta piccole modifiche al codice sorgente di Apache Kafka. Queste modifiche non causeranno differenze evidenti nella tua esperienza con Apache Kafka.
Importante
IAMil controllo degli accessi non si applica ai nodi Apache. ZooKeeper Per ulteriori informazioni sul controllo degli accessi a tali nodi, consulta la pagina Controllo dell'accesso ad Apache ZooKeeper.
Importante
L'impostazione di allow.everyone.if.no.acl.found
Apache Kafka non ha effetto se il cluster utilizza il controllo degli accessi. IAM
Importante
È possibile richiamare Apache Kafka ACL APIs per un cluster che utilizza il controllo degli accessi. MSK IAM Tuttavia, Apache Kafka non ha alcun effetto sull'autorizzazione per ACLs i ruoli. IAM È necessario utilizzare IAM le politiche per controllare l'accesso ai ruoli. IAM
Come funziona il controllo degli IAM accessi per Amazon MSK
Per utilizzare il controllo degli IAM accessi per AmazonMSK, esegui i seguenti passaggi, descritti in dettaglio nel resto di questa sezione.
Crea un cluster che utilizza il controllo IAM degli accessi
Questa sezione spiega come utilizzare il AWS Management Console, il o il API AWS CLI per creare un cluster che utilizza il controllo degli IAM accessi. Per informazioni su come attivare il controllo degli IAM accessi per un cluster esistente, vedereAggiornamento delle impostazioni di sicurezza di un cluster.
Utilizzare il AWS Management Console per creare un cluster che utilizza il controllo degli IAM accessi
Apri la MSK console Amazon all'indirizzohttps://console.aws.amazon.com/msk/
. -
Scegli Create cluster (Crea cluster).
-
Scegli Crea cluster con impostazioni personalizzate.
-
Nella sezione Autenticazione, scegli il controllo IAM degli accessi.
-
Completa il resto del flusso di lavoro per creare un cluster.
Usa API o AWS CLI per creare un cluster che utilizza il controllo degli IAM accessi
Per creare un cluster con il controllo degli IAM accessi abilitato, usa il comando CreateClusterAPIo il CLI comando create-cluster
e passa quanto segue JSON per il ClientAuthentication
parametro:."ClientAuthentication": { "Sasl": { "Iam": { "Enabled": true } }
Configura i client per il controllo degli accessi IAM
Per consentire ai client di comunicare con un MSK cluster che utilizza il controllo degli IAM accessi, puoi utilizzare uno di questi meccanismi:
-
Configurazione client non Java utilizzando SASL _ mechanism OAUTHBEARER
-
Configurazione del client Java utilizzando SASL _ OAUTHBEARER mechanism o AWS _ MSK _ IAM
Utilizzo del OAUTHBEARER meccanismo SASL _ per configurare IAM
Modifica il tuo file di configurazione client.properties usando la sintassi evidenziata nel client Python Kafka di esempio riportato di seguito come guida. Le modifiche alla configurazione sono simili in altri linguaggi.
#!/usr/bin/python3from kafka import KafkaProducer from kafka.errors import KafkaError import socket import time from aws_msk_iam_sasl_signer import MSKAuthTokenProvider class MSKTokenProvider(): def token(self): token, _ = MSKAuthTokenProvider.generate_auth_token('<my aws region>') return token tp = MSKTokenProvider() producer = KafkaProducer( bootstrap_servers='<my bootstrap string>', 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()
Scarica la libreria di supporto per il linguaggio di configurazione scelto e segui le istruzioni nella sezione Nozioni di base sulla home page della libreria del linguaggio.
JavaScript: https://github.com/aws/aws-msk-iam-sasl-signer-js
#getting -started Python: https://github.com/aws/aws-msk-iam-sasl-signer-python
#get -started Vai: https://github.com/aws/aws-msk-iam-sasl-signer-go #getting -started
. NET: https://github.com/aws/aws-msk-iam-sasl-signer-net
#getting -iniziato JAVA: SASL _ OAUTHBEARER il supporto per Java è disponibile tramite il file jar
aws-msk-iam-auth
Utilizzo del IAM meccanismo MSK personalizzato AWS _ MSK _ per la configurazione IAM
Aggiungi quanto segue al file
client.properties
. Replace (Sostituisci)<PATH_TO_TRUST_STORE_FILE>
con il percorso completo del file trust store sul client.Nota
Se non desideri utilizzare un certificato specifico, puoi rimuovere
ssl.truststore.location=
dal tuo file<PATH_TO_TRUST_STORE_FILE>
client.properties
. Se non specifichi un valore perssl.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.IAMClientCallbackHandlerPer utilizzare un profilo denominato creato per AWS le credenziali, includilo
awsProfileName="
nel file di configurazione del client. Per informazioni sui profili denominati, consulta Profili denominati nella AWS CLI documentazione.your profile name
";Scaricate il aws-msk-iam-auth
JARfile stabile più recente 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 MSK client Amazon è open source con licenza Apache 2.0.
Creazione di policy di autorizzazione
Allega una politica di autorizzazione al IAM ruolo che corrisponde al client. In una policy di autorizzazione, specifichi quali operazioni consentire o rifiutare per il ruolo. Se il tuo cliente utilizza un'EC2istanza Amazon, associa la politica di autorizzazione al IAM ruolo per quell'EC2istanza Amazon. In alternativa, puoi configurare il client per utilizzare un profilo denominato e quindi associare la policy di autorizzazione al ruolo per quel profilo denominato. Configura i client per il controllo degli accessi IAM descrive come configurare un client per utilizzare un profilo denominato.
Per informazioni su come creare una IAM politica, consulta Creazione IAM di politiche.
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 operazioni e delle risorse.
Importante
Le modifiche apportate a una IAM politica si IAM APIs riflettono AWS CLI immediatamente. 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.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster" ], "Resource": [ "arn:aws:kafka:us-east-1:0123456789012: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:0123456789012:topic/MyTestCluster/*" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:0123456789012: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 di utilizzo comune.
Per le versioni di Kafka 2.8.0 e successive, l'WriteDataIdempotentlyautorizzazione è obsoleta (-679). KIPenable.idempotence = true
. Pertanto, per le versioni di Kafka 2.8.0 e successive, non offre le stesse funzionalità di Kafka. IAM ACLs Non è possibile eseguire l'operazione WriteDataIdempotently
su un argomento fornendo l'accesso WriteData
solo a quell'argomento. Ciò non influisce sul caso in cui venga fornito un argomento. WriteData
ALL In tal caso, l'operazione WriteDataIdempotently
è consentita. Ciò è dovuto alle differenze nell'implementazione della IAM logica rispetto al modo in cui vengono implementati i KafkaACLs.
Per ovviare a questo problema, consigliamo di utilizzare una policy simile all'esempio seguente:
{ "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:0123456789012: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:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic" ] } ] }
In questo caso, WriteData
consente le scritture sul TestTopic
, mentre WriteDataIdempotently
consente le scritture idempotenti sul cluster. È importante notare che WriteDataIdempotently
è un'autorizzazione a livello di cluster. Non può essere utilizzata a livello di argomento. Se WriteDataIdempotently
è limitato al livello di argomento, questa policy non funzionerà.
Procurati i broker bootstrap per il controllo degli accessi IAM
Per informazioni, consulta Ottenere i broker bootstrap per un cluster Amazon MSK.
Semantica delle operazioni e delle risorse
Questa sezione spiega la semantica degli elementi di azione e risorsa che è possibile utilizzare in una politica di autorizzazione. IAM Per un esempio di policy, consulta Creazione di policy di autorizzazione.
Azioni
La tabella seguente elenca le azioni che puoi includere in una politica di autorizzazione quando utilizzi il controllo degli IAM accessi per AmazonMSK. 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 | Descrizione | 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 a descrivere vari aspetti del cluster, equivalenti a quelli di Apache Kafka. DESCRIBE CLUSTER ACL |
|
cluster | Sì |
kafka-cluster:AlterCluster |
Concede il permesso di modificare vari aspetti del cluster, equivalente a quello di Apache Kafka. ALTER CLUSTER ACL |
|
cluster | No |
kafka-cluster:DescribeClusterDynamicConfiguration |
Concede l'autorizzazione a descrivere la configurazione dinamica di un cluster, equivalente a _ di Apache Kafka. DESCRIBE CONFIGS CLUSTER ACL |
|
cluster | No |
kafka-cluster:AlterClusterDynamicConfiguration |
Concede l'autorizzazione a modificare la configurazione dinamica di un cluster, equivalente a _ di Apache Kafka. ALTER CONFIGS CLUSTER ACL |
|
cluster | No |
kafka-cluster:WriteDataIdempotently |
Concede l'autorizzazione a scrivere dati in modo idempotente su un cluster, equivalente a _ di Apache Kafka. IDEMPOTENT WRITE CLUSTER ACL |
|
cluster | Sì |
kafka-cluster:CreateTopic |
Concede l'autorizzazione a creare argomenti su un cluster, equivalente a/di Apache Kafka. CREATE CLUSTER TOPIC ACL |
|
topic | Sì |
kafka-cluster:DescribeTopic |
Concede l'autorizzazione a descrivere argomenti in un cluster, equivalente a quella di Apache Kafka. DESCRIBE TOPIC ACL |
|
topic | Sì |
kafka-cluster:AlterTopic |
Concede l'autorizzazione a modificare gli argomenti in un cluster, equivalente a quella di Apache Kafka. ALTER TOPIC ACL |
|
topic | Sì |
kafka-cluster:DeleteTopic |
Concede l'autorizzazione a eliminare argomenti su un cluster, equivalente a quella di Apache Kafka. DELETE TOPIC ACL |
|
topic | Sì |
kafka-cluster:DescribeTopicDynamicConfiguration |
Concede l'autorizzazione a descrivere la configurazione dinamica degli argomenti in un cluster, equivalente a _ di Apache Kafka. DESCRIBE CONFIGS TOPIC ACL |
|
topic | Sì |
kafka-cluster:AlterTopicDynamicConfiguration |
Concede l'autorizzazione a modificare la configurazione dinamica degli argomenti su un cluster, equivalente a _ di Apache Kafka. ALTER CONFIGS TOPIC ACL |
|
topic | Sì |
kafka-cluster:ReadData |
Concede l'autorizzazione a leggere i dati dagli argomenti di un cluster, equivalente a quella di Apache Kafka. READ TOPIC ACL |
|
topic | Sì |
kafka-cluster:WriteData |
Concede l'autorizzazione a scrivere dati su argomenti di un cluster, equivalente a quella di Apache Kafka WRITE TOPIC ACL |
|
topic | Sì |
kafka-cluster:DescribeGroup |
Concede l'autorizzazione a descrivere i gruppi in un cluster, equivalente a quella di Apache Kafka. DESCRIBE GROUP ACL |
|
gruppo | Sì |
kafka-cluster:AlterGroup |
Concede l'autorizzazione a partecipare a gruppi in un cluster, equivalente a quella di Apache Kafka. READ GROUP ACL |
|
gruppo | Sì |
kafka-cluster:DeleteGroup |
Concede l'autorizzazione a eliminare gruppi in un cluster, equivalente a quella di Apache Kafka. DELETE GROUP ACL |
|
gruppo | Sì |
kafka-cluster:DescribeTransactionalId |
Concede l'autorizzazione a descrivere le transazioni IDs su un cluster, equivalente a _ID di Apache Kafka. DESCRIBE TRANSACTIONAL ACL |
|
transactional-id | Sì |
kafka-cluster:AlterTransactionalId |
Concede l'autorizzazione a modificare le transazioni IDs su un cluster, equivalente a _ID di Apache Kafka. WRITE TRANSACTIONAL ACL |
|
transactional-id | Sì |
In un'operazione, dopo i due punti, è possibile utilizzare qualsiasi quantità di caratteri jolly asterisco (*). Di seguito vengono mostrati gli esempi.
kafka-cluster:*Topic
sta perkafka-cluster:CreateTopic
,kafka-cluster:DescribeTopic
,kafka-cluster:AlterTopic
ekafka-cluster:DeleteTopic
. Non includekafka-cluster:DescribeTopicDynamicConfiguration
okafka-cluster:AlterTopicDynamicConfiguration
.-
kafka-cluster:*
indica tutte le autorizzazioni.
Risorse
La tabella seguente mostra i quattro tipi di risorse che puoi utilizzare in una politica di autorizzazione quando utilizzi il controllo degli IAM accessi per AmazonMSK. Puoi ottenere il cluster Amazon Resource Name (ARN) da AWS Management Console o utilizzando il comando DescribeClusterAPIo AWS CLI describe-cluster
Risorsa | ARN formato |
---|---|
Cluster | arn:aws:kafka:region :account-id : cluster/cluster-name /cluster-uuid |
Argomento | arn:aws:kafka:region :account-id : argomento/cluster-name /cluster-uuid /topic-name |
Group (Gruppo) | arn:aws:kafka:region :account-id : gruppo/cluster-name /cluster-uuid /group-name |
ID transazionale | arn:aws:kafka:region :account-id : id transazionale/cluster-name /cluster-uuid /transactional-id |
Puoi usare il carattere jolly asterisco (*) un numero qualsiasi di volte in qualsiasi punto della parte che segue,, e. ARN :cluster/
:topic/
:group/
:transactional-id/
Di seguito sono riportati alcuni esempi di come utilizzare il carattere jolly asterisco (*) per fare riferimento a più risorse:
-
arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*
: tutti gli argomenti di qualsiasi cluster denominato MyTestCluster, indipendentemente da quello del cluster. UUID -
arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test
: tutti gli argomenti il cui nome termina con «_test» nel cluster il cui nome è MyTestCluster e il cui nome è 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 è 5555abcd-1111-abcd-1234-abcd1234-1, in tutte le incarnazioni di un cluster denominato nel tuo account. MyTestCluster Ciò significa che se si crea un cluster denominato MyTestCluster, lo si elimina e quindi si crea un altro cluster con lo stesso nome, è possibile utilizzare questa risorsa per rappresentare lo stesso ID di transazioni su entrambi i cluster. ARN Tuttavia, il cluster eliminato non è accessibile.
Casi di utilizzo comune
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 azioni che fanno parte del controllo degli IAM accessi per AmazonMSK, consultaSemantica delle operazioni e delle risorse.
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 |
|
Creazione di un argomento |
|
Produzione di dati |
|
Utilizzo di dati |
|
Produzione di dati in modo idempotente |
|
Produzione di dati in modo transazionale |
|
Descrizione della configurazione di un cluster |
|
Aggiornamento della configurazione di un cluster |
|
Descrizione della configurazione di un argomento |
|
Aggiornamento della configurazione di un argomento |
|
Modifica di un argomento |
|