PostgreSQL学习之SCRAM-SHA-256加密认证

        PostgreSQL数据库保存用户密码的方式为加密保存(准确的说是保存用户的密码与随机数的hash值),加密算法为MD5和SCRAM-SHA-256两种,保存位置为系统表pg_authid。

        SCRAM-SHA-256加密及认证流程图:

        SCRAM-SHA-256加密

SCRAM-SHA-256$4096:kgMvWNAau3NfgfcUIY89CA==$KQXDM5+0dCYCYFIjP4VcIXvrD5sqneAPImEjnR42+IY=:yt950PbOeGkvBe75WN706nGAdDOhU/2jbzxf+iRjLFU=

        密文格式解析:

        SCRAM-SHA-256:加密算法名称

        4096:循环轮数,加密过程中算法执行次数

        kgMvWNAau3NfgfcUIY89CA==:随机数

        KQXDM5+0dCYCYFIjP4VcIXvrD5sqneAPImEjnR42+IY=:stored_key

        yt950PbOeGkvBe75WN706nGAdDOhU/2jbzxf+iRjLFU=:server_key

        加密过程解析:

        实现scram-sha-256加密的函数主要是pg_be_scram_build_secret,首先获取一个随机数,该随机数会随同密码密文一同保存(如上),然后进入加密函数scram_build_secret,这里最主要是下面四步:

	/* Calculate StoredKey and ServerKey */
	if (scram_SaltedPassword(password, salt, saltlen, iterations,
							 salted_password) < 0 ||
		scram_ClientKey(salted_
### Kafka SASL/SCRAM 认证机制配置与最佳实践 #### 1. SASL/SCRAM 认证概述 Kafka 支持多种安全协议来保护集群通信的安全性,其中SASL/SCRAM是一种常用的认证方式。通过这种方式可以增强客户端到服务器以及代理之间的身份验证安全性[^1]。 #### 2. 配置服务端参数 为了启用SASL/SCRAM,在Kafka Broker上需要修改`server.properties`文件并添加如下设置: ```properties listeners=SASL_PLAINTEXT://:9092 sasl.enabled.mechanisms=SCRAM-SHA-256,SCRAM-SHA-512 security.inter.broker.protocol=SASL_PLAINTEXT listener.name.sasl_plaintext.scram-sha-256.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required; listener.name.sasl_plaintext.scram-sha-512.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required; ``` 这些属性定义了监听器类型、允许使用的散列算法(SHA-256SHA-512),以及内部代理间通讯所采用的身份验证方法。 #### 3. 创建用户凭证 接下来要创建用于连接Kafka的用户名及其对应的密码哈希值。这可以通过执行Zookeeper命令完成: ```bash bin/kafka-configs.sh --zookeeper localhost:2181 \ --alter --add-config 'SCRAM-SHA-256=[password=<your_password>],SCRAM-SHA-512=[password=<your_password>]' \ --entity-type users --entity-name your_username ``` 上述脚本会向指定名称的用户添加两种不同强度级别的SCRAM密钥。 #### 4. 设置客户端配置 对于Windows 11环境下的Kafka客户端而言,则需编辑位于`\kafka2.12.3.8.0\config\client.properties`路径下相应的配置文件,并加入必要的选项以支持SASL/SCRAM认证模式[^2]: ```properties bootstrap.servers=localhost:9092 security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="your_username" password="<your_password>"; ``` 这里指定了引导服务器地址、安全协议种类、具体选用哪种散列函数作为协商机制,还有最重要的JAAS登录模块配置字符串,它包含了实际参与鉴权过程中的账号信息。 #### 5. 测试连接 最后一步就是尝试发送消息测试整个流程是否正常工作。如果一切顺利的话,应该能够成功建立带有SASL/SCRAM保护措施的数据传输通道。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值