複数のアカウント間にわたる複製とフェールオーバーの概要

この機能により、 ソース アカウントから同じ組織内にある1つ以上の ターゲット アカウントにオブジェクトを複製できるようになります。各ターゲットアカウントで複製されたオブジェクトは、 セカンダリ オブジェクトと呼ばれ、ソースアカウントの プライマリ オブジェクトのレプリカです。複製は、 リージョン および クラウドプラットフォーム 全般でサポートされています。

このトピックの内容:

複製とフェールオーバー/フェールバックのリージョンサポート

Amazon Web Services、Google Cloud Platform、およびMicrosoft Azure全般のSnowflakeの全リージョンで、複製をサポートしています。

お客様は、 リージョングループ 内のすべてのリージョンで複製できます。異なるリージョングループ内のリージョン間(つまり、Snowflake商用リージョンからSnowflake政府またはVirtual Private Snowflakeリージョン)で複製するには、 Snowflakeサポート にお問い合わせください。

複製グループとフェールオーバーグループ

複製グループ は、1つ以上のターゲットアカウントにユニットとして複製される、ソースアカウント内のオブジェクトの定義済みコレクションです。複製グループは、複製されたオブジェクトへの読み取り専用アクセスを提供します。

フェールオーバーグループ は、フェールオーバーも可能な複製グループです。ターゲットアカウントのセカンダリフェールオーバーグループは、複製されたオブジェクトに読み取り専用アクセスを提供します。セカンダリフェールオーバーグループがプライマリフェールオーバーグループに昇格すると、読み取り/書き込みアクセスが利用可能になります。フェールオーバーグループで許可されているアカウントのリストで指定されているターゲットアカウントは、プライマリフェールオーバーグループとして機能するように昇格できます。

複製グループとフェールオーバーグループは、ターゲットアカウント上のオブジェクトに対して特定時点における一貫性を提供します。複製またはフェールオーバーグループに含めることができるオブジェクトは、以下の 複製されたオブジェクト にリストされています。

複製機能/エディションのマトリックス

一部の複製機能は、Business Critical Edition(またはそれ以上)でのみ使用可能であることに注意してください。次のテーブルに、各Snowflakeエディションにおける複製機能の可用性をリストします。

機能

標準

Enterprise

Business Critical

VPS

データベース複製

共有複製

複製グループ

アカウントオブジェクト(データベースおよび共有以外)複製

フェールオーバーグループ

Tri-Secret Secure で保護されたデータ

複製されたオブジェクト

この機能は、以下にリストされているオブジェクトの複製をサポートします。データベース複製および共有複製は、すべてのエディションで利用できます。その他すべてのオブジェクトの複製は、Business Critical Edition(またはそれ以上)でのみ使用できます。機能の可用性の詳細については、 複製機能/エディションのマトリックス をご参照ください。

オブジェクト

タイプまたは機能

複製

メモ

データベース

一部のデータベースの複製はサポートされていないか、更新操作に失敗する可能性があります。詳細については、 複製の現在の制限 をご参照ください。

統合

セキュリティ、 API、通知、ストレージ [1]、外部アクセス [2]

サポートされているタイプに関するその他の注意事項と詳細については、 統合複製 をご参照ください。

ネットワークポリシー

パラメーター(アカウントレベル)

リソースモニター

グループに users を含めると、非管理者ユーザーのリソースモニター通知は複製されますが、アカウント管理者の通知設定は複製されません。詳細については、 リソースモニターのメール通知設定の複製 をご参照ください。

ロール

  • アカウントとデータベースロール を含みます。

  • ロールに付与された権限、およびロールに付与されたロール(つまり、ロールの階層)が含まれます。

  • ユーザーとロールが複製されると、ユーザーに付与されたロールも複製されます。

  • REPLICATE 権限と FAILOVER 権限は複製 されません

共有

インバウンド共有 (プロバイダーからの共有)の複製はサポート されていません

ユーザー

ウェアハウス

データベースの複製

この機能は、データベースの複製をサポートします。スナップショットには、オブジェクトとデータへの変更が含まれます。 roles が(同じまたは異なる複製またはフェールオーバーグループで)複製される場合、データベースの更新では、アカウントにあるセカンダリデータベースとデータベース内のオブジェクト(スキーマ、テーブル、ビューなど)に対する権限の付与も同期されます。詳細については、 データベースオブジェクトの付与 をご参照ください。

一部のデータベースの複製はサポートされていないか、更新操作に失敗する可能性があります。詳細については、 複製の現在の制限 をご参照ください。

