MSK认证—开启SASL/SCRAM认证

MSK有三种认证方式

第二种方式涉及到与ACM PCA集成,每月有300$私有证书管理费用,本节不做讨论,后面再填坑。

我们将对第三种(使用secret manager管理帐号和密码)方式进行介绍,这种方式又叫SASL/SCRAM (Simple Authentication and Security Layer/ Salted Challenge Response Mechanism)

本节将:

  1. KMS中创建一个CMK(Customer managed key)
  2. 在secret manager中创建secret
  3. 在MSK上开启SCRAM并将创建的secret绑定到上面

在KMS中创建CMK

进入KMS服务,创建Customer managed keys:

image-20220102214302888

选择Symmetric类型(MSK不支持Asymmetric类型的key做为认证方式):

image-20220102214409626

输入CMK的名称

image-20220102214441101

一路点击Next,直到创建完成:

image-20220109163235833

在Secrets Manager中创建密码

在控制台中搜索secret manager并进入:

image-20220102202658419

选择Store a new secret:

image-20220102202733030

创建secret时,一定要遵循以下规则:

  1. 选择Other type of secret

  2. key/value对一定要为username:xxx, password:xxx格式,如果是JSON,则为:

    {
      "username": "alice",
      "password": "alice-secret"
    }
    

image-20220102202856517

必须使用CMK , 不能使用default key!这里使用上一部分创建的CMK:

image-20220102214701050

secret的名称必须以 AmazonMSK_开头:

image-20220102202935947

创建完成后,记录下ARN,例如arn:aws:secretsmanager:ap-southeast-1:145197526627:secret:AmazonMSK_demo-SNElCg

这里总结下在创建secret的一些限制:
1. 必须使用customer managed key (CMK) ,且为symmetric类型
2. secret名称必须以AmazonMSK_开头

在集群开启SASL/SCRAM认证

在MSK的控制台页面,编辑Security部分:

image-20220102204448967

只勾选SASL/SCRAM这种方式:

image-20220102202504049

点击保存,集群将花差不多一个小时时间将新的安全设置应用完毕。

在更新安全设置的这段时间可以打两把王者再继续实验

完全设置更新完成后,将创建的secret绑定上去:

image-20220102212942756

选择上一部分创建的secret,例如arn:aws:secretsmanager:ap-southeast-1:145197526627:secret:AmazonMSK_demo-SNElCg

image-20220102213155349

image-20220102213205853

绑定成功后的页面:

image-20220102215030087

尝试连接

更新完成后,我们查看集群的Bootstrap server连接方式,发现此时使用了9096端口,原来的9092端口已经不显示了。

image-20220109155703271

MSK Bootstrap server端口说明:
1. 9092 : 明文传输
2. 9094 : TLS传输
3. 9096 : SASL/SCRAM方式连接
4. 9098: SASL/IAM方式连接

此时使用原来的9092端口连接肯定不会成功,我们使用9096端口做下测试:

image-20220109155844623

由于没有使用任何用户名/密码进行验证,故报错如上。

此时达到了我们Authentication的目的,用户必须进行登录验证才能连接。我们将在下一节介绍如何认证并连接到MSK


注意:

此时使用zookeeper进行登录,发现依然可以成功连接并执行命令:

image-20220109160317941

对于zookeeper的安全,我们后面也将做介绍。