これは何?
Snowflakeエディションについてまとめてみたメモ。
公式情報
エディションについて
こちら : https://docs.snowflake.com/ja/user-guide/intro-editions
主な機能 : https://docs.snowflake.com/ja/user-guide/intro-supported-features
- Standard Edition
- これがベースになる
- これでカバーできるようなビジネスユースケースはあまり問われないと思うのでEnterprise Edition以上で使える機能を把握しておくことが重要
- Enterprise Edition
- (大規模)企業向けの最低限はこれ
- 外部トークン化において、トークン化プロバイダーを
Snowflake外部トークン化に統合
することを選択した場合は、少なくともこのエディションが必要- 外部トークン化自体や、それに必要な外部関数はStandard Editionでもできる点は若干ひっかけポイント
-
Snowflake外部トークン化
と統合
というのがキーワード
-
Business Critical Edition
- 非常に機密性の高いデータを安全に扱うような
データ保護機能
を備える-
PHI
/PCI DSS
/FedRAMP/ITAR/IRAPなど
-
- 「Snowflakeアカウント間」におけるフェールオーバーおよびフェールバックも可能になる
- 「
プライベート接続
」も使える- Snowflakeサービスへのプライベート接続のサポート
- AWS PrivateLink
- Azure PrivateLink
- Google Cloud Private Service Connect
- Snowflake内部ステージへのプライベート接続のサポート
- AWS PrivateLink
- Azure PrivateLink
- こちらはGCPはなさそう
- 外部関数向けのAmazon API Gatewayプライベートエンドポイント
- AWSのみっぽい
- Snowflakeサービスへのプライベート接続のサポート
- 非常に機密性の高いデータを安全に扱うような
- Virtual Private Snowflake(VPS)
- Business Critical Editionよりも高いセキュリティ要件が求められるようなケースに
- デフォルトではシェアに関する機能は提供されない(サポート経由で有効化は可能)
- こちら参照
エディションを跨いだシェアについて
これも把握しておく必要がある。
特にBusiness Critical Editionから他のエディションに対してデータ共有(シェア)
する場合には注意点がある。
Business Critical Editionから他エディションへのシェア
公式より、
デフォルトでは、SnowflakeはBusiness CriticalアカウントからBusiness Critical以外のアカウントへのデータ共有を許可していません
とのこと。
その理由はデータの保護レベルが違うことに起因している模様。
自分のアカウントより保護レベルが弱いアカウントにシェアすることに対して規制がかかっているイメージ。
デフォルトではシェアできない
が、設定変更によってシェアできます、シェアする側(プロバイダー)の自己責任でお願いします、といった感じ。
詳細はこちら。
Business Critical Editionから他エディションへのシェアは有効化されていないことがわかる。
シェアする場合の注意事項に関して、こちらとこちらのページの両方に同じことが書かれてる。
「大事なことなので2回言いました。」
ってところかなと。
では、その点も十分理解した上で、ビジネスユースケースに合わせてどうしてもシェアしたいとする。
シェアできるようにするためには以下の要素に注目する。
OVERRIDE SHARE RESTRICTIONS
- グローバル権限の一つ
- シェアオブジェクトのパラメータ「
SHARE_RESTRICTIONS
」を有効または無効にできる権限 - デフォルトではACCOUNTADMINが持っている
- 他ロールに付与可能 (ただし、付与されたロールが別ロールに再付与することはできない)
USE ROLE ACCOUNTADMIN;
GRANTOVERRIDE SHARE RESTRICTIONS ON ACCOUNT TO ROLE <ROLE_NAME>;
USE ROLE <ROLE_NAME>;
ALTER SHARE <SHARE_NAME> ADD ACCOUNTS=<CONSUMER_ACCOUNT_NAME> SHARE_RESTRICTIONS=FALSE;
SHARE_RESTRICTIONS
こちら参照。
- Business Critical EditionのアカウントからBusiness Critical Edition以外へのアカウントに対するシェアを有効/無効にするパラメータ(ブール値)
- True : 他エディションにシェアできない / 他エディションへのシェアが無効
- False : 他エディションにシェアできる / 他エディションへのシェアが有効
-
デフォルトはTrue
(つまり無効。Business Critical Edtion以外にはシェアできないようになっている。) - アカウントレベルで設定はできない
- つまり、
都度指定する必要がある
パラメータである -
SHARE_RESTRICTIONS=FALSE
としたい場合のみ毎回指定する
- つまり、
小ネタ : RESTRICTION について
「RESTRICTION」は「制限」という意味。
「LIMIT(LIMITATION)」も「制限」を表すときに使うが、ニュアンスが異なる。
- RESTRICTION : 誰かの行動や動作を制限する
- LIMITATION : 特定の値やレベルを超えないように制限する
とのこと。なるほど。
確かにシェアという動作を制限する、という意味にマッチしている。
FALSEを指定すると制限しない、ということでシェアできるようになるわけだ。
他エディションのシェア
- VPSの場合はSnowflakeサポートに連絡して「
自動複製を有効
」にすることでシェアできるようになる - Standard Edition、Enterprise Editionは一般的なシェアに関する考慮点に従う
- こちら参照
ポイント
わかる範囲で傾向等をまとめてみた。
「要件を満たす機能がすべて含まれるエディション」が選べるようにしておく
-
ここの記載を参考に、どの機能がどのエディションで提供されるのかを把握しておく
- 「Time Travel」の期間が1日よりも多い、という要件がつくとその時点で「Standard」が候補から外れる
- さらに「Tri-Secret Secure」が問題文の要件に挙げられていると答えは「Business Critical」か「VPS」に絞られる
- そこに「シェア(データ共有)」の要件が入ってくるようなケースが問題に取り上げられると思うので、「Business Critical」が回答になる
- 一方で、シェアが要件に入っておらず「専用のメタデータストアとコンピューティングリソースのプール」のようなことが書かれていれば「VPS」が回答になる
Business Critical EditionからStandard or Enterprise Editionにシェアする際の考慮点を理解しておく
-
ここの記載を押さえておく
-
デフォルトではシェアできない
点をまず知っておく - シェアする際にパラメータ(
SHARE_RESTRICTIONS=false
)の指定が必要- これはアカウントレベルでは設定できないので都度指定が必要
- デフォルトではACCOUNTADMINで実行する必要がある
- 他ロールに権限を移譲したい場合は、グローバル権限
OVERRIDE SHARE RESTRICTIONS
を付与する
- 他ロールに権限を移譲したい場合は、グローバル権限
- 実際にシェアをするにあたっては、こちら記載の注意点を踏まえておくこと (ベストプラクティス的なこと)
- 機密データを非Business Criticalアカウントと共有しない
- 2つ目の非Business Criticalアカウントを作成して、機密性の低いデータを保存し、このデータを非Business Criticalアカウントと共有することを検討する
- Business CriticalアカウントでTri-Secret Secureを使用しており、他のアカウントとデータを共有している場合、Snowflakeはこれらのアカウントからのデータアクセスを自分のアカウント内から発生したかのように扱う
- 具体的には、コンシューマーへのアクセスを許可するには、SnowflakeがAWS KMSにアクセスする必要がある場合がある
-