設定 Active Directory 使用者的認證與授權

設定 Oracle Cloud Infrastructure 身分識別與存取管理、設定 Active Directory (AD) 認證與授權、設定 NFS 匯出及設定 Unix 權限。

設定 Oracle Cloud Infrastructure Identity and Access Management 原則

Oracle Cloud Infrastructure (OCI) 身分識別與存取管理中建立動態群組,並新增原則以允許掛載目標存取 LDAP 和 Kerberos 加密密碼。Kerberos 和 LDAP 配置都必須要有此項目。

  1. 登入 OCI。
  2. 開啟導覽功能表,然後按一下識別與安全
  3. 按一下動態群組
  4. 按一下建立動態群組,然後輸入名稱描述
    名稱在您租用戶的所有群組 (動態群組和使用者群組) 中必須是唯一的。稍後無法變更名稱。請避免輸入機密資訊。
    此範例會將 ad-kerberos-mt-group 群組用於 ad-kerberos 區間中的所有掛載目標。
  5. 輸入比對規則以定義群組的成員。
    例如,
    ALL { resource.type='mounttarget', resource.compartment.id = '<mount_target_compartment_ocid>' }
  6. 按一下建立
  7. 開啟導覽功能表,然後按一下識別與安全。在識別底下,按一下原則
  8. 按一下建立原則
  9. 輸入新原則的名稱、描述和區間。
    名稱在您租用戶的所有原則中必須是唯一的。您無法在以後進行變更。請避免輸入機密資訊。
  10. 使用原則產生器建立原則,以允許掛載目標存取區間中的加密密碼。
    此範例會將 ad-kerberos-mt-group 群組用於 ad-kerberos 區間中的所有掛載目標。
    allow dynamic-group ad-kerberos-mt-group to read secret-family in compartment ad-kerberos
  11. 按一下建立

使用 Kerberos 設定 Active Directory 認證

設定 Oracle Cloud Infrastructure Identity and Access Management 之後,您就會設定 Active Directory。設定 Kerberos 包含兩個步驟:將掛載目標結合為 Microsoft 的 Active Directory ,然後使用 Kerberos 組態更新掛載目標設定值。

將掛載目標加入 Active Directory

如果 Active Directory 使用者需要認證,請完成此作業。這是 Oracle Cloud Infrastructure File Storage 服務以外的手動執行處理作業。將掛載目標加入 Microsoft 的 Active Directory 中涉及新增電腦帳戶至 Active Directory 、設定正確的加密、擷取金鑰頁籤,以及將掛載目標新增至 DNS。

  1. Active Directory 中為掛載目標 (MT) 建立電腦帳戶。
    您可以從指令行建立帳戶,或使用 Active Directory Users and Computers 快照建立新的電腦帳戶。
    Command-Line
    C:\Users\administrator>djoin /provision /domain fss-ad.com /machine fss-mt-ad-1 /savefile offlinedomainjoin.txt
    Provisioning the computer...
    Successfully provisioned [fss-mt-ad-1] in the domain [fss-ad.com].
    …
    The operation completed successfully.
    Active Directory Users and Computers
    1. 移至 Active Directory Users and Computers 目錄,展開 fs-ad.com,然後選取電腦
    2. 按一下新建 (New) ,然後按一下電腦 (Computer)
    3. 新增 fss-mt-ad-1

      完成之後,FSS-MT-AD-1 會顯示在 Active Directory Users and Computers 快照的 Computers 樹狀結構下。

  2. 使用 ktpass.exe 建立 keytab。

    附註:

    您必須以管理員身分開啟指令提示,才能執行 ktpass.exe。否則,將會失敗。AES256-SHA1aes256-cts-hmac-sha1-96
    C:\>ktpass -princ nfs/fss-mt-ad-1.fss-ad.com@FSS-AD.COM -mapuser FSS-AD\fss-mt-ad-1 -crypto AES256-SHA1 +rndpass -ptype KRB5_NT_SRV_HST  -out fss-mt-ad-1.keytab
    Targeting domain controller: ad-server.fss-ad.com
    Successfully mapped nfs/fss-mt-ad-1.fss-ad.com to FSS-MT-AD-1$.
    WARNING: Account FSS-MT-AD-1$ is not a user account (uacflags=0x1001).
    WARNING: Resetting FSS-MT-AD-1$'s password may cause authentication problems if FSS-MT-AD-1$ is being used as a server.
    
    Reset AD-FSS-MT-2$'s password [y/n]?  y
    Password successfully set!
    Key created.
    Output keytab to fss-mt-ad-1.keytab:
    Keytab version: 0x502
    keysize 88 nfs/fss-mt-ad-1.fss-ad.com@FSS-AD.COM ptype 3 (KRB5_NT_SRV_HST) vno 2 etype 0x12 (AES256-SHA1) keylength 32
    
  3. 在掛載目標上設定 Kerberos 時,將 keytab 轉換成 base64 以搭配 keytab 使用。
    C:\>certutil.exe -encode fss-mt-ad-1.keytab keytab.txt
    Input Length = 94
    Output Length = 188
    CertUtil: -encode command completed successfully.
    
    C:\>notepad keytab.txt
    1. 在記事本中開啟 keytab.txt 檔案。
    2. 移除 BEGINEND CERTIFICATE 行。
    3. 將 base64 文字複製到一行連續長行,而單行沒有空格。
      當您稍後為 Kerberos 掛載目標設定加密密碼時,需要 base64 文字。
  4. 修改 Active Directory 中的掛載目標 (MT) 屬性,以使用更安全的加密方式。尋找 MT 帳戶,然後將 aes256-cts-hmac-sha1-96msDS-SupportedEncryptionTypes 屬性值變更為 24。
    Active Directory 預設會以 RC4 加密方式提供回報項目。如果 msDS-SupportedEncryptionTypes 屬性不存在,請建立一個屬性並設定值。
  5. 開啟 DNS 管理程式並展開 DNS 伺服器樹狀結構。
  6. 新增掛載目標的向前查尋區域。輸入 IP 位址,選取建立關聯的指標 (PTR) 記錄,然後按一下新增主機

