はじめに
SnowflakeではTrust Centerで、アカウントの状態を監査し、通知することができます。
今回は、Snowflake上でMFA設定やパスワードが不要なユーザを作成し、ユーザに紐づくメールアドレスへ通知を行う方法をご紹介します。
Snowflakeのユーザタイプについて
トライアルアカウントを除くSnowflakeアカウントでは、特定のタイプを除くユーザはMFAによる2段階認証を有効化する必要があります。
また、MFAを有効化していないユーザが存在する場合、Trust Centerで検出されてしまいます。
ユーザには、以下の通りの種別があります。
- PERSON:人が使用するユーザです。Snowsight(WEBコンソール)へログインする際に利用します。
- NULL:タイプを指定せずにユーザを作成した場合はNULLになります、PERSONと同義です。
- SERVICE:外部サービスから接続する際に使用するユーザです。BIツール等から接続する際等に利用されます。
- SNOWFLAKE_SERVICE:Snowflakeによって作成されるSnowpark Container Service用のユーザです。
- LEGACY_SERVICE:パスワード認証やSAMLによる認証をサポートするユーザです。(レガシーのため廃止予定)
この中で、SERVICEユーザとLEGACY_SERVICEユーザはMFAの有効化は強制されません。
そのため、MFAを強制させたくないユーザは、SERVICEユーザで作成することをお勧めします。
SERVICEユーザは、キーペア認証が推奨されており、MFA未設定でもTrust Centerで検出されません。
なお、Snowflakeのコンソールのログインに利用することはできないので、ご注意ください。
企業などで利用する場合は、ユーザの棚卸を定期的に行う必要があるので、ログインできないからと言ってユーザを増やしすぎることがないよう注意が必要です。
Trust Centerの通知における前提条件
Trust Centerの通知先に設定するユーザは、メールアドレスの認証が完了している必要があります。
通知先のメールアドレスを用意しておいてください。
通知先は、通常のメールアドレスでもいいですし、Slackのインテグレーションで発行したメールアドレスでも構いません。
注意点
トライアルアカウントでは、Trust Centerのメール通知機能を利用することができませんのでご注意ください。
実際にやってみる
以下のステップで対応します。
- メールアドレスの取得
- ユーザの作成
- 認証メールの送信
- Trust Centerの通知先設定
メールアドレスの取得
ここは、通知を送付したいメールアドレスを指定してください。
後ほどの手順で、認証リンクを埋め込んだメールアドレスをSnowflakeから送付します。
今回はSlackのインテグレーションで発行したメールアドレスを利用します。
ユーザの作成
ユーザを作成します。
ここでは、TYPEをSERVICEで作成してください。
EMAILはslackで発行したメールアドレスを使用しました。

構文は以下の通りです。
CREATE USER <ユーザ名> WITH TYPE = 'SERVICE' EMAIL = '<通知を送付するメールアドレス>';
認証メールの送信
先ほど作成したユーザに認証メールを送付します。
SQLを使って送付します。
CALL SYSTEM$START_USER_EMAIL_VERIFICATION('<ユーザ名>');
Slackに認証メールが送信されてくるので、「VALIDATE YOUR EMAIL」を押下します。

そうすると認証されたという画面がwebブラウザで表示されるので、これでメールアドレスの認証は成功です。

Trust Centerの通知先設定
Trust Centerの通知先設定を編集します。
Trust Centerはデフォルトだと認証済みのメールアドレスを持っている、かつ、ACCOUNTADMINが付与されているユーザに通知されます。
今回は通知専用に作ったユーザに対して通知をします。
Trust Centerのスキャナーの管理画面から、各パッケージ内の各スキャンを選択して編集していきます。数が多いので、気を付けましょう。

チェックを外すと受信者が管理者ユーザーとカスタムのどちらかを選択できるようになるので、カスタムを選択してユーザを追加します。
もちろん複数追加できるので、通知先が複数の場合は、メーリングリストを作成しなくても対応することができます。

これで、メールが送付されるようになりました。
おわりに
Trust Centerはメールアドレス認証が完了しているSnowflakeのユーザに通知を行うという仕組みだったため、ユーザを作成して対応しました。
Budgetの通知先はメールアドレスを直接指定できるので、Trust Centerを利用する際はユーザ設計に気を付けたいところです。
この記事がSnowflake導入を考えている方の参考になれば幸いです。

