You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用服务账号连接SQLAlchemy与Google Cloud Spanner时遭遇权限拒绝问题的技术求助

使用服务账号连接SQLAlchemy与Google Cloud Spanner时遭遇权限拒绝问题的技术求助

问题背景

我尝试从Google Cloud Spanner数据库中获取数据,已经做了以下权限配置:

  • 创建了一个服务账号,给它分配了Owner基础角色(我本身就是项目所有者)
  • 同时把自己添加为该服务账号的Service Account User和Service Account Admin角色,确保权限拉满

尝试过的操作

  1. 配置凭证环境变量
    在Python代码中设置环境变量:

    import os
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="c17-bot-dd3cca1bd2f3.json"
    

    也在终端手动执行了:

    export GOOGLE_APPLICATION_CREDENTIALS="c17-bot-dd3cca1bd2f3.json"
    
  2. SQLAlchemy连接代码(第一种方式)

    from sqlalchemy import create_engine, text
    
    engine = create_engine(
        "spanner+spanner:///projects/c-17bot/instances/test-instance/databases/example-db"
    )
    
    with engine.connect() as conn:
        result = conn.execute(text("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))
    
  3. SQLAlchemy连接代码(第二种方式,显式指定凭证)

    credentials = service_account.Credentials.from_service_account_file("c17-bot-dd3cca1bd2f3.json")
    engine = create_engine(
        "spanner+spanner:///projects/c-17bot/instances/test-instance/databases/example-db",
        connect_args={'client': spanner.Client(project="c-17bot", credentials=credentials)}
    )
    

遇到的错误

不管用哪种方式,都会收到相同的权限拒绝错误:

google.api_core.exceptions.PermissionDenied: 403 Caller is missing IAM permission spanner.sessions.create on resource projects/c-17bot/instances/test-instance/databases/example-db.

额外信息:CLI方式可以成功获取数据

使用原生Spanner客户端的代码能够正常查询:

instance_id = "test-instance"
database_id = "example-db"
instance = spanner_client.instance(instance_id)
database = instance.database(database_id)

with database.snapshot() as snapshot:
    results = snapshot.execute_sql(
        "SELECT SingerId, AlbumId, AlbumTitle FROM Albums"
    )
    for row in results:
        print("SingerId: {}, AlbumId: {}, AlbumTitle: {}".format(*row))

求助问题

我需要给服务账号分配哪些角色?或者应该如何正确传递凭证给SQLAlchemy的连接请求,才能让它成功获取Spanner的数据?

备注:内容来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 09:44:35