共享访问签名(SAS)

面向开发者的 Azure 安全实现

Anushika Agarwal

Cloud Data Engineer

什么是共享访问签名?

  • 存储资源授予有限访问
  • 不暴露**存储帐户密钥**

SAS

面向开发者的 Azure 安全实现

类比:SAS 如售货机代币

  • 令牌仅在有限时间内有效(如 30 秒)

  • 令牌仅允许特定操作(如一瓶可口可乐)

SAS 自动售货机类比

面向开发者的 Azure 安全实现

SAS 如何保障安全?

  • 存储帐户密钥签名

存储帐户密钥

  • 或使用 Microsoft Entra ID

Microsoft Entra ID

面向开发者的 Azure 安全实现

SAS 类型

  • 用户委派 SAS
    • 使用 Microsoft Entra 凭据
    • 适用于 BlobData Lake Storage

SAS 令牌

  • 服务 SAS
    • 使用存储帐户密钥
    • 访问单个服务:Blob、Queue、Table 或 File
  • 帐户 SAS
    • 使用存储帐户密钥
    • 访问多个服务
    • 服务级操作
面向开发者的 Azure 安全实现

真实场景

  • 场景

    • PeopleSphere 与外部审计员共享薪资报表
  • SAS 类型: 用户委派 SAS

  • 范围化访问

    • 审计员仅查看所需报表
  • 时间受限

    • 访问自动过期
  • 安全认证

    • 使用 PeopleSphere 的 Azure 凭据

用户委派 SAS

面向开发者的 Azure 安全实现

理解 SAS 结构

SAS 组成

  1. URI - 资源路径
  2. 令牌 - 访问规则与签名

SAS 令牌

面向开发者的 Azure 安全实现

令牌字段

SAS 令牌

  • sp:权限(如 r = 读,w = 写)
  • st / se:开始与到期时间
  • spr:协议(如仅 https)
  • sr:资源类型(b = blob,f = file)
  • sv:存储 API 版本
  • sig:用于验证的签名
面向开发者的 Azure 安全实现

SAS 最佳实践

  • 始终使用 HTTPS

  • 优先使用用户委派 SAS
  • 设置较短的到期时间

短到期时间

  • 授予最小必要权限

最小访问

  • 避免将 SAS 用于高风险访问

高敏感数据

面向开发者的 Azure 安全实现

Vamos praticar!

面向开发者的 Azure 安全实现

Preparing Video For Download...