如何将SSIS连接至Google Cloud Platform及创建指向Google OAuth的令牌
Google Cloud Platform (GCP) 与 SSIS 连通实现方案
前置依赖
- 已开通GCP项目,且启用了需要访问的目标GCP服务API(如BigQuery、Cloud Storage)
- 本地已配置SSIS运行环境,包含Visual Studio/SSDT、SQL Server Integration Services组件
- 已在GCP控制台创建OAuth 2.0客户端ID,下载生成的JSON凭据文件,且配置了对应服务的访问授权范围
连通实现方案
两种可选实现方式,可根据业务需求选择:
- 官方连接器方案:安装Google Cloud SSIS 官方连接器,安装完成后SSIS工具箱会新增GCP专属数据源组件,拖拽组件后在配置页导入OAuth JSON凭据即可完成连通,无需自定义代码。
- 自定义脚本方案:若官方连接器功能不满足业务需求,可通过SSIS脚本任务调用GCP官方客户端库实现连通,需要提前在脚本项目的NuGet包管理器中安装
Google.Apis、Google.Apis.Auth以及对应GCP服务的客户端依赖包(如Google.Apis.Bigquery.v2)。
SSIS 内生成 Google OAuth 访问令牌操作步骤
步骤1:配置SSIS项目存储凭据参数
在SSIS项目中创建两个项目参数:
GCPOAuthCredentialPath:字符串类型,值为本地存储GCP OAuth JSON凭据文件的绝对路径GCPOAuthScopes:字符串类型,值为业务需要的GCP授权范围,多个范围用空格分隔,例如BigQuery访问的范围为https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/cloud-platform
同时创建一个字符串类型的项目/用户变量GCPAccessToken,用于存储生成的访问令牌。
步骤2:创建脚本任务生成令牌
在SSIS控制流中新增「脚本任务」,按如下配置:
- 在脚本任务的「只读变量」配置项中,添加之前创建的两个项目参数
$Project::GCPOAuthCredentialPath、$Project::GCPOAuthScopes - 在脚本任务的「读/写变量」配置项中,添加
User::GCPAccessToken变量 - 打开脚本编辑器,在NuGet包管理器中安装
Google.Apis.Auth依赖包,替换Main方法逻辑为如下代码:
using Google.Apis.Auth.OAuth2; using System; public void Main() { string credentialPath = Dts.Variables["$Project::GCPOAuthCredentialPath"].Value.ToString(); string[] scopes = Dts.Variables["$Project::GCPOAuthScopes"].Value.ToString().Split(' '); // 加载凭据并生成带权限范围的授权对象 GoogleCredential credential = GoogleCredential.FromFile(credentialPath).CreateScoped(scopes); // 生成访问令牌 string accessToken = credential.UnderlyingCredential.GetAccessTokenForRequestAsync().Result; // 写入变量供后续组件调用 Dts.Variables["User::GCPAccessToken"].Value = accessToken; Dts.TaskResult = (int)ScriptResults.Success; }
步骤3:令牌使用说明
- 生成的
GCPAccessToken在调用GCP接口时,放入HTTP请求的Authorization头即可,格式为Bearer {实际令牌值} GoogleCredential类自带令牌缓存和自动刷新逻辑,无需手动处理令牌过期问题,每次调用GCP服务前重新执行一次令牌生成逻辑即可保证令牌有效性。
注意:不要将OAuth凭据内容硬编码到脚本中,生产环境建议将凭据路径、授权范围等敏感信息配置为SSIS目录的加密敏感参数,避免信息泄露。
内容的提问来源于stack exchange,提问作者sbose
相关产品推荐
相关产品推荐

