クライアント接続のリダイレクト

クライアントリダイレクトを使用すると、ビジネス継続性と障害復旧のために、またはアカウントを別のリージョンやクラウドプラットフォームに移行するときに、クライアント接続を異なる リージョン のSnowflakeアカウントにリダイレクトできます。

このトピックの内容:

クライアントリダイレクトの紹介

クライアントリダイレクトは、Snowflake 接続 オブジェクトを介して実装されます。接続オブジェクトは、SnowflakeクライアントでSnowflakeに接続するために使用する安全な 接続 URL を保存します。

接続 URL のホスト名は、共通ドメイン名に加えて、組織名と接続オブジェクト名で構成されます。

organization_name-connection_name.snowflakecomputing.com

このホスト名は、接続先のアカウントを指定しないことに注意してください。アカウント管理者は、そのアカウントの接続を プライマリ接続 として機能するように指定することにより、使用するアカウントを決定します。接続 URL を使用してSnowflakeに接続すると、プライマリ接続を含むアカウントに接続するようになります。

リージョンまたはクラウドプラットフォームで停止が発生し、その停止がプライマリ接続のアカウントに影響を与える場合、管理者は、プライマリ接続として機能するように、別のリージョンまたはクラウドプラットフォームにある別のアカウントの接続を昇格できます。

この停止の間、同じ接続 URL を引き続き使用してSnowflakeに接続できます。Snowflakeは、新しく昇格された接続を持つアカウント(停止の影響を受けるリージョンまたはクラウドプラットフォーム外のアカウント)への接続 URL を解決します。

注釈

プライマリ接続とセカンダリ接続を保存するSnowflakeアカウントは、異なる リージョン でホストする必要があります。

クライアントリダイレクトフロー

  1. クライアントリダイレクトの構成 (このトピック内)にあるステップを実行して、クライアント接続用の接続 URL を作成します。これには、プライマリ接続とリンクされたセカンダリ接続の作成が含まれます。

  2. 接続 URL を使用して接続するようにSnowflakeクライアントを更新します。 接続 URL の使用 (このトピック内)には、サポートされているクライアントと接続の詳細のリストが含まれています。

  3. プライマリ接続が配置されているリージョンでサービスが停止した場合は、 クライアント接続のリダイレクト (このトピック内)のステップを実行して接続 URL を更新し、セカンダリ接続にリダイレクトします。

  4. 停止が解決したら、 クライアント接続のリダイレクト のステップを実行して、クライアント接続を元のプライマリ接続にリダイレクトします。

次の図は、同じ組織内にあるが、同じまたは異なるクラウドプラットフォーム上の異なるリージョン(Region ARegion B)にある2つのアカウントのクライアントリダイレクトフローを示しています。

プライマリ接続は Region AAccount 1 にあります。接続 URL を使用するSnowflakeクライアントは Account 1 に接続します。

Normal client connections

Region A でサービスが停止すると、クライアント接続に失敗します。

Failed client connections

Region BAccount 2 にある接続は、プライマリ接続として機能するように昇格されます。接続 URL を使用するSnowflakeクライアントは Account 2 に接続するようになりました。

Redirected client connections

次の SQL ステートメントは、クライアントリダイレクトワークフローを通過します。各ステップについては、このトピックの次のセクションで詳しく説明します。

通常のクライアント接続: クライアントリダイレクトの構成

ソースアカウントでの実行

新しいプライマリ接続を作成し、組織内にある他のアカウントへのフェールオーバーを有効にします。フェールオーバーが有効になっている各アカウントは、プライマリ接続のアカウントとは異なるリージョンにする必要があります。

フェールオーバーを有効にする各アカウントの SHOW REPLICATION ACCOUNTS の出力にある account_name 列に注意してください。

-- Create a new primary connection
CREATE CONNECTION myconnection;

-- View accounts in your organization that are enabled for replication
SHOW REPLICATION ACCOUNTS;

-- Configure failover accounts for the primary connection
ALTER CONNECTION myconnection
  ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;

-- View the details for the connection
SHOW CONNECTIONS;

