앱 사양 개요

이 항목에서는 공급자가 앱 사양을 사용하여 컨슈머로부터 제어된 액세스를 요청하도록 Snowflake Native App 을 구성하는 방법을 설명합니다. 컨슈머는 앱 사양을 통해 다음 작업에 대한 요청을 검토하고 승인하거나 거부할 수 있습니다.

  • Snowflake 외부의 외부 엔드포인트에 대한 연결

  • 서드 파티 서비스를 사용한 인증

  • 기타 Snowflake 계정과의 데이터 공유

Snowflake Native Apps 에 대한 제어된 액세스 유형

Snowflake Native Apps 는 컨슈머의 Snowflake 계정 이외의 리소스와 상호 작용해야 하는 경우가 많습니다. 이러한 상호 작용에는 외부 서비스 연결, 서드 파티 공급자와의 인증 또는 다른 Snowflake 계정과의 데이터 공유가 포함될 수 있습니다.

외부 서비스에 액세스하고 데이터를 공유하기 위해 Snowflake는 다음 오브젝트를 제공합니다.

외부 액세스 통합:

사용자 정의 함수 또는 저장 프로시저 내에서 외부 네트워크 엔드포인트에 대한 보안 액세스를 허용합니다. 외부 액세스 통합은 네트워크 규칙을 사용하여 특정 외부 네트워크 위치에 대한 액세스를 제한합니다.

보안 통합:

OAuth와 같은 서드 파티 인증 공급자에 대한 보안 액세스를 허용합니다. 보안 통합은 보안 인증 및 액세스 제어를 제공합니다.

공유 및 목록:

앱이 공급자 또는 서드 파티 Snowflake 계정과 데이터를 다시 공유하도록 허용합니다. 공유에는 공유할 데이터베이스 오브젝트가 포함되어 있으며, 목록은 계정과 리전 간에 데이터를 공유하는 메커니즘을 제공합니다.

:doc:`자동 권한 부여<requesting-auto-privs>`를 사용할 경우, 앱은 설정 스크립트 실행 시 이러한 오브젝트를 생성하는 데 필요한 권한을 보유합니다. 그러나 이러한 오브젝트는 외부 연결 또는 데이터 공유를 허용하므로 컨슈머는 앱 구성 시 이러한 작업을 승인해야 합니다.

앱 사양과 함께 자동 권한 부여를 사용하면 다음과 같은 이점이 있습니다.

  • 컨슈머는 앱에 필요한 통합, 공유 또는 목록을 수동으로 생성하고, 참조를 사용하여 이에 대한 액세스를 승인할 필요가 없습니다.

  • 공급자는 설치 또는 업그레이드 중에 필요한 권한과 오브젝트가 있는지 확인하는 코드를 작성할 필요가 없습니다.

  • 컨슈머는 외부 연결 및 데이터 공유 요청을 명확하게 파악하고 제어할 수 있습니다.

컨슈머 승인을 위해 앱 사양 사용

앱 사양을 사용하면 앱에 필요한 제어된 액세스를 지정할 수 있습니다. 컨슈머는 앱을 설치한 후 앱 사양을 검토하고 필요에 따라 각 요청을 승인하거나 거부합니다. 여기에는 외부 연결, 인증 통합, 데이터 공유 권한에 대한 요청이 포함됩니다.

앱 사양 정의

앱 사양 정의에는 앱이 외부 연결 또는 데이터 공유와 같은 제어된 작업을 수행하는 데 필요한 속성이 포함되어 있습니다. 이러한 속성은 승인을 위해 컨슈머에게 표시됩니다. 앱 사양 정의에는 각 작업 유형(외부 액세스 통합, 보안 통합 또는 목록)과 관련된 메타데이터 및 속성의 하위 세트가 포함되어 있습니다.

보안 통합을 위한 앱 사양 정의에 대한 자세한 내용은 보안 통합을 위한 앱 사양 정의 섹션을 참조하세요.

외부 액세스 통합을 위한 앱 사양 정의에 대한 자세한 내용은 EAI에 대한 앱 사양 정의 섹션을 참조하세요.

