カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

snowflakeトライアルアカウントでデフォルト実行されるセキュリティタスクを確認する

snowflakeトライアルアカウントを利用していて、Monitoring>Task Historyを確認したときに、身に覚えのないタスク実行履歴があることに気が付きました。
タスク名で調べても特に該当する説明が見つからなかったので、調べた履歴として残しておきます。
あまり綺麗にまとまっていないと思いますので、それでも良い方であればご覧ください。

snowflakeではタスクという機能があり、特定のSQLステートメントを単発やスケジュールで実行することができます
docs.snowflake.com


目次

snowflakeタスクの確認

snowflakeトライアルアカウントを作成すると、以下の5つのタスクが実行されており、タスクが紐づいているデータベース名とスキーマ名は次のようになっていました。
この情報を元に、これらのタスクがどういうものなのかを見ていきたいと思います。

Task Name Database Schema
SECURITY_ESSENTIALS_CIS3_1_TASK SNOWFLAKE TRUST_CENTER_STATE
SECURITY_ESSENTIALS_CIS1_4_TASK SNOWFLAKE TRUST_CENTER_STATE
SECURITY_ESSENTIALS_MFA_REQUIRED_FOR_USERS_CHECK_TASK SNOWFLAKE TRUST_CENTER_STATE
SECURITY_ESSENTIALS_NA_CONSUMER_ES_CHECK_TASK SNOWFLAKE TRUST_CENTER_STATE
MONITOR_TASK SNOWFLAKE TRUST_CENTER_STATE


まず、上記の表で出てきているTRUST CENTERですが、これはアカウントのセキュリティリスクを評価および監視するためのsnowflakeの機能で、指定された推奨事項を元にアカウントの評価を行うことができます。 docs.snowflake.com


TRUST CENTERはドキュメントに記載されている手順に従って、Monitoring>Trust Centerから設定することができます。
snowsightから該当ページを確認すると、3つのScanner Packageがあり、トライアルアカウント作成時には"Security Essentials"のみが有効化されていました。
どうやらこのSecurity Essentials Scanner Packageを有効化すると、冒頭のタスクが自動的に設定されるようです。


このSecurity Essentials Scanner Packageを選択すると、各Scanner Packageで実行されるタスクを確認することができます。

タスクを押下すると、各タスクのサマリーを確認することができます。

サマリの内容を以下に記載します。 IPアドレスからの制限やMFAの有効設定などについてチェックするタスクのようです。

タスク名 サマリ
SECURITY_ESSENTIALS_CIS3_1_TASK 信頼できるIPアドレスからのアクセスのみを許可するように、アカウントレベルのネットワークポリシーが設定されていることを確認します。
SECURITY_ESSENTIALS_CIS1_4_TASK 多要素認証(MFA)が、パスワードベースの認証を使用しているすべての人間ユーザーに対して有効になっていることを確認する。
SECURITY_ESSENTIALS_MFA_REQUIRED_FOR_USERS_CHECK_TASK すべてのユーザーが MFA 登録を必要とする認証ポリシーの対象となるようにする。
SECURITY_ESSENTIALS_NA_CONSUMER_ES_CHECK_TASK イベントテーブルがネイティブアプリケーションのイベント共有用に設定されていることを確認します。


Security Essentialsのスキャンの詳細設定を確認すると、「毎月5日と20日の12時5分(UTC+00:00)」でスケジュールが設定されていました。
日本時間だと「毎月5日と20日の21時05分(UTC+09:00)」に実行されます。

At 12:05 PM, on day 5 and 20 of the month, UTC+00:00


ここまでsnowflakeタスクについて確認した内容は、以下のドキュメントに記載がされています。

デフォルトでは、Security Essentials スキャナー パッケージを除き、スキャナー パッケージは非アクティブになります。
スキャナ パッケージはスケジュールに従って実行されます。 セキュリティ エッセンシャルスキャナ パッケージのスケジュールは変更できませんが、次のスキャナ パッケージのスケジュールは変更できます:
・CISベンチマーク スキャナー パッケージスキャナー パッケージのスケジュールは変更できます。
・脅威インテリジェンス スキャナー パッケージ。

docs.snowflake.com

Security Essentials Scanner Packageはデフォルトでアクティブになっておりスケジュールの変更もできませんが、それ以外の2つのScanner Packageはアクティブ化することで指定したスケジュールで実行ができるようです。
次はScanner Packageについてもう少し詳しく見ていきます。


Scanner Packageについて

Scanner Packageについての説明は次のドキュメントに記載があります。

スキャナは、あなたがアカウントをどのように設定したかに基づいて、セキュリティリスクをチェックするスケジュールされたバックグラウンドプロセスです。
スキャナは、スキャナ パッケージにグループ化されます。
スキャナには、アカウントでどのようなセキュリティリスクをチェックするかという情報と、それを含むスキャナパッケージが含まれています。
docs.snowflake.com

上記の説明を見ると、Scanner PackageはSnowflakeアカウントの設定内容のセキュリティリスクをチェックするためのグループ化されたパッケージということが書かれており、ドキュメントには3つのScanner Packageがあると記載されています。 次にそれらのパッケージの詳細について確認していきます。


Security Essentials Scanner Package

