Skip to main content
ONTAP Technical Reports
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

ONTAP 中的屬性型存取控制( ABAC )方法

貢獻者 netapp-dbagwell

ONTAP 提供數種方法,可用於達成檔案層級屬性型存取控制( ABAC ),包括 NFS v4.2 安全性標籤和使用 NFS 的延伸屬性( xATT )。

NFS v4.2 安全性標籤

從 ONTAP 9.9.1 開始,支援名為 NFS 的 NFS v4.2 功能。

NFS v4.2 安全性標籤是一種使用 SELinux 標籤和強制存取控制( MAC )來管理精細檔案和資料夾存取的方法。這些 MAC 標籤會與檔案和資料夾一起儲存,並與 UNIX 權限和 NFS v4.x ACL 搭配使用。

支援 NFS v4.2 安全性標籤,表示 ONTAP 現在能辨識及瞭解 NFS 用戶端的 SELinux 標籤設定。RFC-7204 涵蓋 NFS v4.2 安全性標籤。

NFS v4.2 安全性標籤的使用案例包括:

  • 虛擬機器( VM )映像的 Mac 標籤

  • 公共部門的資料安全性分類(秘密,機密和其他分類)

  • 安全法規遵循

  • 無磁碟Linux

啟用NFS v4.2安全性標籤

您可以使用下列命令來啟用或停用 NFS v4.2 安全性標籤(需要進階權限):

vserver nfs modify -vserver <svm_name> -v4.2-seclabel <disabled|enabled>

"ONTAP 命令參照"需詳細 `vserver nfs modify`資訊,請參閱。

NFS v4.2 安全性標籤的強制模式

從 ONTAP 9.9.1 開始, ONTAP 支援下列強制模式:

  • * 有限伺服器模式 * : ONTAP 無法強制執行標籤,但可以儲存及傳輸標籤。

    註 變更 MAC 標籤的能力由用戶端來強制執行。
  • * 來賓模式 * :如果用戶端未標示 NFS 感知( v4.1 或更低版本),則 MAC 標籤不會傳輸。

    註 ONTAP 目前不支援「完整模式」(儲存及強制執行 MAC 標籤)。

NFS v4.2 安全性標籤範例

以下組態範例示範使用 Red Hat Enterprise Linux 9.3 ( Plow )版本的概念。

根據 John R. Smith 的認證建立的使用者 `jrsmith`擁有下列 Privileges 帳戶:

  • 使用者名稱 = jrsmith

  • Privileges = uid=1112(jrsmith) gid=1112(jrsmith) groups=1112(jrsmith) context=user_u:user_r:user_t:s0

有兩種角色:系統管理員帳戶是具有權限的使用者和使用者, `jrsmith`如下列 MLS Privileges 表所述:

使用者 角色 類型 層級

admins

sysadm_r

sysadm_t

t:s0

jrsmith

user_r

user_t

t:s1 - t:s4

在此範例環境中,使用者 jrsmith`可以存取層級為的 `s3`檔案 `s0。我們可以加強現有的安全性分類,如下所述,以確保系統管理員無法存取使用者專屬的資料。

  • S0 = 權限管理使用者資料

  • S0 = 未分類資料

  • S1 = 機密

  • S2 = 機密資料

  • S3 = 重要機密資料

以 MCS 為例的 NFS v4.2 安全性標籤

除了多層安全( MLS )之外,另一項稱為「多類別安全( MCS )」的功能可讓您定義專案等類別。

NFS 安全性標籤 價值

entitySecurityMark

t:s01 = UNCLASSIFIED

延伸屬性( xatts )

從 ONTAP 9.12.1 開始, ONTAP 支援 xatts 。 xatts 允許中繼資料與系統所提供的檔案和目錄相關聯,例如存取控制清單( ACL )或使用者定義的屬性。

若要實作 xattis ,您可以在 Linux 中使用 `setfattr`和 `getfattr`命令列公用程式。這些工具提供了一種強大的方法來管理檔案和目錄的其他中繼資料。請謹慎使用,因為不當使用可能導致非預期行為或安全問題。請務必參閱 `setfattr`和 `getfattr`手冊頁或其他可靠的文件,以取得詳細的使用說明。

在 ONTAP 檔案系統上啟用 xattis 時,使用者可以設定,修改及擷取檔案上的任意屬性。這些屬性可用來儲存標準檔案屬性集未擷取之檔案的其他資訊,例如存取控制資訊。

