As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Autenticação de credenciais de login com Secrets Manager AWS
Você pode controlar o acesso aos seus clusters do Amazon MSK usando credenciais de login que são armazenadas e protegidas usando o Secrets Manager. AWS Armazenar as credenciais de usuário no Secrets Manager reduz a sobrecarga da autenticação do cluster, como auditoria, atualização e rodízio de credenciais. O Secrets Manager também permite que você compartilhe credenciais de usuário entre clusters.
Este tópico contém as seguintes seções:
Como funciona
A autenticação de credenciais de acesso para o Amazon MSK usa a autenticação SASL/SCRAM (Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism). Para configurar a autenticação de credenciais de acesso para um cluster, você cria um recurso secreto no AWS Secrets Manager e associa as credenciais de acesso a esse segredo.
O SASL/SCRAM está definido no RFC 5802
nota
Quando você configura a autenticação SASL/SCRAM para seu cluster, o Amazon MSK ativa a criptografia TLS para todo o tráfego entre clientes e agentes.
Como configurar a autenticação SASL/SCRAM para um cluster do Amazon MSK
Para configurar um segredo no AWS Secrets Manager, siga o tutorial Criando e recuperando um segredo no Guia do usuário do AWS Secrets Manager.
Observe os seguintes requisitos ao criar um segredo para um cluster do Amazon MSK:
Escolha Outros tipos de segredos (p. ex., chave de API) para o tipo de segredo.
O nome do segredo deve começar com o prefixo AmazonMSK_.
Você deve usar uma AWS KMS chave personalizada existente ou criar uma nova AWS KMS chave personalizada para seu segredo. O Secrets Manager usa a AWS KMS chave padrão para um segredo por padrão.
Importante
Um segredo criado com a AWS KMS chave padrão não pode ser usado com um cluster Amazon MSK.
Seus dados de credencial de acesso devem estar no formato a seguir para que seja possível inserir pares de valor/chave usando a opção Texto simples.
{ "username": "alice", "password": "alice-secret" }
Registre o valor do ARN (nome do recurso da Amazon) do seu segredo.
-
Importante
Você não pode associar um segredo do Secrets Manager a um cluster que exceda os limites descritos em Dimensione seu cluster adequadamente: número de partições por agente.
Se você usar o AWS CLI para criar o segredo, especifique um ID de chave ou ARN para o
kms-key-id
parâmetro. Não especifique um alias.-
Para associar o segredo ao seu cluster, use o console Amazon MSK ou a BatchAssociateScramSecretoperação.
Importante
Quando você associa um segredo a um cluster, o Amazon MSK anexa uma política de recursos ao segredo, permitindo que seu cluster acesse e leia os valores secretos que você definiu. Você não deve modificar essa política de recursos. Isso pode impedir que seu cluster acesse seu segredo.
O exemplo de entrada JSON a seguir para a operação
BatchAssociateScramSecret
associa um segredo a um 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" ] }
Como estabelecer conexão com o seu cluster usando credenciais de acesso
Após criar um segredo e associá-lo ao cluster, você poderá conectar o cliente ao cluster. As etapas de exemplo a seguir demonstram como conectar um cliente a um cluster que usa autenticação SASL/SCRAM e como produzir e consumir com base em um tópico de exemplo.
Execute o comando a seguir em uma máquina que tenha a AWS CLI instalada, substituindo clusterARN pelo ARN do seu cluster.
aws kafka get-bootstrap-brokers --cluster-arn clusterARN
Para criar um tópico de exemplo, execute o comando a seguir, substituindo
BootstrapServerString
por um dos endpoints do broker que você obteve na etapa anterior.<path-to-your-kafka-installation>
/bin/kafka-topics.sh --create --bootstrap-server BootstrapServerString --replication-factor 3 --partitions 1 --topic ExampleTopicNameEm sua máquina cliente, crie um arquivo de configuração JAAS contendo as credenciais de usuário armazenadas em seu segredo. Por exemplo, para o usuário alice, crie um arquivo chamado
users_jaas.conf
com o conteúdo a seguir.KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret"; };
Use o comando a seguir para exportar seu arquivo de configuração JAAS como um parâmetro de ambiente
KAFKA_OPTS
.export KAFKA_OPTS=-Djava.security.auth.login.config=
<path-to-jaas-file>
/users_jaas.confCrie um arquivo chamado
kafka.client.truststore.jks
em um diretório./tmp
.-
Use o seguinte comando para copiar o arquivo de armazenamento de chaves do JDK da sua pasta
cacerts
da JVM para o arquivokafka.client.truststore.jks
que você criou na etapa anterior. SubstituaJDKFolder
pelo nome da pasta JDK na sua instância. Por exemplo, sua pasta do JDK pode ter o 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 No diretório
bin
da instalação do Apache Kafka, crie um arquivo de propriedades do cliente chamadoclient_sasl.properties
com o conteúdo a seguir. Esse arquivo define o mecanismo e o protocolo SASL.security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512 ssl.truststore.location=
<path-to-keystore-file>
/kafka.client.truststore.jksRecupere sua string de agentes de bootstrap com o comando a seguir.
ClusterArn
Substitua pelo Amazon Resource Name (ARN) do seu cluster:aws kafka get-bootstrap-brokers --cluster-arn
ClusterArn
No JSON resultante do comando, salve o valor associado à string chamada
BootstrapBrokerStringSaslScram
.Para produzir o tópico de exemplo que você criou, execute o seguinte comando em sua máquina cliente. Substitua o
BootstrapBrokerStringSaslScram
pelo valor que você recuperou na etapa anterior.<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --broker-listBootstrapBrokerStringSaslScram
--topicExampleTopicName
--producer.config client_sasl.propertiesPara consumir do tópico que você criou, execute o comando a seguir em sua máquina cliente. Substitua o
BootstrapBrokerStringSaslScram
pelo valor que você obteve anteriormente.<path-to-your-kafka-installation>
/bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBrokerStringSaslScram
--topicExampleTopicName
--from-beginning --consumer.config client_sasl.properties
Trabalhar com usuários
Criação de usuários: você cria usuários como pares de valor/chave em seu segredo. Ao usar a opção Texto simples no console do Secrets Manager, você deve especificar os dados da credencial de login no formato a seguir.
{ "username": "alice", "password": "alice-secret" }
Revogando o acesso do usuário: para revogar as credenciais de um usuário para acessar um cluster, recomendamos que primeiro você remova ou force uma ACL no cluster e depois desassocie o segredo. Isso se dá pelo seguinte:
A remoção de um usuário não fecha as conexões existentes.
A propagação de alterações em seu segredo levam até 10 minutos.
Para obter informações sobre como usar uma ACL com o Amazon MSK, consulte ACLs do Apache Kafka.
Para clusters usando o ZooKeeper modo, recomendamos que você restrinja o acesso aos seus ZooKeeper nós para impedir que os usuários modifiquem as ACLs. Para ter mais informações, consulte Controlando o acesso ao Apache ZooKeeper.
Limitações
Observe as seguintes limitações ao usar segredos SCRAM:
O Amazon MSK só é compatível com a autenticação SCRAM-SHA-512.
Um cluster do Amazon MSK pode ter até 1.000 usuários.
Você deve usar um AWS KMS key com seu segredo. Você não pode usar um segredo que use a chave de criptografia padrão do Secrets Manager com o Amazon MSK. Para obter informações sobre a criação de uma chave do KMS, consulte Criação de chaves do KMS de criptografia simétrica.
Não é possível usar uma chave assimétrica do KMS com o Secrets Manager.
Você pode associar até 10 segredos a um cluster por vez usando a BatchAssociateScramSecretoperação.
O nome dos segredos associados a um cluster do Amazon MSK deve ter o prefixo AmazonMSK_.
Os segredos associados a um cluster do Amazon MSK devem estar na mesma conta e AWS região da Amazon Web Services do cluster.