複製されたデータベースオブジェクト

プライマリデータベースが複製されると、そのデータベースオブジェクトとデータのスナップショットがセカンダリデータベースに転送されます。ただし、一部のデータベースオブジェクトは複製されません。次の表には、セカンダリデータベースに複製されるデータベースオブジェクトが示されています。

これらのオブジェクトに関する特定の使用情報については、 複製に関する考慮事項 をご参照ください。

オブジェクト

タイプまたは機能

複製

メモ

テーブル

永続テーブル

一時テーブル

仮テーブル

クラスタ化されたテーブルの自動クラスタリング

外部テーブル

プライマリデータベースに外部テーブルが存在する場合、セカンダリデータベースの作成またはリフレッシュはブロックされます。 . 将来のリリースを計画しています。

動的テーブル

詳細については、 複製と動的テーブル をご参照ください。

テーブルの制約

データベースの外部キーが別のデータベースのプライマリ/ユニークキーを参照する場合を除きます。 .

イベントテーブル

イベントテーブルがプライマリデータベースに存在する場合、セカンダリデータベースの更新はブロックされます。

シーケンス

ビュー

ビュー

ビューが別のデータベースのオブジェクト(例: テーブル列、他のビュー、 UDFs、またはステージ)を参照する場合は、 . 両方のデータベースを複製する必要があります。

マテリアライズドビュー

セキュアビュー

ファイル形式

ステージ

ステージ

複製およびフェールオーバーグループでのみサポートされます。データベース複製はサポートされていません。 . 詳細については、 ステージ、パイプ、ロード履歴の複製 をご参照ください。

仮ステージ

パイプ

複製およびフェールオーバーグループでのみサポートされます。データベース複製はサポートされていません。 . 詳細については、 ステージ、パイプ、ロード履歴の複製 をご参照ください。

ストアドプロシージャ

詳細については、 ストアドプロシージャとユーザー定義関数の複製(UDFs) をご参照ください。

ストリーム

詳細については、 複製とストリーム をご参照ください。

タスク

詳細については、 複製とタスク をご参照ください。

UDFs

詳細については、 ストアドプロシージャとユーザー定義関数の複製(UDFs) をご参照ください。

ポリシー

列レベルのセキュリティ(マスキング)

マスキング、行アクセス、およびタグベースのマスキングポリシーについては、 ポリシー複製に関する考慮事項 をご参照ください。

行アクセスポリシー

タグベースのマスキングポリシー

セッションポリシー

セッション、パスワード、認証ポリシーについては、 複製とセキュリティポリシー をご参照ください。

パスワードポリシー

認証ポリシー

タグ

オブジェクトのタグ付け

タグについては、 複製とタグ をご参照ください。

アラート

シークレット

外部 API 認証のシークレット

複製グループとフェールオーバーグループを使用することで、シークレットを複製できます。詳細については、 複製とシークレット をご参照ください。

ネットワークルール

ネットワークルールを使用するネットワークポリシーの複製については、 ネットワークポリシーの複製 を参照してください。

クラスインスタンス

Snowflake クラス のインスタンス(例: ANOMALY_DETECTION クラスや BUDGET クラスのインスタンス)は複製されません。Snowflakeクラスの全リストについては、 利用可能なクラス をご参照ください。

パッケージポリシー

Python UDF、 UDTF、ストアドプロシージャ

ソースアカウントに パッケージポリシー が設定されている場合、アカウントオブジェクトを正常に複製するには、パッケージポリシーを含むデータベースを、同じまたは異なる複製グループまたはフェールオーバーグループ内のターゲットアカウントに複製する必要があります。そうでない場合、更新操作は ダングリング参照エラー で失敗します。

データベースの複製と暗号化

Snowflakeは、保管中およびソースアカウントとターゲットアカウント間で転送中のメタデータとデータセットを保護します。アカウント マスターキー (AMK)は、 階層キーモデル に示すように、アカウント内のキー階層を暗号化します。Snowflakeは、ターゲットアカウントで Tri-Secret Secure を有効にしているかどうかに関係なく、ターゲットアカウントのアカウントマスターキーとキー階層を使用して、ターゲットアカウントの複製されたデータを暗号化します。

ターゲットアカウントでTri-Secret Secureを有効にすると、Snowflakeはターゲットアカウントの複合マスターキーと対応するキー階層を使用してデータを暗号化します。ターゲットアカウントでは、デフォルトでTri-Secret Secureが有効になっていないことに注意してください。この機能を有効にする必要があります。

