motherduck-share-data について
MotherDuck のデータをアクセス制御付きで共有するためのガイダンススキルです。アクセスと公開範囲の設定、テーブルやビューの選択、セキュアビューのポリシー、受信者の設定、共有データの検証を扱います。
主な機能
- 01対象者と公開範囲の選択
- 02共有するテーブルとビューの絞り込み
- 03セキュアビューのポリシー適用
- 04受信者へのアクセス権付与
- 05受信者に見えるデータの検証
活用シーン
- 01チームへのテーブル選択共有
- 02行または列を絞ったアクセスの提供
- 03手動更新スナップショットの配布
MCP 対応
MotherDuck MCP の `ask_docs_question` が利用できる場合、他の情報源に頼る前に、最新の共有ドキュメントを確認するよう推奨します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ motherduckdb/ agent-skills --skill motherduck-share-dataインストール後、Claude Code で/motherduck-share-dataを入力して読み込まれたか確認します。
同梱ファイルreferences/SHARE_PLAYBOOK.md
詳細
MotherDuck とデータを共有する
信頼できる情報源
- まず、MotherDuck の最新の共有ドキュメントと SQL リファレンスを優先してください。
- MotherDuck MCP の
ask_docs_question機能を利用できる場合は、公開ドキュメントに頼る前に使用してください。 - 共有モデルは、ドキュメントに記載された動作に沿わせてください。
- ゼロコピーで、メタデータのみを共有します
- データベースが共有元となり、
INCLUDE_PATTERNを使ってテーブルやビューを任意で絞り込めます - コンシューマーごとに行のフィルタリング、列の削除、値のマスキングを行うセキュアビューを任意で設定できます
- 受信者は読み取り専用です
- 更新とインクルードパターンのポリシーは所有者が管理します
前提条件
接続が機能していること、ソースデータベースがあること、共有先が決まっていることが必要です。これらをコンテキストから再利用してください。不足しているセットアップや SQL の詳細については、関連するスキルを利用できます。
デフォルトの方針
- 管理された社内配布では、
ACCESS RESTRICTEDとGRANT READ ON SHARE ... TO ROLE ...を優先してください。呼び出し元が従来の組織全体への共有動作を明示的に望む場合に限り、ACCESS ORGANIZATIONを使用してください。 - 1 つの共有のすべての受信者に同じテーブルやビューのサブセットを見せる場合は、
INCLUDE_PATTERNを使用してください。対象者によってテーブルのサブセットが異なる場合は、共有を分けてください。行、列、マスクされた値だけが異なる場合は、セキュアビューを使って 1 つの共有で対応できます。 - 受信者に安定したスナップショットやバージョン管理された配布が必要な場合は、
UPDATE MANUALを使用してください。 - 配布を厳格に管理する場合は、
ACCESS RESTRICTEDまたはVISIBILITY HIDDENを使用してください。 - アクセスと可視性を選ぶ前に、受信者が社内ユーザー、別の組織、一般公開のいずれに当たるか確認してください。
- 書き込みの多い公開元では、共有の更新ワークフロー中にチェックポイントや同時書き込みの動作を当てにする前に、DuckDB クライアントのバージョンが MotherDuck のサポート対象であることを確認してください。
INCLUDE_PATTERNで選択できるのはテーブル全体とビュー全体です。行レベルや列レベルのセキュリティとして説明してはいけません。ネイティブの MotherDuck と完全マネージドの DuckLake ソースで動作します。- 行のフィルタリング、非表示列、マスクされた値を適用するには、セキュアビューを共有に追加してください。
CREATE SHARE ... WITH SECURE VIEW REPLACES <table> AS (SELECT ...)またはALTER SHARE ... ADD [OR REPLACE] SECURE VIEWを使用します。ユーザーにはcurrent_email()、サービスアカウントにはcurrent_user、ロールにはis_role_in_session('<role>')を使ってポリシーを設定してください。セキュアビューを使えば、対象者ごとに分けていた共有を 1 つにまとめられます。Business プランおよび Enterprise プランが対象です。SQL で管理するには、DuckDB 1.5.6 以降と読み書き用トークンが必要です。 - 置き換えるセキュアビューなしで共有に公開されたテーブルは、引き続き完全に読み取り可能です。
INCLUDE_PATTERN(対象のテーブル)とセキュアビュー(対象の行と列)を組み合わせ、マクロのスキーマとマッピングテーブルはパターンの対象外にしてください。 - MotherDuck のセキュアビューは共有ポリシーです。DuckDB 独自の
CREATE SECURE VIEWはオプティマイザーのバリアにすぎず、アクセスを制限するものではありません。
ワークフロー
- 公開するデータベースと、その利用者を特定します。
- SQL を記述する前に、対象ユーザー、公開するテーブル/ビューの範囲、見つけやすさ、データの鮮度要件を決めます。
- ライブのソースカタログに対して対象パターンをプレビューして検証してから、アクセス権、公開設定、更新モード、必要に応じて
INCLUDE_PATTERNを明示して共有を作成します。 - アクセスが制限されている場合は、ユーザーまたはロールに明示的に権限を付与します。共有が非表示またはリンクベースの場合は、共有 URL を直接配布します。
LIST SHARESまたはMD_INFORMATION_SCHEMA.OWNED_SHARESで共有の内容を確認します。フィルターされた共有の場合は、保存されたパターンと利用者から見えるカタログを検証します。セキュアビューの場合は、SHOW SECURE VIEWS ON SHARE <name>を実行し、利用者として共有をアタッチして結果を確認します。ID 関数はテストの実行者として評価されます。- 受信者に共有データベースを
ATTACHして、読み取り専用でクエリするよう依頼します。 - テーブル/ビューの範囲を変更するには
ALTER SHARE ... SET|RESET INCLUDE_PATTERNを、ポリシーを変更するにはALTER SHARE ... ADD|DROP SECURE VIEWを使用します(両方を 1 つのステートメントで実行しないでください)。セキュアビューを含む共有に対してCREATE OR REPLACE SHAREを使用しないでください。再指定されていないビューは削除されます。共有でUPDATE MANUALを使用している場合、新しいスナップショットの準備ができた時点で所有者がUPDATE SHAREを実行し、利用者がREFRESH DATABASEを実行します。
回答、レビュー、または計画の依頼には、プロビジョニングを行わずに共有設計と SQL を返します。作成、更新、権限付与、または取り消しの依頼には、依頼された範囲内の操作を実行し、結果のアクセス権を検証します。公開範囲を広げる場合、破壊的な権限取り消しを行う場合、または無関係な権限を付与する場合は、事前に確認します。
参考資料
現在のタスクに必要な参考資料のセクションのみを読みます。
- SQL の全手順、ロール権限、include-pattern のルール、セキュアビュー、アクセス/更新に関する判断、利用者のワークフロー、よくある障害については、
references/SHARE_PLAYBOOK.mdを読みます。
関連スキル
不足している機能を補う場合にのみ関連スキルを読み、確立済みのコンテキストを再利用します。
- MotherDuck の認証と接続の設定については
motherduck-connect - データベース、テーブル、列、既存の共有の検出については
motherduck-explore - 共有 SQL と後続のクエリの検証については
motherduck-query - DuckDB の SQL 構文と検索の補助については
motherduck-duckdb-sql - ロール設計とアクセス境界のレビューについては
motherduck-security-governance
コメント
Markdown 対応