You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/sql-database/sql-database-security-best-practice.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,14 +84,14 @@ Central identity management offers the following benefits:
84
84
85
85
- Create an Azure AD tenant and [create users](../active-directory/fundamentals/add-users-azure-active-directory.md) to represent human users and create [service principals](../active-directory/develop/app-objects-and-service-principals.md) to represent apps, services, and automation tools. Service principals are equivalent to service accounts in Windows and Linux.
86
86
87
-
- Assign access rights to resources to Azure AD principals via group assignment: Create Azure AD groups, grant access to groups, and add individual members to the groups. In your database, create contained database users that map your Azure AD groups. To assign permissions inside the database, put users in database roles with the appropriate permissions.
87
+
- Assign access rights to resources to Azure AD principals via group assignment: Create Azure AD groups, grant access to groups, and add individual members to the groups. In your database, create contained database users that map your Azure AD groups. To assign permissions inside the database, put the users that are associated with your Azure AD groups in database roles with the appropriate permissions.
88
88
- See the articles, [Configure and manage Azure Active Directory authentication with SQL](sql-database-aad-authentication-configure.md) and [Use Azure AD for authentication with SQL](sql-database-aad-authentication.md).
89
89
> [!NOTE]
90
90
> In a managed instance, you can also create logins that map to Azure AD principals in the master database. See [CREATE LOGIN (Transact-SQL)](https://docs.microsoft.com/sql/t-sql/statements/create-login-transact-sql?view=azuresqldb-mi-current).
91
91
92
92
- Using Azure AD groups simplifies permission management and both the group owner, and the resource owner can add/remove members to/from the group.
93
93
94
-
- Create a separate group for Azure AD administrator for SQL DB servers.
94
+
- Create a separate group for Azure AD administrators for each SQL DB server.
95
95
96
96
- See the article, [Provision an Azure Active Directory administrator for your Azure SQL Database server](sql-database-aad-authentication-configure.md#provision-an-azure-active-directory-administrator-for-your-azure-sql-database-server).
97
97
@@ -103,7 +103,7 @@ Central identity management offers the following benefits:
103
103
> [!NOTE]
104
104
> - Azure AD authentication is recorded in Azure SQL audit logs, but not in Azure AD sign-in logs.
105
105
> - RBAC permissions granted in Azure do not apply to Azure SQL DB permissions. Such permissions must be created/mapped manually in SQL DB using existing SQL permissions.
106
-
> - On the client-side Azure AD authentication needs access to the internet or via User Defined Route (UDR) to a VNet.
106
+
> - On the client-side, Azure AD authentication needs access to the internet or via User Defined Route (UDR) to a VNet.
107
107
> - The Azure AD access token is cached on the client side and its lifetime depends on token configuration. See the article, [Configurable token lifetimes in Azure Active Directory](../active-directory/develop/active-directory-configurable-token-lifetimes.md)
108
108
> - For guidance on troubleshooting Azure AD Authentication issues, see the following blog: <https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991>
109
109
@@ -208,7 +208,7 @@ SQL authentication refers to the authentication of a user when connecting to Azu
208
208
209
209
## Access management
210
210
211
-
Access management is the process of controlling and managing authorized users' access and privileges to Azure SQL Database.
211
+
Access management (also called Authorization) is the process of controlling and managing authorized users' access and privileges to Azure SQL Database.
212
212
213
213
### Implement principle of least privilege
214
214
@@ -220,7 +220,7 @@ The principle of least privilege states that users shouldn't have more privilege
220
220
221
221
Assign only the necessary [permissions](https://docs.microsoft.com/sql/relational-databases/security/permissions-database-engine) to complete the required tasks:
222
222
223
-
- In SQL Data Plane:
223
+
- In SQL Databases:
224
224
- Use granular permissions and user-defined database roles (or server-roles in MI):
@@ -289,7 +289,7 @@ Separation of Duties, also called Segregation of Duties describes the requiremen
289
289
- Create Server roles for server-wide tasks (creating new logins, databases) in a managed instance.
290
290
- Create Database Roles for database-level tasks.
291
291
292
-
- For certain sensitive tasks, consider creating special stored procedures signed by a certificate to execute the tasks on behalf of the users.
292
+
- For certain sensitive tasks, consider creating special stored procedures signed by a certificate to execute the tasks on behalf of the users. One important advantage of digitally signed stored procedures is that if the procedure is changed, the permissions that were granted to the previous version of the procedure are immediately removed.
293
293
- Example: [Tutorial: Signing Stored Procedures with a Certificate](https://docs.microsoft.com/sql/relational-databases/tutorial-signing-stored-procedures-with-a-certificate)
294
294
295
295
- Implement Transparent Data Encryption (TDE) with customer-managed keys in Azure Key Vault to enable Separation of Duties between data owner and security owner.
@@ -298,7 +298,7 @@ Separation of Duties, also called Segregation of Duties describes the requiremen
298
298
- To ensure that a DBA can't see data that is considered highly sensitive and can still do DBA tasks, you can use Always Encrypted with role separation.
299
299
- See the articles, [Overview of Key Management for Always Encrypted](https://docs.microsoft.com/sql/relational-databases/security/encryption/overview-of-key-management-for-always-encrypted), [Key Provisioning with Role Separation](https://docs.microsoft.com/sql/relational-databases/security/encryption/configure-always-encrypted-keys-using-powershell#KeyProvisionWithRoles), and [Column Master Key Rotation with Role Separation](https://docs.microsoft.com/sql/relational-databases/security/encryption/rotate-always-encrypted-keys-using-powershell#column-master-key-rotation-with-role-separation).
300
300
301
-
- In cases when it isn't feasibleat least not without major costs and efforts that may render the system near unusable, compromises can be made and mitigated through the use of compensating controls such as:
301
+
- In cases where the use of Always Encrypted isn't feasible, or at least not without major costs and efforts that may even render the system near unusable, compromises can be made and mitigated through the use of compensating controls such as:
302
302
- Human intervention in processes.
303
303
- Audit trails – for more information on Auditing, see, [Audit critical security events](#audit-critical-security-events).
304
304
@@ -310,17 +310,17 @@ Separation of Duties, also called Segregation of Duties describes the requiremen
310
310
311
311
- Use built-in roles when the permissions match exactly the needed permissions – if the union of all permissions from multiple built-in roles leads to a 100% match, you can assign multiple roles concurrently as well.
312
312
313
-
- Create and use custom roles when built-in roles grant too many permissions or insufficient permissions.
313
+
- Create and use user-defined roles when built-in roles grant too many permissions or insufficient permissions.
314
314
315
315
- Role assignments can also be done temporarily, also known as Dynamic Separation of Duties (DSD), either within SQL Agent Job steps in T-SQL or using Azure PIM for RBAC roles.
316
316
317
-
- Make sure that DBAs don't have access to the encryption keys or key stores and Security Administrators with access to the keys have no access to the database in turn.
317
+
- Make sure that DBAs don't have access to the encryption keys or key stores, and that Security Administrators with access to the keys have no access to the database in turn. The use of [Extensible Key Management (EKM)](https://docs.microsoft.com/sql/relational-databases/security/encryption/extensible-key-management-ekm) can make this separation easier to achieve. [Azure Key Vault](https://azure.microsoft.com/services/key-vault/) can be used to implement EKM.
318
318
319
319
- Always make sure to have an Audit trail for security-related actions.
320
320
321
321
- You can retrieve the definition of the built-in RBAC roles to see the permissions used and create a custom role based on excerpts and cumulations of these via PowerShell.
322
322
323
-
-Since any member of the db_owner database role can change security settings like Transparent Data Encryption (TDE), or change the SLO, this membership should be granted with care. However, there are many tasks that require db_owner privileges. Task like changing any database setting such as changing DB options. Auditing plays a key role in any solution.
323
+
-Because any member of the db_owner database role can change security settings like Transparent Data Encryption (TDE), or change the SLO, this membership should be granted with care. However, there are many tasks that require db_owner privileges. Task like changing any database setting such as changing DB options. Auditing plays a key role in any solution.
324
324
325
325
- It is not possible to restrict permissions of a db_owner, and therefore prevent an administrative account from viewing user data. If there's highly sensitive data in a database, Always Encrypted can be used to safely prevent db_owners or any other DBA from viewing it.
326
326
@@ -397,7 +397,7 @@ Encryption at rest is the cryptographic protection of data when it is persisted
397
397
398
398
**Best practices**:
399
399
400
-
- Don't store data that require encryption-at-rest in the master database. The master database can't be encrypted with TDE.
400
+
- Don't store data that requires encryption-at-rest in the master database. The master database can't be encrypted with TDE.
401
401
402
402
- Use customer-managed keys in Azure Key Vault if you need increased transparency and granular control over the TDE protection. Azure Key Vault allows the ability to revoke permissions at any time to render the database inaccessible. You can centrally manage TDE protectors along with other keys, or rotate the TDE protector at your own schedule using Azure Key Vault.
403
403
@@ -431,11 +431,11 @@ The policies that determine which data is sensitive and whether the sensitive da
431
431
432
432
- Use deterministic encryption if computations (equality) on data need to be supported. Otherwise, use randomized encryption. Avoid using deterministic encryption for low-entropy data sets, or data sets with publicly known distribution.
433
433
434
-
- If you're concerned about third-party accessing your data legally without your consent, ensure that all application and tools that have access to the keys and data in plaintext run outside of Microsoft Azure Cloud. Without access to the keys, the third party will have no way of decrypting the data unless they bypass the encryption.
434
+
- If you're concerned about third parties accessing your data legally without your consent, ensure that all application and tools that have access to the keys and data in plaintext run outside of Microsoft Azure Cloud. Without access to the keys, the third party will have no way of decrypting the data unless they bypass the encryption.
435
435
436
436
- Always Encrypted doesn't easily support granting temporary access to the keys (and the protected data). For example, if you need to share the keys with a DBA to allow the DBA to do some cleansing operations on sensitive and encrypted data. The only way to reliability revoke the access to the data from the DBA will be to rotate both the column encryption keys and the column master keys protecting the data, which is an expensive operation.
437
437
438
-
- To access the plaintext values in encrypted columns, a user needs to have access to the CMK that protects columns, which is configured in the key store holding the CMK. The user also needs to have the **VIEW ANY COLUMN MASTER KEY DEFINITION** and **VIEW ANY COLUMN ENCRYPTION KEY DEFINITION** database permissions.
438
+
- To access the plaintext values in encrypted columns, a user needs to have access to the Column Master Key (CMK) that protects columns, which is configured in the key store holding the CMK. The user also needs to have the **VIEW ANY COLUMN MASTER KEY DEFINITION** and **VIEW ANY COLUMN ENCRYPTION KEY DEFINITION** database permissions.
439
439
440
440
### Control access of application users to sensitive data through encryption
Copy file name to clipboardExpand all lines: articles/storage/common/storage-network-security.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -248,7 +248,7 @@ IP network rules are only allowed for **public internet** IP addresses. IP addre
248
248
> IP network rules have no effect on requests originating from the same Azure region as the storage account. Use [Virtual network rules](#grant-access-from-a-virtual-network) to allow same-region requests.
249
249
250
250
> [!NOTE]
251
-
> Services deployed in the same region as the storage account use private Azure IP addresses for communication. Thus, you cannot restrict access to specific Azure services based on their public inbound IP address range.
251
+
> Services deployed in the same region as the storage account use private Azure IP addresses for communication. Thus, you cannot restrict access to specific Azure services based on their public outbound IP address range.
252
252
253
253
Only IPV4 addresses are supported for configuration of storage firewall rules.
0 commit comments