設定 Kerberos 的掛載目標

建立 keytab 的加密密碼。加密密碼內容是您在使用 Active Directory 加入掛載目標時複製的 base64 編碼金鑰頁籤。

以下為配置 Kerberos 掛載目標所需的基本步驟:

  • 將掛載目標加入 Active Directory (上一步)。
  • 設定 keytab 保存庫加密密碼。
  • 在掛載目標上設定 Kerberos。
  1. 前往 Oracle Cloud Infrastructure (OCI) 主控台,然後開啟導覽功能表。
  2. 按一下身分識別與安全性,然後按一下保存庫
  3. 清單範圍底下,選取要在其中建立加密密碼的區間。
    此範例使用 ad-kerberos 區間。
  4. 資源底下,按一下加密密碼,然後按一下建立加密密碼
  5. 建立加密密碼面板中輸入下列資訊:
    請勿輸入任何機密資訊。
    1. 名稱:輸入識別加密密碼的名稱。例如,fss-mt-ad-1-keytab-secret
    2. 描述:輸入有助於識別加密密碼的簡要描述。例如,fss-mt-ad-1 的 Keytab。
    3. 加密金鑰:選取匯入保存庫時,要用來加密加密加密密碼內容的主要加密金鑰。例如,mount-target-secrets
      金鑰必須屬於相同的保存庫。金鑰也必須是對稱金鑰。您無法使用非對稱金鑰加密保存庫加密密碼。
    4. 加密類型範本Base64
    5. 加密密碼內容:輸入加密密碼的內容。
      這是您先前在將 keytab 轉換成 base64 (作為將掛載目標加入 Active Directory 的一部分) 時儲存的 base64 編碼的 keytab。
  6. 按一下建立加密密碼 (Create Secret)
  7. 移至掛載目標的 NFS 頁籤。
    1. 按一下導覽功能表中的儲存體 (Storage)
    2. 在「檔案儲存」底下,按一下掛載目標 (Mount Targets)
    3. 在「清單」範圍區段的「區間」下,選取一個區間。
      例如,ad-kerberos
    4. 尋找掛載目標,然後按一下 NFS 頁籤。
  8. 按一下 [ NFS ] 頁籤中 Kerberos 旁的 [ 管理 ]。
  9. 選取 keytab 密碼和版本,然後按一下驗證 keytab ,檢視結果並儲存。選取啟用 Kerberos
    在此範例中, Ad-kerberos 區間中的 Keytab 密碼fss-mt-ad-1-keytab-secret,而目前的 keytab 加密密碼版本為 1。

使用 Kerberos 掛載 NFS 匯出

Kerberos NFS 支援下列三種安全機制。

  • krb5:Kerberos 僅用於認證。
  • krb5i:經過認證並使用每個交易的加密雜湊來確保完整性。流量仍然可以攔截與檢查,但無法修改流量。
  • krb5p:已認證並加密用戶端與伺服器之間的所有流量。無法檢查流量,因此無法修改。
