컨슈머 계정에 오브젝트 만들기 및 액세스하기

이 항목에서는 공급자가 컨슈머 계정에서 오브젝트를 만들거나 기존 오브젝트에 액세스할 수 있는 Snowflake Native App 개발 방법을 설명합니다.

컨슈머 계정에 오브젝트를 만들고 액세스하는 방법의 개요

|native-apps|에서는 컨슈머 계정에서 오브젝트를 만들거나 액세스해야 하는 경우가 많습니다. 예를 들면, 컨슈머가 공유 데이터를 쿼리할 수 있는 기본 앱에서도 컨슈머 계정에 웨어하우스를 만들고 사용해야 합니다. 또한 앱을 Snowflake 외부 서비스에 연결해야 할 수도 있습니다.

|naf|에서는 컨슈머 계정에서 오브젝트를 만들기 위한 권한 요청 방법을 두 가지 제공합니다.

앱에 자동으로 권한 부여하기

|naf|에서는 공급자가 특정 안전 권한을 요청하면 해당 권한을 자동으로 부여하도록 할 수 있습니다. 공급자는 이러한 권한을 앱의 매니페스트 파일에 추가합니다. 앱을 설치하거나 업그레이드하는 동안 Snowflake에서 해당 권한을 앱에 자동으로 부여합니다.

앱에서 권한을 자동으로 부여하도록 구성하는 방법에 대한 자세한 내용은 앱에 필요한 권한 구성 섹션을 참조하세요.

공급자 관점에서 보면 권한을 자동 부여할 경우 앱 개발 과정이 간소화됩니다. 앱에서 컨슈머가 요청한 권한을 부여했는지, 아니면 계정에 필요한 오브젝트를 만들었는지 확인할 필요가 없기 때문입니다.

컨슈머 관점에서 보면 권한을 자동 부여할 경우 앱 설치 및 구성 작업이 단순화됩니다. 그러나 이는 기본적으로 컨슈머가 본인 계정에서 앱이 수행할 수 있는 작업에 대한 제어력을 약화시키도 합니다. 컨슈머가 앱이 수행할 수 있는 작업을 보다 잘 제어할 수 있도록 |naf|에서는 다음과 같은 기능을 제공합니다.

앱 사양:

컨슈머가 앱에서 연결할 수 있는 외부 엔드포인트를 제어할 수 있습니다. Snowflake 외부 서비스에 액세스하려면 앱에서 서비스 유형에 따라 외부 액세스 통합 또는 서비스 통합 기능을 만들어야 할 수 있습니다. 권한 자동 부여 기능을 이용하면 앱에서 컨슈머 계정에 이러한 오브젝트를 맞들 수 있습니다. 단, 컨슈머 계정의 계정 관리자가 앱이 외부에서 연결할 수 있도록 허용하는 앱 사양을 승인해야 합니다.

앱 사양을 사용할 수 있도록 앱을 개발하는 방법에 대한 자세한 내용은 앱 사양을 사용하여 컨슈머의 외부 엔드포인트 요청 섹션을 참조하세요. 컨슈머가 앱 사양을 승인하는 방법에 대한 자세한 내용은 앱 사양을 사용하여 외부 리소스 연결 승인 섹션을 참조하세요.

기능 정책:

기능 정책을 통해 컨슈머는 권한 자동 부여를 재정의할 수 있습니다. 컨슈머는 앱을 설치하거나 업그레이드하기 전에 앱에서 특정 유형의 오브젝트를 만들지 못하도록 기능 정책을 만들 수 있습니다. 예를 들면, 컨슈머가 앱에서 웨어하우스를 만들지 못하도록 기능 정책을 구성해야 할 수 있습니다. 앱에서 설치 또는 업그레이드 작업 중에 웨어하우스를 만들려고 하면 설치에 실패합니다.

컨슈머가 기능 정책을 만드는 방법에 대한 자세한 내용은 기능 정책을 사용하여 앱이 만들 수 있는 오브젝트 제한하기 섹션을 참조하세요.

앱에 수동으로 권한 부여하기

권한 자동 부여 <requesting-auto-privs>`기능이 출시되기 전에 만들어진 앱의 경우(예: 설치된 앱이 컨슈머 계정에서 오브젝트를 만드는 데 필요한 권한을 보유하지 않은 경우), 컨슈머가 앱 구성 방식에 따라 |sf-web-interface| 또는 SQL을 사용하여 앱에 수동으로 권한을 부여해야 합니다. 자세한 내용은 :doc:`requesting-privs 섹션을 참조하십시오.

