SHARE share_1; // 共有にdatabase, schemaのUSAGE権限、tableのselect権限の追加 GRANT USAGE ON DATABASE sample_db TO SHARE share_1; GRANT USAGE ON SCHEMA sample_db.schema_1 TO SHARE share_1; GRANT SELECT ON TABLE sample_db.schema_1.table_1 TO SHARE share_1; // share_1へ付与した権限の確認 SHOW GRANTS TO SHARE share_1; // 共有にアカウントを追加 // ACCOUNTSにはSHOW MANAGED ACCOUNTSで確認したlocatorを指定する(ここではXX12345) ALTER SHARE share_1 ADD ACCOUNTS = XX12345; ※ カスタムロールに共有作成の権限を付与することも可能です。 所有する(または必要な権限がある)オブジェクトを他のアカウントに公開できるので注意が必要です。 14
ロール/ユーザー作成はここでは割愛 // リソースモニター作成 CREATE RESOURCE MONITOR sample_monitor WITH CREDIT_QUOTA = 5 FREQUENCY = MONTHLY START_TIMESTAMP = IMMEDIATELY NOTIFY_USERS = (hoge, fuga..) // メールのみ TRIGGERS ON 80 PERCENT DO NOTIFY // 80%で通知 ON 99 PERCENT DO SUSPEND // 99%で現在実行中のクエリの完了を許可。その他は一時停止。 ON 100 PERCENT DO SUSPEND_IMMEDIATE // 100%で即停止 ON 100 PERCENT DO NOTIFY // 100%で通知 ; // アカウントレベルでリソースモニターを設定 // ウェアハウス単位でも設定できる USE ROLE accountadmin; ALTER ACCOUNT SET RESOURCE_MONITOR = sample_monitor; 15
データベース、スキーマ作成 CREATE DATABASE share_db; CREATE SCHEMA share_db.schema_1; // 共有用のDBにセキュアビューを作成 CREATE SECURE VIEW share_db.schema_1.sample_secure_view AS SELECT .. FROM user_db.schema.table_1, user_db.schema.table_2 WHERE ..; // 共有を作成 CREATE SHARE share_2; // 共有にshare_db, schema_1のUSAGE権限を付与 GRANT USAGE ON DATABASE share_db TO SHARE share_2; GRANT USAGE ON SCHEMA share_db.schema_1 TO SHARE share_2; // 異なるデータベースに対するREFERENCE_USAGE権限を付与 // 参照するテーブルやスキーマの権限を共有する必要はない GRANT REFERENCE_USAGE ON DATABASE user_db TO SHARE share_2; // 共有にviewへのSELECT権限を付与 GRANT SELECT ON VIEW share_db.schema_1.sample_secure_view TO SHARE share_2; 19