在 ONTAP 中使用 xattis 有幾項要求和限制:

  • Red Hat Enterprise Linux 8.4 或更新版本

  • Ubuntu 22.04或更新版本

  • 每個檔案最多可有 128 個 xatts

  • xattr 金鑰限制為 255 個位元組

  • 組合金鑰或值大小為每個 xattr 1,229 位元組

  • 目錄和檔案可以有 xattis

  • 若要設定和擷取 xatts , `w`或必須為使用者和群組啟用寫入模式位元

在使用者命名空間內使用 Xatts ,不會對 ONTAP 本身具有任何內在意義。而是由與檔案系統互動的用戶端應用程式來決定及管理其實際應用程式。

xattr 使用案例範例:

  • 記錄負責建立檔案的應用程式名稱

  • 保留取得檔案的電子郵件訊息參考資料

  • 建立分類架構以組織檔案物件

  • 使用檔案原始下載來源的 URL 來標示檔案

用於管理 xattis 的命令

  • `setfattr`設定檔案或目錄的延伸屬性:

    setfattr -n <attribute_name> -v <attribute_value> <file or directory name>

    命令範例:

    setfattr -n user.comment -v test example.txt
  • `getfattr`擷取特定延伸屬性的值,或列出檔案或目錄的所有延伸屬性:

    特定屬性: getfattr -n <attribute_name> <file or directory name>

    所有屬性: getfattr <file or directory name>

    命令範例:

    getfattr -n user.comment example.txt

xattr 金鑰值配對範例

下表顯示兩個 xattr 金鑰值配對範例:

xattr 價值

user.digitalIdentifier

CN=John Smith jrsmith, OU=Finance, OU=U.S.ACME, O=US, C=US

user.countryOfAffiliations

USA

使用者對 xattis 的 ACE 權限

存取控制項目( ACE )是 ACL 中的元件,可定義授予個別使用者或特定資源(例如檔案或目錄)使用者群組的存取權限。每個 ACE 都會指定允許或拒絕的存取類型,並與特定的安全性主體(使用者或群組身分識別)相關聯。

xattis 需要存取控制項目( ACE )
  • Retrieve xattr :使用者讀取檔案或目錄的延伸屬性所需的權限。「 R 」表示需要讀取權限。

  • 設定 xattis :修改或設定延伸屬性所需的權限。「 A 」,「 w 」和「 T 」代表不同的權限範例,例如附加,寫入及與 xatts 相關的特定權限。

  • 檔案:使用者需要附加,寫入及可能與 xattis 相關的特殊權限,才能設定延伸屬性。

  • 目錄:設定延伸屬性需要特定的權限「 T 」。

檔案類型 擷取 xattr 設定 xattis

檔案

R

A , w , T

目錄

R

T

與 ABAC 身分識別與存取控制軟體整合

為了充分發揮 ABAC 的功能, ONTAP 可以與 ABAC 導向的身分識別與存取管理軟體整合。

在 ABAC 系統中,政策執行點( PEP )和政策決策點( PDP )扮演著重要角色。PEP 負責強制執行存取控制原則,而 PDP 則根據原則決定是否授予或拒絕存取。

在實際的設定中,組織會混合使用 NFS 安全性標籤和 xattis 。這些資料用於代表各種中繼資料,包括分類,安全性,應用程式和內容,這些都是做出 ABAC 決策的重要工具。例如, xattis 可用於儲存 PDp 用於其決策程序的資源屬性。可以定義屬性來代表檔案的分類層級(例如,「未分類」,「機密」,「秘密」或「最高機密」)。然後, PDP 可以利用此屬性來強制執行原則,限制使用者只能存取其分類層級等於或低於淨空層級的檔案。

註 本內容假設客戶的身分識別,驗證和存取服務至少包含一個 PEP 和一個可作為存取檔案系統中介的 PDP 。
ABAC 流程範例
  1. 使用者向系統存取 PEP 提供認證(例如, PKI , OAuth , SAML ),並從 PDP 取得結果。

    PEP 的角色是攔截使用者的存取要求,並將其轉送至 PDP 。

  2. 然後, PDP 會根據已建立的 ABAC 原則來評估此要求。

    這些原則會考量與使用者,相關資源及周邊環境相關的各種屬性。根據這些原則, PDP 會決定是否允許存取,然後將此決定傳回給 PEP 。

    PDP 為 PEP 提供強制政策。然後,根據 PDP 的決定, PEP 會強制執行此決定,授予或拒絕使用者的存取要求。

  3. 成功要求後,使用者會要求儲存在 ONTAP (例如 AFF , AFF C )中的檔案。

  4. 如果申請成功,則 PEP 會從文件中取得精細的存取控制標籤。

  5. PEP 根據該使用者的認證要求使用者的原則。

  6. 如果使用者有權存取檔案,且可讓使用者擷取檔案,則 PEP 會根據原則和標籤做出決定。