Snowflakeのデータ暗号化の詳細については、 Snowflakeのエンドツーエンド暗号化について をご参照ください。

統合複製

アカウントの複製では、次の機能に対する統合の複製がサポートされています。

ネットワークポリシーの複製

この機能は、ネットワークポリシーの複製をサポートします。

詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。

パラメーターの複製

この機能は、アカウントレベルのパラメーターとオブジェクトパラメーターの複製をサポートします。オブジェクトパラメーターは、オブジェクトが複製グループに含まれている場合に複製されます。たとえば、 WAREHOUSES が複製される場合は、ウェアハウス固有のパラメーター(例: STATEMENT_TIMEOUT_IN_SECONDS)が複製されます。完全なリストについては、 オブジェクトパラメーター をご参照ください。

アカウントレベルのパラメーター複製には、すべての アカウントパラメーター および アカウントに設定されたパラメーター が含まれます。複製グループのオブジェクトタイプのリストに ACCOUNT PARAMETERS が含まれている場合は、アカウントレベルのパラメーター(例: DATA_RETENTION_TIME_IN_DAYS)が複製されます。

リソースモニターの複製

この機能は、リソースモニターと、リソースモニターで付与された権限をロールに複製することをサポートします。セカンダリリソースモニターは、プライマリと同じクォータリセットスケジュールに従います。たとえば、プライマリリソースモニターのクォータが月の1日にリセットされ、セカンダリがその月の15日に最初に複製された場合、そのクォータはプライマリとともに翌月の1日にリセットされます。

リソースモニターのメール通知設定の複製

リソースモニターのメール通知設定は、リソースモニターの複製には含まれません。管理者以外のユーザーに対するメール通知は、リソースモニターで複製できます。ただし、アカウント管理者の通知設定は、現在複製されません。

  • 複製グループまたはフェールオーバーグループの object_types リストに usersresource monitors が含まれている場合、管理者以外のユーザーの通知設定は複製されます。

    • ウェアハウスレベルのリソースモニターの notify_users リストはターゲットアカウントに複製されます。

    • 管理者以外のユーザーのメール通知 は、ターゲットアカウントで送信されます。

  • 複製グループまたはフェールオーバーグループの object_types リストに resource monitors が含まれ、 users が含まれない場合、セカンダリウェアハウスレベルのリソースモニターの notify_users リストは空になります。

  • アカウント管理者の通知設定は 複製されません

    • アカウント管理者は、ウェブインターフェイスを使用して、各アカウントで メール通知を有効にする 必要があります。

    • アカウント管理者がソースおよび/またはターゲットアカウントでメール通知を有効にしている場合、リソースモニター通知はアカウント管理者に送信されます。

ロールの複製

この機能は、ロール階層を含む、ロールの複製をサポートします。アクセス権限を複製するには、ロールオブジェクトを複製する必要があります。複製されたアクセス権限は、以下の ロールと付与の複製 にリストされています。

注釈

ORGADMIN ロールを含む、すべてのロールが複製されます。

共有複製

この機能は、共有オブジェクトと、データベースオブジェクトの共有に付与されたアクセス権限の複製をサポートします。

インバウンド共有 (プロバイダーからの共有)はサポート されていません

ユーザーの複製

この機能は、ターゲットアカウントへのユーザーとそのプロパティの複製、次のユーザー認証方法、また SCIM を使用したユーザーとグループのプロビジョニングをサポートします。

認証方法

ターゲットアカウントで動作

メモ

パスワード

MFA のパスワード(多要素認証)

ソースアカウントの MFA に登録されているユーザーは、各ターゲットアカウントにログインする際、MFA に個別に登録する必要があります。

多要素認証(MFA)

ソースアカウントの MFA に登録されているユーザーは、各ターゲットアカウントにログインする際、MFA に個別に登録する必要があります。

キーペア認証

フェデレーション認証

フェデレーション SSO (つまり、 SAML2)セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。

Snowflake OAuth

OAuth セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。

外部 OAuth

OAuth セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。

SCIM

SCIM セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。

注釈

USERS および ROLES オブジェクトがターゲットアカウントに複製される場合、これらのオブジェクト型はターゲットアカウントで読み取り専用であり、変更できません。ユーザーとロールは、ソースアカウント内で作成してから、各ターゲットアカウントに複製する必要があります。 複製と読み取り専用のセカンダリオブジェクト をご参照ください。

ウェアハウスの複製

この機能は、ウェアハウスとウェアハウスに付与された権限をロールに複製することをサポートします(roles が複製される場合)。プライマリウェアハウスの状態は複製されません。ウェアハウスは中断状態で各ターゲットアカウントに複製され、ターゲットアカウントで再開できます。

