はじめに
以前からSnowflakeのセキュリティ周りの対策に興味があって以下のQuickStartの記事を見つつ、セキュリティ監査ができるダッシュボードを作ろうと思っていました。
ですが先日のSnowdayの発表で以下の記事がリリースされました。
More comprehensive security with the introduction of Trust Center and added platform protections
...どうやらセキュリティの監視ができる機能が追加されるようです。非常に嬉しい発表ですが私が同じダッシュボードを作っても車輪の再発明になりそうです
というわけで今回はSnowflakeが準拠するCIS Banchmarkを眺めながら、Snowflakeが何を保証してくれるのか、そして我々ユーザーが何を気をつけなければいけないのかを考えてみたいと思います。
この記事はSnowflake Advent Calendar 2023 6日目の記事です。
この記事の内容は2023年12月時点のものです。ご使用の環境へ設定を適用する際は必ず原本を参照のもと適用いただくようお願いいたします。
https://www.cisecurity.org/cis-benchmarks
概要
すべての評価項目は以下の二つの項目に分類されます。
- Automated
すべての評価が自動で行われます。 - Manual
一部の評価を手動で行う必要があります。
また各評価項目は以下の2つのレベルに分類されます。
- Level1
サービスのベストプラクティスに基づいた一般的なものです - Level2
Level1よりセキュリティ面を重視したものです。管理面やサービスの有用性に影響を与える可能性があります。
1 Identity and Access Management
項目 | Level | Autmated/Manual | ユーザー対応 |
---|---|---|---|
アカウントでSSOが有効化されていること | 1 | Automated | Security integrationを作成する |
SCIMが有効化され、IdP側でユーザーの管理ができること | 2 | Automated | SCIM統合を作成する |
SSOが有効化されているユーザーのパスワード認証が無効化されていること | 1 | Manual | alter userでパスワードをNULLに設定する |
システムユーザーを除き、パスワード認証に加えてMFAが有効化されていること | 1 | Automated | GUIから登録 |
パスワードの最小文字数が14文字以上であること | 1 | Automated | password policyを登録 |
システムユーザーはキーペア認証をしていること | 1 | Automated | キーペア認証を参照 |
キーペア認証に用いる鍵が180日でローテーションされていること | 1 | Automated | 手動で定期的に検査が必要 |
90日以上ログインしていないユーザーが無効化されていること | 1 | Automated | 手動で定期的に検査が必要 |
ACCOUNYADMIN, SECURITYADMINを持つユーザーのセッションタイムアウトが15分以内に設定されていること | 1 | Automated | Session policyを変更する |
ACCOUNYADMIN, SECURITYADMINを持つユーザーの数が制限されていること | 1 | Automated | 手動で管理が必要 |
ACCOUNTADMINを持つユーザーにemailが設定されていること | 1 | Automated | 手動で検査が必要 |
ACCOUNYADMIN, SECURITYADMINがデフォルトロールとして設定されていないこと | 1 | Automated | 手動で検査が必要 |
ACCOUNYADMIN, SECURITYADMINを継承しているロールが存在しないこと | 1 | Automated | 手動で検査が必要 |
ACCOUNYADMIN, SECURITYADMINがownerになっているtaskが存在しないこと | 1 | Automated | 手動で検査が必要 |
ACCOUNYADMIN, SECURITYADMINの権限で実行されているtaskが存在しないこと | 1 | Automated | 手動で検査が必要 |
ACCOUNYADMIN, SECURITYADMINがownerになっているprocedureが存在しないこと | 1 | Automated | 手動で検査が必要 |
ACCOUNYADMIN, SECURITYADMINの権限で実行されているprocedureが存在しないこと | 1 | Automated | 手動で検査が必要 |
2 Monitoring and Alerting
項目 | Level | Autmated/Manual | ユーザー対応 |
---|---|---|---|
ACCOUNYADMIN, SECURITYADMINに対する権限付与が検知できること | 1 | Manual | 手動で検査が必要 |
MANAGE GRANTSに対する権限付与が検知できること | 1 | Manual | 手動で検査が必要 |
SSOが有効化されているユーザーのパスワードでのログインが検知できること | 1 | Manual | 手動で検査が必要 |
MFAが有効化されていないユーザーのパスワードログインが検知できること | 1 | Manual | 手動で検査が必要 |
Security integrationに対するcreate, update, deleteの操作を検知できること | 1 | Manual | 手動で検査が必要 |
Network policyとそれが紐づいているオブジェクトに対する変更を検知できること | 1 | Manual | 手動で検査が必要 |
SCIM tokenの作成が検知できること | 1 | Manual | 手動で検査が必要 |
Shareが他アカウントに公開された時に検知できること | 1 | Manual | 手動で検査が必要 |
EOSとなっているConnector, JDBC driverのアクセスを検知できること | 2 | Manual | 手動で検査が必要 |
3 Networking
項目 | Level | Autmated/Manual | ユーザー対応 |
---|---|---|---|
アカウントレベルでのホワイトリストによるNetwork policyが有効化されていること | 2 | Manual | network policyを作成する |
システムユーザーに対してNetwork Policyが有効化されていること | 1 | Manual | network policyを作成する |
4 Data Protection
項目 | Level | Autmated/Manual | ユーザー対応 |
---|---|---|---|
1年以内にデータの再暗号化が行われること | 2 | Automated | アカウントパラメータのPERIODIC_DATA_REKEYINGをtrueに設定する |
AES暗号化キーが256bitであること | 1 | Automated | アカウントパラメータのCLIENT_ENCRYPTION_KEY_SIZEを256に設定する |
重要なデータに対するDATA_RETENTION_TIME_IN_DAYSが90に設定されていること | 2 | Manual | 必要なデータに対してDATA_RETENTION_TIME_IN_DAYSを90に設定する |
MIN_DATA_RETENTION_TIME_IN_DAYSが7以上に設定されていること | 2 | Automated | アカウントパラメータのMIN_DATA_RETENTION_TIME_IN_DAYSを7以上に設定する |
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATIONがtrueに設定されていること | 1 | Automated | アカウントパラメータのREQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATIONをtrueに設定する |
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATIONがtrueに設定されていること | 1 | Automated | アカウントパラメータのREQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATIONをtrueに設定する |
すべてのexternal stageにstorage integrationが設定されていること | 1 | Automated | アカウントパラメータのREQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATIONをtrueに設定する |
PREVENT_UNLOAD_TO_INLINE_URLがrueに設定されていること | 1 | Automated | アカウントパラメータのPREVENT_UNLOAD_TO_INLINE_URLをtrueに設定する |
Tri-Secret Secureが有効化されていること | 2 | Manual | Tri-Secret Secureを参照 |
機密データがマスキングされていること | 2 | Manual | 必要なデータにmasking policyを設定する |
機密データがにrow access policyが設定されていること | 2 | Manual | 必要なデータにrow access policyを設定する |
おわりに
CIS Benchmarkのそれぞれの項目を並べてみました。すべて手で確認するのはかなりの手間なので、これらをすべて確認できるような機能がリリースされると思うと非常に楽しみですね。
これからのSnowflakeの発展にますます期待です!