この記事では、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 |
sysadmin (固定ロールなし) | これまでは、Windows 上のいくつかの SQL Server サービスの既定のスタートアップ アカウント。 下位互換性のためにのみ存在します。 SQL Server on Linux データベース エンジン自体では使用されません。 |
ファイルとディレクトリの所有権
フォルダー /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 ツールを使用して SQL Server on Linux を構成する」を参照してください。
一般的な SQL Server ディレクトリ
| 目的 | 既定のパス | 詳細 |
|---|---|---|
| システム データベースとユーザー データベース | /var/opt/mssql/data |
master、model、tempdb、および 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 (サブスクリプション内) |
ディストリビューターへのサブスクライバー ディストリビューターからサブスクライバーへ |
ディストリビューション エージェント (プッシュ) と同じですが、スナップショット共有のアクセス許可はサブスクライバー ホストに適用されます |
| マージ エージェント | mssql |
パブリッシャー、ディストリビューター、サブスクライバー | ディストリビューションのdb_owner。 PAL メンバー。 スナップショット フォルダーの読み取り。 パブリケーションおよびサブスクリプション データベースの読み取り/書き込み。 |
| キュー リーダー エージェント | mssql |
Distributor | ディストリビューションの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 アカウントを無効にする」を参照してください。