ロールと付与の複製

オブジェクトの付与をロールに複製するには、ロールをソースアカウントからターゲットアカウントに複製する必要があります。複製またはフェールオーバーグループでロールを複製するには、 object_types リストに roles を含める必要があります。ロールは、権限が付与されているデータオブジェクトとは別の複製グループまたはフェールオーバーグループに含めることができます。

roles が複製されると、次の場合に 限り、オブジェクトに対する付与はターゲットアカウントに複製されます。

  • 権限が、オブジェクトの所有者によって、またはオブジェクトの所有者により WITH GRANT OPTION パラメーターを使用して権限を付与されたロールで間接的に付与された。

  • 権限付与の被付与者と付与者の両方のロールが、ターゲットアカウントにある。

  • オブジェクトが複製されます(つまり、オブジェクト型が object_types リストに含まれます)。

上記以外の場合は、オブジェクトに対する付与は複製されません。

注釈

  • ターゲットアカウントのアクティブなパイプに対する OWNERSHIP 権限を持つロールがドロップされた場合は、更新操作に失敗します。

  • 複製グループおよびフェールオーバーグループの権限は複製 されません。REPLICATE または FAILOVER 権限が複製グループまたはフェールオーバーグループに付与されている場合、これらの権限はソース および ターゲットアカウントの両方で付与する必要があります。これらの権限の詳細については、 複製権限 をご参照ください。

データベースオブジェクトの付与

rolesdatabases がターゲットアカウント(同じ、または異なる複製、またはフェールオーバーグループ内)に複製される場合は、セカンダリデータベースを更新すると、データベースとデータベース内のオブジェクト(スキーマ、テーブル、ビューなど)の権限付与が、ターゲットアカウントの既存のロール(つまり、ターゲットアカウントに複製されたロール)と同期されます。データベース複製でサポートされているオブジェクトに対する権限付与のみが同期されることに注意してください。サポートされるオブジェクトのリストについては、 複製されたデータベースオブジェクト をご参照ください。

外部テーブルの複製は現在サポートされていません。その結果、外部テーブルに対する権限の付与も複製されません。

オブジェクトに対する将来の付与

ロールがターゲットアカウントに複製される場合は、データベースまたはスキーマレベルで付与される 将来の付与 がターゲットアカウントに複製されます。これには、複製でサポートされていないオブジェクトに対する将来の付与も含まれます。たとえば、外部テーブルの複製はまだサポートされていないものの、外部テーブルに対する将来の付与は複製されます。ターゲットアカウントで外部テーブルを作成すると、将来の外部テーブルで付与される権限は意図したとおりに具体化されます。

オブジェクトの作成と所有権

ソースアカウントからの更新中にターゲットアカウントに新しいオブジェクトが作成され、ロールがターゲットアカウントに複製されない場合は、新しいオブジェクトの OWNERSHIP 権限が ACCOUNTADMIN ロールに付与されます。

ロールがターゲットアカウントに複製されると、 OWNERSHIP 権限は、ロールが次に複製されるときに、ソースアカウントの OWNERSHIP 権限を持つロールと同じターゲットアカウントのロールに付与されます。オブジェクトとロールが同じ複製(またはフェールオーバー)グループにあると、ターゲットアカウントで新しいオブジェクトが作成されると同時にロールが複製される場合があります。

共有に対する付与

セキュアデータ共有を有効にするために、 roles がターゲットアカウントに複製されていない場合でも、共有へのオブジェクトに対する付与は複製されます。このセクションでは、共有へのオブジェクトに対する付与がどのように複製されるかについての情報を提供します。

roles がソースアカウントからターゲットアカウントに複製されると、共有上のオブジェクトへの付与は次の場合に複製されます。

  • 付与者のロールがターゲットアカウントに存在する または

  • ソースアカウントの付与者ロールには、プライマリオブジェクトに対する OWNERSHIP 権限がある。

roles がソースアカウントからターゲットアカウントに複製されないと、次のようになります。

  • 共有へのオブジェクトに対する付与が複製される。

  • 複製されたオブジェクトを共有に付与するための付与者のロールは、オブジェクトに対する OWNERSHIP 権限を持つロールです。

ターゲットアカウントのオブジェクトをリフレッシュするユーザー

