データベースオブジェクトをユニバーサル検索で検出可能にする¶
ユニバーサル検索は、アカウント内のデータベースオブジェクトを検出するのに役立ちます。デフォルトでは、すでにアクセス権が与えられているオブジェクトしか検出できません。Snowflake組織内で複数のアカウントにアクセスできる場合でも、アクセス権はアカウント間では付与されないため、サインインしているアカウント以外のオブジェクトを表示することはできません。
管理者は、オブジェクトの可視性を管理することで、Snowflake組織内の他のアカウントのオブジェクトを含め、ユーザーがまだアクセス権を持たないオブジェクトを検出できるようにすることができます。
注釈
オブジェクトと連絡先情報を関連付ける ことで、ユーザーが検索を実行し、オブジェクトにアクセスする権限を持っていない場合、Request Access を選択して連絡先情報を見ることができます。
OBJECT_VISIBILITY プロパティ¶
OBJECT_VISIBILITY プロパティは、アカウント内のオブジェクトの検出可能性を制御します。これにより、明示的なアクセス権限を持たないユーザーでもオブジェクトを検索し、アクセスをリクエストできるようになります。アカウント内のオブジェクトの可視性を拡大することで、コラボレーションを簡素化し、アクセス要求を合理化することができます。
OBJECT_VISIBILITY はアカウント、データベース、スキーマのいずれかに設定でき、Snowflakeの継承モデルに従います。上位レベル(アカウントなど)の設定は、オーバーライドされない限り、下位レベル(データベースなど)にも自動的に適用されます。
OBJECT_VISIBILITY は、次のいずれかの値に設定できます。
次のいずれかの形式で可視性を記述する YAML 仕様:
$$ organization_targets: - all_accounts_including_external $$
Or
$$ organization_targets: - account: <account_name_1> - account: <account_name_2> - ... - organization_user_group: <org_user_group_1> - organization_user_group: <org_user_group_2> $$
上記の構文では次のようになります。
all_accounts_including_external:組織内のすべてのアカウントのすべてのユーザーがオブジェクトを表示することができることを指定します。これには、組織内のすべてのアカウントが含まれます。これには、 :doc:` リーダーアカウント </user-guide/data-sharing-reader-create>` など、外部の関係者にアクセス権が付与されているアカウントも含まれます。account: account_name:指定したアカウントのすべてのユーザーがオブジェクトを表示できるように指定します。アカウントは複数指定できます。accountはアカウントロケーターではなく、アカウント名であることに注意してください。組織名を除くアカウント名のみを指定する必要があります。09-22organization_user_group: org_user_group:指定された 組織ユーザーグループ が、組織ユーザーグループがインポートされた 組織内のすべてのアカウントのオブジェクトを表示できることを指定します 。
PRIVILEGED:オブジェクトに対する明示的な権限が付与されている現在のアカウント内のロールのみがオブジェクトを表示できることを指定します。これはSnowflakeのデフォルトの動作です。
オブジェクトはいつでも PRIVILEGED の表示に戻すことができます。
具体的な構文、使用上の注意、例については、以下のトピックを参照してください。
CREATE コマンド¶
ALTER コマンド¶
アクセス制御の要件¶
このプロパティを使用するロールには、最低限以下の権限が必要です。
権限 |
オブジェクト |
メモ |
|---|---|---|
MANAGE に VISIBILITY |
アカウント |
SECURITYADMIN ロールのみが、デフォルトでこの権限を持っています。権限は、必要に応じて追加のロールに付与できます。 |
OWNERSHIP |
データベースまたはスキーマ |
オブジェクトの可視性を設定するために、ALTER DATABASE または:doc: |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
例¶
データベースを広く可視化する¶
次のステートメントは、product_analytics データベースを現在のアカウント(ACME_ENGINEERING)のすべてのユーザーに表示されるようにします。
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- account: acme_engineering
$$;
次のステートメントは、組織内の2つの追加アカウント(ACME_MARKETING とACME_SALES)のすべてのユーザーにデータベースが表示されるようにします。
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- account: acme_engineering
- account: acme_marketing
- account: acme_sales
$$;
次のステートメントは、ACME 組織内の全アカウントの全ユーザーにデータベースが表示されるようにします。
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- all_accounts_including_external
$$;
データベースを特定の組織のユーザーグループに表示されるようにします¶
次のステートメントは、組織ユーザーグループがインポートされているACME 組織内のすべてのアカウントで、特定の組織ユーザーグループにデータベースを表示します 。
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- organization_user_group: engineering
- organization_user_group: marketing
- organization_user_group: sales
$$;
制限事項¶
検出可能でアクセス不可能なオブジェクトは、ユニバーサル検索 にのみ表示されます。メタデータを表示する データベースオブジェクトエクスプローラー やメタデータを表示する SQL コマンド(SHOW コマンドなど)には表示されません。
スキーマについては、OBJECT_VISIBILITY プロパティを PRIVILEGED に設定することで、アカウントまたはデータベースレベルから継承される可能性のある広範な可視性設定をオーバーライドし、スキーマが所有者のみによってアクセス可能であることを保証することができます。
OBJECT_VISIBILITY プロパティは、スキーマレベル以下では設定もオーバーライドもできません。スキーマレベルでは、ユーザーはすべてのオブジェクトを表示することも、まったく表示しないことも選択できます。
検索は、オブジェクトの可視性の変更を反映するために数時間かかることがあります。