앱 사양으로 데이터 공유 요청

이 항목에서는 목록을 통해 공급자 또는 서드 파티와 데이터를 공유할 수 있는 권한을 요청하도록 |native-app|의 사양을 구성하는 방법을 설명합니다. 이를 통해 규정 준수 보고, 원격 분석 공유, 데이터 전처리와 같은 사용 사례를 사용할 수 있습니다.

공급자 또는 서드 파티와 앱의 데이터 공유

일부 |native-apps|는 다양한 비즈니스 목적을 위해 공급자 또는 서드 파티 Snowflake 계정과 데이터를 다시 공유해야 합니다. 주요 사용 사례는 다음과 같습니다.

  • 규정 준수 보고: 감사 로그 또는 규정 준수 데이터를 규제 계정과 공유

  • 원격 분석 및 분석: 제품 개선을 위해 사용량 메트릭을 공급자에게 다시 보내기

  • 데이터 전처리: 파트너 계정과 변환된 데이터 공유

  • 지원 및 문제 해결: 지원 팀에 진단 데이터 제공

앱에서 데이터 공유를 활성화하려면 앱이 공유 및 목록을 모두 제공해야 합니다. 공유에는 공유할 데이터베이스 오브젝트가 포함되며, 목록은 계정 및 리전 간에 데이터를 공유하는 메커니즘을 제공합니다.

데이터 공유에 대한 자세한 내용은 Secure Data Sharing 정보 섹션을 참조하세요.

목록을 사용하여 데이터를 공유하도록 앱을 구성하려면 다음 단계를 따르세요.

  1. :doc:`자동 권한 부여<requesting-auto-privs>`를 사용하여 공유 및 목록을 생성할 수 있는 권한을 컨슈머에게 요청합니다.

  2. 공유를 생성하고 이에 대한 권한을 데이터베이스 오브젝트를 부여합니다.

  3. 공유에 연결된 외부 목록을 만듭니다.

  4. 컨슈머에게 특정 대상 계정과 데이터를 공유할 수 있는 권한을 요청하려면 :doc:`애플리케이션 사양<requesting-app-specs>`을 사용합니다.

참고

다른 앱 사양 유형과 달리 각 LISTING 사양은 정확히 하나의 목록 오브젝트와 연결됩니다. 앱은 동일한 목록에 대해 여러 앱 사양을 만들 수 없습니다.

데이터 공유를 위한 앱 사양 워크플로

목록을 사용하여 데이터를 공유하도록 앱을 구성하려면 다음과 같은 일반적인 워크플로를 따릅니다.

  1. 공급자는 앱에 대한 권한 자동 부여 를 구성합니다. 이를 통해 컨슈머는 앱에 공유 및 목록을 만들 수 있는 권한을 부여할 수 있습니다.

    참고

    앱 사양에 따라 매니페스트 파일에서 :code:`manifest_version = 2`를 설정해야 합니다.

  2. 공급자는 :ref:`CREATE SHARE 및 CREATE LISTING 권한<label-native_apps_app_spec_add_listing_priv>`을 매니페스트 파일에 추가합니다.

  3. 공급자는 설정 스크립트에 SQL 문을 추가하여 필요에 따라 다음 오브젝트를 만듭니다.

    설정 스크립트는 앱이 설치되거나 업그레이드될 때 공유 및 목록을 생성합니다. 앱 사양은 설정 중에 또는 저장 프로시저를 통해 런타임에 생성할 수 있습니다.

  4. 앱을 구성할 때 컨슈머는 목록에서 대상 계정과 자동 복제 설정을 검토하고 승인합니다. 자동 복제 설정은 리전 간 공유에만 적용할 수 있습니다. 컨슈머가 앱 사양을 보고 승인하는 방법에 대한 자세한 내용은 앱 사양을 사용하여 외부 리소스 연결 승인 섹션을 참조하세요.

데이터 공유를 위한 앱 사양 정의

