保护 S3
要访问 S3 存储桶,用户需要 AWS 访问密钥 ID 和 AWS 密钥(Secret)。这两者都可以在 AWS 网站上生成。当使用 Ozone 的 S3 协议时,也需要相同的 AWS 访问密钥和密钥。
在 Ozone 中,客户端可以直接从 Ozone 获取访问密钥。用户需要先执行 kinit,通过 Kerberos 认证之后,即可下载 S3 访问密钥 ID 和 AWS 密钥。与 AWS S3 一样,这两者都属于机密信息,必须由客户端妥善保管,因为它们拥有对 S3 存储桶的完全访问权限。
获取机密信息
S3 客户端可以从 OzoneManager 获取机密访问 ID 和用户密钥。
使用命令行
普通用户获取自己的密钥:
ozone s3 getsecretOzone 管理员可以使用 -u 标志获取指定用户的密钥:
ozone s3 getsecret -u <username>使用 REST API
用户可以向 /secret 端点发起 PUT 请求来获取自己的密钥:
curl -X PUT --negotiate -u : https://localhost:9879/secretOzone 管理员可以在路径末尾附加用户名,以获取特定用户的密钥:
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 认证配置正确,因为撤销密钥属于特权操作。
评论
登录后参与评论
KnowForge