AK 和 SK 是什么?
- AK (Access Key Id):用于标识用户,通常是一个公开的字符串。
- SK (Secret Access Key):是用户用于加密认证字符串和验证认证字符串的密钥。SK 必须保密,只能由用户(客户端)保存。
AK/SK 的获取
客户端通常会提供下载 AK/SK 的功能,服务端会保存 AK 和 AK 对应的 domainID、userID 等信息。
使用原理(签名、验签、非对称加密)
客户端流程:
- 构建 HTTP 请求:请求中包含
Access Key。 - 生成签名:
- 使用原始报文进行哈希算法计算,得到摘要。
- 使用 SK 对摘要进行加密,生成签名(
signature)。
- 发送请求:将请求体发送给服务端,请求体包括
AK、原始报文和签名。
服务端流程:
- 查找用户信息:根据客户端发送的
Access Key,在数据库中查找对应的 AK 和用户信息。 - 验证签名:
- 使用上面步骤2相同的hash算法对原始报文进行计算,得到摘要1。
- 使用 AK 对客户端发送的签名进行解密(非对称加密知识,公钥加密私钥解密,私钥加密公钥解密/验签),得到摘要2。
- 比较摘要1 和摘要2,如果相同则认证通过。

优点
- AK/SK是随机生成的,相比账号密码,不存在人为设置弱密码的风险,基本排除被暴力破解的可能性。
- 在通信的过程中,SK是不会暴露在传输通道的,账号密码的方式是会暴露在传输通道中的(即使做了加密)。所以使用AK/SK在某些场景也是可以使用HTTP协议进行传输的(请求体不包含SK,即使不使用加密传输问题也不大)
- 相较于账号密码,AK/SK本身可以用来做权限的划分(待补充)
- 为不同的 AK 分配不同的权限:例如,一个 AK 只能读取数据,另一个 AK 可以读写数据。
- 基于角色的权限控制:将 AK 与角色绑定,角色定义了一组权限,从而实现对用户操作的精细控制。
- 临时 AK/SK:可以为临时用户生成具有有限权限和有效期的 AK/SK,适用于临时访问场景。
-
示例场景
-
云存储服务:
- 用户通过 AK/SK 认证后,可以上传、下载或删除文件。
- 不同的 AK 可以限制用户只能访问特定的存储桶或目录。
-
API 网关:
- 客户端通过 AK/SK 认证后,可以调用特定的 API。
- 不同的 AK 可以限制客户端只能调用某些 API 或限制调用频率。
-
微服务架构:
- 服务之间通过 AK/SK 进行认证和授权,确保只有合法的服务可以相互调用。
通过 AK/SK 机制,可以实现高效、安全的身份认证和权限管理,适用于各种分布式系统和云服务场景。
本文介绍了AK(AccessKeyId)和SK(SecretAccessKey)的概念及其在客户端和服务端的应用原理。AK用于标识用户身份,而SK作为密钥用于生成签名以确保数据传输的安全性。通过非对称加密技术,确保了传输过程中的安全性。
822

被折叠的 条评论
为什么被折叠?



