❄️

Snowflakeのデータアプリケーションセキュリティ #3 データアプリケーションのセキュリティとアクセス制御

2023/11/19に公開

データエンジニアの是枝です。
Snowflakeのデータアプリケーションセキュリティの第3回の記事になります。

前回、ネットワークセキュリティとベストプラクティスについて述べました。
https://zenn.dev/t_koreeda/articles/c2ee97f4954bdb
今回は データアプリケーションのセキュリティとアクセス制御 について述べていきます。データセキュリティとアクセス制御は、Snowflakeデータアプリケーションの運用において非常に重要な要素です。本記事では、Snowflakeデータアプリケーションにおけるセキュリティとアクセス制御について詳しく説明します。以下の動画を参考に、chatGPTの力を借りながら執筆していきますのでよろしくお願いします。
Security Best Practices For Building Data Applications With Snowflake
https://www.youtube.com/watch?v=jhWa7ANML5U

ユーザーアクセスと認証

SSO認証の使用

データアプリケーションへのアクセスには、シングルサインオン(SSO)認証を使用することをお勧めします。SSO認証は、セキュリティと管理の観点から優れたオプションです。ただし、いくつかの特定のシナリオでは、ローカルのユーザー名とパスワードが必要になる場合があります。たとえば、管理者がSnowflakeにアクセスする必要がある場合や、IDPへの接続に障害が発生した場合などです。

マルチファクタ認証(MFA)の有効化

セキュリティを強化するために、マルチファクタ認証(MFA)を有効にしましょう。特権ユーザーに対してもMFAを要求し、セキュリティを向上させましょう。MFAは、IDPから提供される場合とSnowflakeが提供するネイティブMFAのどちらを使用しても構いません。少なくとも2つのアカウント管理者を設定し、パスワードのリセットや問題の解決に対応できるようにしましょう。

パスワードポリシーの適用

Snowflakeはパスワードポリシーをサポートしており、パスワードの要件を設定できます。複雑性や特殊文字の使用、リトライ回数、ロックアウトの期間などを指定できます。情報セキュリティチームの要求に合わせて設定しましょう。適切なパスワードポリシーを使用することで、セキュリティの向上が期待できます。

セッションポリシーの設定

セッションポリシーを使用して、UIセッションおよびドライバーセッションのタイムアウトを制御できます。デフォルトのセッションタイムアウトは240分ですが、必要に応じてセッションポリシーを調整してセッションの寿命を設定できます。セッションポリシーはアカウントレベル、ユーザーレベルで適用でき、ユーザーのポリシーがアカウントのポリシーを上書きします。

認証ポリシーの制御

特定のユーザーグループがWebインターフェースへのアクセスを制限したい場合、認証ポリシーを使用できます。認証ポリシーは、認証方法とクライアントタイプに基づいて制御を行います。これにより、特定のユーザーに対して異なる認証ポリシーを適用できます。この機能は、認証方法やクライアントタイプに応じてMFAの強制を実装する際にも役立ちます。

認証方法と外部OAuth

外部OAuthの利用

外部OAuth認証を使用する場合、認証サーバーが外部のIDP(例:OCTA、Active Directory、カスタムIDP)に属している場合に適しています。外部OAuthは、さまざまなフローをサポートし、コードグラントフローやクライアントクレデンシャルなど、多くの機能を提供します。外部OAuthを使用する場合、IDPの可用性に注意する必要があります。

Snowflake OAuthの活用

Snowflake OAuthは、Snowflake自体が認証サーバーとして機能し、トークンをクライアントに提供する方法です。外部OAuthを持たない場合に役立ちます。Snowflake OAuthは、高可用性を確保するための手間を省くことができます。認証プロセスはSnowflakeに統合されているため、IDPの可用性に依存しません。


出典:https://www.youtube.com/watch?v=jhWa7ANML5U

アクセス制御とロール

機能ロールとアクセスロール

Snowflakeデータアプリケーションにおけるアクセス制御は、機能ロールとアクセスロールの概念を使用して行います。アクセスロールは、データベースオブジェクトへの読み取りおよび書き込みアクセス権を持ちます。一方、機能ロールは、ユーザーの機能にマップされ、アクセスロールが機能ロールに割り当てられることで、アクセス制御が行われます。これにより、アクセス権を細かく管理し、最小特権の原則を適用できます。

アクセスロールの設定

アクセスロールは通常SQLを使用して設定され、IDPでは管理されないことが多いです。一方、機能ロールは通常IDPのグループなどで管理され、ユーザーと共に自動的にプロビジョニングされます。アクセスロールはデータベースオブジェクトに対するアクセス権を表し、セキュリティとアクセス制御を強化します。

コネクテッドアプリケーションのセキュリティ

コネクテッドアプリケーションのセキュリティ

コネクテッドアプリケーションは、同じSnowflakeアカウントにアクセスする2つの異なるエンティティによってアクセスされるため、セキュリティの観点から高度な設定が必要です。アカウントの所有者であるアプリケーションのコンシューマーは、アプリケーションプロバイダーがアカウントにアクセスできるようにする必要があります。アプリケーションプロバイダーがアカウント内のデータを操作できるように、アカウントレベルのオブジェクト(データベース、ロール、ウェアハウスなど)を設定します。ただし、セキュリティとコスト管理のために、コンシューマーはスキーマレベルでのアクセス権をアプリケーションプロバイダーに委任することが重要です。さらに、タグとポリシーを作成し、これらをデータガバナンスの一環として適用しましょう。

出典:https://www.youtube.com/watch?v=jhWa7ANML5U

まとめ

Snowflakeデータアプリケーションのセキュリティとアクセス制御は、データセキュリティと適切なアクセス管理を確保するために不可欠です。SSO認証、MFAの有効化、パスワードポリシー、セッションポリシーなどのベストプラクティスを活用し、データセキュリティを向上させましょう。外部OAuthとSnowflake OAuthを適切に活用し、認証方法を選択しましょう。また、機能ロールとアクセスロールを使用して、アクセス制御を効果的に実施しましょう。コネクテッドアプリケーションのセキュリティにおいても、適切な設定と監視が重要です。Snowflakeデータアプリケーションのセキュリティに関するこれらのアプローチを活用し、データを安全に管理しましょう。

GitHubで編集を提案

Discussion