LISTING 유형의 앱 사양에서 앱 사양 정의에는 다음 항목이 포함됩니다.

  • TARGET_ACCOUNTS: 데이터를 공유할 대상 계정의 쉼표로 구분된 목록으로, 작은따옴표로 묶입니다. 각 계정은 OrgName.AccountName 형식으로 지정해야 합니다(예: 'ProviderOrg.ProviderAccount,PartnerOrg.PartnerAccount').

  • LISTING: 앱에서 생성한 목록 오브젝트의 식별자입니다.

  • AUTO_FULFILLMENT_REFRESH_SCHEDULE: 선택 사항입니다. 리전 간 데이터 공유를 위한 새로 고침 일정입니다. <num> MINUTE 또는 :code:`USING CRON <expression>`으로 지정할 수 있습니다.

참고

앱 사양의 목록 이름은 앱에서 생성한 기존 목록과 일치해야 합니다. 이 값을 설정한 후에는 목록 이름을 변경할 수 없습니다.

매니페스트 파일의 버전 설정하기

앱에 대한 권한을 자동으로 부여하려면 다음 예제와 같이 매니페스트 파일의 시작 부분에 버전을 설정합니다.

manifest_version: 2
Copy

매니페스트 파일에 CREATE SHARE 및 CREATE LISTING 권한 추가

CREATE SHARE 및 CREATE LISTING 권한을 통해 앱은 설치 또는 업그레이드 중에 공유 및 목록을 생성할 수 있습니다.

  1. 앱이 이러한 권한을 요청하도록 구성하려면 매니페스트 파일의 privileges 섹션에 다음 코드를 추가합니다.

    manifest_version: 2
    ...
    privileges:
      - CREATE SHARE:
          description: "Create a share for sharing compliance data with provider"
      - CREATE LISTING:
          description: "Create a listing for cross-region sharing of compliance data"
    ...
    
    Copy

매니페스트 파일에서 manifest_version을 2로 지정하면 Snowflake는 설치 또는 업그레이드 중에 앱에 CREATE SHARE 및 CREATE LISTING 권한을 자동으로 부여합니다.

공유 생성 및 오브젝트에 공유에 대한 권한 부여

  1. 데이터 공유를 위해 공유를 생성하려면 다음 예제와 같이 설정 스크립트에 CREATE SHARE 명령을 추가합니다.

CREATE SHARE compliance_share;
Copy
  1. 다음 예와 같이 공유하려는 데이터베이스 오브젝트에 대해 권한을 부여합니다.

-- Grant usage on a table in the app's database:
GRANT USAGE ON TABLE app_schema.compliance_data TO SHARE compliance_share;

-- If sharing from a database created by the app, do the following:
GRANT USAGE ON DATABASE app_created_db TO SHARE compliance_share;
GRANT USAGE ON SCHEMA app_created_db.reporting TO SHARE compliance_share;
GRANT SELECT ON TABLE app_created_db.reporting.metrics TO SHARE compliance_share;
Copy

참고

앱은 다음 소스의 데이터만 공유할 수 있습니다.

  • 앱에서 생성된 데이터베이스: 앱은 이러한 데이터베이스의 소유자여야 합니다.

앱은 대상 계정을 공유에 직접 추가할 수 없습니다. 이는 앱 사양을 통해 제어됩니다.

외부 목록 생성

  1. 공유에 연결된 외부 목록을 만들려면 다음 예와 같이 설정 스크립트에 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;
    
    Copy

참고

  • 앱은 애플리케이션 패키지가 아닌 공유만 목록에 첨부할 수 있습니다.

  • 앱은 대상 계정 또는 자동 복제 구성을 목록에 직접 추가할 수 없습니다.

  • 목록 매니페스트에는 title, subtitle, description 및 listing_terms 속성만 포함될 수 있습니다.

  • 모든 새 목록은 게시되지 않은 상태로 생성해야 하며, PUBLISH 및 REVIEW가 모두 FALSE로 설정되어 있어야 합니다.

  • 목록 제목과 설명은 컨슈머 정보를 기준으로 사용자 지정할 수 있으므로 공급자가 데이터 소스를 구분할 수 있습니다.