註 實際存取可能是使用權杖來完成。

ABAC 存取架構

ONTAP 複製與 SnapMirror

ONTAP 的複製和 SnapMirror 技術旨在提供高效可靠的資料複寫和複製功能,確保檔案資料的所有層面(包括 xatts )都會隨檔案一起保留和傳輸。 xattis 非常重要,因為它們會儲存與檔案相關的額外中繼資料,例如安全標籤,存取控制資訊和使用者定義的資料,這些資料對於維護檔案的內容和完整性非常重要。

使用 ONTAP 的 FlexClone 技術複製磁碟區時,會建立磁碟區的完全可寫入複本。這項複製程序既即時又節省空間,而且包含所有檔案資料和中繼資料,可確保完整複寫 xattis 。同樣地, SnapMirror 也能確保資料鏡射到具有完全逼真度的次要系統。這包括 xattis ,對於仰賴此中繼資料才能正常運作的應用程式而言,這是非常重要的。

NetApp ONTAP 在複製和複寫作業中納入 xattis ,可確保完整的資料集及其所有特性,在主要和次要儲存系統中均可用且一致。對於需要一致的資料保護,快速恢復,以及遵守法規遵循與法規標準的組織而言,這種全方位的資料管理方法非常重要。它也能簡化不同環境(無論是內部部署或雲端環境)的資料管理,讓使用者確信在這些程序中,資料完整且不會遭到竄改。

註 NFS v4.2 安全性標籤有中定義的注意事項NFS v4.2 安全性標籤

稽核標籤變更

稽核對 xattis 或 NFS 安全性標籤所做的變更,是檔案系統管理與安全性的關鍵層面。標準檔案系統稽核工具可監控及記錄檔案系統的所有變更,包括修改 xattis 和安全性標籤。

在 Linux 環境中, auditd`常駐程式通常用於建立檔案系統事件的稽核。它可讓系統管理員設定規則,以監控與 xattr 變更相關的特定系統呼叫,例如 `setxattr,, lsetxattr`以及 `fsetxattr`設定屬性和 `removexattr,, `lremovexattr`以及 `fremovexattr`移除屬性。

ONTAP FPolicy 提供強大的架構,可即時監控及控制檔案作業,進而擴充這些功能。FPolicy 可設定為支援各種 xattr 事件,提供對檔案作業的精細控制,以及強制執行全方位資料管理原則的能力。

對於使用 xattis 的使用者,尤其是在 NFS v3 和 NFS v4 環境中,僅支援特定的檔案作業和篩選器組合來進行監控。以下是 NFS v3 和 NFS v4 檔案存取事件的 FPolicy 監控支援檔案作業和篩選器組合清單:

支援的檔案作業 支援的篩選器

setattr

offline-bit, setattr_with_owner_change, setattr_with_group_change, setattr_with_mode_change, setattr_with_modify_time_change, setattr_with_access_time_change, setattr_with_size_change, exclude_directory

setattr 作業的 auditd 記錄片段範例:
type=SYSCALL msg=audit(1713451401.168:106964): arch=c000003e syscall=188
success=yes exit=0 a0=7fac252f0590 a1=7fac251d4750 a2=7fac252e50a0 a3=25
items=1 ppid=247417 pid=247563 auid=1112 uid=1112 gid=1112 euid=1112
suid=1112 fsuid=1112 egid=1112 sgid=1112 fsgid=1112 tty=pts0 ses=141
comm="python3" exe="/usr/bin/python3.9"
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
key="*set-xattr*"ARCH=x86_64 SYSCALL=**setxattr** AUID="jrsmith"
UID="jrsmith" GID="jrsmith" EUID="jrsmith" SUID="jrsmith"
FSUID="jrsmith" EGID="jrsmith" SGID="jrsmith" FSGID="jrsmith"

