使用 HMAC 凭证
HMAC 凭证由配对的访问密钥和私钥组成,用于需要认证的 S3-compatible 工具和库。
已定义 HMAC 凭证
IBM Cloud® Object Storage API 是基于 REST 的 API,用于读取和写入对象。 它使用 IBM Cloud® Identity and Access Management 进行认证和授权,并且支持 S3 API 的子集,能将应用程序轻松迁移到 IBM Cloud。
在控制台中创建 HMAC 凭证
通过在控制台中创建凭证期间将 Include HMAC Credential 切换到 On,用户可以在 服务凭证 中创建一组 HMAC 凭证。 图 1 显示了用于通过选择“高级选项”来设置 HMAC 参数的选项。
创建服务凭证后,HMAC 密钥会包含在 cos_hmac_keys 字段中。 然后,这些 HMAC 密钥会与服务标识相关联,并且可用于访问服务标识的角色所允许的任何资源或操作。
创建服务凭证时,可以为角色提供值 None。 这将阻止创建意外或不必要的 IAM 访问策略。 将需要使用 IAM 控制台或 API 来管理关联服务标识的任何访问策略。
使用 CLI 创建 HMAC 凭证
您还可以使用 IBM Cloud® Object Storage CLI 来创建凭证。 您必须已安装 IBM Cloud Platform 命令行指示信息,然后才能使用此示例。
ibmcloud resource service-key-create <key-name-without-spaces> Writer --instance-name "<instance name--use quotes if your instance name has spaces>" --parameters '{"HMAC":true}'
HMAC 凭证示例
如果要存储生成的密钥的结果,那么可以将 > file.skey 附加到示例末尾。 使用此指令集时,您只需要查找包含子键 cos_hmac_keys 和 access_key_id 的 secret_access_key 头。
cos_hmac_keys:
access_key_id: 7exampledonotusea6440da12685eee02
secret_access_key: 8not8ed850cddbece407exampledonotuse43r2d2586
将 HMAC 凭证设置为环境变量
创建凭证后,可以将其设置为环境变量 (其指示信息特定于所涉及的操作系统)。 例如,在示例 3 中,.bash_profile 脚本包含在启动 shell 时导出并用于开发的 COS_HMAC_ACCESS_KEY_ID 和 COS_HMAC_SECRET_ACCESS_KEY。
export COS_HMAC_ACCESS_KEY_ID="7exampledonotusea6440da12685eee02"
export COS_HMAC_SECRET_ACCESS_KEY="8not8ed850cddbece407exampledonotuse43r2d2586"
后续步骤
请注意,使用 HMAC 凭证来创建签名,以用于需要额外头的直接 REST API 调用时:
- 所有请求都必须具有
x-amz-date头,其中包含格式为%Y%m%dT%H%M%SZ的日期。 - 具有有效内容 (对象上载,删除多个对象等) 的任何请求都必须为
x-amz-content-sha256头提供有效内容的 SHA256 散列。 - 不支持 ACL(
public-read除外)。
目前,并非所有与 S3 兼容的工具都受支持。 某些工具会尝试在创建存储区时设置除 public-read 以外的 ACL。 通过这些工具创建水桶将失败。 如果“PUT bucket 请求因不支持 ACL 错误而失败,请首先使用”开始使用 "IBM Cloud Object Storage 所示的控制台创建数据桶,然后配置工具以向该数据桶读写对象。 目前不支持对对象写操作设置 ACL 的工具。