この記事では、専用 SQL プール (旧称 SQL DW) のセキュリティ保護の基本について説明します。 特に、この記事では、専用 SQL プール (旧称 SQL DW) を使用して、アクセスの制限、データの保護、およびアクティビティの監視を行うリソースについて説明します。
接続のセキュリティ
接続セキュリティとは、ファイアウォール規則と接続暗号化を使用してデータベースへの接続を制限し、セキュリティで保護する方法を指します。
ファイアウォール規則は、明示的に承認されていない IP アドレスからの接続試行を拒否するために、 論理 SQL サーバー とそのデータベースの両方で使用されます。 アプリケーションまたはクライアント コンピューターのパブリック IP アドレスからの接続を許可するには、まず、Azure portal、REST API、または PowerShell を使用してサーバー レベルのファイアウォール規則を作成する必要があります。
ベスト プラクティスとして、サーバー レベルのファイアウォールで許可される IP アドレスの範囲を可能な限り制限する必要があります。 ローカル コンピューターから専用 SQL プール (以前の SQL DW) にアクセスするには、ネットワーク上のファイアウォールとローカル コンピューターで TCP ポート 1433 での送信通信が許可されていることを確認します。
専用 SQL プール (以前の SQL DW) では、サーバー レベルの IP ファイアウォール規則が使用されます。 データベース レベルの IP ファイアウォール規則はサポートされていません。 詳細については、Azure SQL Database のファイアウォール規則に関するページを参照してください。
専用 SQL プール (以前の SQL DW) への接続は、既定で暗号化されます。 暗号化を無効にするように接続設定を変更することは無視されます。
認証
認証とは、データベースに接続するときに ID を証明する方法を指します。 専用 SQL プール (旧称 SQL DW) では現在、ユーザー名とパスワードと Microsoft Entra ID を使用した SQL Server 認証がサポートされています。
データベースのサーバーを作成するときに、ユーザー名とパスワードを使用して "サーバー管理者" ログインを指定しました。 これらの資格情報を使用すると、そのサーバー上の任意のデータベースに対してデータベース所有者として認証するか、SQL Server 認証を使用して "dbo" を認証できます。
ただし、ベスト プラクティスとして、組織のユーザーは別のアカウントを使用して認証する必要があります。 これにより、アプリケーションに付与されるアクセス許可を制限し、アプリケーション コードが SQL インジェクション攻撃に対して脆弱な場合の悪意のあるアクティビティのリスクを軽減できます。
SQL Server 認証ユーザーを作成するには、サーバー管理者ログインを使用してサーバー上の マスター データベースに接続し、新しいサーバー ログインを作成します。 また、master データベースにユーザーを作成することをお勧めします。 マスターでユーザーを作成すると、ユーザーはデータベース名を指定せずに SSMS などのツールを使用してログインできます。 また、オブジェクト エクスプローラーを使用して、サーバー上のすべてのデータベースを表示することもできます。
-- Connect to master database and create a login
CREATE LOGIN ApplicationLogin WITH PASSWORD = 'Str0ng_password';
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;
次に、サーバー管理者ログインを使用して 専用 SQL プール (旧称 SQL DW) に 接続し、作成したサーバー ログインに基づいてデータベース ユーザーを作成します。
-- Connect to the database and create a database user
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;
ログインの作成や新しいデータベースの作成などの追加操作を実行する権限をユーザーに付与するには、マスター データベースの Loginmanager ロールと dbmanager ロールにユーザーを割り当てます。
これらの追加ロールと SQL Database への認証の詳細については、「 Azure SQL Database でのデータベースとログインの管理」を参照してください。 Microsoft Entra ID を使用した接続の詳細については、「 Microsoft Entra 認証を使用した接続」を参照してください。
権限
承認とは、認証されて接続された後にデータベース内で実行できることを指します。 承認特権は、ロールのメンバーシップとアクセス許可によって決まります。 ベスト プラクティスとして、必要最小限の特権をユーザーに付与する必要があります。 ロールを管理するには、次のストアド プロシージャを使用します。
EXEC sp_addrolemember 'db_datareader', 'ApplicationUser'; -- allows ApplicationUser to read data
EXEC sp_addrolemember 'db_datawriter', 'ApplicationUser'; -- allows ApplicationUser to write data
接続先のサーバー管理者アカウントは、データベース内で何かを行う権限を持つdb_ownerのメンバーです。 スキーマのアップグレードやその他の管理操作をデプロイするために、このアカウントを保存します。 アプリケーションが必要とする最小限の特権でアプリケーションからデータベースに接続するには、より制限されたアクセス許可を持つ "ApplicationUser" アカウントを使用します。
データベース内でユーザーが実行できる操作をさらに制限する方法があります。
- 詳細 なアクセス許可 を使用すると、データベース内の個々の列、テーブル、ビュー、スキーマ、プロシージャ、およびその他のオブジェクトに対して実行できる操作を制御できます。 細かいアクセス許可を使用して、最も制御し、必要な最小限のアクセス許可を付与します。
- db_datareaderおよびdb_datawriter以外のデータベース ロールを使用して、より強力なアプリケーション ユーザー アカウントまたはより強力でない管理アカウントを作成できます。 組み込みの固定データベース ロールを使用すると、アクセス許可を簡単に付与できますが、必要以上に多くのアクセス許可が付与される可能性があります。
- ストアド プロシージャを 使用して、データベースに対して実行できるアクションを制限できます。
次の例では、ユーザー定義スキーマへの読み取りアクセスを許可します。
--CREATE SCHEMA Test
GRANT SELECT ON SCHEMA::Test to ApplicationUser
Azure portal からのデータベースとサーバーの管理、または Azure Resource Manager API の使用は、ポータル ユーザー アカウントのロールの割り当てによって制御されます。 詳細については、Azure portal を使用して Azure ロールを割り当てる方法に関するページを参照してください。
暗号化
Transparent Data Encryption (TDE) は、保存データを暗号化および復号化することで、悪意のあるアクティビティの脅威から保護するのに役立ちます。 データベースを暗号化すると、関連付けられているバックアップとトランザクション ログ ファイルが暗号化され、アプリケーションに変更を加える必要はありません。 TDE は、データベース暗号化キーと呼ばれる対称キーを使用してデータベース全体のストレージを暗号化します。
SQL Database では、データベース暗号化キーは組み込みのサーバー証明書によって保護されます。 組み込みのサーバー証明書は、サーバーごとに一意です。 これらの証明書は、少なくとも 90 日ごとに自動的にローテーションされます。 使用される暗号化アルゴリズムは AES-256 です。 TDE の一般的な説明については、「 Transparent Data Encryption」を参照してください。
Azure portal または T-SQL を使用してデータベースを暗号化できます。
次のステップ
さまざまなプロトコルを使用してウェアハウスに接続する方法の詳細と例については、 専用 SQL プール (旧称 SQL DW) への接続に関するページを参照してください。