ウィンドウズマックソフトウェア設定セキュリティ生産性リナックスAndroidパフォーマンス設定Apple すべて

Microsoft SQL Serverのセキュリティを構成する方法

編集済み 2 数か月前 によって ExtremeHow 編集チーム

マイクロソフトSQLサーバーセキュリティ設定データベースウィンドウズリナックスITユーザー管理認証サーバー

Microsoft SQL Serverのセキュリティを構成する方法

翻訳が更新されました 2 数か月前

Microsoft SQL Serverは、データの格納、検索、および処理を可能にする人気のあるデータベース管理システムです。しかし、機密データを管理するシステムと同様に、セキュリティは非常に重要です。セキュリティ構成の目的は、不正アクセスからデータを保護し、適切な人々だけがデータを管理する権限を持つようにすることです。この記事では、Microsoft SQL Serverのセキュリティを構成する方法についての包括的なガイドを提供します。

SQL Serverのセキュリティモデル

SQL Serverのセキュリティモデルは、ログインアカウント、ユーザー、およびロールの組み合わせに基づいています。これらの要素は、承認されたユーザーのみがデータベースにアクセスし、特定の操作を行うことができるように協力して動作します。それでは、これらの各要素を詳しく見ていきましょう。

ログイン

ログインは、SQL Serverインスタンスに接続するために使用されるアカウントです。SQL Serverは、SQL Server認証やWindows認証など、いくつかのタイプのログインをサポートしています。Windows認証は通常、Windowsのセキュリティモデルと統合されており、より安全であると見なされているため、一般的に推奨されます。

新しいログインを作成するには、次の手順に従います。

use master;
CREATE LOGIN [TestLogin] WITH PASSWORD='YourStrongPassword123';

この例では、TestLoginという名前の新しいSQL Server認証ログインが作成されます。ログインには常に強力なパスワードを使用してください。

ユーザー

インスタンス用のログインを作成した後、このログインがアクセスできる各特定のデータベースにユーザーを作成することができます。データベース内のユーザーはログインと関連付けられており、この関連付けにより、データベースにアクセスする際にユーザーが認証されます。

先に作成したログイン用にデータベースユーザーを作成するには、次のコマンドを使用します。

use your database;
CREATE USER [TestUser] FOR LOGIN [TestLogin];

このコマンドは、指定されたデータベース(YourDatabase)でログインTestLoginと関連付けられたユーザーを作成します。

ロール

ロールは、ユーザーやユーザーグループに割り当てることができる権限のコレクションです。権限をロールにまとめてそれにユーザーを割り当てることで、権限を簡単に管理する方法を提供します。

SQL Serverには、固定サーバーロールと固定データベースロールがあります。固定サーバーロールはSQL Server全体に適用され、固定データベースロールは特定のデータベースにのみ適用されます。

特定のデータベースロールにユーザーを追加する方法は次のとおりです:

use your database;
EXECUTE sp_addrolemember 'db_datareader', 'TestUser';

このコマンドは、TestUserをdb_datareaderロールに追加し、指定されたデータベース内のすべてのデータを読み取る権限をユーザーに付与します。

権限

権限は、テーブル、ビュー、またはストアドプロシージャなどのSQL Serverリソースに対して特定の操作を実行する権利です。SQL Serverは幅広い権限を提供しており、セキュリティニーズに基づいてログインやユーザーに権限を付与または拒否することができます。

特定のテーブルにデータを挿入する権限をユーザーに付与したい場合は、次のコマンドを実行できます:

use your database;
GRANT INSERT ON [YourTable] TO TestUser;

このコマンドは、TestUserに指定されたデータベース(YourDatabase)の指定されたテーブル(YourTable)へのデータ挿入を許可します。

暗号化

SQL Serverは、格納、伝送、または他のSQL Serverインスタンスおよびアプリケーションとの間で交換される機密データを保護するための暗号化機能を提供します。これには、Transparent Data Encryption(TDE)とAlways Encryptedのサポートが含まれます。

透明なデータ暗号化

TDEはデータを暗号化することでデータを安全に保ちます。これにより、ディスク上の物理ファイルも暗号化されますが、データベースに接続するアプリケーションにはデータがプレーンテキストとして表示されます。