컨슈머 계정에서 기존 오브젝트에 액세스하기

상황에 따라 앱에서 앱 외부에 있는 컨슈머 계정의 기존 오브젝트에 액세스해야 할 때도 있습니다. 예를 들어, 앱은 컨슈머 데이터베이스의 기존 테이블에 액세스해야 할 수 있습니다. 앱에서 오브젝트를 만들 수 있도록 |naf|에서는 고객이 오브젝트의 이름과 스키마를 지정하고 오브젝트에 대한 액세스를 활성화할 수 있는 참조를 사용합니다.

자세한 내용은 컨슈머로부터 참조 및 오브젝트 수준 권한 요청하기 섹션을 참조하십시오.

자동 권한과 수동 권한의 비교

앱 요구 사항

권한 자동 부여

권한 수동 부여

오브젝트 만들기 권한

앱은 몇 가지 예외를 제외하고 오브젝트를 만들 수 있는 권한을 보유합니다.

컨슈머는 Snowsight 또는 SQL을 사용하여 앱에 명시적으로 권한을 부여해야 합니다.

외부 서비스에 대한 액세스

앱에서 네트워크 규칙과 외부 액세스 통합을 만들 수 있습니다.

컨슈머가 앱 사양을 이용해 외부 액세스를 승인해야 합니다.

컨슈머가 필요한 네트워크 규칙과 외부 액세스 통합을 수동으로 만들고 참조를 사용해 통합을 바인딩해야 합니다.

외부 ID 공급자에 대한 액세스

앱에서 외부 API 인증용 보안 통합을 만들 수 있습니다.

컨슈머가 앱 사양을 이용해 외부 연결을 승인해야 합니다.

컨슈머가 필요한 보안 통합을 수동으로 만들고 참조와 통합을 바인딩해야 합니다.

기존 오브젝트에 대한 액세스

공급자가 참조를 사용해 기존 오브젝트에 액세스해야 합니다.

컨슈머가 참조에 대한 액세스를 승인합니다.

공급자가 참조를 사용해 기존 오브젝트에 액세스해야 합니다.

컨슈머가 참조에 대한 액세스를 승인합니다.

앱 개발

공급자는 컨슈머가 특정 권한을 부여했는지 확인하기 위한 코드를 작성할 필요가 없습니다.

공급자는 컨슈머가 특정 권한을 부여했는지 확인하는 코드를 작성해야 합니다.

앱 설치

컨슈머가 오브젝트를 수동으로 만들거나 권한을 부여할 필요가 없습니다.

컨슈머가 계정에서 오브젝트를 수동으로 만들거나, Snowsight 또는 SQL을 사용해 앱에 명시적으로 권한을 부여해야 합니다.

앱 사양에 자동 권한을 사용할 때의 보안 고려 사항

앱 사양은 Snowflake 외부 엔드포인트와의 통신만 제어합니다. 컨슈머는 앱 사양을 승인 또는 거부하여 해당 앱에서 이러한 엔드포인트에 연결하도록 허용하거나 차단할 수 있습니다.

앱 사양은 앱이 외부 연결을 제어하는 Snowflake 오브젝트(네트워크 규칙, 외부 액세스 통합, 보안 통합)를 만들지 못하도록 막지 않습니다. 이러한 오브젝트를 만들 수 있는 권한은 권한 자동 부여를 통해 부여됩니다.

앱 사양은 데이터 유효성 검사를 제공하지 않습니다. 또한 외부 액세스 통합 또는 보안 통합에서 참조하는 시크릿이나 토큰에 대해 어떠한 제한도 두지 않습니다.

예를 들어, 공급자가 ALLOWED_AUTHENTICATION_SECRETS를 사용하도록 앱의 외부 액세스 통합을 구성하고 컨슈머가 해당 통합에 대한 앱 사양을 승인하면 앱에서 나중에 사용하는 시크릿과 토큰을 수정할 수 있습니다.

그러나 공급자가 다른 엔드포인트를 사용하도록 앱을 수정하면 앱 사양의 시퀀스 번호가 변경되어 컨슈머가 새 버전을 재승인하거나 거부해야 합니다.