我在AWS EKS POD上部署了一个spring引导应用程序,并提供了带有IAM身份验证的AWS MSK,它们都在相同的VPC下,角色已经配置,在MSK入站规则中,端口9098也被添加了。
为了测试EKS和MSK之间的连接性,我确实使用了代理名称和端口9098来测试telnet,它也成功地连接到了在ek pod中运行的spring引导应用程序,它给出了以下错误:
org.springframework.kafka.KafkaException: Send failed;nested exception in org.apache.kafka.common.errors. SaslAuthenticationException: [63a192cc-599-43e-bfe8-bc880e50c2e1]: Access Denied
org.apache. kafka.clients.Networkclient: [Producer clientId=producer-1] Connection to node -3 b-3.xxxx.xxxx.amazonaws.com/10.7.2.1:9098) failed authentication due to: [63a192cc-599-43e-bfe8-bc880e50在IAM中创建了一个角色,将其附加到EKS吊舱,并分配了以下政策:
{
"version": "2012-10-17",
"Statement": [
{
"Sid": "AllowMskAccessCluster",
"Effect": "Allow",
"Action": [
"kafka:ListScramSecrets",
"kafka:GetBootstrapBrokers",
"kafka:DescribeCluster",
"kafka-cluster:DescribeCluster",
"kafka-cluster:Connect",
"kafka-cluster:AlterCluster",
],
"Resource": "AWS_EKS_CLUSTER_ARN"
},
{
"Sid": "AllowMskAccessTopic",
"Effect": "Allow",
"Action": [
"kakfa-cluster:DescribeTopicDynamicConfiguration",
"kakfa-cluster:DescribeTopic",
"kakfa-cluster:DeleteTopic",
"kakfa-cluster:CreateTopic",
"kakfa-cluster:AlterTopicDynamicConfiguration",
"kakfa-cluster:AlterTopic",
],
"Resource": [
"arn:AWS_EKS_CLUSTER_ARN/*",
"*"
]
},
{
"Sid": "AllowMskAccessGroup",
"Effect": "Allow",
"Action": [
"kafka-cluster:DescribeCluster",
"kafka-cluster:DeleteGroup",
"kafka-cluster:AlterGroup",
],
"Resource": "AWS_EKS_CLUSTER_ARN/*"
}
]
}
{
"version": "2012-10-17",
"Statement": [
{
"Sid": "AllowMskAccessCluster",
"Effect": "Allow",
"Action": [
"kafka:ListScramSecrets",
"kafka:GetBootstrapBrokers",
"kafka:DescribeCluster",
"kafka-cluster:WriteDataIdempotently",
"kafka-cluster:Connect",
],
"Resource": "AWS_EKS_CLUSTER_ARN"
},
{
"Sid": "AllowMskAccessTopic",
"Effect": "Allow",
"Action": [
"kakfa-cluster:WriteData",
"kakfa-cluster:DescribeTransactionalId",
"kakfa-cluster:DescribeTopic",
"kakfa-cluster:AlterTransactionalId",
],
"Resource":"*"
},
{
"Sid": "AllowMskAccessGroup",
"Effect": "Allow",
"Action": "kakfa-cluster":DescribeGroup,
"Resource": "AWS_EKS_CLUSTER_ARN/*"
}
]
}
{
"version": "2012-10-17",
"Statement": [
{
"Sid": "AllowMskAccessCluster",
"Effect": "Allow",
"Action": [
"kafka:ListScramSecrets",
"kafka:GetBootstrapBrokers",
"kafka:DescribeCluster",
"kafka-cluster:Connect",
],
"Resource": "AWS_EKS_CLUSTER_ARN"
},
{
"Sid": "AllowMskAccessTopic",
"Effect": "Allow",
"Action": [
"kakfa-cluster:ReadData",
"kakfa-cluster:DescribeTopic",
],
"Resource": "*"
},
{
"Sid": "AllowMskAccessGroup",
"Effect": "Allow",
"Action": [
"kafka-cluster:DescribeGroup",
"kafka-cluster:AlterGroup",
],
"Resource": "AWS_EKS_CLUSTER_ARN/*"
}
]
}我的春季启动卡夫卡配置:
ssl.truststore.location=path to trust 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我在我的spring应用程序中使用这个依赖项:
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>sts</artifactId>
<version>2.16.13</version>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>apache-client</artifactId>
<version>2.16.13</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.13</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>software.amazon.msk</groupId>
<artifactId>aws-msk-iam-auth</artifactId>
<version>1.0.0</version>
</dependency>发布于 2022-11-16 03:06:18
我很乐意提供更多的帮助,但这个政策有点难以验证。
有些操作没有正确的资源,您列出了许多应该使用MSK的kafka:*和kafka-cluster:*的EKS,等等。
有一些语法问题,如
"Action": "kakfa-cluster":DescribeGroup,
如果这些只是打字,它应该足够编辑您的帐户号码在政策,但其余的可以代替你,这样我们就可以看到尽可能多的真正的政策。它只是不像现在这样有用的r3al。
kafka-cluster:Connect操作?它应该告诉您您的策略是否允许您访问。。
{
"Sid": "MSKAllowAllNotProductionReady",
"Effect": "Allow",
"Action": [
"kafka:*",
"kafka-cluster:*",
],
"Resource": "*"
}希望这能有所帮助。如果没有,你可以提供一个清理版本的策略,屏幕截图的策略模拟器显示它可以访问,或其他信息,我可以再看看。你能行的!
编辑:
我注意到您正在使用库的1.0.0。在早期版本中存在一个问题,库缺少依赖项。这一点在1.1.0中得到了修正。在最新版本中还有许多其他性能、错误和安全修复。我建议你最近再试一次。我上面的评论仍然适用,也会导致类似的错误。你所分享的政策在我看来是置之不理的。
请参阅https://github.com/aws/aws-msk-iam-auth/pull/18/files和https://github.com/aws/aws-msk-iam-auth/compare/1.0.0...1.1.0查找提交消息“将sts模块添加到实现依赖项”。在这里您可以看到com.amazonaws:作为对Graddle包的依赖添加。
https://stackoverflow.com/questions/74407121
复制相似问题