C:\Users\fss-user-1>mount -o sec=krb5 fss-mt-ad-1.fss-ad.com:/krb-fs-1 T:
T: is now successfully connected to fss-mt-ad-1.fss-ad.com:/krb-fs-1

The command completed successfully.
如果掛載期間未提供安全功能 (syskrb5krb5ikrb5p),Windows 將選擇匯出時設定的進階安全功能。請使用 mount 指令來確認掛載磁碟機時選取的 Windows 標籤。
C:\Users\fss-user-1>mount

Local    Remote                                 Properties
-------------------------------------------------------------------------------
T:       \\fss-mt-ad-1.fss-ad.com\krb-fs-1      UID=0, GID=0
                                                rsize=1048576, wsize=1048576
                                                mount=soft, timeout=0.8
                                                retry=1, locking=yes
                                                fileaccess=755, lang=ANSI
                                                casesensitive=no
                                                sec=krb5


C:\Users\fss-user-1>whoami
fss-ad\fss-user-1

您現在可以從 Windows 檔案總管存取磁碟機。請注意,每個使用者都有執行磁碟機對應,而存取 OCI File Storage 共用的每位使用者,都應該將共用對應至個別的磁碟機代號。

設定 LDAP 的 Active Directory 授權

若 Active Directory 使用者需要 LDAP 授權,請完成此工作。收集 Active Directory 所需的資訊、設定存取檔案儲存體之所有使用者和群組的 RFC2307 屬性,然後在掛載目標上設定 LDAP。

以下是設定 LDAP Active Directory 授權所需的基本步驟:

  • 從 Active Directory 取得 LDAP 組態詳細資訊。
  • 設定 LDAP 連結使用者加密密碼。
  • 建立輸出連接器。
  • 在掛載目標設定 LDAP。

附註:

掛載目標無法使用自行簽署的 LDAP 憑證。
  1. 從 DNS 取得代管 LDAP 的系統,將其儲存為後續步驟。
    在此範例中,系統為 fss-ad.com
    C:\Users\administrator>nslookup -type=srv _ldap._tcp.fss-ad.com
    Server:  localhost
    Address:  ::1
    _ldap._tcp.fss-ad.com   SRV service location:
              priority       = 0
              weight         = 100
              port           = 389
              svr hostname   = ad-server.fss-ad.com
        ad-server.fss-ad.com    internet address = 10.9.1.194
  2. 在 Active Directory 中,找到使用者和群組的 distinguishedName (DN) 屬性搜尋庫。
    1. 移至 Active Directory Users and Computers 目錄,展開 fs-ad.com
    2. 按一下使用者
  3. 取得 LDAP 連結使用者 DN。

    附註:

    此使用者可以是具有目錄搜尋功能的最低權限使用者。之後也需要此使用者的密碼,才能設定外送連線器。
    1. 選取 ldap-user
    2. 按一下屬性編輯器頁籤。
    3. 選取 distinguishedName 屬性。
    4. 複製值並將其儲存,以供後續步驟使用。
  4. 驗證存取 OCI 檔案儲存之所有使用者和群組的 RFC2307 屬性。
    請參閱「設定 Active Directory 中的 RFC2307 屬性」以取得相關指示和 RFC2307 屬性表格。
  5. 為以上步驟 3 中發現的 LDAP 連結使用者建立加密密碼。
    此加密密碼保留可供 LDAP 使用者連結的密碼。格式必須為純文字。
  6. 設定輸出連線器。您可以在「其他資源」底下的「檔案儲存」頁面中取得「輸出連線器」。在與掛載目標相同的 AD 中建立外送。
    1. 請輸入 DNS 名稱。
      例如, ad-server.fss.ad.com
    2. 輸入 LDAP 服務的 DSAPS 連接埠。
      例如, 636
    3. 輸入連結辨別名稱。
      這是要登入 LDAP 伺服器的 LDAP 使用者。例如, CN=ldap-user,CN=Users,DC=fss-ad,DC=com
    4. 在儲存您的加密密碼的區間中選取保存庫。
      例如,ad-kerberos 區間中的 krb-vault
    5. 選取區間中的加密密碼。
      例如,ad-kerberos 區間中的 fss-mt-ad-1-ldap-password
    6. 選取加密密碼版本。
      例如, 1
    7. 按一下建立
  7. 配置掛載目標的 LDAP。
    您將使用上一個步驟的「輸出連線器」。
    1. 按一下導覽功能表中的儲存體 (Storage) 。在「檔案儲存體 (File Storage)」底下,按一下掛載目標 (Mount Targets)
    2. 請選取一個區間。
      例如,ad-kerberos
    3. 尋找掛載目標,按一下 NFS 頁籤,然後按一下管理 LDAP
    4. 使用者的搜尋基準群組搜尋基準欄位中輸入搜尋基準。

      附註:

      使用者和群組的搜尋基準是從 Active Directory 使用者和群組容器取得的 DN。

      例如,使用者的搜尋基準CN=Users,DC=fss-ad,DC=com群組的搜尋基準CN=Users,DC=fss-ad,DC=com
    5. 輸入快取間隔,然後選取在外送連線器 1 欄位中建立的外送連線器。
      在此範例中,快取重新整理間隔快取使用期限負的快取使用期限為每 300 秒一次。外送連線器 1 中的 LDAP 帳戶為 fss-ad-ob-1
    6. 儲存設定值。