목록의 앱 사양 정의에 대한 자세한 내용은 목록에 대한 앱 사양 만들기 섹션을 참조하세요.

앱 사양의 시퀀스 번호

시퀀스 번호는 앱 사양의 버전 번호와 유사합니다. 시퀀스 번호는 공급자가 앱 사양의 정의를 변경할 때 자동으로 증가합니다. 앱 사양 정의에는 구성 세부사항 및 기타 필수 정보가 포함됩니다. 정의에 포함되지 않은 필드(예: description)는 시퀀스 번호 업데이트를 트리거하지 않습니다.

공급자와 컨슈머는 시퀀스 번호를 통해 앱 사양의 다양한 버전을 식별할 수 있습니다. 예를 들어 공급자가 앱 사양 정의에 새 구성 세부 정보를 추가하면 시퀀스 번호가 증가합니다. 컨슈머는 앱 사양을 볼 때 시퀀스 번호가 변경되었음을 확인하고 업데이트된 앱 사양을 검토할 수 있습니다.

앱 사양 사용 시 모범 사례

:doc:`자동 권한 부여<requesting-auto-privs>`는 앱이 외부 액세스 통합, 보안 통합 또는 목록과 같은 오브젝트를 생성하는 데 필요한 권한을 확보하도록 보장합니다. 그러나 컨슈머는 외부 연결 또는 데이터 공유를 허용하는 앱 사양을 거부하도록 선택할 수 있습니다. 앱을 개발할 때 사용자는 앱 사양이 승인되지 않을 수 있는 상황을 고려해야 합니다.

다음 시나리오를 생각해 보세요.

  • 앱은 외부 액세스 통합을 위해 여러 네트워크 포트를 요청할 수 있지만, 컨슈머는 하나만 허용할 수 있습니다. 네트워크 포트를 사용할 수 없는 경우 발생하는 오류를 처리하는 논리를 앱에 포함해야 합니다.

  • 일부 대상 계정에 대해서만 데이터 공유 요청을 거부하거나 부분적으로만 승인할 수 있습니다. 앱은 이러한 사례를 정상적으로 처리해야 합니다.

  • 인증 통합이 거부되어 앱이 대체 방법을 사용해야 할 수 있습니다.

항상 적절한 오류 처리를 포함하고, 작동을 위해 승인된 사양이 필요한 기능에 대한 명확한 피드백을 컨슈머에게 제공하는 것이 모범 사례입니다.

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

일부 상황에서 앱은 컨슈머가 앱 사양을 승인했는지 또는 거절했는지를 알아야 할 수 있습니다. 예를 들면 다음과 같습니다.

  • 앱은 API 호출 전에 외부 액세스 사양이 승인될 때까지 기다려야 할 수 있습니다.

  • 데이터 채우기는 목록 사양이 승인된 후에만 시작해야 할 수도 있습니다.

  • 보안 통합 승인 후 OAuth 흐름을 초기화해야 할 수 있습니다.

이러한 상황을 처리하기 위해, Snowflake Native App Framework 는 공급자가 앱 사양을 승인하거나 거부할 때 실행되는 콜백 저장 프로시저를 정의할 수 있는 메커니즘을 제공합니다.

공급자는 다음 예제시와 같이 매니페스트 파일에 저장 프로시저를 추가할 수 있습니다.

lifecycle_callbacks:
  specification_action: callbacks.on_spec_update
Copy

이 예제는 ``callbacks.on_spec_update``라는 저장 프로시저를 매니페스트 파일에 추가하는 방법을 보여줍니다. 설정 스크립트에서 공급자는 다음 예제와 같이 저장 프로시저를 추가할 수 있습니다.

CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
  name STRING,
  status STRING,
  payload STRING)
  ...
Copy

이 예제는 ``callbacks.on_spec_update``라는 저장 프로시저의 서명을 보여줍니다. 이 프로시저 본문에서 공급자는 앱 사양 상태 확인, 오브젝트 생성 및 필요한 작업을 수행하는 데 필요하기 위한 코드를 포함합니다.