You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

调用OpenStack API的Curl请求返回403 Forbidden错误求助

解决OpenStack Keystone API 403 Forbidden(identity:list_users权限问题)

从你给出的请求和响应信息来看,问题的核心非常清晰:你使用的认证Token对应的账号,没有权限执行用户列表查询操作(identity:list_users。下面我会帮你一步步排查和解决这个问题:

1. 先确认当前Token的用户角色权限

OpenStack Keystone的权限是基于角色管控的,identity:list_users这类全局用户查询操作,通常需要Admin角色或者自定义的包含该权限的角色。你可以先检查当前Token所属用户的角色:

用这个API请求查看用户角色(替换<user-id><project-id>和你的Token):

curl -i -X GET "https://cloud.lab.fiware.org:5000/v3/users/<user-id>/roles?project=<project-id>" -H "X-Auth-Token: <your-token>"

如果返回的角色列表里没有Admin或对应权限角色,那这就是权限不足的根源。

2. 补充对应权限角色

  • 私有OpenStack环境:如果你是环境管理员,可以直接给目标用户添加Admin角色:
    openstack role add --user <user-id> --project <project-id> admin
    
  • 公共云环境(如你用的Fiware云):你需要联系云服务提供商的管理员,申请获取用户列表的权限,或者确认是否有其他合法路径查询用户信息(比如仅允许查询自身用户信息)。

3. 检查Token的作用域是否正确

你的请求用的是项目级Token吗?identity:list_users通常需要域级或全局Admin级的Token权限。你可以尝试申请一个域级Token再重试:

curl -i -X POST "https://cloud.lab.fiware.org:5000/v3/auth/tokens" -H "Content-Type: application/json" -d '{
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "name": "<你的用户名>",
                    "domain": {"name": "Default"},
                    "password": "<你的密码>"
                }
            }
        },
        "scope": {
            "domain": {"name": "Default"}
        }
    }
}'

用这个请求返回的新Token去调用用户列表API,看看是否能正常返回结果。

4. (管理员专属)验证Keystone权限策略

如果你管理着自己的OpenStack环境,还可以检查Keystone的policy.yaml配置文件(通常在/etc/keystone/目录下),确认identity:list_users的权限规则:

默认规则是这样的:

"identity:list_users": "rule:admin_required"

如果这条规则被修改过,可能导致权限验证失败,需要恢复默认或调整规则以匹配你的权限需求。

内容的提问来源于stack exchange,提问作者Kushagra Srivastava

火山引擎 最新活动