Root squash 功能是一项安全功能,可防止客户端上具有 root 权限的用户访问远程管理的 Lustre 文件系统上的文件。 此功能通过使用 Lustre nodemap 功能来实现,是保护用户数据和系统设置免受不受信任或受损客户端行为的重要部分。
本文介绍如何为 Azure 托管的 Lustre 文件系统配置根用户压缩。 可以在创建群集时通过 REST API 请求或为现有群集配置根用户映射设置。
先决条件
- 一份 Azure 订阅。 如果没有 Azure 订阅,可在开始前创建一个试用帐户。
根用户压缩设置
下表详细介绍了可用于 REST API 版本 2024-03-01 及更高版本的属性的可用参数 rootSquashSettings :
| 参数 | 价值观 | 类型 | Description |
|---|---|---|---|
mode |
RootOnly、All、None |
String |
RootOnly:仅影响不受信任的系统上的 根 用户。 文件中的 UID 和 GID 分别被压缩到提供的 squashUID UID 和 squashGIDGID。All:影响不受信任的系统上 的所有用户 。 文件的 UID 和 GID 被重置为提供的 squashUID 和 squashGID。
None (默认值):禁用 root squash 功能,这样不会对任何系统上的任何用户进行 UID 和 GID 的转换。 |
noSquashNidLists |
String | 添加到受信任系统的网络 ID (NID) IP 地址列表。 | |
squashUID |
1 - 4294967295 | Integer | 用户 ID (UID) 被挤压到的数值。 |
squashGID |
1 - 4294967295 | Integer | 组 ID(GID)被压缩为的数值。 |
status |
String | 文件系统的SquashFS状态。 |
如果需要将非连续 IP 地址添加为受信任的系统,则可以在参数中 noSquashNidLists 提供以分号分隔的 IP 地址列表,如以下示例所示:
"noSquashNidLists": "10.0.2.4@tcp;10.0.2.[6-8]@tcp;10.0.2.10@tcp",
在创建群集期间启用 root squash
在创建 Azure 托管 Lustre 文件系统时,可以在群集创建期间启用 root squash 功能。
若要在创建群集期间启用根压缩,请执行以下步骤:
- 确定适用于您的群集的根用户降权设置。 有关详细信息,请参阅 Root squash 设置。
-
PUT使用请求创建群集,并在请求正文的rootSquashSettings节中包含properties所需的值。
以下示例演示如何创建启用了根权限压制的集群:
请求语法:
PUT https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorageCache/amlFilesystems/{filesystemName}?api-version={apiVersion}
请求正文:
"properties": {
"rootSquashSettings": {
"mode": "RootOnly",
"noSquashNidLists": "10.0.2.4@tcp",
"squashUID": 1000,
"squashGID": 1000
},
}
查看现有集群的root squash设置
可以查看现有 Azure 托管 Lustre 文件系统的根 squash 设置。 若要查看现有群集的根压缩设置,请执行以下步骤:
-
GET使用请求返回现有群集的配置详细信息。
以下示例演示如何返回现有群集:
请求语法:
GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorageCache/amlFilesystems/{filesystemName}?api-version={apiVersion}
在响应正文中,找到 rootSquashSettings 属性以查看群集的当前 root squash 设置。
更改现有群集的根账户权限限制设置
可以更改现有的 Azure 托管 Lustre 文件系统的根目录压缩设置。 " 若要修改现有集群的根用户限制配置,请按照以下步骤操作:
- 决定要更改或启用现有群集的 root squash 设置。 有关详细信息,请参阅 Root squash 设置。
- 使用请求
PATCH修改现有群集,并在请求正文的rootSquashSettings部分中包含所需的properties值。 此操作将覆盖任何现有的根压碎设置,因此请确保在请求中提供所有设置PATCH。
假设需要向参数添加新的 IP 地址范围 noSquashNidLists 。 以下示例演示如何更新现有群集,以向参数添加新的 IP 地址范围 noSquashNidLists :
请求语法:
PATCH https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorageCache/amlFilesystems/{filesystemName}?api-version={apiVersion}
请求正文:
"properties": {
"rootSquashSettings": {
"mode": "RootOnly",
"noSquashNidLists": "10.0.2.4@tcp;10.0.2.[6-8]@tcp",
"squashUID": 1000,
"squashGID": 1000
},
}
在此示例中,即使 mode、squashUID 和 squashGID 参数未更改,也必须在 PATCH 请求正文中包含它们,以避免这些值被覆盖。
为现有集群禁用root squash
可以为现有的 Azure 管理的 Lustre 文件系统禁用 root squash 功能。 若要关闭现有群集的根压缩,请执行以下步骤:
- 使用
PATCH请求修改现有群集,并在请求正文的mode部分将None参数设置为properties。 不需要其他参数。
以下示例演示如何为现有群集禁用根 squash:
请求语法:
PATCH https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorageCache/amlFilesystems/{filesystemName}?api-version={apiVersion}
请求正文:
"properties": {
"rootSquashSettings": {
"mode": "None"
},
}
后续步骤
若要详细了解 Azure 托管 Lustre,请参阅以下文章: