Skip to content

Commit 904746f

Browse files
Linux: Updated security overview and RHEL 10 commands (#35616)
* Linux: Updated security overview and RHEL 10 commands * PR review: Fix grammar and phrasing in availability group guide Acrolinx fixes: Corrected minor grammatical errors and improved consistency in phrasing. --------- Co-authored-by: Anna Huff <v-annahuff@microsoft.com>
1 parent 002d956 commit 904746f

2 files changed

Lines changed: 95 additions & 20 deletions

File tree

docs/linux/sql-server-linux-availability-group-cluster-pacemaker.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Learn to create a three-node cluster on Red Hat, SUSE, or Ubuntu, a
44
author: rwestMSFT
55
ms.author: randolphwest
66
ms.reviewer: amitkh-msft
7-
ms.date: 10/20/2025
7+
ms.date: 11/24/2025
88
ms.service: sql
99
ms.subservice: linux
1010
ms.topic: how-to
@@ -75,6 +75,13 @@ Each node in the cluster must have an appropriate subscription for RHEL and the
7575
sudo subscription-manager list --available
7676
```
7777

78+
> [!NOTE]
79+
> For **RHEL 10**, the list command is as follows:
80+
>
81+
> ```bash
82+
> sudo subscription-manager repos --list
83+
> ```
84+
7885
From the list of available pools, note the pool ID for the high availability subscription.
7986
8087
1. Update the following script. Replace `<pool id>` with the pool ID for high availability from the preceding step. Run the script to attach the subscription.
@@ -103,6 +110,12 @@ Each node in the cluster must have an appropriate subscription for RHEL and the
103110
sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
104111
```
105112

113+
**RHEL 10**
114+
115+
```bash
116+
sudo subscription-manager repos --enable=rhel-10-for-x86_64-highavailability-rpms
117+
```
118+
106119
For more information, see [Pacemaker - The Open Source, High Availability Cluster](https://clusterlabs.org/pacemaker/).
107120

108121
After you have configured the subscription, complete the following steps to configure Pacemaker:
@@ -308,13 +321,13 @@ The procedure for creating an availability group for high availability differs b
308321
309322
To complete the following end-to-end scenario, you need three machines to deploy the three nodes cluster. The following steps outline how to configure these servers.
310323
311-
### Setup and configure the operating system on each cluster node
324+
### Set up and configure the operating system on each cluster node
312325
313-
The first step is to configure the operating system on the cluster nodes. For this walk through, use SLES 12 SP3 with a valid subscription for the HA add-on.
326+
The first step is to configure the operating system on the cluster nodes. For this walk-through, use SLES 12 SP3 with a valid subscription for the HA add-on.
314327
315328
#### Install and configure SQL Server service on each cluster node
316329
317-
1. Install and setup [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] service on all nodes. For detailed instructions, see [Installation guidance for SQL Server on Linux](sql-server-linux-setup.md).
330+
1. Install and set up [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] service on all nodes. For detailed instructions, see [Installation guidance for SQL Server on Linux](sql-server-linux-setup.md).
318331
319332
1. Designate one node as primary and other nodes as secondaries. Use these terms throughout this guide.
320333
Lines changed: 78 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,103 @@
11
---
2-
title: Security Limitations for SQL Server on Linux
3-
description: Learn about SQL Server on Linux restrictions, including how using keys stored in Azure Key Vault and extensible Key Management aren't supported.
2+
title: Security Considerations for SQL Server on Linux
3+
description: Learn about SQL Server on Linux security overview, security best practices, restrictions, including how using keys stored in Azure Key Vault and extensible Key Management aren't supported.
44
author: rwestMSFT
55
ms.author: randolphwest
6-
ms.date: 10/14/2025
6+
ms.date: 11/24/2025
77
ms.service: sql
88
ms.subservice: linux
9-
ms.topic: conceptual
9+
ms.topic: article
1010
ms.custom:
1111
- linux-related-content
1212
---
13-
# Security limitations for SQL Server on Linux
13+
# Security considerations for SQL Server on Linux
1414

1515
[!INCLUDE [SQL Server - Linux](../includes/applies-to-version/sql-linux.md)]
1616

17-
[!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux currently has the following limitations:
17+
Securing [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux is an ongoing process because Linux is a heterogeneous and continuously evolving operating system. Our goal is to help our customers improve security incrementally, building on what they already have and refining over time. This page serves as an index of key practices and resources for securing [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux.
1818

19-
- A standard password policy is provided. `MUST_CHANGE` is the only option you can configure. When the `CHECK_POLICY` option is enabled, it enforces only the default policy provided by [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)], and doesn't apply the Windows password policies defined in the Active Directory group policies.
20-
- Extensible Key Management isn't supported in [!INCLUDE [sssql22-md](../includes/sssql22-md.md)] CU 11 and earlier versions. Extensible Key Management is only supported through Azure Key Vault (AKV).
21-
- [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] authentication mode can't be disabled.
22-
- Password expiration is hard-coded to 90 days if you use [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] authentication.
23-
- Using keys stored in the Azure Key Vault isn't supported in [!INCLUDE [sssql22-md](../includes/sssql22-md.md)] CU 11 and earlier versions.
24-
- [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] generates its own self-signed certificate for encrypting connections. [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] can be configured to use a user provided certificate for TLS.
25-
- SQL Server on Linux deployments aren't FIPS compliant.
19+
## Begin with a secure Linux system
20+
21+
This article assumes that you deployed [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on a hardened and secured Linux system. Security measures vary by Linux distribution. For more information, see [Get started with SQL Server on SELinux](sql-server-linux-security-selinux.md).
22+
23+
Security practices vary based on the Linux distribution you're using. For detailed guidance, contact your distribution provider and review their recommended best practices. You can also refer to documentation such as:
24+
25+
- [Red Hat Enterprise Linux security hardening](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/index)
26+
- [Ubuntu: Security suggestions](https://documentation.ubuntu.com/server/explanation/security/security_suggestions/)
27+
28+
Always validate your chosen platform and configuration in a controlled test environment before deploying to production.
29+
30+
## Apply SQL Server security guidance
31+
32+
[!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux offers a robust security framework combining multiple layers of protection.
33+
34+
- Create accounts and database users under the principle of least privilege.
35+
36+
- Use advanced features like row-level security and dynamic data masking for granular access control.
37+
38+
- File system security is enforced through strict ownership and permissions under `/var/opt/mssql`, ensuring only the `mssql` user and group have appropriate access.
39+
40+
- For enterprise integration, Active Directory authentication enables Kerberos-based single sign-on (SSO), centralized password policies, and group-based access management.
41+
42+
- Encrypted connections safeguard data in transit using TLS, with options for server or client-initiated encryption, and support for certificates that meet industry standards.
43+
44+
Together, these capabilities deliver a comprehensive approach to securing [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] deployments on Linux. Review and implement recommendations from these key resources:
45+
46+
- [Walkthrough for the security features of SQL Server on Linux](sql-server-linux-security-get-started.md)
47+
- [SQL Server on Linux - Security and permissions guide](sql-server-linux-security-permissions-guide.md)
48+
- [Active Directory authentication for SQL Server on Linux](sql-server-linux-active-directory-auth-overview.md)
49+
- [Tutorial: Use adutil to configure Active Directory authentication with SQL Server on Linux](sql-server-linux-ad-auth-adutil-tutorial.md)
50+
- [Encrypt connections to SQL Server on Linux](sql-server-linux-encrypted-connections.md)
51+
52+
## SQL Server auditing on Linux
2653

27-
> [!NOTE]
28-
> If you don't plan to connect your [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] containers to Windows Active Directory, the password expiration is hard-coded to 90 days, if you use [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] authentication only. To work around this issue, consider changing the [CHECK_EXPIRATION policy](../t-sql/statements/alter-login-transact-sql.md).
54+
[!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux supports the built-in [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] Audit feature, enabling you to track and log server-level and database-level events for compliance and security monitoring.
2955

30-
For more information about security features available in [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)], see the [Security for SQL Server Database Engine and Azure SQL Database](../relational-databases/security/security-center-for-sql-server-database-engine-and-azure-sql-database.md).
56+
- [Create a Server Audit and Server Audit Specification](../relational-databases/security/auditing/create-a-server-audit-and-server-audit-specification.md)
57+
58+
## Common best practices
59+
60+
- Regularly update the Linux operating system and [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)].
61+
- Dedicate production servers exclusively to [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] workloads.
62+
- Apply the [principle of least privilege](https://techcommunity.microsoft.com/blog/azuresqlblog/security-the-principle-of-least-privilege-polp/2067390) for accounts and services.
63+
- [Disable the SA account as a best practice](#disable-the-sa-account-as-a-best-practice).
64+
65+
For common security best practices on Windows and Linux, refer to [SQL Server security best practices](../relational-databases/security/sql-server-security-best-practices.md)
3166

3267
## Disable the SA account as a best practice
3368

3469
[!INCLUDE [connect-with-sa](includes/connect-with-sa.md)]
3570

71+
## Security limitations for SQL Server on Linux
72+
73+
[!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux currently has the following limitations:
74+
75+
- Starting with [!INCLUDE [sssql25-md](../includes/sssql25-md.md)] on Linux, you can enforce custom password policy. For more information, see [Set custom password policy for SQL logins in SQL Server on Linux](sql-server-linux-custom-password-policy.md).
76+
77+
In [!INCLUDE [sssql22-md](../includes/sssql22-md.md)] on Linux and earlier versions, we provide a standard password policy:
78+
79+
- `MUST_CHANGE` is the only option you can configure.
80+
81+
- With the `CHECK_POLICY` option enabled, only the default policy provided by [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] is enforced, and doesn't apply the Windows password policies defined in the Active Directory group policies.
82+
83+
- Password expiration is hard-coded to 90 days if you use [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] authentication. To work around this issue, consider changing the [ALTER LOGIN](../t-sql/statements/alter-login-transact-sql.md).
84+
85+
- Extensible Key Management (EKM) is only supported through Azure Key Vault (AKV) in [!INCLUDE [sssql22-md](../includes/sssql22-md.md)] CU12 onward, and isn't available in earlier versions. Third party EKM providers aren't supported for [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux operating systems.
86+
87+
- [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] authentication mode can't be disabled.
88+
89+
- [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] generates its own self-signed certificate for encrypting connections. You can configure [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] to use a user-provided certificate for TLS.
90+
91+
- [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux deployments aren't FIPS compliant.
92+
93+
## Secure SQL Server on Linux Container Deployments
94+
95+
For information about securing [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] containers, see [Secure SQL Server Linux containers](sql-server-linux-docker-container-security.md).
96+
3697
## Related content
3798

3899
- [Walkthrough for the security features of SQL Server on Linux](sql-server-linux-security-get-started.md)
39100
- [SQL Server on Linux - Security and permissions guide](sql-server-linux-security-permissions-guide.md)
40101
- [Configure SQL Server on Linux with the mssql-conf tool](sql-server-linux-configure-mssql-conf.md)
41102
- [Editions and supported features of SQL Server 2022 on Linux](sql-server-linux-editions-and-components-2022.md)
103+
- [Security for SQL Server Database Engine and Azure SQL Database](../relational-databases/security/security-center-for-sql-server-database-engine-and-azure-sql-database.md)

0 commit comments

Comments
 (0)