本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用户名和密码身份验证AmazonSecrets Manager
您可以使用存储和保护的用户名和密码控制对 Amazon MSK 集群访问权限的控制。AmazonSecrets Manager。将用户的凭据存储在 Secrets Manager 中可以减少群集身份验证的开销,包括审核、更新和轮换凭据。使用 Secrets Manager 还可以让你跨集群共享用户凭据。
本主题包含下列部分:
工作方式
Amazon MSK 的用户名和密码身份验证使用 SASL/SCRAM(简单身份验证和安全层/盐渍质询响应机制)身份验证。要为集群设置用户名和密码身份验证,请在AmazonSecrets Manager,并将用户名和密码与密码与密码关联起来。
在 SASL/SCRAM 中定义RFC 5802
当您为集群设置 SASL/SCRAM 身份验证时,Amazon MSK 会为客户端和经纪商之间的所有流量启用 TLS 加密。
为亚马逊MSK 集群设置SASL/SCRAM 身份验证
要在中设置密钥AmazonSecrets Manager,请关注创建和检索密钥中的教程AmazonSecrets Manager 用户指南.
为 Amazon MSK 集群创建密码时,请注意以下要求:
选择其他密钥类型(例如 API 密钥)对于密钥类型。
你的秘密名字必须有前缀亚马逊SK_.
你必须使用现有的自定义Amazon KMSkey 或创建新的自定义Amazon KMS你的秘密的钥匙。Secrets Manager 使用默认值Amazon KMS默认情况下是密钥。
重要 使用默认设置创建的秘密Amazon KMSAmazon MSK 集群无法与 Amazon MSK 集群结合使用。
您的用户和密码数据必须采用以下格式:
{ "username": "alice", "password": "alice-secret" }
记录您的密码的 ARN(Amazon 资源名称)值。
您不能将 Secret Secrets Manager 钥与超出中所述限制的集群关联起来 每个代理的分区数.
如果您将Amazon CLI要创建密钥 ARN 请为kms-key-id
参数。不要指定别名。
要将密钥与您的集群关联,请使用 Amazon MSK 控制台或批量关联 CramSecretoperation.
以下示例 JSON 输入为BatchAssociateScramSecret
操作将秘密与集群关联起来:
{ "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" ] }
使用用户名和密码连接到集群
创建密码并将其与集群关联后,请执行以下操作以将客户端连接到集群:
运行以下命令,替换:
ClusterArn
使用集群的 Amazon 资源名称 (ARN):aws kafka describe-cluster --cluster-arn "
ClusterArn
"从命令的 JSON 结果中,保存与名为 “ZookeeperConnectString” 的字符串关联的值。
在集群中运行以下命令以在集群中创建主题:
bin
客户端计算机中的目录,替换ZookeeperConnectString
使用您在上一条命令中记录的字符串。您可以为主题指定不同的名称,但如果这样做,请记住使用在本过程的其余部分中选择的名称。./kafka-topics.sh --create --zookeeper
ZookeeperConnectString
--replication-factor 3 --partitions 1 --topic ExampleTopicName在客户端计算机上,使用存储在密码中的用户凭据创建 JAAS 配置文件。例如,对于用户爱丽丝,创建一个名为的文件
users_jaas.conf
包含以下内容:KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret"; };
使用以下命令将此 JAAS 配置文件导出为 KAFKA_OPTS 环境参数:
export KAFKA_OPTS=-Djava.security.auth.login.config=
<path-to-jaas-file>
/users_jaas.conf将 JDK 密钥存储文件从 JVM 复制到。 /tmp 目录。有关此步骤的详细信息,请参阅第 4 步:生成和使用数据中的入门教程。
创建一个名为
client_sasl.properties
包含以下内容。该文件定义了 SASL 机制和协议。security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512 ssl.truststore.location=
<path-to-keystore-file>
/kafka.client.truststore.jks运行以下命令,替换:
ClusterArn
使用集群的 Amazon 资源名称 (ARN):aws kafka get-bootstrap-brokers --cluster-arn
ClusterArn
从命令的 JSON 结果中,保存与名为 “BootstrapBroker SASLSCRAM” 的字符串关联的值。
要为您创建的主题生成,请在
bin
客户端计算机中的目录,替换Bootstrap 经纪人 SaslScram
运行上一条命令时获得的值。./kafka-console-producer.sh --broker-list
BootstrapBrokerStringSaslScram
--topic ExampleTopicName --producer.config client_sasl.properties要使用您创建的主题,请在
bin
客户端计算机中的目录,替换Bootstrap 经纪人 SaslScram
与之前获得的值相同。./kafka-console-consumer.sh --bootstrap-server
BootstrapBrokerStringSaslScram
--topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties
使用用户
创建用户:您将在密钥中创建用户,作为键值对。用户名和密码数据必须采用以下格式:
{ "username": "alice", "password": "alice-secret" }
撤消用户访问权限:要撤消用户访问集群的凭据,我们建议您首先删除或强制对集群的 ACL,然后取消关联密钥。出现上述情况是因为以下原因:
删除用户不会关闭现有连接。
对秘密的更改需要长达 10 分钟才能传播。
有关将 ACL 与 Amazon MSK 结合使用的信息,请参阅Apache Kafka ACL.
我们建议您限制对 Zookeeper 节点的访问,以防止用户修改 ACL。有关更多信息,请参阅 控制对 Apache ZooKeeper 的访问。
限制
使用 SCRAM 密钥时,请注意以下限制:
亚马逊 MSK 仅支持 SCRAM-SHA-512 身份验证。
Amazon MSK 集群最多可包含 1000 个用户。
您必须将客户主密钥 (CMK) 与 Secret 结合使用。不能将默认秘密管理器加密密钥与 Amazon MSK 结合使用的密钥。有关创建 CMK 的信息,请参阅创建对称 CMK.
你不能在 Secrets Manager 中使用不对称的 CMK。
您最多可以使用将 10 个密钥与集群关联。批量关联 CramSecretoperation.
与 Amazon MSK 集群关联的密钥的名称必须具有前缀。亚马逊SK_.
与 Amazon MSK 集群关联的密钥必须位于同一 Amazon Web Services 账户中并且Amazon区域作为集群。