앱 사양으로 데이터 공유 요청¶
이 항목에서는 목록을 통해 공급자 또는 서드 파티와 데이터를 공유할 수 있는 권한을 요청하도록 |native-app|의 사양을 구성하는 방법을 설명합니다. 이를 통해 규정 준수 보고, 원격 분석 공유, 데이터 전처리와 같은 사용 사례를 사용할 수 있습니다.
데이터 공유를 위한 앱 사양 워크플로¶
목록을 사용하여 데이터를 공유하도록 앱을 구성하려면 다음과 같은 일반적인 워크플로를 따릅니다.
공급자는 앱에 대한 권한 자동 부여 를 구성합니다. 이를 통해 컨슈머는 앱에 공유 및 목록을 만들 수 있는 권한을 부여할 수 있습니다.
참고
앱 사양에 따라 매니페스트 파일에서 :code:`manifest_version = 2`를 설정해야 합니다.
공급자는 :ref:`CREATE SHARE 및 CREATE LISTING 권한<label-native_apps_app_spec_add_listing_priv>`을 매니페스트 파일에 추가합니다.
공급자는 설정 스크립트에 SQL 문을 추가하여 필요에 따라 다음 오브젝트를 만듭니다.
설정 스크립트는 앱이 설치되거나 업그레이드될 때 공유 및 목록을 생성합니다. 앱 사양은 설정 중에 또는 저장 프로시저를 통해 런타임에 생성할 수 있습니다.
앱을 구성할 때 컨슈머는 목록에서 대상 계정과 자동 복제 설정을 검토하고 승인합니다. 자동 복제 설정은 리전 간 공유에만 적용할 수 있습니다. 컨슈머가 앱 사양을 보고 승인하는 방법에 대한 자세한 내용은 앱 사양을 사용하여 외부 리소스 연결 승인 섹션을 참조하세요.
데이터 공유를 위한 앱 사양 정의¶
LISTING 유형의 앱 사양에서 앱 사양 정의에는 다음 항목이 포함됩니다.
TARGET_ACCOUNTS: 데이터를 공유할 대상 계정의 쉼표로 구분된 목록으로, 작은따옴표로 묶입니다. 각 계정은OrgName.AccountName형식으로 지정해야 합니다(예:'ProviderOrg.ProviderAccount,PartnerOrg.PartnerAccount').LISTING: 앱에서 생성한 목록 오브젝트의 식별자입니다.AUTO_FULFILLMENT_REFRESH_SCHEDULE: 선택 사항입니다. 리전 간 데이터 공유를 위한 새로 고침 일정입니다.<num> MINUTE또는 :code:`USING CRON <expression>`으로 지정할 수 있습니다.
참고
앱 사양의 목록 이름은 앱에서 생성한 기존 목록과 일치해야 합니다. 이 값을 설정한 후에는 목록 이름을 변경할 수 없습니다.
매니페스트 파일의 버전 설정하기¶
앱에 대한 권한을 자동으로 부여하려면 다음 예제와 같이 매니페스트 파일의 시작 부분에 버전을 설정합니다.
manifest_version: 2
외부 목록 생성¶
공유에 연결된 외부 목록을 만들려면 다음 예와 같이 설정 스크립트에 CREATE LISTING 명령을 추가합니다.
CREATE EXTERNAL LISTING compliance_listing SHARE compliance_share AS $$ title: "Compliance Data Share" subtitle: "Regulatory compliance reporting data" description: "Share compliance and audit data with authorized accounts" listing_terms: type: "OFFLINE" $$ PUBLISH = FALSE REVIEW = FALSE;
참고
앱은 애플리케이션 패키지가 아닌 공유만 목록에 첨부할 수 있습니다.
앱은 대상 계정 또는 자동 복제 구성을 목록에 직접 추가할 수 없습니다.
목록 매니페스트에는 title, subtitle, description 및 listing_terms 속성만 포함될 수 있습니다.
모든 새 목록은 게시되지 않은 상태로 생성해야 하며, PUBLISH 및 REVIEW가 모두 FALSE로 설정되어 있어야 합니다.
목록 제목과 설명은 컨슈머 정보를 기준으로 사용자 지정할 수 있으므로 공급자가 데이터 소스를 구분할 수 있습니다.
목록에 대한 앱 사양 만들기¶
목록에 대한 앱 사양을 만들려면 다음 예를 따르세요.
ALTER APPLICATION SET SPECIFICATION shareback_spec TYPE = LISTING LABEL = 'Compliance Data Sharing' DESCRIPTION = 'Share compliance data with provider for regulatory reporting' TARGET_ACCOUNTS = 'ProviderOrg.ProviderAccount,AuditorOrg.AuditorAccount' LISTING = compliance_listing AUTO_FULFILLMENT_REFRESH_SCHEDULE = '720 MINUTE';이 명령은 이름이 ``shareback_spec``이며 지정된 대상 계정과 데이터를 공유할 수 있는 권한을 요청하는 앱 사양을 생성합니다.
리전 간 공유의 경우,
AUTO_FULFILLMENT_REFRESH_SCHEDULE매개 변수는 필수입니다. 다음 값 중 하나로 설정할 수 있습니다.'<num> MINUTE': 분을 나타내는 숫자(최소 10분)최대 8일 또는 11520분(8일)
'USING CRON <expression> <time_zone>': 타임존이 있는 Cron 식
참고
앱은 목록 및 공유 오브젝트가 존재한 후에만 앱 사양을 생성해야 합니다.
각 목록에는 연결된 앱 사양이 하나만 있을 수 있습니다.
대상 계정을 업데이트하면 컨슈머 승인을 위해 보류 중인 새 요청이 생성됩니다.
목록 구성 유효성 검사¶
앱은 승인 후 다음 명령을 실행하여 목록이 올바르게 구성되었는지 확인할 수 있습니다.
-- Check if the app specification is approved:
SHOW APPROVED SPECIFICATIONS IN APPLICATION;
-- Validate the listing configuration:
DESC LISTING compliance_listing;
컨슈머 승인 워크플로¶
LISTING 앱 사양의 컨슈머 승인은 이 워크플로를 트리거합니다.
Snowflake는 대상 계정을 목록에 자동으로 추가합니다.
지정된 경우 Snowflake는 자동 복제 새로 고침 일정을 구성합니다.
목록이 대상 계정에 표시됩니다.
목록에 첨부된 데이터는 승인된 계정에서 쿼리할 수 있습니다.
LISTING 앱 사양의 컨슈머 거부는 이 워크플로를 트리거합니다.
목록이 게시 취소되고 기존 대상 계정이 목록에서 제거됩니다.
자동 복제가 비활성화됩니다.
목록은 더 이상 대상 계정에 표시되지 않습니다.
LISTING 앱 사양에 대한 모범 사례¶
앱 사양을 통해 데이터 공유를 구현할 때 다음 모범 사례를 고려하세요.
공유 무결성: Snowflake는 컨슈머가 애플리케이션에서 생성된 공유를 수정하지 못하게 하지 않습니다. 결과적으로, 공급자는 기본 공유 데이터의 무결성을 보호하기 위한 조치를 구현할 책임이 있습니다.
오류 처리: 앱 사양이 거부되거나 아직 승인되지 않은 경우에 적절한 오류 처리를 구현합니다.
리전 간 고려 사항: 앱 공급자는 데이터 최신성 요구 사항과 비용 고려 사항 간에 적절한 균형을 맞추는 새로 고침 일정을 설정할 책임이 있습니다. 목록 자동 복제 비용은 앱 컨슈머에게 청구되지만, 공급자는 앱 컨슈머에게 불필요한 비용을 최소화하기 위해 비용을 인식해야 합니다.
규정 준수: 앱 사양 설명에 공유하는 데이터와 공유하는 이유를 명확하게 문서화합니다.
LISTING 앱 사양과 함께 콜백 함수 사용¶
앱은 수명 주기 콜백을 사용하여 컨슈머가 목록 사양을 승인하거나 거부할 때 매니페스트 파일에 다음 코드를 추가하여 응답할 수 있습니다.
lifecycle_callbacks:
specification_action: callbacks.on_spec_update
설정 스크립트에서 다음 콜백 저장 프로시저를 추가합니다.
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
RETURNS STRING
LANGUAGE SQL
AS
$$
BEGIN
IF (name = 'shareback_spec' AND status = 'APPROVED') THEN
-- Start populating shared tables
CALL populate_compliance_data();
ELSEIF (name = 'shareback_spec' AND status = 'DECLINED') THEN
-- Clean up or notify provider
CALL cleanup_share_data();
END IF;
RETURN 'Processed specification update';
END;
$$;
이 프로시저를 통해 앱은 데이터 공유 요청에 대한 컨슈머의 결정에 적절하게 대응할 수 있습니다.
제한 사항¶
이 섹션에서는 앱 사양을 사용할 때의 제한 사항을 설명합니다.
- 감사
Snowflake는 앱이 공급자에게 다시 공유하는 데이터에 대한 기본 제공 감사를 제공하지 않습니다. 컨슈머에게 감사 추적이 포함된 규정 준수 또는 규제 요구 사항이 있는 경우 공급자와 직접 조정하여 자체적인 별도의 모니터링 솔루션을 구현해야 합니다.
- 애플리케이션 내에서 공유
현재 이러한 방식으로 공유되는 데이터에 대해 목록 자동 복제가 지원되지 않으므로 애플리케이션 내에서 공급자와 직접 데이터를 공유하는 것은 권장되지 않습니다.