Snowflake Native App のためのセキュリティ要件とベストプラクティス¶
このトピックでは、プロバイダーが Snowflake Native App を開発する際に従わなければならないセキュリティ要件とベストプラクティスについて説明します。 自動化されたセキュリティ審査 で説明された条件を満たすNative Apps Frameworkアプリケーションすべては、次のセクションで概説されるセキュリティ要件に準拠する必要があります。
注釈
セキュリティ要件は、Snowflakeが新たな潜在的リスクを監視し続けるため、変更される場合があります。
アプリケーションコードに対するセキュリティ要件¶
アプリケーションパッケージに含まれるアプリケーションコードは、以下のセキュリティ要件に準拠している必要があります。
アプリケーションは、Snowflakeが提供するライブラリを除き、アプリケーションパッケージの外部からコードをロードしたり実行したりすることはできません。すべてのライブラリ依存関係とセットアップコードなどのすべてのアプリケーションコードをアプリケーションパッケージで定義されたアプリケーションバージョンに含む必要があります。
すべてのアプリケーションコードは難読化されていない、つまり可読性のあるコードにする必要があります。この要件には、ミニファイ化された JavaScript コードも含まれます。
注釈
アプリケーションで最小化処理された JavaScript コードを使用する必要がある場合は、コードを非最小化処理するために使用する、対応ソースマップファイルを含める必要があります。
クリティカルな、あるいは一般によく知られている脆弱性や暴露(CVE)を含む依存関係やライブラリは、可能な場合、すべて安全なバージョンに更新する必要があります。
アプリケーションの機能に対するセキュリティ要件¶
以下のセキュリティ要件は、あなたのアプリの機能に適用されます。
すべてのアプリケーションは、リストの一部として以下の情報を顧客に提供する必要があります。
すべてのアプリの機能と特徴。
アプリケーションが接続するすべてのインターネットエンドポイントおよび URLs。
アプリケーション内のすべての外部関数。
アプリケーションによってログ、収集、または格納されたコンシューマーデータ。
アプリは必要でないクッキーをすべて禁止すべきです。
アプリはコンシューマーに必要不可欠なすべてのクッキーを伝えるべきです。
アプリは、アプリ一覧で掲載されているとおりに機能する必要があります。
すべてのアプリのインストールとセットアップの説明は、アプリのリストに含まれていなければなりません。
アプリは、プレーンテキストのカスタマーシークレットを保存したり、要求したりしてはなりません。
アプリケーションとインターネット間の通信は、有効な TLS 証明書を持つ HTTPS 接続を経由する必要があります。
アプリケーションは、Snowflakeとそのカスタマー、またはサードパーティに損害を与える可能性のある機能を有してはなりません。損害には以下のものが含まれますが、これらに限定されません。
データの漏洩や紛失。
たとえば、データアクセスポリシーのためのデータマスキングなど、アプリケーション機能の一部として明示的に設計されている場合を除き、コンシューマーのデータへのアクセスを制限すること。
リソースの過剰な消費。
任意のコードインジェクション/実行。
ウェブベースのユーザーインターフェイスや APIs を含むアプリへのすべての接続は、最初に Snowflake が提供する認証方法を使用して認証する必要があります。アプリ固有の認証は、Snowflake認証が成功した後にユーザーに提示される必要があります。
アプリは、最初にSnowflakeを通して認証に成功することなくアプリへの接続を許可するパブリックエンドポイントを作成してはなりません。
アプリケーションの権限に対するセキュリティ要件¶
以下のセキュリティ要件は、あなたのアプリによって設定された権限に適用されます。
すべてのアプリケーションは、マニフェストファイルに以下の情報を提供する必要があります。
すべてのオブジェクトでアプリケーションが必要とするすべての権限。
すべての API 統合。
アプリケーションは、アプリケーションが機能するために必要な最小限の権限のみをリクエストするようにします。
推奨されるセキュリティのベストプラクティス¶
自動セキュリティスキャンによって課されるセキュリティ要件に加えて、Snowflakeは、 Snowflake Native App を開発する場合、以下のベストプラクティスを推奨します。これらのベストプラクティスに従うと、セキュリティ審査中にアプリケーションがブロックされる可能性を低減する助けになります。
安全なソフトウェア開発ライフサイクル(SDLC)を実践します。
開発ライフサイクル中にアプリケーションコードの脆弱性を確認し、アプリケーションのバージョンを作成する前に脆弱性を修正します。
サードパーティのライブラリに脆弱性がないかどうかを確認し、最新の安全なバージョンにアップデートします。
少なくとも四半期に一度は、アプリケーション内のすべてのサードパーティライブラリを見直し、更新します。
以下に説明するSnowflakeセキュリティのベストプラクティスに従います。
コンテナーを使用するアプリに推奨されるセキュリティのベストプラクティス¶
推奨されるセキュリティのベストプラクティス に概説されているコア Snowflake Native App のセキュリティのベストプラクティスに加えて、以下のセキュリティのベストプラクティスが、コンテナーを使ったアプリに適用されます。
アプリの攻撃対象領域を最小化し、サプライチェーンの脆弱性リスクを低減するために、外部依存関係やライブラリの使用を制限します。
最小限のベースイメージの使用、不要なパッケージの削除、実行環境の安全な構成など、コンテナーイメージの堅牢化要件に従います。
すべてのコンテナー間および外部との通信には、安全な通信プロトコルと暗号化を使用します。
コンテナーアクティビティとデータアクセスパターンの包括的なログと監査。
既知の脆弱性やセキュリティ問題に対処するため、コンテナイメージを定期的に更新し、パッチを適用します。
コンテナー型アプリの攻撃対象領域を最小化するために、必要な権限のみを実装します。
適切な暗号化およびアクセス制御を使用して、シークレットおよび機密データを安全に管理します。
アプリを審査に出す前に、徹底的なセキュリティテストと脆弱性評価を実施します。
セキュリティインシデントに迅速に対応し、インシデント対応中にSnowflakeと協力します。
アプリの機能、依存関係、セキュリティ管理について明確かつ正確なドキュメントを提供します。
アプリの安全な使用と設定についてコンシューマーを教育し、指導します。
アプリケーション・パッケージの開発と公開のベスト・プラクティス¶
Snowflake Native App の開発およびパブリッシングプロセスを合理化するため、Snowflake では 2 つの別々のアプリケーションパッケージを作成することを推奨しています。
開発アプリケーションパッケージ
開発用アプリケーションパッケージは、迅速な反復とテストを目的としています。DISTRIBUTION プロパティを
INTERNAL
に設定します。これにより、アプリケーションパッケージは内部に留まり、外部のコンシューマーやSnowflakeのスキャンや承認に配布されることはありません。このパッケージを本番用パッケージから分離しておくことで、開発者は、各反復のセキュリティ審査プロセスをトリガーすることなく、迅速に変更を加え、新機能をテストすることができます。
プロダクション・アプリケーション・パッケージ
プロダクションアプリケーションパッケージは、アプリケーションパッケージを公開し、スキャンと承認のためにSnowflakeに配布し、外部の消費者に配布することを目的としています。プロダクション アプリケーション・パッケージの DISTRIBUTION プロパティは
EXTERNAL
に設定する必要があります。プロバイダーのセキュリティ審査に合格したバージョンのみを追加し、アプリがコンシューマーに提供される前に必要なセキュリティ基準を満たしていることを確認します。
開発用パッケージと本番用パッケージを別々に持つというベストプラクティスに従うことで、開発者は効率的な開発ライフサイクルを維持しながら、安全で承認されたバージョンのアプリのみを公開し、外部のコンシューマーに配布することができます。