앱 사양 개요

이 항목에서는 공급자가 앱 사양을 사용하여 Snowflake 외부의 서비스 및 엔드포인트에 대한 액세스를 요청하도록 |native-app|을 구성하는 방법에 대해 설명합니다. 컨슈머는 앱 사양을 통해 앱에 필요한 외부 연결을 검토하고 승인 또는 거부할 수 있습니다.

|native-app|에서 외부 서비스에 액세스

일부 |native-apps|은 Snowflake 외부에 있는 리소스에 연결해야 합니다. 이러한 리소스에 대한 연결을 처리하기 위해 Snowflake는 다양한 연결 유형에 대해 다양한 오브젝트를 제공합니다.

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

외부 액세스 통합:

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

보안 통합:

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

자동 권한 부여 를 사용할 경우, 앱은 설정 스크립트 실행 시 이러한 오브젝트를 생성하는 데 필요한 권한을 보유합니다. 그러나 이러한 오브젝트는 Snowflake 외부와의 연결을 허용하므로, 컨슈머는 앱 구성 시 이러한 연결을 승인해야 합니다.

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

  • 컨슈머는 앱에 필요한 외부 액세스 통합 또는 보안 통합을 수동으로 생성하고 참조를 사용하여 액세스를 승인할 필요가 없습니다.

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

앱 사양을 사용하여 컨슈머가 외부 연결을 승인할 수 있도록 허용하기

앱 사양을 통해 공급자는 앱에서 요청하는 연결 정보를 지정할 수 있습니다. 컨슈머는 앱을 설치한 후 앱 사양 검토하고 필요에 따라 승인하거나 거부합니다.

앱 사양을 사용하여 외부 엔드포인트 액세스에 대한 액세스를 요청하는 방법에 대한 자세한 내용은 외부 액세스 통합(EAIs) 요청(앱 사양 포함) 섹션을 참조하세요. 앱 사양을 사용하여 OAuth 통합에 대한 액세스를 요청하는 방법에 대한 자세한 내용은 앱 사양으로 보안 통합 요청하기.:doc:requesting-app-specs-eai 섹션을 참조하세요.

앱 사양 정의

앱 사양 정의에는 앱이 Snowflake 외부의 리소스에 대한 연결을 구성하는 데 필요한 속성이 포함되어 있습니다. 이러한 속성은 승인을 위해 컨슈머에게 표시됩니다(외부 액세스 통합 또는 보안 통합). 앱 사양 정의에는 외부 액세스 통합 또는 보안 통합의 메타데이터 및 속성 하위 세트가 포함되어 있습니다.

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

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

앱 사양의 시퀀스 번호

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

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

앱 사양 사용 시 모범 사례

자동 권한 부여 는 앱이 외부 액세스 통합을 생성하는 데 필요한 권한을 확보하도록 보장합니다. 그러나 컨슈머는 외부 엔드포인트와의 연결을 가능하게 하는 앱 사양을 거부할 수 있습니다. 앱을 개발할 때 공급자는 앱 사양이 승인되지 않을 수 있는 상황을 고려해야 합니다.

예를 들어, 앱이 외부 액세스 통합을 위해 여러 네트워크 포트를 사용하도록 요청할 수 있지만, 컨슈머는 단 하나만 허용할 수 있습니다. 네트워크 포트를 사용할 수 없는 경우 발생하는 오류를 처리하는 논리를 앱에 포함해야 합니다. 또한 모범 사례는 발생할 수 있는 모든 HTTP 예외를 처리하는 것입니다.

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

일부 상황에서 앱은 컨슈머가 앱 사양을 승인했는지 또는 거절했는지를 알아야 할 수 있습니다. 예를 들어, 앱은 오브젝트를 생성하기 전에 앱 사양이 승인될 때까지 기다려야 할 수 있습니다.

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

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

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 라는 저장 프로시저의 서명을 보여줍니다. 이 프로시저 본문에서 공급자는 앱 사양 상태 확인, 오브젝트 생성 및 필요한 작업을 수행하는 데 필요한 코드를 포함합니다.