S3 API

保护 S3

师成师成· 更新于 2026-09-28· 阅读 5 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

要访问 S3 存储桶,用户需要 AWS 访问密钥 ID 和 AWS 密钥(Secret)。这两者都可以在 AWS 网站上生成。当使用 Ozone 的 S3 协议时,也需要相同的 AWS 访问密钥和密钥。

在 Ozone 中,客户端可以直接从 Ozone 获取访问密钥。用户需要先执行 kinit,通过 Kerberos 认证之后,即可下载 S3 访问密钥 ID 和 AWS 密钥。与 AWS S3 一样,这两者都属于机密信息,必须由客户端妥善保管,因为它们拥有对 S3 存储桶的完全访问权限。

获取机密信息

S3 客户端可以从 OzoneManager 获取机密访问 ID 和用户密钥。

使用命令行

普通用户获取自己的密钥:

ozone s3 getsecret

Ozone 管理员可以使用 -u 标志获取指定用户的密钥:

ozone s3 getsecret -u <username>

使用 REST API

用户可以向 /secret 端点发起 PUT 请求来获取自己的密钥:

curl -X PUT --negotiate -u : https://localhost:9879/secret

Ozone 管理员可以在路径末尾附加用户名,以获取特定用户的密钥:

curl -X PUT --negotiate -u : https://localhost:9879/secret/<username>

此命令将与 Ozone 通信,通过 Kerberos 验证用户身份并生成 AWS 凭证。相关值会直接打印在屏幕上。你可以在 .aws 文件中设置这些值,以便在操作 Ozone S3 存储桶时自动完成访问认证。

caution

请注意:这些 S3 凭证与你的 Kerberos 口令一样,能够让持有者完全访问你的存储桶。

  • 现在你可以在 AWS 配置中设置这些密钥:
aws configure set default.s3.signature_version s3v4
aws configure set aws_access_key_id ${accessId}
aws configure set aws_secret_access_key ${secret}
aws configure set region us-west-1

有关如何通过命令行或 S3 API 使用 S3,请参阅 AWS S3 文档。

通过 REST API 撤销密钥

要使密钥失效/撤销密钥,可以使用 ozone s3 revokesecret 命令。另外,也可以使用 REST API 端点来撤销密钥。Ozone 现在提供了一个 REST API 端点,允许管理员撤销 S3 访问密钥。此操作会使密钥失效,确保其无法再用于身份验证。

端点详情

  • URL: http://localhost:9879/secret
  • HTTP 方法: DELETE

身份验证

该 API 使用 SPNEGO(Kerberos)身份验证。以下 curl 选项被使用:

  • --negotiate 启用 SPNEGO。
  • -u : 使用当前的 Kerberos 票据(提供空用户名)。

示例 1:撤销当前用户的密钥

此命令为当前已认证的用户撤销密钥:

curl -X DELETE --negotiate -u : -v http://localhost:9879/secret

示例 2:按用户名撤销密钥

此命令通过在末尾附加用户名作为查询参数,来撤销特定用户的密钥。请将 testuser 替换为所需的用户名:

curl -X DELETE --negotiate -u : -v "http://localhost:9879/secret?username=testuser"

响应

  • 成功: 返回 HTTP 200 OK,并附带 JSON 格式的确认消息。
  • 失败: 如果出现问题(例如认证失败),则返回相应的 HTTP 错误状态码和消息。

测试与验证

有关这些操作的完整示例,请参阅 Secret Revoke Robot 测试。该测试演示了默认密钥撤销以及按用户名撤销两种方式。

注意: 请确保 Kerberos 认证配置正确,因为撤销密钥属于特权操作。

评论

登录后参与评论

正在加载评论…