CREATE SECRET

在当前/指定架构中创建新密钥或替换现有密钥。

另请参阅:

ALTER SECRETDESCRIBE SECRETDROP SECRETSHOW SECRETS

语法

OAuth (使用客户端凭据流程):

CREATE [ OR REPLACE ] SECRET [ IF NOT EXISTS ] <name>
  TYPE = OAUTH2
  API_AUTHENTICATION = <security_integration_name>
  OAUTH_SCOPES = ( '<scope_1>' [ , '<scope_2>' ... ] )
  [ COMMENT = '<string_literal>' ]
Copy

OAuth (使用授权代码授予流程:)

CREATE [ OR REPLACE ] SECRET [ IF NOT EXISTS ] <name>
  TYPE = OAUTH2
  OAUTH_REFRESH_TOKEN = '<string_literal>'
  OAUTH_REFRESH_TOKEN_EXPIRY_TIME = '<string_literal>'
  API_AUTHENTICATION = <security_integration_name>;
  [ COMMENT = '<string_literal>' ]
Copy

云提供商:

CREATE [ OR REPLACE ] SECRET [ IF NOT EXISTS ] <name>
  TYPE = CLOUD_PROVIDER_TOKEN
  API_AUTHENTICATION = '<cloud_provider_security_integration>'
  ENABLED = { TRUE | FALSE }
  [ COMMENT = '<string_literal>' ]
Copy

基本身份验证:

CREATE [ OR REPLACE ] SECRET [ IF NOT EXISTS ] <name>
  TYPE = PASSWORD
  USERNAME = '<username>'
  PASSWORD = '<password>'
  [ COMMENT = '<string_literal>' ]
Copy

通用字符串:

CREATE [ OR REPLACE ] SECRET [ IF NOT EXISTS ] <name>
  TYPE = GENERIC_STRING
  SECRET_STRING = '<string_literal>'
  [ COMMENT = '<string_literal>' ]
Copy

对称密钥:

CREATE [ OR REPLACE ] SECRET [ IF NOT EXISTS ] <name>
TYPE = SYMMETRIC_KEY
ALGORITHM = GENERIC
Copy

OAuth 客户端凭据流程的必填参数

name

指定密钥的标识符(即名称)的字符串;在架构中必须唯一。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

TYPE = OAUTH2

指定要用于 OAuth 授予流程的密钥。

API_AUTHENTICATION = security_integration_name

指定将 Snowflake 连接到外部服务的 Snowflake 安全集成的 name 值。

OAUTH_SCOPES = ( 'scope_1' [ , 'scope_2' ... ] )

指定在以下情况下使用的以逗号分隔的范围列表:在 OAuth 客户端凭据流程期间,对集成具有 USAGE 权限的角色从 OAuth 服务器发出请求。

此列表必须是安全集成的 OAUTH_ALLOWED_SCOPES 属性中定义的范围的子集。如果未指定 OAUTH_SCOPES 属性值,则密钥将继承安全集成中指定的所有范围。

对于 ServiceNow 连接器,唯一可能的范围值是 'useraccount'

OAuth 授权代码授予流程的必填参数

name

指定密钥的标识符(即名称)的字符串;在架构中必须唯一。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

TYPE = OAUTH2

指定要用于 OAuth 授予流程的密钥。

OAUTH_REFRESH_TOKEN = 'string_literal'

指定字符串形式的令牌,它用于在访问令牌过期时从 OAuth 授权服务器获取新的访问令牌。

OAUTH_REFRESH_TOKEN_EXPIRY_TIME = 'string_literal'

当 OAuth 刷新令牌过期时,指定字符串形式的时间戳。

API_AUTHENTICATION = security_integration_name

指定将 Snowflake 连接到外部服务的 Snowflake 安全集成的 name 值。

AWS IAM 必填参数

TYPE = CLOUD_PROVIDER_TOKEN

指定这是用于云提供商(例如 Amazon Web Services AWS)的密钥。

API_AUTHENTICATION = 'cloud_provider_security_integration'

指定将 Snowflake 连接到云提供商的 Snowflake 安全集成name 值。

基本身份验证的必填参数

name

指定密钥的标识符(即名称)的字符串;在架构中必须唯一。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

TYPE = PASSWORD

指定用于基本身份验证的密钥。

指定此类型时,必须指定用户名和密码属性的值。

USERNAME = 'username'

指定要存储在密钥中的用户名值。

TYPE 值设置为用于基本身份验证的 PASSWORD 时,请指定此值。

PASSWORD = 'password'

指定要存储在密钥中的密码值。

TYPE 值设置为用于基本身份验证的 PASSWORD 时,请指定此值。

通用字符串参数

name

指定密钥的标识符(即名称)的字符串;在架构中必须唯一。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

TYPE = GENERIC_STRING

指定用于存储敏感字符串值的密钥。

SECRET_STRING = 'string_literal'

指定要存储在密钥中的字符串。

该字符串可以是 API 令牌或敏感值字符串,可在 UDF 或存储过程的处理程序代码中使用。有关详细信息,请参阅 创建和使用外部访问集成

不应使用此属性来存储任何类型的 OAuth 令牌;对于您的 OAuth 用例,请使用其他密钥类型之一。

对称密钥参数

对称密钥会生成一个可用于加密操作的密码密钥。目前仅用于生成 合成数据

ALGORITHM

指定用于生成对称密钥的算法。唯一支持的值是 GENERIC,它会生成一个 256 位的密钥。

可选参数

COMMENT = 'string_literal'

用于指定密钥注释的字符串(字面量)。

默认:无值

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE SECRET

架构

USAGE

数据库或架构

要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

使用客户端凭据的 OAuth

创建用于 OAuth 客户端凭据流程的密钥:

CREATE OR REPLACE SECRET mysecret
  TYPE = OAUTH2
  API_AUTHENTICATION = mysecurityintegration
  OAUTH_SCOPES = ('useraccount')
  COMMENT = 'secret for the service now connector'
Copy

使用授权码授予的 OAuth

创建用于 OAuth 代码授予流程的密钥:

CREATE SECRET service_now_creds_oauth_code
  TYPE = OAUTH2
  OAUTH_REFRESH_TOKEN = '34n;vods4nQsdg09wee4qnfvadH'
  OAUTH_REFRESH_TOKEN_EXPIRY_TIME = '2022-01-06 20:00:00'
  API_AUTHENTICATION = sn_oauth;
Copy

AWS IAM

为身份验证包含 AWS IAM ARN,创建用于 Amazon Web Services (AWS) 的密钥:

CREATE SECRET aws_secret
  TYPE = CLOUD_PROVIDER_TOKEN
  API_AUTHENTICATION = myawsiamintegration
  ENABLED = TRUE;
Copy

基本身份验证

创建一个密钥,以指定用于访问 ServiceNow 的用户名和密码:

CREATE SECRET service_now_creds_pw
  TYPE = password
  USERNAME = 'jsmith1'
  PASSWORD = 'W3dr@fg*7B1c4j';
Copy
语言: 中文