Snowflake Native App のためのセキュリティ要件とベストプラクティス

このトピックでは、プロバイダーが Snowflake Native App を開発する際に従わなければならないセキュリティ要件とベストプラクティスについて説明します。 自動化されたセキュリティ審査 で説明された条件を満たすNative Apps Frameworkアプリケーションすべては、次のセクションで概説されるセキュリティ要件に準拠する必要があります。

注釈

セキュリティ要件は、Snowflakeが新たな潜在的リスクを監視し続けるため、変更される場合があります。

アプリケーションコードに対するセキュリティ要件

アプリケーションパッケージに含まれるアプリケーションコードは、以下のセキュリティ要件に準拠している必要があります。

  1. アプリケーションは、Snowflakeが提供するライブラリを除き、アプリケーションパッケージの外部からコードをロードしたり実行したりすることはできません。すべてのライブラリ依存関係とセットアップコードなどのすべてのアプリケーションコードをアプリケーションパッケージで定義されたアプリケーションバージョンに含む必要があります。

  2. すべてのアプリケーションコードは難読化されていない、つまり可読性のあるコードにする必要があります。この要件には、ミニファイ化された JavaScript コードも含まれます。

    注釈

    アプリケーションで最小化処理された JavaScript コードを使用する必要がある場合は、コードを非最小化処理するために使用する、対応ソースマップファイルを含める必要があります。

  3. クリティカルな、あるいは一般によく知られている脆弱性や暴露(CVE)を含む依存関係やライブラリは、可能な場合、すべて安全なバージョンに更新する必要があります。

アプリケーションの機能に対するセキュリティ要件

以下のセキュリティ要件は、あなたのアプリの機能に適用されます。

  1. すべてのアプリケーションは、リストの一部として以下の情報を顧客に提供する必要があります。

    1. すべてのアプリの機能と特徴。

    2. アプリケーションが接続するすべてのインターネットエンドポイントおよび URLs。

    3. アプリケーション内のすべての外部関数。

    4. アプリケーションによってログ、収集、または格納されたコンシューマーデータ。

      1. アプリは必要でないクッキーをすべて禁止すべきです。

      2. アプリはコンシューマーに必要不可欠なすべてのクッキーを伝えるべきです。

  2. アプリは、アプリ一覧で掲載されているとおりに機能する必要があります。

  3. すべてのアプリのインストールとセットアップの説明は、アプリのリストに含まれていなければなりません。

  4. アプリは、プレーンテキストのカスタマーシークレットを保存したり、要求したりしてはなりません。

  5. アプリケーションとインターネット間の通信は、有効な TLS 証明書を持つ HTTPS 接続を経由する必要があります。

  6. アプリケーションは、Snowflakeとそのカスタマー、またはサードパーティに損害を与える可能性のある機能を有してはなりません。損害には以下のものが含まれますが、これらに限定されません。

    1. データの漏洩や紛失。

    2. たとえば、データアクセスポリシーのためのデータマスキングなど、アプリケーション機能の一部として明示的に設計されている場合を除き、コンシューマーのデータへのアクセスを制限すること。

    3. リソースの過剰な消費。

    4. 任意のコードインジェクション/実行。

  7. ウェブベースのユーザーインターフェイスや APIs を含むアプリへのすべての接続は、最初に Snowflake が提供する認証方法を使用して認証する必要があります。アプリ固有の認証は、Snowflake認証が成功した後にユーザーに提示される必要があります。

  8. アプリは、最初にSnowflakeを通して認証に成功することなくアプリへの接続を許可するパブリックエンドポイントを作成してはなりません。

アプリケーションの権限に対するセキュリティ要件

以下のセキュリティ要件は、あなたのアプリによって設定された権限に適用されます。

  1. すべてのアプリケーションは、マニフェストファイルに以下の情報を提供する必要があります。

    1. すべてのオブジェクトでアプリケーションが必要とするすべての権限。

    2. すべての API 統合。

  2. アプリケーションは、アプリケーションが機能するために必要な最小限の権限のみをリクエストするようにします。

アプリケーション・パッケージの開発と公開のベスト・プラクティス

Snowflake Native App の開発およびパブリッシングプロセスを合理化するため、Snowflake では 2 つの別々のアプリケーションパッケージを作成することを推奨しています。

  • 開発アプリケーションパッケージ

    開発用アプリケーションパッケージは、迅速な反復とテストを目的としています。DISTRIBUTION プロパティを INTERNAL に設定します。これにより、アプリケーションパッケージは内部に留まり、外部のコンシューマーやSnowflakeのスキャンや承認に配布されることはありません。

    このパッケージを本番用パッケージから分離しておくことで、開発者は、各反復のセキュリティ審査プロセスをトリガーすることなく、迅速に変更を加え、新機能をテストすることができます。

  • プロダクション・アプリケーション・パッケージ

    プロダクションアプリケーションパッケージは、アプリケーションパッケージを公開し、スキャンと承認のためにSnowflakeに配布し、外部の消費者に配布することを目的としています。プロダクション アプリケーション・パッケージの DISTRIBUTION プロパティは EXTERNAL に設定する必要があります。

    プロバイダーのセキュリティ審査に合格したバージョンのみを追加し、アプリがコンシューマーに提供される前に必要なセキュリティ基準を満たしていることを確認します。

開発用パッケージと本番用パッケージを別々に持つというベストプラクティスに従うことで、開発者は効率的な開発ライフサイクルを維持しながら、安全で承認されたバージョンのアプリのみを公開し、外部のコンシューマーに配布することができます。