Snowflakeアカウントで Snowflakeサービスへのプライベート接続 が有効になっている場合は、接続 URL の DNS CNAME 記録を作成および管理する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS CNAME 記録の構成 をご参照ください。

ターゲットアカウントでの実行

プライマリ接続にリンクされたセカンダリ接続を作成します。セカンダリ接続の名前は、プライマリ接続と同じ名前にする必要があります。

CREATE CONNECTION myconnection
  AS REPLICA OF myorg.myaccount1.myconnection;

Snowflakeアカウントで Snowflakeサービスへのプライベート接続 が有効になっている場合は、接続 URL の DNS CNAME 記録を作成または更新する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS CNAME 記録の変更 をご参照ください。

ソースリージョンで停止が発生: フェールオーバー

プライマリ接続が配置されているリージョンで停止が発生した場合は、別のリージョンでセカンダリ接続を昇格し、プライマリ接続として機能させます。

ターゲットアカウントでの実行
ALTER CONNECTION myconnection PRIMARY;

Snowflakeアカウントで Snowflakeサービスへのプライベート接続 が有効になっている場合は、接続 URL の DNS CNAME 記録を作成または更新する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS CNAME 記録の変更 をご参照ください。

解決された停止: フェールバック

停止が解決されたら、元のプライマリ接続を昇格して、再びプライマリ接続として機能させます。

ソースアカウントでの実行

プライマリに昇格する接続があるアカウントから、次のコマンドを実行します。

ALTER CONNECTION myconnection PRIMARY;

Snowflakeアカウントで Snowflakeサービスへのプライベート接続 が有効になっている場合は、接続 URL の DNS CNAME 記録を作成または更新する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS CNAME 記録の変更 をご参照ください。

クライアントリダイレクトの構成

このセクションでは、接続グループにプライマリ接続と1つ以上のセカンダリ接続を作成する方法について説明します。

前提条件

アカウントでクライアントリダイレクト機能を有効にするには、 Snowflakeサポート にお問い合わせください。この機能を有効にするには、アカウントで 組織 機能も有効にする必要があります。

注釈

アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)のみがこのセクションの SQL コマンドを実行できます。

プライマリ接続の作成

ご用心

Snowflakeは、システムで作成されたときに、組織に一意の生成された名前を割り当てました。組織名は、接続オブジェクトで定義され、アカウントにアクセスするためにSnowflakeクライアントによって送信された接続 URL の一部です。接続オブジェクトを作成する前に、Snowflakeの組織名が適切であることを確認します。システムにある組織名を変更するには、 Snowflakeサポート にお問い合わせください。

  1. CREATE CONNECTION を使用して新しいプライマリ接続を作成します。各プライマリ接続名は、組織内にあるすべての接続名とアカウント名全体において一意である必要があります。

    接続名は、Snowflakeアカウントへの接続に使用される接続 URL の一部として含まれています。

    たとえば、 myconnection という名前の接続を作成するには、

    CREATE CONNECTION myconnection;
    
  2. ALTER CONNECTION ... ENABLE FAILOVER TO ACCOUNTS ステートメントを使用して、このプライマリ接続を変更します。この接続(つまり、セカンダリ接続)のフェールオーバーオプションを保存できる、組織内にあるアカウントのコンマ区切りのリストを提供します。

    セカンダリ接続を保存するアカウントは、プライマリ接続を保存するアカウントとは異なるリージョンでホストする必要があります。クライアントリダイレクトは、リージョン間でのみ正常に動作します。たとえば、同じリージョンでクライアント接続を account1 から account2 にリダイレクトしようとすると、クライアントリダイレクトは機能しません。

    複製が有効になっている組織内のアカウントの完全なリストを表示するには、 SHOW REPLICATION ACCOUNTS を実行します。

    たとえば、 myorg 組織のアカウント myaccount2myaccount3 に、それぞれ myconnection 接続のセカンダリ接続を保存することを許可します。

    ALTER CONNECTION myconnection ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;
    
  3. SHOW CONNECTIONS コマンドを実行して、接続の詳細を表示します。

    SHOW CONNECTIONS;
    
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    

セカンダリ接続の作成