"ONTAP FPolicy"為使用 xatts 的使用者提供一層可見度和控制權,這對於維護檔案系統的完整性和安全性至關重要。利用 FPolicy 的進階監控功能,組織可以確保追蹤,稽核 xatts 的所有變更,並符合其安全性與法規遵循標準。這種主動式檔案系統管理方法,是為何強烈建議任何想要加強資料治理和保護策略的組織採用 ONTAP FPolicy 的原因。

控制資料存取的範例

以下儲存在 John R. Smith 的 PKI 認證書中的資料項目範例,說明如何將 NetApp 方法套用至檔案,並提供精細的存取控制。

註 這些範例僅供說明用途,客戶有責任判斷與 NFS v4.2 安全性標籤和 xatts 相關的中繼資料。為了簡化更新和保留標籤的作業,我們省略了相關詳細資料。
  • 範例 PKI 憑證值 *

金鑰 價值

entitySecurityMark

T:S01 = 未分類

資訊

{
  "commonName": {
    "value": "Smith John R jrsmith"
  },
  "emailAddresses": [
    {
      "value": "jrsmith@dod.mil"
    }
  ],
  "employeeId": {
    "value": "00000387835"
  },
  "firstName": {
    "value": "John"
  },
  "lastName": {
    "value": "Smith"
  },
  "telephoneNumber": {
    "value": "938/260-9537"
  },
  "uid": {
    "value": "jrsmith"
  }
}

規格

" 職稱 "

UUID

b4111349-7875-4115-AD30-0928565f2e15

管理組織

{
   "value": "DoD"
}

簡報

[
  {
    "value": "ABC1000"
  },
  {
    "value": "DEF1001"
  },
  {
    "value": "EFG2000"
  }
]

公民身分

{
  "value": "US"
}

餘隙

[
  {
    "value": "TS"
  },
  {
    "value": "S"
  },
  {
    "value": "C"
  },
  {
    "value": "U"
  }
]

國家分支機構

[
  {
    "value": "USA"
  }
]

數位識別碼

{
  "classification": "UNCLASSIFIED",
  "value": "cn=smith john r jrsmith, ou=dod, o=u.s. government, c=us"
}

dissemTos

{
   "value": "DoD"
}

二合一組織

{
   "value": "DoD"
}

entityType

{
   "value": "GOV"
}

fineAccessControls

[
   {
      "value": "SI"
   },
   {
      "value": "TK"
   },
   {
      "value": "NSYS"
   }
]

這些 PKI 授權可顯示 John R. Smith 的存取詳細資料,包括依資料類型和歸屬來存取。

在 IC-TDF 中繼資料與檔案分開儲存的情況下, NetApp 主張額外提供一層精細的存取控制。這包括在目錄層級儲存存取控制資訊,以及與每個檔案相關聯。例如,請考慮連結至檔案的下列標記:

  • NFS v4.2 安全性標籤:用於做出安全性決策

  • xattis :提供與檔案及組織方案需求相關的補充資訊

下列金鑰值配對是中繼資料的範例,可儲存為 xatts ,並提供檔案建立者及相關安全性分類的詳細資訊。用戶端應用程式可以利用這項中繼資料來做出明智的存取決策,並根據組織標準和要求來組織檔案。

xattr 鍵值對的範例 *

金鑰 價值

user.uuid

"761d2e3c-e778-4ee4-997b-3bb9a6a1d3fa"

user.entitySecurityMark

"UNCLASSIFIED"

user.specification

"INFO"

user.Info

{
  "commonName": {
    "value": "Smith John R jrsmith"
  },
  "currentOrganization": {
    "value": "TUV33"
  },
  "displayName": {
    "value": "John Smith"
  },
  "emailAddresses": [
    "jrsmith@example.org"
  ],
  "employeeId": {
    "value": "00000405732"
  },
  "firstName": {
    "value": "John"
  },
  "lastName": {
    "value": "Smith"
  },
  "managers": [
    {
      "value": ""
    }
  ],
  "organizations": [
    {
      "value": "TUV33"
    },
    {
      "value": "WXY44"
    }
  ],
  "personalTitle": {
    "value": ""
  },
  "secureTelephoneNumber": {
    "value": "506-7718"
  },
  "telephoneNumber": {
    "value": "264/160-7187"
  },
  "title": {
    "value": "Software Engineer"
  },
  "uid": {
    "value": "jrsmith"
  }
}

user.geo_point

[-78.7941, 35.7956]