请求应用程序规范的安全集成¶
本主题介绍了如何配置 Snowflake Native App,以使用应用程序规范来请求访问使用者账户中的安全集成。安全集成允许应用程序连接到第三方身份验证提供商,例如 OAuth。
从应用程序访问第三方身份验证提供商¶
为了实现第三方身份验证服务,Snowflake 提供了安全集成。安全集成允许应用程序连接到第三方身份验证服务,例如 OAuth。
备注
Snowflake Native Apps 仅支持
API_AUTHENTICATION类型的安全集成。有关更多信息,请参阅 CREATE SECURITY INTEGRATION(外部 API 身份验证)。
安全集成的应用程序规范工作流程¶
配置应用程序以使用安全集成的一般工作流程如下:
提供商为应用程序配置 自动授予权限功能。这将授予应用程序创建安全集成的权限。
备注
应用程序规范要求在清单文件中设置
manifest_version = 2。提供商将 CREATE INTEGRATION 权限 添加到清单文件中。
提供商在安装脚本中添加 SQL 语句,根据需要创建以下对象:
提供商可以直接在安装脚本中添加这些命令,从而在安装应用程序时创建这些对象。或者,可以将这些命令添加到在运行时需调用的存储过程中,以创建这些对象。
在配置应用程序时,使用者应批准 OAuth 的相关信息以进行集成。有关使用者如何查看和批准应用程序规范的更多信息,请参阅 使用应用程序规范批准与外部资源的连接。
安全集成的应用程序规范定义¶
对于安全集成,:ref:` 应用程序规范定义 <label-native_apps_app_spec_definition>` 包括连接第三方提供商所需的属性。对于 OAuth,应用程序规范定义取决于 OAuth 类型。下表列出了每种类型的应用程序规范定义:
安全集成类型 |
应用程序规范中定义的值 |
|---|---|
|
|
|
|
|
设置清单文件的版本¶
要启用应用程序权限的自动授予,请在清单文件的开头设置版本,如以下示例所示:
manifest_version: 2
将 CREATE INTEGRATION 权限添加到清单文件¶
要允许应用程序创建安全集成,请添加清单文件的 CREATE INTEGRATION 权限,如以下示例所示:
manifest_version: 2
...
privileges:
- CREATE INTEGRATION
description: "Allows the app to create security integrations to access external auth providers"
...
清单文件 privileges 部分中的此条目指定应用程序使用安全集成。为了让应用程序使用自动授予权限功能,清单文件还需要 manifest_version: 2。
向安装脚本添加安全集成¶
安全集成允许应用程序连接到第三方身份验证服务,例如 OAuth。要为应用程序创建安全集成,请将 CREATE SECURITY INTEGRATION(外部 API 身份验证) 命令添加到安装脚本中,如下例所示:
CREATE SECURITY INTEGRATION external_oauth_provider
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
OAUTH_CLIENT_ID = 'YOUR_CLIENT_ID'
OAUTH_CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
OAUTH_GRANT = 'CLIENT_CREDENTIALS'
OAUTH_TOKEN_ENDPOINT = 'https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token'
OAUTH_ALLOWED_SCOPES = ('https://graph.microsoft.com/.default')
ENABLED = TRUE;
此示例展示如何创建安全集成,以通过客户端凭据的 OAuth 方式连接到 Microsoft SharePoint。有关连接到 OAuth 提供商的其他受支持方法,请参阅 CREATE SECURITY INTEGRATION(外部 API 身份验证)。
为安全集成创建应用程序规范¶
以下示例显示如何使用 CLIENT_CREDENTIALS OAuth 类型为安全集成创建应用程序规范:
ALTER APPLICATION SET SPECIFICATION oauth_app_spec
TYPE = SECURITY_INTEGRATION
LABEL = 'Connection to an external OAuth provider'
DESCRIPTION = 'Integrates an external identity provider in the app'
OAUTH_TYPE = 'CLIENT_CREDENTIALS'
OAUTH_TOKEN_ENDPOINT = 'https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token'
OAUTH_ALLOWED_SCOPES = ('https://graph.microsoft.com/.default');
备注
创建应用程序规范时提供的值必须与在安装脚本中 创建安全集成 时使用的值完全相同。
有关使用其他 OAuth 类型的信息,请参阅 ALTER APPLICATION SET SPECIFICATIONS。
在使用者账户中批准应用程序规范¶
提供商配置应用程序以创建安全集成和应用程序规范后,使用者可以查看该应用程序规范,并在配置应用程序时根据需要对其进行批准或拒绝。有关更多信息,请参阅 使用应用程序规范批准与外部资源的连接。