データベースでTDEを実装するには、次の手順に従います:

use master;
Create master key encryption by password = 'YourStrongPassword123';
CREATE CERTIFICATE EncryptCert WITH SUBJECT = 'Database Encryption Certificate';
use your database;
Create database encryption key with algorithm = AES_256 Encryption by server certificate EncryptCert;
ALTER DATABASE YourDatabase SET ENCRYPTION ON;

この一連のコマンドは、証明書を使用してYourDatabaseのデータベース暗号化を設定します。

Always Encrypted

Always Encryptedは、SQL Serverデータベース内の機密データを保護するように設計されています。暗号化キーを持つクライアントアプリケーションのみがプレーンテキストデータにアクセスでき、暗号化はクライアントレベルで行われるため、SQL Serverは非暗号化の値を目にしません。

Always Encryptedの設定には、カラムマスターキーとカラム暗号化キーを使用する必要があります。カラムマスターキーはSQL Serverの外部に保管され、カラム暗号化キーはSQL Serverに保管され、機密カラムを暗号化するために使用されます。

通常、これを設定するには、暗号化キーを構成し、SQL Server Management Studio(SSMS)またはPowerShellスクリプトを使用してテーブルカラムを暗号化するように変更する必要があります。

監査

SQL Serverの監査はセキュリティの重要な部分であり、システム上で発生するイベントを追跡し、ログに記録します。サーバーレベルのイベントやデータベースレベルのイベントを監査することができ、SQL Serverはこれらの活動を支援するための組み込みの監査オブジェクトを提供しています。

サーバーレベルオブジェクトに監査を作成し、それを関連付ける基本的な例を示します:

Create a server audit ServerAudit
in file(filepath = 'C:\AuditFiles\');

Change server audit ServerAudit
with (status = on);

Create a server audit specification ServerAuditSpec
ServerAudit for server audits
add(failed_login_group);

Change server audit specification ServerAuditSpec
with (status = on);

このスクリプトは、ログイン失敗の試みを記録し、指定されたファイルの場所にログを出力する監査を作成します。

セキュリティポリシー

SQL Serverは、セキュリティプラクティスの自動化と管理を支援する複数のセキュリティポリシーをサポートしています。注目すべきセキュリティポリシーには、Row-Level Security(RLS)とDynamic Data Masking(DDM)があります。

Row-Level Security(RLS)

RLSは、テーブル内の行に対する細かなアクセス制御の実装を可能にし、ユーザーが権限を持っている行のみにアクセスできるようにします。

RLSを作成するには、述語関数とセキュリティポリシーを定義します。述語関数は、行をフィルタするために使用されるロジックを定義します。

CREATE FUNCTION dbo.fn_securitypredicate (@UserName AS sysname)
Returns Table
With SchemaBinding
As
select return 1 as result
where @username = USER_NAME();

Create a security policy SecurityPolicy
ADD FILTER PREDICATE dbo.fn_securitypredicate(username)
on your table
with (status = on);

この例は、usernameに基づいてYourTableへのアクセスをフィルタします。

Dynamic Data Masking(DDM)

DDMは、データが承認されていないユーザーに提示される際に機密データを隠すプロセスを促進するSQL Serverの組み込み機能です。データは完全に格納されていますが、取得時には隠蔽または匿名化されます。

テーブルでDDMを設定する方法は次のとおりです:

ALTER TABLE YourTable
ALTER COLUMN SensitiveColumn ADD MASKED WITH (FUNCTION = 'partial(2,"*",0)');

この部分的なマスク関数を使用してSensitiveColumnをマスクし、最初の2文字を表示し、残りの文字をマスクします。

結論

Microsoft SQL Serverのセキュリティを構成するには、ログイン、ユーザー、およびロールの設定から暗号化戦略、監査、およびセキュリティポリシーの実装まで、いくつかの手順が含まれます。利用可能なさまざまなツールと戦略を理解することで、SQL Serverインスタンスに強力なセキュリティアーキテクチャを作成することができます。構成の定期的なレビューと更新により、SQL Serverのセキュリティが新たに出現する脅威に対応できるようにします。

記事の内容に誤りがある場合, あなたは


コメント