クライアント接続のリダイレクト¶
クライアントリダイレクトを使用すると、ビジネス継続性と障害復旧のために、またはアカウントを別のリージョンやクラウドプラットフォームに移行するときに、クライアント接続を異なる リージョン のSnowflakeアカウントにリダイレクトできます。
このトピックの内容:
クライアントリダイレクトの紹介¶
クライアントリダイレクトは、Snowflake 接続 オブジェクトを介して実装されます。接続オブジェクトは、SnowflakeクライアントでSnowflakeに接続するために使用する安全な 接続 URL を保存します。
接続 URL のホスト名は、共通ドメイン名に加えて、組織名と接続オブジェクト名で構成されます。
organization_name-connection_name.snowflakecomputing.com
このホスト名は、接続先のアカウントを指定しないことに注意してください。アカウント管理者は、そのアカウントの接続を プライマリ接続 として機能するように指定することにより、使用するアカウントを決定します。接続 URL を使用してSnowflakeに接続すると、プライマリ接続を含むアカウントに接続するようになります。
リージョンまたはクラウドプラットフォームで停止が発生し、その停止がプライマリ接続のアカウントに影響を与える場合、管理者は、プライマリ接続として機能するように、別のリージョンまたはクラウドプラットフォームにある別のアカウントの接続を昇格できます。
この停止の間、同じ接続 URL を引き続き使用してSnowflakeに接続できます。Snowflakeは、新しく昇格された接続を持つアカウント(停止の影響を受けるリージョンまたはクラウドプラットフォーム外のアカウント)への接続 URL を解決します。
注釈
プライマリ接続とセカンダリ接続を保存するSnowflakeアカウントは、異なる リージョン でホストする必要があります。
クライアントリダイレクトフロー¶
クライアントリダイレクトの構成 (このトピック内)にあるステップを実行して、クライアント接続用の接続 URL を作成します。これには、プライマリ接続とリンクされたセカンダリ接続の作成が含まれます。
接続 URL を使用して接続するようにSnowflakeクライアントを更新します。 接続 URL の使用 (このトピック内)には、サポートされているクライアントと接続の詳細のリストが含まれています。
プライマリ接続が配置されているリージョンでサービスが停止した場合は、 クライアント接続のリダイレクト (このトピック内)のステップを実行して接続 URL を更新し、セカンダリ接続にリダイレクトします。
停止が解決したら、 クライアント接続のリダイレクト のステップを実行して、クライアント接続を元のプライマリ接続にリダイレクトします。
次の図は、同じ組織内にあるが、同じまたは異なるクラウドプラットフォーム上の異なるリージョン(Region A
と Region B
)にある2つのアカウントのクライアントリダイレクトフローを示しています。
プライマリ接続は Region A
の Account 1
にあります。接続 URL を使用するSnowflakeクライアントは Account 1
に接続します。
Region A
でサービスが停止すると、クライアント接続に失敗します。
Region B
の Account 2
にある接続は、プライマリ接続として機能するように昇格されます。接続 URL を使用するSnowflakeクライアントは Account 2
に接続するようになりました。
例¶
次の 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つ以上のセカンダリ接続を作成する方法について説明します。
前提条件¶
アカウントのクライアントリダイレクト機能を有効にするには、組織の管理者(ORGADMIN ロールを持つユーザー)が、2つ以上のアカウントの複製を有効にする必要があります。複製を有効にするための詳細な手順については、 前提条件: 組織内のアカウントの複製を有効にする をご参照ください。
注釈
アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)のみがこのセクションの SQL コマンドを実行できます。
プライマリ接続の作成¶
重要
Snowflakeは、システムで作成されたときに、組織に一意の生成された名前を割り当てました。組織名は、接続オブジェクトで定義され、アカウントにアクセスするためにSnowflakeクライアントによって送信された接続 URL の一部です。接続オブジェクトを作成する前に、Snowflakeの組織名が適切であることを確認します。システムにある組織名を変更するには、 Snowflakeサポート にお問い合わせください。
CREATE CONNECTION を使用して新しいプライマリ接続を作成します。各プライマリ接続名は、組織内にあるすべての接続名とアカウント名全体において一意である必要があります。
接続名は、Snowflakeアカウントへの接続に使用される接続 URL の一部として含まれています。
たとえば、
myconnection
という名前の接続を作成するには、CREATE CONNECTION myconnection;
ALTER CONNECTION ... ENABLE FAILOVER TO ACCOUNTS ステートメントを使用して、このプライマリ接続を変更します。この接続(つまり、セカンダリ接続)のフェールオーバーオプションを保存できる、組織内にあるアカウントのコンマ区切りのリストを提供します。
セカンダリ接続を保存するアカウントは、プライマリ接続を保存するアカウントとは異なるリージョンでホストする必要があります。クライアントリダイレクトは、リージョン間でのみ正常に動作します。たとえば、同じリージョンでクライアント接続を
account1
からaccount2
にリダイレクトしようとすると、クライアントリダイレクトは機能しません。複製が有効になっている組織内のアカウントの完全なリストを表示するには、 SHOW REPLICATION ACCOUNTS を実行します。
たとえば、
myorg
組織のアカウントmyaccount2
とmyaccount3
に、それぞれmyconnection
接続のセカンダリ接続を保存することを許可します。ALTER CONNECTION myconnection ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;
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 ステートメントを実行します。
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 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
CREATE CONNECTION ... AS REPLICA OF コマンドを実行して、セカンダリ接続を作成します。
たとえば、
myorg.myaccount1.myconnection
プライマリ接続にリンクされているmyconnection
という名前のセカンダリ接続を作成します。AS REPLICA OF
の後に、プライマリ接続の完全修飾名(前のステップで出力された SHOW CONNECTIONS からコピーした名前)を貼り付けます。CREATE CONNECTION myconnection AS REPLICA OF MYORG.MYACCOUNT1.MYCONNECTION;
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つで SHOW CONNECTIONS を実行します。たとえば、
myaccount1
とmyaccount2
に対して 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 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
myaccount1
またはmyaccount2
で SYSTEM$GET_PRIVATELINK_CONFIG 関数を呼び出す場合、 CONNECTION_URL 列にあるこのコマンドの出力はprivatelink-connection-urls
リストと一致する必要があることに注意してください。このリストには、privatelink
セグメントでフォーマットされた接続 URL がすでに含まれています(次のステップで示すとおり)。オプションで、このステップでコマンドを実行するか、関数を呼び出すことができます。関数を呼び出す場合は、 URLs を変更せずにそのまま使用します。CONNECTION_URL 列の値を記録します。
snowflakecomputing.com
の直前の URL にprivatelink
セグメントを追加します(この例ではmyorg-myconnection.privatelink.snowflakecomputing.com
)。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サービスへのプライベート接続用 DNS CNAME 記録の変更 (このトピック内)
接続 URL の使用¶
このセクションでは、さまざまなSnowflakeクライアントの構成で接続 URL を参照する手順について説明します。
サポートされているSnowflakeクライアント¶
クライアントリダイレクトは Snowsight と 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¶
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ドライバー をご参照ください。
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¶
各ターゲットアカウントで個別にフェデレーション認証を構成します。 フェデレーション認証を使用するためのSnowflakeの構成 の設定オプションを使用して、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
エラーで接続解除されます。接続を再確立するには、再認証してアクセス許可に同意する必要があります。
注釈
そのアカウントに OAuth セキュリティ統合が複製 されている場合は、接続 URL が新しいアカウントに更新されるときに、再認証を求めるプロンプトが表示 されません。詳細については、 OAuth セキュリティ統合 をご参照ください。
ユーザーが使用する接続 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.
(末尾のピリオドに注意してください。これを含める必要があります。)
注釈
Snowsightで動作するように、プライベート接続とクライアントリダイレクトを構成できます。CNAME の更新に、 SYSTEM$GET_PRIVATELINK_CONFIG 関数の出力からのSnowsight値が含まれていることを確認してください。詳しくは、 プライベート接続およびSnowsight をご参照ください。
接続 URL の更新の確認¶
接続 URL が更新されたことを確認するには、現在の接続リージョンを確認します。接続 URL を使用してSnowflakeに接続し、 CURRENT_REGION 関数を実行します。
select current_region();
クライアントリダイレクトの現在の制限¶
そのアカウントに OAuth セキュリティ統合が複製されていない場合は、接続 URL と OAuth の統合を使用するクライアント接続では、接続 URL が更新されて別のアカウントをポイントすると、再認証が必要になります。詳細については、 OAuth リダイレクト動作 をご参照ください。
ウェブブラウザーは、ブラウザーのキャッシュが原因で、リダイレクトに数分かかる場合があります。
リダイレクトが機能することを確認する必要がある場合は、 別のクライアント でSnowflakeに接続できます。
または、ブラウザーのキャッシュの問題を回避するために、新しいプライベートブラウザーウィンドウ(例: Google Chromeのシークレットモード)を開きます。一部のウェブブラウザーでは、プライベートモードまたはシークレットモードでも引き続きデータをキャッシュする可能性があることに注意してください。ブラウザーのキャッシュの使用を避けるには、新しいプライベートブラウザーウィンドウを開く前に、開いているプライベートブラウザーウィンドウとタブをすべて閉じます。