Security Essentials Scanner Packageの特徴は次のように記載されています。

  • アカウント設定を確認し、パスワード認証のユーザーに対して多要素認証 (MFA) がオンになっていることをチェック
  • スキャンはTYPEプロパティ(※)がPERSONまたはNULLに設定されているユーザーのみを対象
  • スキャンは2週間ごとに実行され、スケジュールは変更不可
  • デフォルトで有効で、無効化はできない
  • サーバーレス計算コストは発生しない
※TYPEプロパティとは
snowflakeのユーザーにはTypeプロパティが設定されており、以下の4つの設定項目があります。
"PERSON"または"NULL"が設定されている場合は、ユーザーは制限を持ちません。
"SERVICE"や"LEGACY_SERVICE"は対話形式を必要としない処理で利用するユーザーに設定し、利用できないプロパティがいくつかあります。
・PERSON
・SERVICE 
・LEGACY_SERVICE 
・NULL

ドキュメントには上記特徴が書かれていますが、先ほど「snowflakeタスクの確認」で確認したとおりIPアドレス制限や認証ポリシーの設定についてチェックするタスクも作成されていたので、この特徴と完全に一致しているというわけではなさそうです。
Scanner Packageが何をするかを詳しく知りたい場合はドキュメントだけでなく、タスクレベルで確認した方がよいかもしれません。


CIS Benchmarks Scanner Package

CIS Benchmarks Scanner Packageの特徴は次のように記載されています。

  • Center for Internet Security (CIS) Snowflake Benchmarks(※) に対してアカウントを評価するスキャナー
  • CIS Benchmarkのセクション番号を紐付いたスキャンを行う
  • デフォルトで1日1回実行される
  • 手動で有効・無効が変更可能
  • サーバーレス計算コストが発生する
※Center for Internet Security (CIS) Snowflake Benchmarksとは
セキュリティの脆弱性を減らすことを目的とした、Snowflakeアカウント設定のベストプラクティスのリストです。
CIS BenchmarkはCIS Snowflake Benchmarkウェブサイト(https://www.cisecurity.org/benchmark/snowflake)で公開されており、商用利用でなければ一般の方でもダウンロードが可能です。(氏名や所属会社などの情報の入力が必須です)
複数のセクションと推奨事項で構成されています。


私の環境では、CIS Benchmarks Scanner Packageを有効化せずともSecurity Essentials Scanner PackageでCIS 3.1(IPアドレスの制限)と1.4(対話式ユーザーに対するMFA有効化)に準拠したスキャンが実行されていました。
全てのCIS BenchmarkがCIS Benchmarks Scanner Packageでスキャンされるとは限らないようです。


ここで参考までにCIS Benchmarkをスキャンする例を見てみます。
snowflakeタスクの確認」の冒頭で記載したタスク一覧にあった「SECURITY_ESSENTIALS_CIS3_1_TASK」は、CIS Snowflake Benchmarkの3 ネットワークセクションの3.1で定義された推奨事項をチェックしています。
CIS Snowflake Benchmarkの該当の箇所には、「3.1 アカウントレベルのネットワークポリシーが、信頼された IP アドレスからのアクセスのみ許可するように設定されていることを確認します(手動)。」(DeepL訳)という推奨事項が記載されており、Monitoring>Trust Center>Findingsを確認すると、上記推奨事項が適用されていない違反が検知され、その対応方法まで記載されていることが分かります。


Threat Intelligence Scanner Package

Threat Intelligence Scanner Packageの特徴は次のように記載されています。

  • USER_TYPE または ADMIN_USER_TYPE、認証方法、認証ポリシー、および使用されているネットワーク・ポリシーに基づいて危険なユーザを検出
  • すべてのタイプのユーザが対象
  • デフォルトで1日1回実行される
  • 手動で有効・無効が変更可能
  • サーバーレス計算コストが発生する


ドキュメントでは、危険なユーザーかどうかを判断するために、ユーザータイプと認証ポリシー、ネットワークポリシーの状況に基づいたリスクの程度が定義されています。

USER_TYPE or ADMIN_USER_TYPE Condition Risk
PERSON or NULL MFAを実施する認証ポリシーを持っておらず、ネットワークポリシーで制限されていない。 重要
PERSON or NULL MFAを実施する認証ポリシーを持っていないが、ネットワークポリシーで制限している。 高い
Service or LEGACY_SERVICE MFA を実施する認証ポリシーを持っておらず、ネットワークポリシーで制限されていない。 重要
Service or LEGACY_SERVICE MFAを実施する認証ポリシーを持っていないが、ネットワークポリシーで制限している。 中規模


上記定義に関係なく、以下条件が全て当てはまる場合はどのユーザータイプでも危険なユーザーと判定されるようです。 特にネットワークポリシーでの制限有無でリスクが大きく変わっているので、最低限ネットワークポリシーでIPレベルの制限などは行った方が良さそうです。

  • 認証にパスワードまたは RSA 公開鍵を使用している。
  • 認証ポリシーによって MFA の利用が強制されることはない。
  • ネットワーク・ポリシーによって制限されない。


感想及び所感

見覚えのないタスクを調べるだけだと考えてましたが、思ったよりも調べる内容が多くてドキュメントを色々と読み漁らないといけないのは想定外でした。
AWSとかだとユーザー側でチェックしたいセキュリティ内容を理解した上で必要なサービスを組み合わせて実装する必要がありましたが、Snowflakeだと最初から機能として最低限必要なセキュリティチェックを準備してくれているのは良いなと思いました。

この記事がどなたかの役に立てば幸いです。