CREATE CONNECTION ... AS REPLICA OF を使用してプライマリ接続にリンクされた、1つ以上のアカウントでセカンダリ接続を作成します。セカンダリ接続を作成できるのは、 プライマリ接続の作成 の ALTER CONNECTION ... ENABLE FAILOVER TO ACCOUNTS ステートメントで指定したアカウントのみであることに注意してください。

各ターゲットアカウントで CREATE CONNECTION ... AS REPLICA OF ステートメントを実行して、指定したプライマリ接続のレプリカを作成します。

重要

各セカンダリ接続は、プライマリ接続と同じ名前である 必要があります。接続名は接続 URL に含まれています。

セカンダリ接続を作成する ターゲット アカウントで、このセクションの SQL ステートメントを実行します。

  1. SHOW CONNECTIONS コマンドを実行して、すべての接続を表示します。プライマリ接続の primary 列の値をコピーします。次のステップでセカンダリ接続を作成するときに、この値を使用します。

    SHOW CONNECTIONS;
    
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    
  2. CREATE CONNECTION ... AS REPLICA OF コマンドを実行して、セカンダリ接続を作成します。

    たとえば、 myorg.myaccount1.myconnection プライマリ接続にリンクされている myconnection という名前のセカンダリ接続を作成します。 AS REPLICA OF の後に、プライマリ接続の完全修飾名(前のステップで出力された SHOW CONNECTIONS からコピーした名前)を貼り付けます。

    CREATE CONNECTION myconnection
      AS REPLICA OF MYORG.MYACCOUNT1.MYCONNECTION;
    
  3. SHOW CONNECTIONS コマンドを実行して、セカンダリ接続が作成されたことを確認します。

    SHOW CONNECTIONS;
    
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    | AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR2 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    

Snowflakeサービスへのプライベート接続用 DNS CNAME 記録の構成

Snowflakeアカウントで Snowflakeサービスへのプライベート接続 が有効になっている場合、ネットワーク管理者は接続 URL 用 DNS CNAME 記録を作成および管理する必要があります。その他のアカウントすべてでは、Snowflakeが CNAME 記録を作成および管理します。

これらのステップでは、例として AWS PrivateLink を使用しますが、SnowflakeアカウントでAzure Private LinkまたはGoogle Cloud Private Service Connectを使用する場合も、ステップは同じです。

  1. クライアントリダイレクトが有効になっているアカウントの1つで SHOW CONNECTIONS を実行します。たとえば、 myaccount1myaccount2 に対して AWS PrivateLink が有効になっているとします。

    SHOW CONNECTIONS;
    
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    |--------------------|-------------------------------|---------------------|-------------------|-----------------|---------------|-------------------------------|-------------------------------------|-------------------------------------------|-------------------|-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    | AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR2 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    
  2. CONNECTION_URL 列の値を記録します。 snowflakecomputing.com の直前の URL に privatelink セグメントを追加します(この例では myorg-myconnection.privatelink.snowflakecomputing.com)。

  3. DNS プロバイダーが提供するツールを使用して、接続 URL の CNAME 記録を作成します。

    • 変更された CONNECTION_URL 列の値を使用して、ドメイン(またはエイリアス)を設定します。

    • 宛先のホスト名を、プライマリ接続を保存するアカウントの完全なSnowflakeアカウント URL として設定します。これには、アカウントがホストされているリージョンとクラウドプラットフォームを識別する追加のセグメント、および AWSPrivateLink のサポートが含まれます。これは、接続 URL へのクライアント接続がリダイレクトされるアカウント名です。

      例:

      myaccount1.us-west-2.privatelink.snowflakecomputing.com.
      

      または、組織名とアカウント名 URL を使用します。

      例:

      myorg-myaccount1.privatelink.snowflakecomputing.com.
      

      末尾のピリオドに注意してください。これを含める必要があります。

ユーザーは、次の接続 URL 形式を使用してSnowflakeに接続します。

organization_name-connection_name.privatelink.snowflakecomputing.com

条件:

organization_name

Snowflake組織の名前。ユーザーが接続するSnowflakeアカウントは、この組織に含まれています。

