Linux版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 セキュリティ識別子(SID)はWindows SYSTEMアカウントに予約されています。 それでも、クロスプラットフォームのスクリプトが成功するように設計されています。
NT AUTHORITY\NETWORK SERVICE なし (互換性のみ) これまでは、Windows 上のいくつかの SQL Server サービスの既定のスタートアップ アカウント。 下位互換性のためにのみ存在します。 SQL Server on Linux データベース エンジン自体では使用されません。

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

mssqlユーザーとmssqlグループ(mssql:mssql)は、/var/opt/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 ツールを使用して SQL Server on Linux を構成する」を参照してください。

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

Purpose 既定のパス 詳細情報
システム データベースとユーザー データベース /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 エージェント ジョブ経由) ディストリビューター ディストリビューション データベース内のdb_owner。スナップショット フォルダーの読み取り/書き込み
ログ リーダー エージェント (Log Reader Agent) mssql パブリッシャーとディストリビューター パブリケーション データベースと配布における db_ownerバックアップから初期化を使う場合はシステム管理者が必要かもしれません
ディストリビューション エージェント (プッシュ) mssql ディストリビューターからサブスクライバーへ ディストリビューション内のdb_owner、サブスクリプション データベース内のdb_owner。 スナップショット フォルダーの読み取り。 PAL メンバー。
配布エージェント (プル) mssql (サブスクリプション内) サブスクライバーからディストリビューター
ディストリビューターからサブスクライバーへ
ディストリビューション エージェント (プッシュ) と同じですが、スナップショット共有のアクセス許可はサブスクライバー ホストに適用されます
マージ エージェント mssql パブリッシャー、ディストリビューター、サブスクライバー ディストリビューションのdb_owner。 PAL メンバー。 スナップショット フォルダーの読み取り。 パブリケーションおよびサブスクリプション データベースの読み取り/書き込み。
キュー リーダー エージェント mssql ディストリビューター ディストリビューションのdb_owner。 パブリケーション データベース内の db_owner を使用して Publisher に接続します。

ベスト プラクティス

SQL Serverが使うmssqlユーザーとグループはデフォルトでログイン不要アカウントです。 セキュリティのためにそのままにしておきましょう。 可能な限りSQL Server on LinuxでWindows 認証を使いましょう。 SQL Server on Linux 用に Windows 認証を構成する方法の詳細については、「 チュートリアル: adutil を使用して SQL Server on Linux で Active Directory 認証を構成する」を参照してください。

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

ホストディレクトリやNFS共有をコンテナや仮想マシンにバインドする際は、まずそれらを作成し、その後UID 10001 をマッピングします( mssqlのデフォルト)。

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