ALTER FAILOVER GROUP ... REFRESH コマンドを実行して、ソースアカウントからターゲットアカウントのオブジェクトを更新するユーザーは、フェールオーバーグループに対して REPLICATE 権限を持つロールを使用する必要があります。Snowflakeは、次のシナリオで失敗することにより、ターゲットアカウントでこのユーザーを保護します。

  • ユーザーがソースアカウントに存在しない場合は、更新操作に失敗します。

  • ユーザーがソースアカウントに存在するが、REPLICATE 権限を持つロールがユーザーに付与されていない場合は、更新操作に失敗します。

複製スケジュール

ベストプラクティスとして、Snowflakeは、 REPLICATION_SCHEDULE パラメーターを使用して自動更新をスケジュールすることをお勧めします。スケジュールは、 CREATE <オブジェクト> を使用して、新しい複製またはフェールオーバーグループを作成するときか、後で(ALTER <オブジェクト> を使用して)定義できます。

セカンダリ複製またはフェールオーバーグループが作成されると、最初の更新が自動的に実行されます。次回の更新は、前回の更新が開始された日時とスケジュール間隔、またはcron式に基づいた次の有効時間に基づいてスケジュールされます。たとえば、更新スケジュール間隔が10分で、前回の更新操作(スケジュールされた更新または手動でトリガーされた更新)が12:01に開始される場合、次の更新は12:11にスケジュールされます。

Snowflakeは、一度に1回の更新のみが実行されるようにします。次回の更新がスケジュールされているときに更新がまだ実行中の場合、現在実行中の更新が完了後に次回の更新が遅れて開始されます。たとえば、更新が毎時正時15分後に実行されるようにスケジュールされており、前の更新が12:16に完了する場合、次の更新は、前に実行中の更新完了後に実行がスケジュールされます。

スケジュールされた複製を一時停止および再開する

更新の実行中は、セカンダリフェールオーバーグループをプライマリグループに昇格させることはできません。正常にフェールオーバーするには、ターゲットアカウントでスケジュールされた複製を中断します。フェールオーバーの完了後に、スケジュールされた複製を再開します。構文については、 ALTER FAILOVER GROUP をご参照ください。

注釈

スケジュールされた複製を中断しても、現在進行中の更新操作は中断されません。現在の更新が完了した後に追加の更新がスケジュールされないように、スケジュールを中断します。

下位エディションのアカウントへの複製

次のいずれかの条件に該当する場合、Snowflakeはステートメントの実行時にエラーメッセージを表示します。

  • データベースのみおよび/または共有オブジェクトがあるプライマリ複製グループはBusiness Critical(またはそれ以上)のアカウントにあるが、複製を承認された1つ以上のアカウントは下位エディションにある。Business Critical Editionは、非常に機密性の高いデータを有するSnowflakeアカウントを対象としています。

  • 任意の オブジェクトタイプ があるプライマリ複製またはフェールオーバーグループがBusiness Critical(またはそれ以上)のアカウントにあり、 HIPAA および HITRUST CSF 規制に従ってアカウントに PHI データを格納するための署名済みビジネスアソシエイト契約が整っている。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が有効化された1つ以上のアカウントに対してはそのような契約がない。

この動作は、Business Critical(またはそれ以上)のアカウントの管理者が機密データを下位エディションのアカウントに誤って複製することを防ぐために実装されています。

アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)または CREATE REPLICATION GROUP/CREATE FAILOVER GROUP または OWNERSHIP 権限のあるロールを持つユーザーは、 CREATE <オブジェクト> または ALTER <オブジェクト> ステートメントの実行時に IGNORE EDITION CHECK 句を含めることで、このデフォルトの動作を上書きできます。IGNORE EDITION CHECK が設定されている場合、プライマリ複製またフェールオーバーグループは、これらの特定のシナリオでSnowflakeの下位エディション上の指定されたアカウントに複製できます。

注釈

フェールオーバーグループは、Business Critical Edition(またはそれ以上)のアカウントでのみ作成できます。したがって、フェールオーバーグループは、Business Critical Edition(またはそれ以上)のアカウントに のみ 複製できます。

複製の現在の制限

  • 共有から作成されたデータベースは複製できません。

  • プライマリデータベースに以下のいずれかが含まれている場合、リフレッシュ操作は失敗します。

    • イベントテーブル

    • 外部テーブル [3]

    • Icebergテーブル [4]

    • ハイブリッドテーブル

サポートされていないソースオブジェクトを含むストリームがプライマリデータベースに含まれている場合は、データベースの複製または更新操作に失敗します。いずれかのストリームのソースオブジェクトがドロップされている場合も、操作に失敗します。

複製されたソースオブジェクトでは、追加のみのストリームはサポートされていません。