Managed Lustre 透過根目錄壓縮功能提供 IP 式存取控管。
Root 權限壓縮是一項安全功能,可防止用戶端 VM 的超級使用者取得 Managed Lustre 檔案系統的 Root 權限。當根使用者存取受管理 Lustre 檔案系統時,系統會將其權限「壓縮」為權限較低的使用者。
您可以為新的或現有的 Managed Lustre 執行個體設定 Root Squash。您可以對所有用戶端套用預設的根目錄壓縮設定,也可以為特定用戶端指定自訂規則。
根據預設,受管理 Lustre 執行個體不會設定根目錄壓縮。
安全限制和建議
限制用戶端 VM 的 Root 存取權
限制 Root 存取權的最佳機制,就是從一開始就禁止使用者取得 Root 權限。授予使用者 VM 的 Root 權限可能會導致持續性風險:使用者可能會濫用這些權限建立新的使用者帳戶,或安裝後門程式,以維持對 VM 的持續存取權。如要瞭解如何限制根存取權,請參閱「控管 SSH 登入存取權的最佳做法」。
如果無法禁止使用者在 VM 上擁有 Root 權限,Managed Lustre 的 IP 型存取權控管功能可限制存取 Managed Lustre 執行個體時的 Root 使用者權限。不過,這些存取權檢查是盡力而為,這項功能並非安全保障。您應以虛擬私有雲防火牆規則做為主要安全防護範圍,並確保只有使用受信任 VM 映像檔的受信任用戶端 VM,才能透過網路存取 Managed Lustre 執行個體。詳情請參閱 Google Cloud 安全性最佳做法。
停用 IP 轉送
根據預設,Compute Engine 設定允許執行個體啟用 IP 轉送。為防止使用者透過模擬其他來源 IP 位址規避 Root 權限壓縮政策,您應使用constraints/compute.vmCanIpForward機構政策停用 IP 轉送。如需操作說明,請參閱「建立及管理組織政策」。
設定預設的根目錄壓縮
如要對連線至執行個體的所有用戶端套用 Root 權限壓縮,請指定預設壓縮 UID 和 GID,並將壓縮模式設為 ROOT_SQUASH。UID 和 GID 的常用值為 65534,這會轉譯為 nobody 使用者。
請注意,根據預設,nobody 使用者只能讀取及執行。
只有根使用者和 Owner 群組成員具有檔案系統的寫入權限。
建立執行個體
如要建立具有預設根目錄壓縮功能的執行個體:
gcloud
使用 --default-squash-mode、--default-squash-uid 和 --default-squash-gid 旗標設定預設值:
gcloud lustre instances create INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--network=NETWORK_NAME \
--per-unit-storage-throughput=PER_UNIT_STORAGE_THROUGHPUT \
--capacity-gib=CAPACITY \
--filesystem=FS_NAME \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID
其中:
--default-squash-mode為ROOT_SQUASH。--default-squash-uid和--default-squash-gid指定要轉換根使用者的預設 ID。
如需建立執行個體時可用欄位的完整清單和說明,請參閱 gcloud lustre instances create 參考資料。
REST
如要使用 REST API 建立執行個體,請向下列端點傳送要求,並加入 accessRulesOptions 物件:
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
"filesystem": "FS_NAME",
"perUnitStorageThroughput": "PER_UNIT_STORAGE_THROUGHPUT",
"capacityGib": "CAPACITY_GIB",
"network": "NETWORK",
"accessRulesOptions": {
"defaultSquashMode": "SQUASH_MODE",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
其中:
defaultSquashMode為ROOT_SQUASH。defaultSquashUid和defaultSquashGid是要轉換為超級使用者的使用者和群組 ID 值。
如要瞭解如何使用 REST API 建立執行個體,請參閱 projects.locations.instances.create API 參考資料。
Google Cloud 控制台
您無法使用 Google Cloud 控制台設定根目錄壓縮。
更新執行個體
如要更新現有執行個體,以使用預設的根目錄壓縮功能,請按照下列步驟操作:
gcloud
使用 --default-squash-mode、--default-squash-uid 和 --default-squash-gid 旗標設定預設值:
gcloud lustre instances update INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID
其中:
--default-squash-mode為ROOT_SQUASH。--default-squash-uid和--default-squash-gid指定要將根使用者壓縮至的預設 ID。
REST
如要使用 REST API 更新執行個體,請將 PATCH 要求傳送至特定端點。您必須在 updateMask 中指定 accessRulesOptions:
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN
{
"accessRulesOptions": {
"defaultSquashMode": "ROOT_SQUASH",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
其中:
defaultSquashMode為ROOT_SQUASH。defaultSquashUid和defaultSquashGid是要轉換為超級使用者的使用者和群組 ID 值。
如要進一步瞭解如何更新執行個體,請參閱「管理執行個體」。
Google Cloud 控制台
您無法使用 Google Cloud 控制台設定根目錄壓縮。
設定根目錄壓縮功能 (例外狀況)
如要對特定信任用戶端以外的所有用戶端套用 Root 權限壓縮,請指定存取規則。這項規則會指定要將根使用者壓縮成的預設 UID 和 GID,以及根據 IP 位址或位址範圍,免除特定用戶端壓縮作業的規則。
squash UID 和 GID 的常用值為 65534,這會轉換為 nobody 使用者。請注意,nobody 使用者沒有檔案系統的寫入權限。只有根使用者和 Owner 群組的成員具有讀取、寫入和執行權限。其他使用者只能讀取和執行。
建立執行個體
gcloud
若要建立執行個體,請進行以下操作:
gcloud lustre instances create INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--network=NETWORK_NAME \
--per-unit-storage-throughput=PER_UNIT_STORAGE_THROUGHPUT \
--capacity-gib=CAPACITY \
--filesystem=FS_NAME \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID \
--access-rules=name="ACCESS_RULE_NAME",ipAddressRanges="IP_ADDRESS_OR_CIDR_RANGE",squashMode=NO_SQUASH
其中:
--default-squash-mode為ROOT_SQUASH。--default-squash-uid和--default-squash-gid指定要將根使用者壓縮至的預設 ID。--access-rules指定根壓縮的例外狀況。必須指定下列值:name是這項存取規則的名稱。ipAddressRanges是以半形逗號分隔的清單,包含一或多個不重疊的 IP 位址或 CIDR 範圍。範圍的指定格式如下:192.168.0.0/24。squashMode必須為NO_SQUASH。
如需可用欄位的完整清單和說明,請參閱「建立 Managed Lustre 執行個體」。
REST
如要使用 REST API 建立執行個體,請向下列端點傳送要求,並加入 accessRulesOptions 物件:
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
"filesystem": "FS_NAME",
"perUnitStorageThroughput": "PER_UNIT_STORAGE_THROUGHPUT",
"capacityGib": "CAPACITY_GIB",
"network": "NETWORK",
"accessRulesOptions": {
"accessRules": [
{
"name": "ACCESS_RULE_NAME",
"ipAddressRanges": [
"IP_ADDRESS_OR_CIDR_RANGE_1",
"IP_ADDRESS_OR_CIDR_RANGE_2"
],
"squashMode": "NO_SQUASH"
}
],
"defaultSquashMode": "SQUASH_MODE",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
設定特定存取規則時,必須填寫下列欄位:
name是這項規則的使用者定義名稱。只能使用英數字元和底線 (_),且不得超過 16 個字元。ipAddressRanges是一或多個不重疊的 IP 位址或 CIDR 範圍清單。範圍的指定格式如下:192.168.0.0/24。squashMode一律為NO_SQUASH。defaultSquashMode為ROOT_SQUASH。defaultSquashUid和defaultSquashGid是使用者和群組 ID 值,可將不符合任何特定存取規則的根使用者轉換為這些值。
舉例來說,如要設定預設的根目錄壓縮,但特定 IP 位址範圍和特定 IP 位址的根使用者除外,accessRulesOptions 物件看起來會如下所示:
{
"accessRulesOptions": {
"accessRules": [
{
"name": "dont_squash",
"ipAddressRanges": [
"192.100.1.10",
"192.168.0.0/24"
],
"squashMode": "NO_SQUASH"
}
],
"defaultSquashMode": "ROOT_SQUASH",
"defaultSquashUid": 65534,
"defaultSquashGid": 65534
}
}
如要瞭解如何使用 REST API 建立執行個體,請參閱「建立 Managed Lustre 執行個體」。
Google Cloud 控制台
您無法使用 Google Cloud 控制台設定根目錄壓縮。
更新執行個體
gcloud
如要更新執行個體,請按照下列步驟操作:
gcloud lustre instances update INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID \
--access-rules=name="ACCESS_RULE_NAME",ipAddressRanges="IP_ADDRESS_OR_CIDR_RANGE",squashMode=NO_SQUASH
其中:
--default-squash-mode為ROOT_SQUASH。--default-squash-uid和--default-squash-gid指定要將根使用者壓縮至的預設 ID。--access-rules指定根壓縮的例外狀況。必須指定下列值:name是這項存取規則的名稱。ipAddressRanges是以半形逗號分隔的清單,包含一或多個不重疊的 IP 位址或 CIDR 範圍。範圍的指定格式如下:192.168.0.0/24。squashMode必須為NO_SQUASH。
如要進一步瞭解如何更新執行個體,請參閱「管理執行個體」。
REST
如要使用 REST API 更新執行個體,請將 PATCH 要求傳送至特定端點。您必須在端點網址中,將 accessRulesOptions 指定為 updateMask 的值:
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN
{
"accessRulesOptions": {
"accessRules": [
{
"name": "ACCESS_RULE_NAME",
"ipAddressRanges": [
"IP_ADDRESS_OR_CIDR_RANGE_1",
"IP_ADDRESS_OR_CIDR_RANGE_2"
],
"squashMode": "NO_SQUASH"
}
],
"defaultSquashMode": "SQUASH_MODE",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
如要進一步瞭解如何更新執行個體,請參閱「管理執行個體」。
Google Cloud 控制台
您無法使用 Google Cloud 控制台設定根目錄壓縮。
從執行個體中移除根目錄壓縮
如要從執行個體中移除所有 Root 權限壓縮設定,請更新執行個體以清除存取規則,並將預設模式設為 NO_SQUASH。
gcloud
gcloud lustre instances update INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--default-squash-mode=NO_SQUASH \
--clear-access-rules \
--default-squash-uid=0 --default-squash-gid=0
REST
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN
{
"accessRulesOptions": {
"defaultSquashMode": "NO_SQUASH"
}
}
Google Cloud 控制台
您無法使用 Google Cloud 控制台設定根目錄壓縮。