設定 NFS 匯出

根據授權需求設定匯出設定值。

  • 當不需要 LDAP 授權,並將所有認證的使用者對應至單一 uid/gid 時,請將下列設定值設定為壓迫所有使用者。使用 NFS 從屬端匯出選項控制從屬端存取檔案系統的方式。編輯下列設定值來壓制所有使用者。
    1. 匿名存取:不允許選取
    2. Squash :選取
    3. 斜線 UID :輸入 99
    4. 斜線 GID :輸入 99
    使用這些設定值時,會為所有已認證的使用者提供使用者 ID 99 和群組 ID 99。未執行 LDAP 查詢。
  • 使用 LDAP 授權使用者時,請使用「NFS 匯出」選項將 Kerberos 主要項目對應至 Unix 使用者。
    1. 匿名存取:選取允許
    2. Squash :選取
    3. 斜線 UID :輸入 199
    4. 斜線 GID :輸入 199
    使用這些設定值時,所有 Kerberos 使用者都會對應至 LDAP 的 Unix 使用者 ID、群組 ID 以及群組成員。若使用者不在 LDAP 中,則會使用匿名對應,且使用者會對應至 Unix 使用者 ID 199 與群組 ID 199。如果停用匿名存取,且 Kerberos 使用者不存在於 LDAP 中,則會將存取拒絕錯誤提供給存取共用的使用者。

Windows 中的 Unix 權限

Oracle Cloud Infrastructure File Storage 使用 NFSv3 協定存取。授權使用 Unix 權限執行。

您可以使用 ldp.exe 工具查詢使用者和群組的 RFC2307 屬性,查看 uid、gid 和 group 成員身分。Unix 權限會根據儲存在 LDAP 中的 uid、gid 及群組成員來檢查。
Tool: ldp.exe
Search Base: CN=Users,DC=fss-ad,DC=com 
Filter: (&(objectClass=posixAccount)(uid=fss-user-1))
Attributes: uidNumber;gidNumber

使用 Windows 檔案總管來查看哪些擁有者和群組擁有檔案或資料夾,以及檔案或資料夾上設定的權限。您可以從檔案或資料夾的屬性存取 NFS 屬性 (Unix 屬性)。

雖然 fss-user-1 使用者的主要群組是 500,但是 OCI 檔案儲存會考量使用者作為權限檢查成員的所有群組。使用下列查詢來尋找 fss-user-1 使用者的群組成員。
Tool: ldp.exe
Search Base: CN=Users,DC=fss-ad,DC=com 
Filter: (&(objectClass=posixGroup)(memberUid=fss-user-1))' gidNumber
Attributes: gidNumber

建立初始資料夾權限

實作時,請考量資料夾權限。

OCI 檔案儲存根目錄由 uid 0 和 755 (root 的 rwx、root 的 r-x 以及其他的 r-x) 權限所擁有。需要 Root 存取,才能為使用者建立其他資料夾或變更權限。這是管理員工作,可建立和設定符合需求的初始權限。

您可以使用下列其中一種方法來取得對檔案系統的管理存取權:

  • 除非對應至 uidNumber 0 和 root 沒有平方,否則所有使用者都是一般使用者。將管理員使用者對應至使用者之 LDAP 屬性中的 uidNumber 0。
  • 將具有 SYS 認證的檔案系統匯出至安全的 Linux 工作站。請使用 root 使用者來建立及管理權限。