云服务中使用的AK/SK简单介绍

本文介绍了AK(AccessKeyId)和SK(SecretAccessKey)的概念及其在客户端和服务端的应用原理。AK用于标识用户身份,而SK作为密钥用于生成签名以确保数据传输的安全性。通过非对称加密技术,确保了传输过程中的安全性。

AK 和 SK 是什么?

  • AK (Access Key Id):用于标识用户,通常是一个公开的字符串。
  • SK (Secret Access Key):是用户用于加密认证字符串和验证认证字符串的密钥。SK 必须保密,只能由用户(客户端)保存。

AK/SK 的获取

客户端通常会提供下载 AK/SK 的功能,服务端会保存 AK 和 AK 对应的 domainIDuserID 等信息。

使用原理(签名、验签、非对称加密)

客户端流程:
  1. 构建 HTTP 请求:请求中包含 Access Key
  2. 生成签名
    • 使用原始报文进行哈希算法计算,得到摘要。
    • 使用 SK 对摘要进行加密,生成签名(signature)。
  3. 发送请求:将请求体发送给服务端,请求体包括 AK、原始报文和签名。
服务端流程:
  1. 查找用户信息:根据客户端发送的 Access Key,在数据库中查找对应的 AK 和用户信息。
  2. 验证签名
    • 使用上面步骤2相同的hash算法对原始报文进行计算,得到摘要1。
    • 使用 AK 对客户端发送的签名进行解密(非对称加密知识,公钥加密私钥解密,私钥加密公钥解密/验签),得到摘要2。
    • 比较摘要1 和摘要2,如果相同则认证通过。

http://image.huawei.com/tiny-lts/v1/images/6dc91e18b41f63de87c4fa01a4b897b9_500x276.png@900-0-90-f.png

优点

  • AK/SK是随机生成的,相比账号密码,不存在人为设置弱密码的风险,基本排除被暴力破解的可能性。
  • 在通信的过程中,SK是不会暴露在传输通道的,账号密码的方式是会暴露在传输通道中的(即使做了加密)。所以使用AK/SK在某些场景也是可以使用HTTP协议进行传输的(请求体不包含SK,即使不使用加密传输问题也不大)
  • 相较于账号密码,AK/SK本身可以用来做权限的划分(待补充)
  • 为不同的 AK 分配不同的权限:例如,一个 AK 只能读取数据,另一个 AK 可以读写数据。
  • 基于角色的权限控制:将 AK 与角色绑定,角色定义了一组权限,从而实现对用户操作的精细控制。
  • 临时 AK/SK:可以为临时用户生成具有有限权限和有效期的 AK/SK,适用于临时访问场景。
  • 示例场景

  1. 云存储服务

    • 用户通过 AK/SK 认证后,可以上传、下载或删除文件。
    • 不同的 AK 可以限制用户只能访问特定的存储桶或目录。
  2. API 网关

    • 客户端通过 AK/SK 认证后,可以调用特定的 API。
    • 不同的 AK 可以限制客户端只能调用某些 API 或限制调用频率。
  3. 微服务架构

    • 服务之间通过 AK/SK 进行认证和授权,确保只有合法的服务可以相互调用。

通过 AK/SK 机制,可以实现高效、安全的身份认证和权限管理,适用于各种分布式系统和云服务场景。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值