Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md']

This commit is contained in:
Translator
2025-02-26 01:02:02 +00:00
parent 89358e1495
commit 83cc7d3833

View File

@@ -4,11 +4,11 @@
## Azure SQL
Azure SQL 是一系列托管、安全和智能的产品,使用 **Azure 云中的 SQL Server 数据库引擎**。这意味着您不必担心服务器的物理管理,可以专注于管理数据。
Azure SQL 是一系列托管、安全和智能的产品,使用 **Azure 云中的 SQL Server 数据库引擎**。这意味着您不必担心服务器的物理管理,可以专注于管理您的数据。
Azure SQL 由四个主要产品组成:
1. **Azure SQL Server**:需要一个服务器来进行 **SQL Server 数据库的部署和管理**
1. **Azure SQL Server**:需要一个服务器来 **部署和管理** SQL Server 数据库。
2. **Azure SQL Database**:这是一个 **完全托管的数据库服务**,允许您在 Azure 云中托管单个数据库。
3. **Azure SQL Managed Instance**:适用于更大规模的整个 SQL Server 实例范围的部署。
4. **Azure SQL Server on Azure VMs**:最适合您希望 **控制操作系统** 和 SQL Server 实例的架构。
@@ -33,37 +33,62 @@ Azure SQL 由四个主要产品组成:
**加密:**
- 这被称为“透明数据加密”,它对数据库、备份和静态日志进行加密。
- 和往常一样,默认使用 Azure 管密钥但也可以使用客户管理的加密密钥CMEK
- 和往常一样,默认使用 Azure 管理的密钥但也可以使用客户管理的加密密钥CMEK
**托管身份:**
- 可以分配系统和用户管理的 MI。
- 用于访问加密密钥(如果使用 CMEK和数据库中的其他服务。
- 有关可以从数据库访问的 Azure 服务的一些示例,请查看 [文档的此页面](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
- 如果分配了多个 UMI可以指明要使用的默认 UMI。
- 可以为跨租户访问配置联合客户端身份。
**Microsoft Defender**
一些从 SQL 数据库访问 blob 存储内部信息的命令:
```sql
-- Create a credential for the managed identity
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO
- 有助于“减轻潜在的数据库漏洞,并检测异常活动”。
- 我们将在自己的课程中讨论 Defender可以在其他多个 Azure 服务中启用)。
-- Create an external data source pointing to the blob storage to access
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://testsqlidentity.blob.core.windows.net/sqlcontainer',
CREDENTIAL = ManagedIdentityCredential
);
GO
**备份:**
-- Read a file from ths storage and return it
SELECT *
FROM OPENROWSET(
BULK 'message.txt',
DATA_SOURCE = 'ManagedIdentity',
SINGLE_CLOB
) AS DataFile;
GO
```
**Microsoft Defender:**
- 有助于“减轻潜在数据库漏洞,并检测异常活动”
- 我们将在单独的课程中讨论 Defender它可以在其他多个 Azure 服务中启用)
**备份:**
- 备份频率在保留策略中管理。
**已删除的数据库**
**已删除的数据库:**
- 可以从现有备份中恢复已删除的数据库。
## Azure SQL Database
## Azure SQL 数据库
**Azure SQL Database** 是一个 **完全托管的数据库平台即服务 (PaaS)**,提供可扩展和安全的关系数据库解决方案。它基于最新的 SQL Server 技术,消除了基础设施管理的需要,使其成为基于云的应用程序的热门选择。
**Azure SQL 数据库** 是一个 **完全托管的数据库平台即服务 (PaaS)**,提供可扩展和安全的关系数据库解决方案。它基于最新的 SQL Server 技术,消除了基础设施管理的需要,使其成为基于云的应用程序的热门选择。
要创建 SQL 数据库,需要指明将要托管的 SQL 服务器。
### SQL 数据库安全特性
### SQL 数据库安全功能
- **始终保持最新**:运行在最新的稳定版本的 SQL Server 上,并自动接收新功能和补丁。
- **继承的 SQL Server 安全特性**
- 身份验证SQL 和/或 Entra ID
- **继承的 SQL Server 安全功能**
- 身份验证 (SQL 和/或 Entra ID)
- 分配的托管身份
- 网络限制
- 加密
@@ -72,26 +97,26 @@ Azure SQL 由四个主要产品组成:
- **数据冗余:** 选项包括本地、区域、地理或地理区域冗余。
- **分类账:** 它通过加密验证数据的完整性,确保任何篡改都能被检测到。对金融、医疗和任何管理敏感数据的组织非常有用。
SQL 数据库可以是 **弹性池** 的一部分。弹性池是通过在多个数据库之间共享可配置的计算eDTUs和存储资源来管理多个数据库的成本效益解决方案,定价仅基于分配的资源,而不是数据库的数量。
SQL 数据库可以是 **弹性池** 的一部分。弹性池是一种经济高效的解决方案,通过在多个数据库之间共享可配置的计算 (eDTUs) 和存储资源来管理多个数据库,定价仅基于分配的资源,而不是数据库的数量。
#### Azure SQL 列级安全(掩码)和行级安全
#### Azure SQL 列级安全 (掩码) 和行级安全
**Azure SQL 的动态** 数据掩码是一项功能,帮助 **通过隐藏敏感信息** 来保护敏感信息。它不会更改实际数据,而是动态掩盖显示的数据,确保诸如信用卡号码敏感细节被遮蔽。
**Azure SQL 的动态** 数据掩码是一项功能,帮助 **通过隐藏敏感信息** **保护敏感信息**。它不会更改实际数据,而是动态掩盖显示的数据,确保信用卡号码这样的敏感细节被遮蔽。
**动态数据掩码** 影响所有用户,除了未掩盖的用户(这些用户需要被指明)和管理员。它具有配置选项,指定哪些 SQL 用户可以免于动态数据掩码,**管理员始终被排除在外**。
**动态数据掩码** 影响所有用户,除了未掩盖的用户(这些用户需要被指明)和管理员。它具有配置选项,指定哪些 SQL 用户免于动态数据掩码,**管理员始终被排除在外**。
**Azure SQL 行级安全 (RLS)** 是一项功能,**控制用户可以查看或修改哪些行**,确保每个用户仅查看与其相关的数据。通过创建带有过滤或阻止谓词的安全策略,组织可以在数据库级别实施细粒度访问控制。
**Azure SQL 行级安全 (RLS)** 是一项功能,**控制用户可以查看或修改哪些行**,确保每个用户仅看到与他们相关的数据。通过创建带有过滤或阻止谓词的安全策略,组织可以在数据库级别实施细粒度访问控制。
### Azure SQL Managed Instance
### Azure SQL 托管实例
**Azure SQL Managed Instances** 适用于更大规模的整个 SQL Server 实例范围的部署。它提供与最新的 SQL Server 本地(企业版)数据库引擎近 100% 的兼容性,提供本地虚拟网络 (VNet) 实现,解决常见的安全问题,并为本地 SQL Server 客户提供有利的商业模式。
**Azure SQL 托管实例** 适用于更大规模的整个 SQL Server 实例范围的部署。它提供与最新的 SQL Server 本地(企业版)数据库引擎近 100% 的兼容性,提供本地虚拟网络 (VNet) 实现,解决常见的安全问题,并为本地 SQL Server 客户提供有利的商业模式。
### Azure SQL 虚拟机
**Azure SQL 虚拟机** 允许 **控制操作系统** 和 SQL Server 实例,因为将在运行 SQL Server 的 VM 服务中生成一个 VM
**Azure SQL 虚拟机** 允许 **控制操作系统** 和 SQL Server 实例,因为虚拟机将在运行 SQL Server 的虚拟机服务中生成。
创建 SQL 虚拟机时,可以 **选择 VM 的所有设置**(如 VM 课程中所示),该 VM 将托管 SQL Server。
- 这意味着 VM 将访问某些 VNet可能会有 **附加的托管身份**,可以挂载文件共享……使得 **从 SQL 到 VM 的跳板** 非常有趣。
创建 SQL 虚拟机时,可以 **选择虚拟机的所有设置**(如虚拟机课程中所示),这些设置将托管 SQL Server。
- 这意味着虚拟机将访问某些 VNet可能会有 **附加的托管身份**,可以挂载文件共享……使得 **从 SQL 到虚拟机的跳板** 非常有趣。
- 此外,可以配置应用 ID 和密钥,以 **允许 SQL 访问特定的密钥保管库**,该保管库可能包含敏感信息。
还可以配置诸如 **自动 SQL 更新**、**自动备份**、**Entra ID 身份验证** 和其他 SQL 服务的大多数功能。
@@ -305,7 +330,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
### 持久性
{{#ref}}
../az-persistence/az-sql-persistance.md
../az-persistence/az-sql-persistence.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}