请求应用程序规范的安全集成

本主题介绍了如何配置 Snowflake Native App,以使用应用程序规范来请求访问使用者账户中的安全集成。安全集成允许应用程序连接到第三方身份验证提供商,例如 OAuth。

从应用程序访问第三方身份验证提供商

为了实现第三方身份验证服务,Snowflake 提供了安全集成。安全集成允许应用程序连接到第三方身份验证服务,例如 OAuth。

备注

Snowflake Native Apps 仅支持 API_AUTHENTICATION 类型的安全集成。有关更多信息,请参阅 CREATE SECURITY INTEGRATION(外部 API 身份验证)

安全集成的应用程序规范工作流程

配置应用程序以使用安全集成的一般工作流程如下:

  1. 提供商为应用程序配置 自动授予权限功能。这将授予应用程序创建安全集成的权限。

    备注

    App specifications require that manifest_version: 2 be set in the manifest file.

  2. Providers add the CREATE SECURITY INTEGRATION privilege to the manifest file.

  3. 提供商在安装脚本中添加 SQL 语句,根据需要创建以下对象:

    提供商可以直接在安装脚本中添加这些命令,从而在安装应用程序时创建这些对象。或者,可以将这些命令添加到在运行时需调用的存储过程中,以创建这些对象。

  4. Consumers approve information related to OAuth integration when configuring the app. For more information on how consumers view and approve app specifications, see 使用应用程序规范批准与外部资源的连接.

安全集成的应用程序规范定义

对于安全集成,:ref:` 应用程序规范定义 <label-native_apps_app_spec_definition>` 包括连接第三方提供商所需的属性。对于 OAuth,应用程序规范定义取决于 OAuth 类型。下表列出了每种类型的应用程序规范定义:

安全集成类型

应用程序规范中定义的值

CLIENT_CREDENTIALS

  • :code:`OAUTH_TOKEN_ENDPOINT`(必填)

  • :code:`OAUTH_ALLOWED_SCOPES`(必填)

AUTHORIZATION_CODE_GRANT

  • :code:`OAUTH_TOKEN_ENDPOINT`(必填)

  • :code:`OAUTH_AUTHORIZATION_ENDPOINT`(可选)

JWT

  • :code:`OAUTH_TOKEN_ENDPOINT`(必填)

  • :code:`OAUTH_AUTHORIZATION_ENDPOINT`(可选)

设置清单文件的版本

要启用应用程序权限的自动授予,请在清单文件的开头设置版本,如以下示例所示:

manifest_version: 2
Copy

Add the CREATE SECURITY INTEGRATION privilege to the manifest file

  • To allow an app to create a security integration, add the CREATE SECURITY INTEGRATION privilege to the manifest file, as shown in the following example:

    manifest_version: 2
    ...
    privileges:
      - CREATE SECURITY INTEGRATION:
          description: "Allows the app to create security integrations to access external auth providers"
    ...
    
    Copy

If you set the manifest_version to 2 in the manifest file, Snowflake automatically grants the CREATE SECURITY INTEGRATION privilege to the app during installation or upgrade.

向安装脚本添加安全集成

安全集成允许应用程序连接到第三方身份验证服务,例如 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;
Copy

This example shows how to create a security integration to connect to Microsoft Graph using OAuth with client credentials. For other supported methods of connecting to an OAuth provider, see 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');
Copy

备注

创建应用程序规范时提供的值必须与在安装脚本中 创建安全集成 时使用的值完全相同。

有关使用其他 OAuth 类型的信息,请参阅 ALTER APPLICATION SET SPECIFICATIONS

在使用者账户中批准应用程序规范

提供商配置应用程序以创建安全集成和应用程序规范后,使用者可以查看该应用程序规范,并在配置应用程序时根据需要对其进行批准或拒绝。有关更多信息,请参阅 使用应用程序规范批准与外部资源的连接

语言: 中文