connection_name

接続オブジェクトの名前。

詳細については、次をご参照ください。

接続 URL の使用

このセクションでは、さまざまなSnowflakeクライアントの構成で接続 URL を参照する手順について説明します。

サポートされているSnowflakeクライアント

クライアントリダイレクトは Snowsight: SnowflakeのウェブインターフェイスSnowflakeの従来のウェブインターフェイス でサポートされています。加えて、次のSnowflakeクライアントバージョン(およびそれ以上)は、クライアントリダイレクトをサポートしています。

Snowflakeクライアント

サポートされている最小バージョン

SnowSQL

1.1.82

Python用Snowflakeコネクタ

1.8.3

Node.jsドライバー

1.2.0

Go Snowflakeドライバー

1.2.0

.NET ドライバー

1.0.0

JDBC ドライバー

3.8.4

ODBC ドライバー

2.19.4

Snowpark

すべてのバージョン

Snowflakeクライアントの構成

Snowflakeに接続するときは、接続 URL に次のホスト名を使用します。

ホスト名: organization_name-connection_name.snowflakecomputing.com

条件:

organization_name

Snowflake組織の名前。ユーザーが接続するSnowflakeアカウントは、この組織に含まれています。

connection_name

接続オブジェクトの名前。

重要

Snowflakeサービスへのプライベート接続

Snowflakeサービスへのプライベート接続 を使用しているお客様は、 snowflakecomputing.com の直前に privatelink セグメントを URL に追加する必要があります。

organization_name-connection_name.privatelink.snowflakecomputing.com

Snowsight: Snowflakeのウェブインターフェイス

app.snowflake.com のアカウント名フィールドに次のように入力します。

<organization-name>-<connection-name>

例:

myorg-myconnection

organization-connection を使用してログインすると、 Snowsight は現在のプライマリ接続における特定のリージョンとロケーターに移動します。停止中、接続がリダイレクトされたら、ユーザーは organization-connection を介して再度ログインし、新しいプライマリに接続する必要があります。

Snowflakeの従来のウェブインターフェイス

ウェブブラウザーに次の URL を入力します。

https://<organization_name>-<connection_name>.snowflakecomputing.com/

例:

https://myorg-myconnection.snowflakecomputing.com/

SnowSQL

SnowSQL config ファイルの accountname 接続パラメーターで接続 URL のホスト名を指定します。 config ファイルについては、 SnowSQL の構成 をご参照ください。

accountname = <organization_name>-<connection_name>
username = <username>
password = <password>

例:

accountname = myorg-myconnection
username = jsmith
password = mySecurePassword

Python用Snowflakeコネクタ

接続関数を呼び出すときに、 account 接続パラメーターで接続 URL のホスト名を指定します。詳細については、 Pythonコネクタ API および Pythonコネクタの使用 をご参照ください。

con = snowflake.connector.connect (
      account = <organization_name>-<connection_name>
      user = <username>
      password = <password>
)

例:

con = snowflake.connector.connect (
      account = myorg-myconnection
      user = jsmith
      password = mySecurePassword
)

JDBC ドライバー

接続文字列で接続 URL のホスト名を指定します。詳細については、 JDBC ドライバーを構成する をご参照ください。

jdbc:snowflake://<organization_name>-<connection_name>.snowflakecomputing.com/?user=<username>&password=<password>

例:

jdbc:snowflake://myorg-myconnection.snowflakecomputing.com/?user=jsmith&password=mySecurePassword

ODBC ドライバー

サーバー接続パラメーターで接続 URL のホスト名を指定します。接続パラメーターの詳細については、 ODBC 構成および接続パラメーター をご参照ください。

[ODBC Data Sources]
<account_name> = SnowflakeDSIIDriver

[<dsn_name>]
Description     = SnowflakeDB
Driver          = SnowflakeDSIIDriver
Locale          = en-US
SERVER          = <organization_name>-<connection_name>.snowflakecomputing.com

例:

[ODBC Data Sources]
myaccount = SnowflakeDSIIDriver

