데이터 등록하기¶
이 항목에서는 Snowflake Data Clean Room 에 연결할 수 있도록 데이터를 등록하는 방법에 대해 설명합니다.
지원되는 오브젝트¶
다음 오브젝트 유형을 Clean Rooms에 연결할 수 있습니다.
테이블
동적 테이블
뷰
구체화된 뷰
보안 뷰. 보안 뷰의 소유자는 SAMOOHA_APP_ROLE 역할이어야 합니다.
참고
외부 및 Iceberg 테이블을 활성화해야 Clean Room에서 사용할 수 있습니다.
데이터 오브젝트 등록하기¶
사용자가 데이터를 Snowflake Data Clean Room 에 연결하기 전에 먼저 데이터를 등록 해야 합니다. 데이터를 등록하면 Clean Room 환경에서 데이터에 액세스하는 데 사용되는 SAMOOHA_APP_ROLE 에 오브젝트에 대한 USAGE 및 SELECT 권한이 부여됩니다. 데이터베이스나 스키마를 등록하면 모든 하위 오브젝트도 함께 등록됩니다. 오브젝트를 연결하려면 해당 오브젝트에 대한 MANAGE GRANTS 권한이 있어야 합니다.
You can register databases, schemas, and objects using the Clean rooms UI or the Clean rooms API. Using the Clean rooms UI is simpler, but requires that you have the ACCOUNTADMIN role. Using the developer APIs, you can register any object on which you have OWNERSHIP privilege without using the ACCOUNTADMIN role.
중요
Registering a database or schema does not register objects added after the registration. You must either register the new object individually or use the Clean rooms UI to navigate to Admin > Snowflake Admin > Database Registration and select Resync.
계정에 등록된 데이터만 연결할 수 있습니다. 즉, 공급자는 컨슈머가 등록한 데이터를 연결할 수 없고, 컨슈머는 공급자가 등록한 데이터를 연결할 수 없습니다. 데이터가 Clean Room에 연결되면, 링크 당사자의 설정(조인 및 열 정책 등)에 따라 Clean Room에 액세스할 수 있는 모든 사람이 데이터에 액세스할 수 있습니다.
Follow the steps below to register a database, schema, or object using the Clean rooms UI:
Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:
관리 계정을 사용하는 경우 Admin > My Account 를 선택합니다.
Snowflake 계정을 사용하는 경우 Admin > Snowflake Admin 을 선택하고 ACCOUNTADMIN 역할을 가진 사용자로 Snowflake에 로그인합니다.
Admin > Snowflake Admin 을 선택합니다.
Log in to Snowflake 를 선택하고 ACCOUNTADMIN 역할이 있는 사용자로 인증합니다.
계정에서 외부 또는 Iceberg 테이블을 사용하려면 External & Iceberg Tables 토글을 활성화합니다.
Access management for Snowflake objects 섹션에서 Edit 를 선택한 다음 이 계정의 사용자가 데이터를 연결할 수 있도록 데이터베이스, 스키마 또는 오브젝트를 선택합니다.
Save 를 선택합니다.
Use the Clean rooms API to register databases, schemas, and objects programmatically. Note that you need MANAGE GRANTS privilege on an object to register it.
외부 및 Iceberg 테이블은 다른 오브젝트 유형과 다르게 등록됩니다.
오브젝트를 등록하거나 등록 취소하는 데 사용할 수 있는 프로시저는 다음과 같습니다.
오브젝트 타입 |
등록 |
등록 취소 |
|---|---|---|
데이터베이스 |
|
|
스키마 |
|
|
관리되는 액세스 스키마 |
|
|
기타 지원되는 오브젝트 유형 |
|
|
예:
USE ROLE <ROLE-WITH-MANAGE-GRANTS-PRIVILEGE>
CALL samooha_by_snowflake_local_db.library.register_schema(['MY_DB.MY_SCHEMA']);
Snowflake 정책이 적용된 테이블 또는 뷰 등록¶
Snowflake 정책이 적용된 데이터를 연결하고 Snowflake 정책이 소스 데이터와 다른 데이터베이스에 저장되어 있는 경우, 정책 데이터베이스에 대한 참조 사용량을 클린룸에 부여해야 합니다. 이 작업은 계정당 한 번 또는 클린룸당 한 번 수행할 수 있습니다.
계정당 한 번 참조 사용량에 대해 권한 부여¶
계정당 한 번 데이터베이스에 참조 사용량에 대한 권한을 부여하고 각 클린룸에 대해 자동으로 부여되도록 하려면 다음 SQL 명령을 실행하여 SAMOOHA_APP_ROLE에 참조 사용량에 대한 권한을 부여하세요. 데이터베이스 자리 표시자를 데이터베이스 이름으로 바꿉니다.
GRANT REFERENCE_USAGE ON DATABASE <database_name>
TO ROLE SAMOOHA_APP_ROLE
WITH GRANT OPTION;
클린룸당 한 번 참조 사용량에 대해 권한 부여¶
계정의 모든 클린룸이 아닌 클린룸을 기준으로 데이터베이스에 참조 사용량 권한을 부여하려면 다음 SQL 명령을 실행하세요. 데이터베이스 이름과 클린룸 ID 자리 표시자를 적절한 값으로 바꿉니다.
GRANT REFERENCE_USAGE ON DATABASE <database_name>
TO SHARE IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<clean_room_ID>;
데이터 오브젝트 등록 취소하기¶
테이블이 Clean Room에 연결되면 제거할 수 없습니다. 그러나 계정에서 오브젝트의 등록을 취소하면 해당 계정의 모든 Clean Rooms에서 액세스할 수 없게 됩니다.
Clean Room 또는 계정에서 데이터를 제거하려면 단순히 기본 오브젝트만 삭제하지 마십시오. 삭제할 경우 Clean Room이 실패하게 됩니다. 대신 다음 기법 중 하나를 사용하여 오브젝트 등록을 취소하십시오.
계정에서 오브젝트의 등록을 취소할 때는 이 데이터를 사용하여 만든 모든 Clean Rooms도 업데이트해야 합니다.
삭제된 데이터에 종속된 모든 공동 작업자의 쿼리는 다음에 실행될 때 실패합니다.
계정에서 오브젝트 등록을 취소하려면 다음을 수행하십시오.
Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:
관리 계정을 사용하는 경우 Admin > My Account 를 선택합니다.
Snowflake 계정을 사용하는 경우 Admin > Snowflake Admin 을 선택하고 ACCOUNTADMIN 역할을 가진 사용자로 Snowflake에 로그인합니다.
Admin > Snowflake Admin 을 선택합니다.
Log in to Snowflake 를 선택하고 ACCOUNTADMIN 역할이 있는 사용자로 인증합니다.
계정에서 외부 또는 Iceberg 테이블을 사용하려면 External & Iceberg Tables 토글을 활성화합니다.
Access management for Snowflake objects 섹션에서 Edit 를 선택한 다음 데이터베이스, 스키마 또는 오브젝트를 선택 해제하여 이 계정의 사용자가 해당 데이터를 사용할 수 없도록 합니다.
Save 를 선택합니다.
이 데이터에 종속되어 생성한 모든 Clean Rooms를 업데이트합니다.
API 에서 적절한 프로시저를 호출하여 계정에서 오브젝트 등록을 취소합니다.
library.unregister_dblibrary.unregister_schemalibrary.unregister_managed_access_schemalibrary.unregister_objects
외부 테이블 및 Apache Iceberg™ 테이블 활성화하기¶
외부 테이블과 Iceberg 테이블을 Clean Room에 연결할 수 있도록 하려면 먼저 외부 테이블과 Iceberg 테이블을 사용할 수 있도록 계정을 구성해야 합니다. 외부 테이블과 Iceberg 테이블을 활성화한 후에는 다른 테이블과 동일하게 등록하고 연결하여 사용할 수 있습니다.
The process for enabling external and Iceberg tables varies, depending on whether you are managing the clean room using the Clean rooms UI or the Clean rooms API.
외부 및 Iceberg 테이블 요구 사항¶
공급자 계정과 컨슈머 계정 모두 외부 테이블 및 Iceberg 테이블을 활성화해야 외부 또는 Iceberg 테이블에 연결되는 Clean Room을 완전히 사용할 수 있습니다.
공급자는 관리되는 계정과 Clean Room을 공유할 때 항상 외부 테이블 및 Iceberg 테이블을 활성화해야 합니다. 관리되는 계정은 항상 외부 테이블을 사용하기 때문입니다.
공급자와 컨슈머가 서로 다른 리전에 있는 경우, 컨슈머만 외부 테이블 또는 Iceberg 테이블을 Clean Room에 연결할 수 있습니다.
The Clean rooms UI controls external and Iceberg tables at the account level.
경고
컨슈머 계정에서 이 기능을 활성화하지 않은 경우, 컨슈머는 외부 또는 Iceberg 테이블에 연결된 모든 Clean Rooms에 참여할 수 없거나 두 유형의 테이블에 연결된 이미 참여한 Clean Rooms를 편집할 수 없게 됩니다(실행은 가능).
공급자 계정과 컨슈머 계정 모두의 DCR 계정 관리자는 다음 단계를 수행해야 합니다.
Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:
관리 계정을 사용하는 경우 Admin > My Account 를 선택합니다.
Snowflake 계정을 사용하는 경우 Admin > Snowflake Admin 을 선택하고 ACCOUNTADMIN 역할을 가진 사용자로 Snowflake에 로그인합니다.
External & Iceberg Tables 토글을 활성화합니다. 그러면 UI 로 생성된 Clean Rooms와 API 로 생성된 Clean Rooms 모두에서 이 기능을 사용할 수 있습니다.
이제 관리자의 Access management for Snowflake objects 패널에서 외부 테이블과 Iceberg 테이블을 선택할 수 있으며, 다른 오브젝트와 마찬가지로 Clean Rooms에서 사용할 수 있도록 선택할 수 있습니다.
In code, you must enable external and Iceberg tables at both the account level and also for each clean room that links in external or Iceberg tables. If you have enabled external and Iceberg tables in the Clean rooms UI, you do not need to enable them in code (you don’t need to take the steps listed here).
경고
한 계정만 해당 계정 또는 Clean Room에 이 기능을 활성화하고 외부 또는 Iceberg 테이블에 연결한 경우, 다른 계정은 기존 템플릿을 실행할 수 있지만 해당 계정과 Clean Room 모두에서 외부 및 Iceberg 테이블이 허용될 때까지 어떤 방식으로도 Clean Room을 수정할 수 없습니다.
코드에서 새로운 Clean Rooms에 외부 테이블 또는 Iceberg 테이블을 활성화하고 사용하려면 다음을 수행하십시오.
ACCOUNTADMIN 역할을 가진 사용자는 먼저 공급자 및 컨슈머 계정 모두에서 전체 Clean Room 환경에 대해 외부 테이블 및 Iceberg 테이블을 사용하도록 설정합니다.
USE ROLE ACCOUNTADMIN; CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
참고
Existing clean rooms created with the Clean rooms UI are not affected by this method. To update existing clean rooms created using the Clean rooms UI you must either enable them in code individually, as shown in the next steps, or else enable clean rooms using the Clean rooms UI, which enables the feature for all existing clean rooms.
A provider enables external and Iceberg tables for their clean room. Note that this triggers a security scan which, if successful, generates a new clean room version, so you will need to update the default release directive.
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom( $cleanroom_name); -- Call until scan is complete. CALL samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name); -- When scan is successful, update with patch version mentioned in return value from enable_external_tables_for_cleanroom. CALL samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '<PATCH_VERSION>');
컨슈머 는 동일한 Clean Room에서 외부 테이블과 Iceberg 테이블을 사용할 수 있어야 합니다.
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( $cleanroom_name);
외부 테이블과 Iceberg 테이블을 Clean Room에 활성화한 후 공동 작업자는 다른 테이블과 동일한 방식으로 이러한 테이블을 등록하고 연결할 수 있습니다.