목록에 대한 앱 사양 만들기

  1. 목록에 대한 앱 사양을 만들려면 다음 예를 따르세요.

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';
Copy

이 명령은 이름이 ``shareback_spec``이며 지정된 대상 계정과 데이터를 공유할 수 있는 권한을 요청하는 앱 사양을 생성합니다.

  1. 리전 간 공유의 경우, 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;
Copy

컨슈머 승인 워크플로

LISTING 앱 사양의 컨슈머 승인은 이 워크플로를 트리거합니다.

  • Snowflake는 대상 계정을 목록에 자동으로 추가합니다.

  • 지정된 경우 Snowflake는 자동 복제 새로 고침 일정을 구성합니다.

  • 목록이 대상 계정에 표시됩니다.

  • 목록에 첨부된 데이터는 승인된 계정에서 쿼리할 수 있습니다.

LISTING 앱 사양의 컨슈머 거부는 이 워크플로를 트리거합니다.

  • 목록이 게시 취소되고 기존 대상 계정이 목록에서 제거됩니다.

  • 자동 복제가 비활성화됩니다.

  • 목록은 더 이상 대상 계정에 표시되지 않습니다.

LISTING 앱 사양에 대한 모범 사례

앱 사양을 통해 데이터 공유를 구현할 때 다음 모범 사례를 고려하세요.

  • 공유 무결성: Snowflake는 컨슈머가 애플리케이션에서 생성된 공유를 수정하지 못하게 하지 않습니다. 결과적으로, 공급자는 기본 공유 데이터의 무결성을 보호하기 위한 조치를 구현할 책임이 있습니다.

  • 오류 처리: 앱 사양이 거부되거나 아직 승인되지 않은 경우에 적절한 오류 처리를 구현합니다.

  • 리전 간 고려 사항: 앱 공급자는 데이터 최신성 요구 사항과 비용 고려 사항 간에 적절한 균형을 맞추는 새로 고침 일정을 설정할 책임이 있습니다. 목록 자동 복제 비용은 앱 컨슈머에게 청구되지만, 공급자는 앱 컨슈머에게 불필요한 비용을 최소화하기 위해 비용을 인식해야 합니다.

  • 규정 준수: 앱 사양 설명에 공유하는 데이터와 공유하는 이유를 명확하게 문서화합니다.

LISTING 앱 사양과 함께 콜백 함수 사용

앱은 수명 주기 콜백을 사용하여 컨슈머가 목록 사양을 승인하거나 거부할 때 매니페스트 파일에 다음 코드를 추가하여 응답할 수 있습니다.

lifecycle_callbacks:
  specification_action: callbacks.on_spec_update
Copy

설정 스크립트에서 다음 콜백 저장 프로시저를 추가합니다.

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;
$$;
Copy

이 프로시저를 통해 앱은 데이터 공유 요청에 대한 컨슈머의 결정에 적절하게 대응할 수 있습니다.

제한 사항

이 섹션에서는 앱 사양을 사용할 때의 제한 사항을 설명합니다.

감사

Snowflake는 앱이 공급자에게 다시 공유하는 데이터에 대한 기본 제공 감사를 제공하지 않습니다. 컨슈머에게 감사 추적이 포함된 규정 준수 또는 규제 요구 사항이 있는 경우 공급자와 직접 조정하여 자체적인 별도의 모니터링 솔루션을 구현해야 합니다.

애플리케이션 내에서 공유

현재 이러한 방식으로 공유되는 데이터에 대해 목록 자동 복제가 지원되지 않으므로 애플리케이션 내에서 공급자와 직접 데이터를 공유하는 것은 권장되지 않습니다.