[client_redirect]
Description     = SnowflakeDB
Driver          = SnowflakeDSIIDriver
Locale          = en-US
SERVER          = myorg-myconnection.snowflakecomputing.com

Node.jsドライバー

account 接続オプションで接続 URL のホスト名を指定します。接続パラメーターの詳細については、 Node.jsドライバーの使用 をご参照ください。

var configuration = {
  username: '<username>',
  password: '<password>',
  account: <organization_name>-<connection_name>.
}

var connection = snowflake.createConnection(configuration)

例:

var configuration = {
  username: 'jsmith',
  password: 'mySecurePassword',
  account: myorg-myconnection.
}

var connection = snowflake.createConnection(configuration)

Go Snowflakeドライバー

Account パラメーターで接続 URL のホスト名を指定します。詳細については、 Go Snowflake Driver をご参照ください。

cfg := &Config{
  Account: "<organization_name>-<connection_name>",
  User: "<username>",
  Password: "<password>"
}

dsn, err := DSN(cfg)

例:

cfg := &Config{
  Account: "myorg-myconnection",
  User: "jsmith",
  Password: "mySecurePassword"
}

dsn, err := DSN(cfg)

Snowpark

Snowpark Python

セッションを確立するために使用したPythonディクショナリ(dict)の account 接続パラメーターで、接続 URL のホスト名を指定します。セッションの作成の詳細については、 Snowpark Pythonのセッションの作成 をご参照ください。

connection_parameters = {
  "account": "<organization_name>-<connection_name>",
  "user": "<snowflake_user>",
  "password": "<snowflake_password>"
}

例:

connection_parameters = {
  "account": "myorg-myconnection",
  "user": "jsmith",
  "password": "mySecurePassword"
}
Snowpark Java

プロパティファイルの URL プロパティで接続 URL を指定するか、セッションの確立に使用する Map を指定します。セッションの作成の詳細については、 Snowpark Javaのセッションの作成 をご参照ください。

# Properties file (a text file) for establishing a Snowpark session
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com

例:

# Properties file (a text file) for establishing a Snowpark session
URL = https://myorg-myconnection.snowflakecomputing.com
Snowpark Scala

プロパティファイルの URL プロパティで接続 URL を指定するか、セッションの確立に使用する Map を指定します。セッションの作成の詳細については、 Snowpark Scalaのセッションの作成 をご参照ください。

# Properties file (a text file) for establishing a Snowpark session
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com

例:

# Properties file (a text file) for establishing a Snowpark session
URL = https://myorg-myconnection.snowflakecomputing.com

認証とクライアントリダイレクト

ユーザーは、ソースアカウントと各ターゲットアカウントでプロビジョニングする必要があります。

フェデレーション認証と SSO

各ターゲットアカウントで個別にフェデレーション認証を構成します。 高度な SAML SSO 機能 の設定オプションを使用して、IDプロバイダー(IdP)の詳細を提供します。

注釈

Snowflakeは、フェールオーバーの場合にユーザーが正しいアカウントにリダイレクトされるように、アカウント URL ではなく接続 URL を使用して SAML 2.0準拠のIDプロバイダー(IdP)を構成することをお勧めします。

OAuth

各ターゲットアカウントで OAuth のセキュリティ統合オブジェクトを構成します。セキュリティ統合オブジェクトは、ソースアカウントにある同じオブジェクトと同一である必要があります。手順については、適切なトピックをご参照ください。

セキュリティ統合プロパティを取得するには、ソースアカウントのセキュリティ統合ごとに DESCRIBE INTEGRATION コマンドをクエリします。次に、 CREATE INTEGRATION コマンドを実行して、ターゲットアカウントに各セキュリティ統合を再作成します。

OAuth リダイレクト動作

クライアント接続の認証にSnowflake OAuth を使用していて、接続 URL を使用してSnowflakeに接続している場合は、接続 URL が別のアカウントにリダイレクトされると(例: フェールオーバーの場合)、再認証するように求められます。Snowflake OAuth トークンは、特定のアカウントでの使用に有効です。別の展開のアカウントをポイントするように接続 URL が更新されると、既存の OAuth トークンは無効になります。

