次の方法で共有


SQL Server on Linux - セキュリティとアクセス許可のガイド

この記事では、SQL Server on Linuxに必要なサービス アカウントとファイル システムのアクセス許可について説明します。 Windows上のSQL Serverのアクセス許可に関する詳細については、「Windowsサービスアカウントとアクセス許可の構成」を参照してください。

組み込みのWindows プリンシパル

SQL Server on Linuxは mssql オペレーティング システム アカウントで実行されますが、互換性のために、SQL Server レイヤーには次のWindows プリンシパルが存在します。 リスクを完全に理解していない限り、それらを削除または拒否しないでください。

校長 既定のSQL Server ロール 詳細
BUILTIN\Administrators の sysadmin ホストのルート レベルの管理者にマップされます。 特定のシステム オブジェクトは、このアカウントのコンテキストで実行されます。
NT AUTHORITY\SYSTEM public Windows SYSTEM アカウント用に予約されたサービス識別子 (SID)。 それでも、クロスプラットフォーム スクリプトが期待通りに成功するように作成されています。
NT AUTHORITY\NETWORK SERVICE なし (互換性のみ) これまでは、Windows上のいくつかのSQL Server サービスの既定のスタートアップ アカウント。 下位互換性のためにのみ存在します。 SQL Server on Linux Database Engine自体では使用されません。

ファイルとディレクトリの所有権

フォルダー /var/opt/mssql の下にあるすべてのファイルは、 mssql ユーザーと mssql グループ (mssql:mssql) によって所有され、両方に対して読み取りアクセスと書き込みアクセスが許可されている必要があります。 既定の umask (0022) を変更する場合、または別のマウント ポイントを使用する場合は、これらのアクセス許可を手動で再適用する必要があります。

mssql フォルダーの既定のアクセス許可は次のとおりです。

drwxr-xr-x  3 root  root  4096 May 14 17:17 ./
drwxr-xr-x 13 root  root  4096 Jan  7  2025 ../
drwxrwx---  7 mssql mssql 4096 May 14 17:17 mssql/

mssql フォルダーの内容に対する既定のアクセス許可は次のとおりです。

drwxrwx--- 7 mssql mssql 4096 May 14 17:17 ./
drwxr-xr-x 3 root  root  4096 May 14 17:17 ../
drwxr-xr-x 5 mssql mssql 4096 May 14 17:17 .system/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 data/
drwxr-xr-x 3 mssql mssql 4096 Sep 16 22:57 log/
-rw-r--r-- 1 root  root    85 May 14 17:17 mssql.conf
drwxrwxr-x 2 mssql mssql 4096 May 14 17:17 secrets/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 security/

ユーザー データの場所、ログ ファイルの場所、またはシステム データベースとログの場所を変更する方法の詳細については、mssql-conf ツールを使用した Configure SQL Server on Linuxを参照してください。

一般的なSQL Server ディレクトリ

目的 既定のパス 詳細
システム データベースとユーザー データベース /var/opt/mssql/data mastermodeltempdb、および mssql-conf によってリダイレクトされない限り、新しいデータベースが含まれます。 詳細については、「 システム データベースの既定の場所を変更する」を参照してください。
トランザクション ログ (分離されている場合) /var/opt/mssql/dataまたは、 mssql-conf set filelocation.defaultlogdirを介して設定されたパス。 トランザクション ログを移動する場合は、同じ所有権を保持します。 詳細については、「 既定のデータまたはログ ディレクトリの場所を変更する」を参照してください。
Backups /var/opt/mssql/data 最初のバックアップの前、またはボリュームまたはディレクトリのマッピング時に、 chown を使用して作成および設定します。 詳細については、「 既定のバックアップ ディレクトリの場所を変更する」を参照してください。
エラー ログと拡張イベント (XE) ログ /var/opt/mssql/log また、デフォルトのシステムの健全性XEセッションもホストします。 詳細については、「 既定のエラー ログ ファイルのディレクトリの場所を変更する」を参照してください。
メモリダンプ /var/opt/mssql/log コア ダンプと DBCC CHECK* ダンプに使用されます。 詳細については、「 既定のダンプ ディレクトリの場所を変更する」を参照してください。
セキュリティ シークレット /var/opt/mssql/secrets TLS 証明書、列マスター キーなどを格納します。

各エージェントの最小SQL Server ロール

Agent Linux環境で実行される 接続先 必要なデータベース ロール/権限
スナップショット エージェント mssql (SQL エージェント ジョブ経由) Distributor ディストリビューション データベース内のdb_owner。スナップショット フォルダーの読み取り/書き込み
ログ リーダー エージェント (Log Reader Agent) mssql 出版社およびディストリビューター パブリケーション データベースと配布におけるdb_owner。 バックアップからの初期化を使用するときに sysadmin が必要になる場合がある
ディストリビューション エージェント(プッシュ) mssql ディストリビューターからサブスクライバーへ ディストリビューション内のdb_owner、サブスクリプション データベース内のdb_owner。 スナップショット フォルダーの読み取り。 PAL メンバー。
配布エージェント (プル) mssql (サブスクリプション内) ディストリビューターへのサブスクライバー
ディストリビューターからサブスクライバーへ
Distribution Agent (プッシュ) と同じですが、スナップショット共有のアクセス許可はサブスクライバー ホストに適用されます
マージ エージェント mssql Publisher、ディストリビューター、サブスクライバー ディストリビューションのdb_owner。 PAL メンバー。 スナップショット フォルダーの読み取り。 パブリケーションおよびサブスクリプション データベースの読み取り/書き込み。
キュー リーダー エージェント mssql Distributor ディストリビューションのdb_owner。 パブリケーション データベース内の db_owner を使用してPublisherに接続します。

ベスト プラクティス

SQL Serverによって使用される mssql ユーザーとグループは、既定では非ログイン アカウントであり、そのように保持する必要があります。 セキュリティ上の理由から、可能な限りSQL Server on LinuxにWindows authenticationを使用してください。 SQL Server on LinuxのWindows authenticationを構成する方法の詳細については、「Tutorial: adutil を使用して SQL Server on Linuxを参照してください。

ディレクトリにグループ アクセスが必要ない場合は常に、(コマンド chmod 700を使用して) ファイルのアクセス許可をさらに制限します。

ホスト ディレクトリまたは NFS 共有をコンテナーまたは仮想マシンにバインドする場合は、最初にそれらを作成し、UID 10001 ( mssql の既定値) をマップします。

アプリケーション ログインに sysadmin を許可しないようにします。 代わりに詳細なロールとEXECUTE ASラッパーを使用します。 別の sa アカウントを作成したら、 アカウントを無効にするか、名前を変更します。 詳細については、「 ベスト プラクティスとして SA アカウントを無効にする」を参照してください。