編集済み 2 数か月前 によって ExtremeHow 編集チーム
マイクロソフトSQLサーバーセキュリティ設定データベースウィンドウズリナックスITユーザー管理認証サーバー
翻訳が更新されました 2 数か月前
Microsoft SQL Serverは、データの格納、検索、および処理を可能にする人気のあるデータベース管理システムです。しかし、機密データを管理するシステムと同様に、セキュリティは非常に重要です。セキュリティ構成の目的は、不正アクセスからデータを保護し、適切な人々だけがデータを管理する権限を持つようにすることです。この記事では、Microsoft 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は、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)があります。
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へのアクセスをフィルタします。
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のセキュリティが新たに出現する脅威に対応できるようにします。
記事の内容に誤りがある場合, あなたは