フェールオーバーの場合、接続 URL が新しいアカウントに更新されると、クライアントは invalid OAuth access token エラーで接続解除されます。接続を再確立するには、再認証してアクセス許可に同意する必要があります。

ユーザーが使用する接続 URL の確認

テーブル関数の LOGIN_HISTORY , LOGIN_HISTORY_BY_USER ファミリーをクエリして、過去7日以内のユーザーのログインアクティビティを表示します。出力は、どのユーザーとSnowflakeクライアントが接続 URL を使用しているかを示します。REPORTED_CLIENT_TYPE 列と REPORTED_CLIENT_VERSION 列には、Snowflakeへの各接続に使用されるクライアントとバージョンが表示され、 CONNECTION 列には、使用される接続 URL (存在する場合)が表示されます。

注釈

クライアントが接続 URL ではなく、アカウント URL で構成されたIDプロバイダー(IdP)を介して認証する場合は、認証の完了後、 IdP がクライアントをアカウント URL に転送します。このログインイベントの CONNECTION 列は NULL です。 認証とクライアントリダイレクト (このトピック内)をご参照ください。

たとえば、過去72時間に、現在のロールがモニターを許可されている各ユーザーのログインイベントを最大100個取得するとします。

SELECT *
FROM TABLE(INFORMATION_SCHEMA.LOGIN_HISTORY(DATEADD('HOURS',-72,CURRENT_TIMESTAMP()),CURRENT_TIMESTAMP()))
ORDER BY EVENT_TIMESTAMP;

クライアント接続のリダイレクト

プライマリ接続が配置されているリージョンでサービスが停止した場合は、セカンダリ接続を保存しているアカウントにクライアント接続をリダイレクトします。

プライマリ接続として機能するセカンダリ接続の昇格

リダイレクトを開始するには、 ALTER CONNECTION を使用してプライマリ接続として機能するように、使用可能なリージョンでセカンダリ接続を昇格する必要があります。同時に、以前のプライマリ接続がセカンダリ接続になります。

昇格している現在のセカンダリ接続を含むターゲットアカウントで、このセクションの SQL ステートメントを実行します。

例:

-- view all connections
SHOW CONNECTIONS;

+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
| snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR2 |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+

-- promote the secondary connection to serve as the primary connection
ALTER CONNECTION myconnection PRIMARY;

-- verify that the former secondary connection was promoted successfully
SHOW CONNECTIONS;

+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
| snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION |                                     | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR2 |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+

Snowflakeサービスへのプライベート接続用 DNS CNAME 記録の変更

クライアント接続をセカンダリアカウントにリダイレクトするには、ネットワーク管理者は Snowflakeサービスへのプライベート接続用 DNS CNAME 記録の構成 で作成した DNS CNAME 記録を変更する必要があります。

DNS プロバイダーが提供するツールを使用して、接続 URL の CNAME 記録を変更します。

宛先のホスト名を、新しいプライマリ接続を保存するアカウントの完全なSnowflakeアカウント URL として設定します。これには、アカウントがホストされているリージョンとクラウドプラットフォームを識別する追加のセグメント、および AWS PrivateLink、Azure Private Link、またはGoogle Cloud Private Service Connectのサポートが含まれます。これは、接続 URL へのクライアント接続がリダイレクトされるようになるアカウント名です。

例:

myaccount1.us-east-1.privatelink.snowflakecomputing.com.

(末尾のピリオドに注意してください。これを含める必要があります。)

接続 URL の更新の確認

接続 URL が更新されたことを確認するには、現在の接続リージョンを確認します。接続 URL を使用してSnowflakeに接続し、 CURRENT_REGION 関数を実行します。

select current_region();

クライアントリダイレクトの現在の制限

  • AWS PrivateLink、Azure Private Link、またはGoogle Cloud Private Service Connect URLs を介した Snowsight へのプライベート接続は、現在サポートされていません。

  • 接続 URL と OAuth の統合を使用するクライアント接続では、接続 URL が更新されて別のアカウントをポイントするようになると、再認証が必要になります。詳細については、 OAuth リダイレクト動作 (このトピック内)をご参照ください。

最上部に戻る