4. 將 LDAP 用戶端連線至安全 LDAP 服務

請參考本文的操作說明,將 LDAP 用戶端連線至安全 LDAP 服務。

重要事項:

  • 請務必詳閱供應商的說明文件
    本文就如何將 LDAP 用戶端連線至安全 LDAP 服務提供的詳細資料僅供參考,相關資訊可能隨時變更。除了這些操作說明外,請務必詳閱供應商說明文件,瞭解將用戶端連線至安全 LDAP 服務的最新步驟。
  • 事前準備
    按照以下說明操作之前,請先確認您已將用戶端新增至安全 LDAP 服務設定存取權限下載用戶端憑證和金鑰;此外,您可以視需要建立存取憑證
  • 連線測試
    開始進行以下步驟前,建議您視需要使用 ldapsearchADSIldp.exe 等簡易工具快速執行連線測試。如果在嘗試將 LDAP 用戶端連線至服務時發生錯誤,您也可以使用這些工具排解問題。如需操作說明,請參閱安全 LDAP 連線能力測試
  • 如何完成設定步驟
    按照本頁操作說明建立 LDAP 用戶端連線後,您必須在 Google 管理控制台中將服務狀態切換成「開啟」,才能完成 LDAP 用戶端設定。如需操作說明,請參閱 5. 將 LDAP 用戶端切換成「開啟」

本文內容

本文包含以下各節說明:

在以下說明中,我們假設您下載的用戶端金鑰和憑證檔案分別為 ldap-client.keyldap-client.crt

基本設定操作說明

本節將介紹 LDAP 用戶端連線至安全 LDAP 服務的一般設定步驟。如果以下操作說明未提到您的 LDAP 用戶端,請參閱該應用程式的說明文件。

注意:進行使用者驗證期間,Atlassian Jira 和 SSSD 等特定 LDAP 用戶端會執行使用者查詢作業,藉此取得更多使用者資訊。為確保這類 LDAP 用戶端的使用者驗證作業順利進行,您必須為所有已開啟「驗證使用者憑證」權限的機構單位一併開啟「讀取使用者資訊」權限。(如需操作說明,請參閱設定存取權限)。

如何將 LDAP 用戶端連線到安全 LDAP 服務:

  1. 使用 Cloud Directory 將 LDAP 用戶端設定為 LDAP 伺服器。
  2. 將憑證上傳到 LDAP 用戶端。

    安全 LDAP 服務會使用傳輸層安全標準 (TLS) 用戶端憑證當做主要的驗證機制。如要開始將憑證上傳至 LDAP 用戶端,請開啟 LDAP 用戶端的驗證或目錄設定,然後從下表輸入詳細資料。

    注意:如需上傳 TLS 憑證的做法及位置的完整資訊,請參閱供應商的說明文件。

請參閱下表,瞭解基本連線資訊:

Hostname (主機名稱)

ldap.google.com

連接埠

如為已啟用 StartTLS 的 LDAP,通訊埠是 389
如為 LDAPS (已啟用 SSL/TLS),通訊埠是 636

Base DN (基準 DN)

您的網域 (採用 DN 格式)。例如:

dc=example,dc=com 即表示「example.com」

使用者名稱和密碼

除了使用憑證進行驗證外,某些 LDAP 用戶端還會要求您輸入使用者名稱和密碼。如果使用者名稱和密碼不是必填欄位,您可以跳過此步驟。

在 Google 管理控制台中產生使用者名稱和密碼。如需操作說明,請參閱產生存取憑證

用戶端憑證和金鑰檔案

使用從 Google 管理控制台下載的憑證和金鑰檔案。如果 LDAP 用戶端並未提供透過用戶端憑證進行驗證的方式,請參閱將 stunnel 當做 Proxy 使用一節。

重要事項:Apache Directory Studio 等部分 LDAP 用戶端不支援上傳數位憑證。如果遇到這種情況,請參閱將 stunnel 當做 Proxy 使用一節。

特定 LDAP 用戶端的設定操作說明

ADSI 編輯器 (Windows)

步驟如下:

  1. 按照 ldp.exe (Windows) 一節的步驟 1 至 11 安裝用戶端憑證。
  2. 依序點選 [動作] > [連線至…]
  3. 輸入下列連線設定:

    名稱:輸入連線名稱,例如「Google LDAP」
    連接點:「選取或輸入辨別名稱或命名內容」
    以 DN 格式輸入您的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)。

    電腦:「選取或輸入網域或伺服器」
    ldap.google.com

    使用 SSL 型加密:已勾選
  4. 按一下「進階...」,然後輸入下列詳細資料:

    指定憑證:勾選
    使用者名稱:管理控制台的存取憑證使用者名稱
    密碼:管理控制台的存取憑證密碼
    連接埠號碼:636
    通訊協定:LDAP
    簡單繫結驗證:勾選
  5. 按一下 [確定],再按一下 [確定]
  6. 如果連線成功,右側窗格就會顯示基準 DN 中的 Active Directory 內容。

Apache Directory Studio

如要使用 Apache Directory Studio,請透過 stunnel 建立連線,並使用 Google 管理控制台產生的存取憑證 (使用者名稱和密碼)。假設您已備妥憑證,且 stunnel 正在聽取 localhost 通訊埠 1389。請按照以下步驟操作:

  1. 依序按一下 [File] (檔案) > [New…] (新增…)。
  2. 依序選取 [LDAP Browser] (LDAP 瀏覽器) > [LDAP Connection] (LDAP 連線)。
  3. 按一下「Next」
  4. 輸入連線參數:

    連線名稱:選擇一個名稱,例如「Google LDAP」
    主機名稱:localhost
    通訊埠:1389 (或 stunnel 監聽/接受通訊埠)
    加密方法:不加密 (注意:如果 stunnel 是遠端執行,建議在 stunnel 與用戶端之間加密)。
  5. 按一下「Next」
  6. 輸入驗證參數:

    Authentication Method (驗證方式):Simple Authentication (簡單驗證)
    Bind DN or user (繫結 DN 或使用者):管理控制台的存取憑證使用者名稱
    Bind password (繫結密碼):管理控制台的存取憑證密碼
  7. 按一下「Next」
  8. 輸入基準 DN。
    這是以 DN 格式輸入的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)。
  9. 按一下「完成」

Atlassian Jira

進行使用者驗證期間,Atlassian Jira 會執行使用者查詢,藉此取得使用者的更多資訊。為確保這個 LDAP 用戶端的使用者驗證程序順利進行,您必須針對已開啟「驗證使用者憑證」的所有機構單位開啟「讀取使用者資訊」和「讀取群組資訊」(如需操作說明,請參閱設定存取權限)。

重要事項:如按照下列說明操作,KeyStorePassword 可能會曝露給使用者和記錄檔。請採取預防措施,防止他人在未經授權的情況下存取本機殼層、記錄檔與 Google 管理控制台。除了下列操作說明之外,您也可以使用 stunnel4 方法;詳情請參閱「選用:將 stunnel 當做 Proxy 使用」一節。

注意:下列操作說明是以 Jira 已安裝於 /opt/atlassian/jira 為前提。

如要將 Atlassian Jira 用戶端連線至安全 LDAP 服務:

  1. 將憑證和金鑰複製到 Jira 伺服器 (這是將 LDAP 用戶端新增到安全 LDAP 服務時,在 Google 管理控制台中產生的憑證)。

    例如:
    $ scp ldap-client.key user@jira-server:
  2. 將憑證和金鑰轉換為 Java KeyStore 格式。系統在此過程中會提示您輸入密碼。為了方便起見,請選擇一組安全的密碼,並在每次系統提示時使用同一組密碼。

    $ openssl pkcs12 -export -out jira-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key

    $ sudo /opt/atlassian/jira/jre/bin/keytool -v -importkeystore -srckeystore jira-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore /opt/atlassian/jira/jira-ldap.jks -deststoretype JKS

  3. 設定 Jira 以使用新建立的 KeyStore。請按照這裡的操作說明新增選項:

    "-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password"

    如果您使用的是 Linux 電腦,請按照以下步驟操作:
    1. 編輯 /opt/atlassian/jira/bin/setenv.sh
    2. 找出 JVM_SUPPORT_RECOMMENDED_ARGS 設定。
    3. 新增「-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password」,並將「password」換成您在上面選取的密碼。
  4. 重新啟動 Jira。

    $ /opt/atlassian/jira/bin/stop-jira.sh
    $ /opt/atlassian/jira/bin/start-jira.sh

  5. 以管理員身分登入 Jira 網頁介面。
    1. 依序前往「設定」>「使用者管理」。如需設定,請使用右上角的齒輪圖示。
    2. 按一下 [User Directories] (使用者目錄)
    3. 按一下「新增目錄」
    4. 類型選擇「LDAP」
    5. 按一下「Next」
  6. 輸入以下資訊:

    名稱

    Google 安全 LDAP

    Directory type (目錄類型)

    OpenLDAP

    Hostname (主機名稱)

    ldap.google.com

    Port (通訊埠)

    636

    Use SSL (使用 SSL)

    已勾選

    使用者名稱

    在 Google 管理控制台中產生使用者名稱和密碼。如需操作說明,請參閱產生存取憑證

    密碼

    在 Google 管理控制台中產生使用者名稱和密碼。如需操作說明,請參閱產生存取憑證

    Base DN (基準 DN)

    以 DN 格式輸入的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)。

    Additional User DN (其他使用者 DN)

    選用。"ou=Users"

    Additional Group DN (其他群組 DN)

    選用。「ou=Groups」

    LDAP Permissions (LDAP 權限)

    唯讀

    「Advanced Settings」

    未變更

    User Schema Settings (使用者架構設定) >
    User Name Attribute (使用者名稱屬性)

    googleUid

    User Schema Settings (使用者架構設定) >
    User Name RDN Attribute (使用者名稱 RDN 屬性)

    uid

    Group Schema Settings (群組架構設定) >
    Group Object Class (群組物件類別)

    groupOfNames

    Group Schema Settings (群組架構設定) >
    Group Object Filter (群組物件篩選器)

    (objectClass=groupOfNames)

    Membership Schema Settings (成員資格架構設定) >
    Group Members Attribute (群組成員屬性)

    成員

    Membership Schema Settings (成員資格架構設定) >
    Use the User Membership Attribute (採用使用者成員資格屬性)

    已勾選
  7. 將角色授予群組。

    使用者必須加入具備 Jira 存取權的群組,才能登入 Atlassian Jira。

    如何將角色授予群組:
    1. 依序前往「設定」>「應用程式」>「應用程式存取權」
    2. 在「Select group」(選取群組) 文字方塊中,輸入您要授予 Jira 存取權的 Google 群組名稱。

CloudBees Core / Jenkins

如需將 CloudBees Core 連線至安全 LDAP 服務的操作說明,請參閱 Configure CloudBees Core with Google's Cloud Identity Secure LDAP (透過 Google 的 Cloud Identity 安全 LDAP 設定 CloudBees Core)。

FreeRadius

步驟如下:

  1. FreeRADIUS 安裝到 /etc/freeradius/3.0/ 並進行設定。

    FreeRADIUS 安裝完畢後,您可以安裝「freeradius-ldap」外掛程式,以便新增 LDAP 設定。

    $ sudo apt-get install freeradius freeradius-ldap
  2. 將 LDAP 用戶端金鑰和憑證檔案分別複製到 /etc/freeradius/3.0/certs/ldap-client.key/etc/freeradius/3.0/certs/ldap-client.crt

    $ chown freeradius:freeradius
    /etc/freeradius/3.0/certs/ldap-client.*
    $ chmod 640 /etc/freeradius/3.0/certs/ldap-client.*

  3. 啟用 LDAP 模組。

    $ cd /etc/freeradius/3.0/mods-enabled/
    $ ln -s ../mods-available/ldap ldap

  4. 編輯 /etc/freeradius/3.0/mods-available/ldap
    1. ldap->server = 'ldaps://ldap.google.com:636'
    2. identity = 應用程式憑證中的使用者名稱
    3. password = 應用程式憑證中的密碼
    4. base_dn = 'dc=domain,dc=com'
    5. tls->start_tls = no
    6. tls->certificate_file = /etc/freeradius/3.0/certs/ldap-client.cer
    7. tls->private_key_file = /etc/freeradius/3.0/certs/ldap-client.key
    8. tls->require_cert = 'allow'
    9. 找到代表「dap -> post-auth -> update」部分的導覽標記,為其中的所有欄位加上註解
  5. 編輯 /etc/freeradius/3.0/sites-available/default
    這會修改 FreeRadius 用戶端連線。如果您使用的不是預設用戶端,請務必更新您所設定的相關用戶端 (inner-tunnel 或任何自訂用戶端)。
    1. 修改「authorize」(授權) 部分,在底部的「密碼驗證通訊協定 (PAP) 聲明後面」加入下列區塊:

      if (User-Password) {
      update control {
      Auth-Type := ldap
      }
      }

    2. 在「authorize」(授權) 部分移除 LDAP 前面的「-」符號,藉此啟用 LDAP。

      #
      # The ldap module reads passwords from the LDAP database.
      ldap
    3. 修改「authenticate」(驗證) 部分,使用下列字串修改「Auth-Type LDAP」區塊:

      # Auth-Type LDAP {
      ldap
      # }

    4. 修改「authenticate」(驗證) 部分,使用下列字串修改「Auth-Type PAP」區塊:

      Auth-Type PAP {
      # pap
      ldap
      }

GitLab

如需將 GitLab 連線至安全 LDAP 服務的操作說明,請參閱 Configure Google Secure LDAP for GitLab (為 GitLab 設定 Google 安全 LDAP)。

Itopia/Ubuntu

如需將 Itopia/Ubuntu 連線至安全 LDAP 服務的操作說明,請參閱 Configuring Google Cloud Identity LDAP on Ubuntu 16.04 for user logins (在 Ubuntu 16.04 上設定 Google Cloud Identity LDAP 以供使用者登入)。

Ivanti / LanDesk

步驟如下:

  1. 在 Ivanti Web 伺服器上,使用文字編輯器開啟下列兩個資料夾中的 OpenLDAPAuthenticationConfiguration.xmlOpenLDAPSSLAuthenticationConfiguration.xml

    C:\ProgramData\LANDesk\ServiceDesk\servicedesk.FrameworkC:\ProgramData\LANDesk\ServiceDesk\servicedesk.WebAccess (其中 servicedesk 是執行個體名稱)
  2. <Server> 值更新為 ldap.google.com
  3. 更新 <Port> 值,將純文字通訊埠改為 3268 並啟用 StartTLS;另外將 SSL/TLS 通訊埠改為 3269 (預設值如果是 389,就代表純文字通訊埠;如果是 636,則代表 SSL/TLS 通訊埠)。
  4. <TestDN> 值設為 DN 格式的網域名稱。(例如,針對「example.com」輸入 dc=example,dc=com)。
  5. ..ProgramData\LANDesk\ServiceDesk\ServiceDesk.Framework\tps.config..ProgramData\LANDesk\ServiceDesk\WebAccess\tps.config 中加入以下指令列:

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPLogon.OpenLDAPAuthenticationProvider" />

    或以下指令列:

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPSSLLogon.OpenLDAPSSLAuthenticationProvider" />
  6. 在 Ivanti Configuration Center 開啟所需執行個體。
  7. 按一下「Service Desk Framework」應用程式旁邊的 [Edit] (編輯)。
    畫面上會隨即顯示 Service Desk Framework 的「Edit Application」(編輯應用程式) 對話方塊。
  8. 在「Configuration parameters」(設定參數) 群組的「Logon policy」(登入政策) 清單中,選取 [Explicit only] (僅限明確),然後按一下 [OK] (確定)。
  9. 按一下 Web Access 應用程式旁邊的「編輯」
    畫面上會隨即顯示 Web Access 的「Edit Application」(編輯應用程式) 對話方塊。
  10. 在「Configuration parameters」(設定參數) 群組的「Logon policy」(登入政策) 清單中,選取「Explicit only」(僅限明確),然後按一下「OK」(確定)。

登入時,請輸入相關聯網域使用者的網路密碼。

LDAP 伺服器驗證異常狀況記錄功能

如果您無法順利設定 LDAP 伺服器驗證,可以啟用異常狀況記錄功能來找出問題。異常狀況記錄功能預設為停用,建議您在調查問題完畢後重新停用這項功能。

如何啟用 LDAP 伺服器驗證異常狀況記錄功能:

  1. 在文字編輯器中開啟相應的驗證設定 XML 檔案:

    DirectoryServiceAuthenticationConfiguration.xmlOpenLDAPAuthenticationConfiguration.xmlOpenLDAPSSLAuthenticationConfiguration.xml
  2. 將以下程式碼行:

    <ShowExceptions>false</ShowExceptions>
    變更為:
    <ShowExceptions>true</ShowExceptions>
  3. 儲存變更。

Ldp.exe (Windows)

步驟如下:

  1. 將憑證和金鑰檔案轉換成一個 PKCS12 格式的檔案。在命令提示字元視窗輸入下列指令:

    如果您使用的是 macOS 或 Linux,請輸入以下指令:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    輸入密碼,將輸出檔案加密。

    如果您使用的是 Windows,請輸入以下指令:

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    重要事項:「<憑證檔案>.crt」和「<憑證檔案>.key」這兩個檔案必須位於相同的目錄中。此外,請確認「key」和「crt」檔案的名稱相同 (只有副檔名不同)。以下範例使用的名稱為「ldap-client.crt」和「ldap-client.key」

  2. 前往控制台。
  3. 在搜尋框中搜尋「憑證」,然後按一下「管理使用者憑證」
  4. 依序前往 [動作] > [所有工作] > [匯入…]。
  5. 選取 [目前使用者],然後點選 [下一步]。
  6. 按一下 [瀏覽…]。
  7. 在對話方塊右下角的「檔案類型」下拉式選單中,選取「個人資訊交換 (&ast;.pfx;&ast;.p12)」
  8. 選取步驟 2 的 ldap-client.p12 檔案,然後依序點選「開啟」和「下一步」
  9. 輸入步驟 2 的密碼,然後點選 [下一步]。
  10. 選取「個人」憑證存放區,然後依序點選「下一步」和「完成」
  11. 執行 Ldp.exe
  12. 依序前往「連線」>「連線…」
  13. 輸入下列連線詳細資料:

    伺服器:ldap.google.com
    連接埠:636
    沒有連線:未勾選
    SSL:已勾選
  14. 按一下 [確定]
  15. 依序點選 [檢視] > [樹狀目錄]。
  16. 輸入基準 DN,也就是 DN 格式的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)。
  17. 按一下 [確定]
  18. 如果連線成功,LDP.exe 就會在右側窗格顯示 Active Directory 內容 (例如基準 DN 內的所有屬性)。

Netgate / pfSense

如需將 Netgate/pfSense 連線至安全 LDAP 服務的操作說明,請參閱「將 Google Cloud Identity 設為驗證來源」。

OpenLDAP/ldapsearch (Linux)

如要透過指令列存取 LDAP 目錄,您可以使用 OpenLDAP ldapsearch 指令。

假設您的用戶端憑證和金鑰檔案分別為 ldap-client.crtldap-client.key而您的網域為 example.com,使用者名稱為 jsmith

$ LDAPTLS_CERT=ldap-client.crt LDAPTLS_KEY=ldap-client.key ldapsearch -H ldaps://ldap.google.com -b dc=example,dc=com '(uid=jsmith)'

這個指令可將相關環境變數設為指向用戶端金鑰。此外,您可以將其他 ldapsearch 選項替換成所需篩選器、要求的屬性等等。如需其他詳細資訊,請參閱 ldapsearch 手冊頁 (「man ldapsearch」)。

ldapsearch (macOS)

步驟如下:

  1. 將憑證和金鑰檔案轉換成一個 PKCS12 格式的檔案。在命令提示字元視窗輸入下列指令:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    輸入密碼,將輸出檔案加密。
  2. 按一下選單列右上角的 ,然後輸入「鑰匙圈存取」
  3. 開啟「鑰匙圈存取」應用程式,然後點選左側清單中的「系統」
  4. 按一下選單列左上方的 [檔案] 選項並選取 [匯入項目]
  5. 找到 ldap-client.p12 產生的位置,選取 [ldap-client.p12],然後按一下「開啟」
    系統顯示提示時,請輸入您的密碼。
    名稱為「LDAP Client」的憑證應會顯示在系統鑰匙圈憑證的清單中。
  6. 點選「LDAP Client」憑證旁邊的箭頭。私密金鑰會出現在下方。
    1. 按兩下私密金鑰。
    2. 從對話方塊中選取「取用權限控制」分頁標籤,然後按一下左下角的「+」圖示。
    3. 在隨即開啟的視窗輸入 Command+Shift+G 即可開啟新視窗,然後將現有文字改成 /usr/bin/ldapsearch

    4. 按一下 [前往]

      系統會開啟醒目顯示 ldapsearch 的視窗。

    5. 按一下「新增」。

    6. 按一下「儲存變更」,並在系統提示時輸入您的密碼。

      現在您可以使用 OpenLDAP ldapsearch 指令,透過指令列存取 LDAP 目錄了。

  7. 假設您先前匯入 Keychain 的 ldap-client.p12 檔案名稱為 LDAP Client,您的網域是 example.com 且使用者名稱為 jsmith,請輸入下列指令:

    $ LDAPTLS_IDENTITY="LDAP Client" ldapsearch -H ldaps://ldap.google.com:636 -b dc=example,dc=com '(uid=jsmith)'

這個指令可將相關環境變數設為指向已匯入的用戶端憑證。此外,您可以將其他 ldapsearch 選項替換成所需篩選器、要求的屬性等等。如需詳細資訊,請參閱 ldapsearch 說明文件頁面 (指令為「man ldapsearch」)。

OpenVPN (社群版)

步驟如下:

  1. 視需要安裝及設定 OpenVPN;如已安裝並設定完成,則請在 OpenVPN 中開啟設定頁面。

    一般 VPN 設定不在本文的說明範圍內。設定 VPN 後,您就可以透過 LDAP 新增使用者驗證和授權。具體來說,您必須安裝「openvpn-auth-ldap」外掛程式。

    $ sudo apt-get install openvpn openvpn-auth-ldap
  2. 將 LDAP 用戶端金鑰和憑證檔案分別複製到 /etc/openvpn/ldap-client.key/etc/openvpn/ldap-client.crt
  3. 建立包含以下內容的 /etc/openvpn/auth-ldap.conf 檔案 (假設網域名稱為「example.com」):

    <LDAP>
    URL ldaps://ldap.google.com:636 #
    Timeout 15
    TLSEnable false
    TLSCACertDir /etc/ssl/certs
    TLSCertFile /etc/openvpn/ldap-client.crt
    TLSKeyFile /etc/openvpn/ldap-client.key
    </LDAP>
    <Authorization>
    BaseDN "dc=example,dc=com"
    SearchFilter "(uid=%u)" # (or choose your own LDAP filter for users)
    RequireGroup false
    </Authorization>

  4. 編輯 OpenVPN 設定檔,通常名為「/etc/openvpn/server.conf」或其他類似名稱。在檔案底部新增下列內容:

    plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth-ldap.conf
    verify-client-cert optional

  5. 重新啟動 OpenVPN 伺服器。

    $ sudo systemctl restart openvpn@server
  6. 將 VPN 用戶端設為採用使用者的使用者名稱和密碼。例如,在 OpenVPN 用戶端設定中將 auth-user-pass 新增到 OpenVPN 用戶端設定檔結尾,然後啟動 OpenVPN 用戶端:

    $ openvpn --config /path/to/client.conf
  7. 按照操作說明將 stunnel 當做 Proxy 使用

OpenVPN 存取伺服器 (商業版)

如需將 OpenVPN 存取伺服器連線至安全 LDAP 服務的操作說明,請參閱「透過 OpenVPN 存取伺服器設定 Google 安全 LDAP」。

PaperCut MF 和 PaperCut NG

如需將 PaperCut 連線至安全 LDAP 服務的操作說明,請參閱「如何在 PaperCut 中同步處理及驗證 Google Workspace 和 Google Cloud Identity 使用者」。

Puppet Enteprise

如需將 Puppet Enterprise 連線至安全 LDAP 服務的操作說明,請參閱 Google Cloud Directory for PE (PE 適用的 Google Cloud Directory)。

Softerra LDAP Browser

重要事項:開始設定前,請先確認已安裝 Softerra LDAP Browser 4.5 (4.5.19808.0) 以上版本。詳情請參閱 LDAP Browser 4.5

步驟如下:

  1. 將憑證和金鑰檔案轉換成一個 PKCS12 格式的檔案。在命令提示字元視窗輸入下列指令:

    如果您使用的是 macOS 或 Linux,請輸入以下指令:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    輸入密碼,將輸出檔案加密。

    如果您使用的是 Windows,請輸入以下指令:

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    重要事項:「<憑證檔案>.crt」和「<憑證檔案>.key」這兩個檔案必須位於相同的目錄中。此外,請確認「key」和「crt」檔案的名稱相同 (只有副檔名不同)。以下範例使用的名稱為「ldap-client.crt」和「ldap-client.key」

  2. 在 Softerra LDAP Browser 中安裝金鑰組。
    1. 依序前往 [Tools] (工具) > [Certificate Manager] (憑證管理員)
    2. 點選 [Import…] (匯入…)。
    3. 點選「Next」
    4. 按一下 [瀏覽…]。
    5. 在對話方塊右下角的「File type」(檔案類型) 下拉式清單中,選取「Personal Information Exchange (&ast;.pfx;&ast;.p12)」(個人資訊交換 (&ast;.pfx;&ast;.p12))
    6. 選取上述步驟 2 中的 ldap-client.p12 檔案。
    7. 依序點選 [Open] (開啟) 和 [Next] (下一步)。
    8. 輸入上述步驟 2 中的密碼,然後點選 [Next] (下一步)。
    9. 選取「個人」憑證存放區。
    10. 按一下「Next」
    11. 按一下「完成」
  3. 新增伺服器設定檔。
    1. 依序前往「File」>「New」>「New Profile…」
    2. 輸入設定檔名稱,例如「Google LDAP」
    3. 按一下「Next」

      輸入以下資訊:

      Host (主機): ldap.google.com
      Port (通訊埠):
      636
      Base DN (基準 DN):以 DN 格式輸入的網域名稱 (假設您的網域為 example.com,則輸入 dc=example,dc=com)。
      Use secure connection (SSL) (使用安全連線 (SSL)):已勾選
    4. 按一下「Next」
    5. 選取 [External (SSL Certificate)] (外部 (SSL 憑證))。
    6. 按一下「Next」
    7. 按一下「完成」

Sophos Mobile

如需將 Sophos Mobile 連線至安全 LDAP 服務的操作說明,請參閱「Connecting Sophos Mobile to Google Cloud Identity / Google Cloud Directory using Secure LDAP」(使用安全 LDAP 將 Sophos Mobile 連線至 Google Cloud Identity/Google Cloud Directory)。

Splunk

將 Splunk 連線至安全 LDAP 服務時,請務必使用 Splunk 8.1.4 以上版本。使用 Splunk 8.1.3 等舊版 Splunk 時,系統可能會向 LDAP 伺服器傳送過多 LDAP 查詢,導致 LDAP 配額快速用盡。如要進一步瞭解 Splunk 8.1.3 版的問題,請參閱 Splunk 已知問題

步驟如下:

  1. 將 LDAP 用戶端金鑰和憑證檔案分別複製到 /home/splunk/splunkadmin/etc/openldap/certs/ldap-client.key/home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt

    $ cat /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.key > /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

    $ sudo chown $(splunkuser):$(splunkuser) /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

    $ sudo chmod 644 /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

  2. 編輯 ldap.conf 檔案,新增以下設定:

    ssl start_tls
    TLS_REQCERT never
    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem

  3. 在使用者 /home/splunkadmin/.ldaprc 檔案中新增以下設定:

    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

  4. 使用 Splunk 網頁 UI 新增 LDAP 策略。請輸入以下詳細資料,然後按一下「儲存」

名稱

Google 安全 LDAP

主機

ldap.google.com

Port (通訊埠)

636

已啟用 SSL

已勾選

連線順序

1

繫結 DN

輸入您在 Google 管理控制台產生的存取憑證

繫結 DN 密碼

輸入您在 Google 管理控制台產生的存取憑證

Base DN (基準 DN)

以 DN 格式輸入的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)

使用者數量篩選器

針對要用來篩選使用者的物件類別輸入使用者數量篩選器。

使用者名稱屬性

uid

實際名稱屬性

displayname

電子郵件地址屬性

郵件

群組對應屬性

dn

群組基準 DN

以 DN 格式輸入的網域名稱 (假設您的網域為「example.com」,則輸入「ou=Groups,dc=example,dc=com」)

靜態群組搜尋篩選器

針對要用來篩選靜態群組的物件類別輸入靜態群組搜尋篩選器。

群組名稱屬性

cn

靜態成員屬性

成員

SSSD (Red Hat Enterprise 和 CentOS)

進行使用者驗證期間,SSSD 會執行使用者查詢,藉此取得使用者的更多資訊。為確保這個 LDAP 用戶端的使用者驗證程序順利進行,您必須針對已開啟「驗證使用者憑證」的所有機構單位開啟「讀取使用者資訊」和「讀取群組資訊」(如需操作說明,請參閱設定存取權限)。

如要在 Red Hat 8 或 CentOS 8 中將 SSSD 用戶端連線至安全 LDAP 服務:

  1. 將 SSSD 用戶端新增至安全 LDAP 服務:
    1. 在 Google 管理控制台中,依序前往 [應用程式] > [LDAP] > [新增用戶端]
      請務必使用公司帳戶 (而非個人 Gmail 帳戶) 登入。
    2. 輸入用戶端詳細資料,然後按一下 [繼續]
    3. 設定「存取權限」
      驗證使用者憑證 - 整個網域
      讀取使用者資訊 - 整個網域
      讀取群組資訊 - 開啟
    4. 按一下 [新增 LDAP 用戶端]。
    5. 下載系統產生的憑證。
    6. 按一下 [繼續前往用戶端詳細資料]
    7. 將服務狀態變更為「開啟」
  2. 安裝依附元件:

    dnf install openldap-clients sssd-ldap
    install -d --mode=700 --owner=sssd --group=root /etc/sssd/ldap


    解壓縮憑證的 ZIP 檔案,然後將 .crt 與 .key 檔案複製到 /etc/sssd/ldap
  3. (選用) 使用 ldapsearch 進行測試:

    LDAPTLS_REQCERT=never \
    LDAPTLS_KEY=Google.key \
    LDAPTLS_CERT=Google.crt \
    ldapsearch -H ldaps://ldap.google.com:636/ \
    -b dc=example,dc=com \
    -D usertoverify@example.com \
    -W \
    '(mail=usertoverify@example.com)' \
    mail dn


    系統提示時,輸入使用者的 Google 密碼。

    注意:使用者必須擁有 Google Workspace Enterprise 或 Cloud Identity 進階版的授權。

  4. 建立 /etc/sssd/sssd.conf 檔案,並加入以下內容:

    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /etc/sssd/ldap/Google.crt
    ldap_tls_key = /etc/sssd/ldap/Google.key
    ldap_tls_reqcert = never
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID

  5. 更新權限與 SELinux 標籤:

    chown 0:0 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    chmod 600 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    restorecon -FRv /etc/sssd

  6. 重新啟動 SSSD:

    systemctl restart sssd
  7. 測試:

    從安全殼層到伺服器:

    ssh -l user@example.com {HOSTNAME}

疑難排解

  1. 檢查 SSSD 版本 (至少須為 1.15.2 版):

    # sssd --version
    2.2.3

  2. 在 RHEL/CentOS (或任何強制執行 SELinux 的發行版) 中,SSSD 設定檔、憑證檔和金鑰必須位於 sssd_conf_t 角色能夠存取的目錄:

    # egrep "object_r:sssd_conf_t" /etc/selinux/targeted/contexts/files/file_contexts

    查看 /var/log/audit/audit.log 是否有 AVC 拒絕訊息。

  3. 檢查 /etc/nsswitch.conf 的 passwd、shadow、group 與 netgroup 實體是否有「sss」:

    passwd: files sss
    shadow: files sss
    group: files sss
    netgroup: files sss


    在這裡,本機檔案會覆寫 LDAP 使用者。
  4. 檢查 /var/log/sssd.conf 是否有設定錯誤:

    例子:
    [sssd] [sss_ini_add_snippets] (0x0020): Config merge error: File /etc/sssd/sssd.conf did not pass access check. Skipping.

    動作:您必須將 .conf 檔案設定為 chmod 600。

    例子:
    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_groups_use_matching_rule_in_chain' is not allowed in section 'domain/{DOMAIN}'. Check for typos.

    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_initgroups_use_matching_rule_in_chain' is not allowed in section 'domain/{DOMAIN}'. Check for typos.

    動作:從 sssd.conf 移除符合 LDAP 延伸模組的不支援群組。

  5. 檢查 /var/log/sssd_{DOMAIN}.log 是否有 LDAP/network/auth 錯誤。

    例子:

    [sssd[be[example.com]]] [sss_ldap_init_sys_connect_done] (0x0020): ldap_install_tls failed: [Connect error] [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate)]

    動作:您必須將「ldap_tls_reqcert = never」加入 sssd.conf。

    如想取得更詳細的錯誤訊息,請在 sssd.conf 的網域區段下方新增「debug_level = 9」,然後重新啟動 SSSD。

SSSD (其他 Linux 發行版)

進行使用者驗證期間,SSSD 會執行使用者查詢,藉此取得使用者的更多資訊。為確保這個 LDAP 用戶端的使用者驗證程序順利進行,您必須針對已開啟「驗證使用者憑證」的所有機構單位開啟「讀取使用者資訊」和「讀取群組資訊」(如需操作說明,請參閱設定存取權限)。

如何將 SSSD 用戶端連線至安全 LDAP 服務:

  1. 安裝 SSSD 1.15.2 以上版本。

    $ sudo apt-get install sssd
  2. 假設您的用戶端憑證和金鑰檔案分別名為 /var/ldap-client.crt/var/ldap-client.key,而您的網域為 example.com,則須依照下列設定編輯 /etc/sssd/sssd.conf


    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /var/ldap-client.crt
    ldap_tls_key = /var/ldap-client.key
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID
    ldap_groups_use_matching_rule_in_chain = true
    ldap_initgroups_use_matching_rule_in_chain = true

  3. 變更設定檔的擁有權和權限:

    $ sudo chown root:root /etc/sssd/sssd.conf
    $ sudo chmod 600 /etc/sssd/sssd.conf

  4. 重新啟動 SSSD:

    $ sudo service sssd restart

提示:如果您用於操作 SSSD 模組的 Linux 電腦在 Google Compute Engine 上沒有外部 IP 位址,只要啟用 Google 服務內部存取權,您還是可以連線到安全 LDAP 服務。詳情請參閱「設定私人 Google 存取權」。

macOS

請按照下列步驟連線至 macOS 用戶端,以便使用安全 LDAP 服務進行使用者帳戶驗證。

系統需求

  • macOS 必須為 Catalina 10.15.4 以上版本。
  • 您必須擁有 Google 超級管理員使用者 ID,才能完成準備階段的步驟 1。
  • 您必須具備本機管理員權限才能進行這項設定。

內容:

準備階段

本節主要說明如何進行手動設定及使用安全 LDAP 服務測試 macOS 驗證。

步驟 1:在 Google 管理控制台中將 macOS 新增為 LDAP 用戶端

如需操作說明,請參閱「新增 LDAP 用戶端」一文或觀看安全 LDAP 服務示範。在這個過程中,您也會下載一個自動產生的傳輸層安全標準 (TLS) 用戶端憑證。

步驟 2:將憑證匯入系統鑰匙圈

  1. 將憑證 (於步驟 1 下載的 ZIP 檔案) 和金鑰複製到 macOS 電腦。
    提示:將檔案解壓縮,以便搜尋憑證和金鑰檔案。
  2. 將金鑰組匯入系統鑰匙圈:
    1. 將金鑰和憑證轉換為一個 PKCS 12 (.p12) 檔案。在終端機執行下列指令:

      openssl pkcs12 -export -out ldap-client.p12 -in ldap-client.crt -inkey ldap-client.key

      提示:請記下 .p12 檔案的名稱。

      系統會要求您輸入密碼。請輸入要用於加密 .p12 檔案的密碼。

    2. 開啟「鑰匙圈存取」應用程式。

    3. 按一下「系統」鑰匙圈。

    4. 依序點選 [檔案] > [輸入項目]

    5. 選取在先前步驟中建立的「ldap-client.p12」檔案。

    6. 如果出現系統提示,請輸入管理員密碼,允許修改系統鑰匙圈。

    7. 輸入在先前步驟中建立的密碼,將 .p12 檔案解密。

      注意:金鑰清單中應該會顯示新的憑證和相關聯的私密金鑰,憑證的名稱可能為「LDAP Client」。請記下憑證名稱,以便執行下方的後續步驟。
    8. 按照本文「ldapsearch (macOS)」一節的步驟 6設定私密金鑰的存取權控管,以便新增下方指定的應用程式。如果「所有項目」類別中未顯示私密金鑰,請切換至「我的憑證」類別,然後展開相應的憑證以找出正確的私密金鑰項目。

      如操作說明中所述,ldapsearch 應用程式僅適用於疑難排解,不可用於其他用途。通常將 macOS 存取權授予使用者前,會先移除這個應用程式。

      您必須將下列三個應用程式加入存取控制清單 (ACL):

      /System/Library/CoreServices/Applications/Directory Utility
      /usr/libexec/opendirectoryd
      /usr/bin/dscl
  3. /etc/openldap/ldap.conf 檔案中新增以下指令列,並確認「LDAP Client」與匯入 .p12 檔案後,macOS 鑰匙圈存取應用程式中顯示的憑證名稱完全相同 (名稱來自產生憑證的 X.509 主體通用名稱):

    sudo bash -c 'echo -e "TLS_IDENTITY\tLDAP Client" >> /etc/openldap/ldap.conf'

步驟 3:將裝置指向 Google 目錄以進行驗證

開啟「目錄工具程式」應用程式,建立新的 LDAP 目錄節點:

  1. 按一下鎖頭圖示,即可進行變更並輸入密碼。
  2. 選取「LDAPv3」並點選鉛筆圖示,即可編輯設定。
  3. 按一下 [新增…]
  4. 輸入 ldap.google.com 做為伺服器名稱,選取「使用 SSL 加密」,然後點選「手動」
  5. 選取新的伺服器名稱,然後按一下 [編輯…]
  6. 輸入描述性的設定名稱,例如「Google Secure LDAP」
  7. 選取「使用 SSL 加密」,並確認通訊埠已設為「636」
  8. 前往「搜尋和對應」分頁
    1. 在下拉式選單中依序選取「連接這個 LDAPv3 伺服器」>「RFC2307」
    2. 出現系統提示時,請在「搜尋基準網域尾碼」中輸入網域相關資訊,例如,針對「zomato.com」的網域名稱輸入 dc=zomato,dc=com
    3. 按一下 [確定]
    4. 在「使用者」記錄類型底下設定屬性:
      1. 在「記錄類型和屬性」部分選取「使用者」,然後按一下「+」按鈕。
      2. 在彈出式視窗中依序選取「屬性類型」>「GeneratedUID」,然後按一下「確定」,關閉彈出式視窗。

        展開「使用者」後,GeneratedUID 應會顯示在下方。
      3. 點選該 GeneratedUID,然後按一下右側方塊中的「+」圖示。
      4. 在文字方塊中輸入「apple-generateduid」,然後按一下 Enter 鍵。
      5. 點選「使用者」節點下方的「NFSHomeDirectory」屬性。
      6. 在畫面右側,將這個屬性的值更新為 #/Users/$uid$
      7. 按一下「確定」,然後輸入密碼以儲存變更。
  9. 在「目錄工具程式」視窗中指定新的 LDAP 設定:
    1. 前往「搜尋政策」分頁。
    2. 按一下鎖頭圖示以進行變更,並在系統顯示提示時,輸入目前使用者的密碼。
    3. 將下拉式選單的選項從「搜尋路徑」改為「自訂路徑」
    4. 開啟「認證」分頁,然後點選「+」圖示。
    5. 在目錄網域清單中選擇 /LDAPv3/ldap.google.com,然後按一下「新增」
    6. 按一下「套用」按鈕;如果出現系統提示,請輸入管理員密碼。
  10. 執行下列四個指令,以停用 DIGEST-MD5、CRAM-MD5、NTLM 和 GSSAPI SASL 驗證機制。macOS 會使用「簡單繫結」,透過 Google 安全 LDAP 服務進行驗證:

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string DIGEST-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string NTLM" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

  11. 重新啟動後即可重新載入 OpenDirectory 設定。

步驟 4:建立行動帳號 (允許離線登入)

所有 Google Workspace 或 Cloud Identity 使用者都可以透過自己的使用者名稱和密碼登入網路帳戶 (Google 帳戶),不過必須在有網路連線的情況下。如果使用者希望即使在離線時也能登入帳戶,可以建立行動帳號,這樣一來,無論是否能連線至網路,他們都可以使用網路帳戶 (Google 帳戶) 的使用者名稱和密碼登入。詳情請參閱「在 Mac 上建立和設定行動帳號」。

如何為安全 LDAP 服務使用者建立行動帳號:

  1. 執行下列指令,連線至安全 LDAP 伺服器,並設定主路徑和行動帳戶:

    sudo /System/Library/CoreServices/ManagedClient.app/Contents/Resources/createmobileaccount -n $uid -v

    提示:$uid 替換為與使用者 Google 帳戶相關聯的電子郵件地址使用者名稱部分。舉例來說,jsmith@solarmora.com 的使用者名稱部分是 jsmith

  2. 當系統要求提供「SecureToken admin user name」時,請輸入管理員使用者名稱,待下一個提示出現時,再輸入密碼;這項操作會將「$uid」新增至 FileVault。如果 macOS 磁碟已加密,就必須採取上述步驟。

步驟 5:(選用) 設定登入畫面偏好設定

  1. 依序點選左下角的「系統偏好設定」>「使用者與群組」>「登入選項」
  2. 提供管理員憑證以便解鎖。
  3. 將「顯示登入視窗為」變更為「名稱和密碼」

步驟 6:重新啟動並登入裝置

  1. 確認裝置已連上網際網路。如果沒有網路連線,安全 LDAP 服務使用者將無法順利登入。
    注意:只有第一次登入時需要連上網路,之後使用者就能在沒有網路連線的情況下直接登入。
  2. 透過已設定要使用安全 LDAP 進行驗證的使用者帳戶登入裝置。

部署階段

本節主要說明如何為使用者自動進行裝置設定。在已於準備階段完成手動設定的 macOS 裝置上,執行下方的步驟 1 和 2。

步驟 1:透過 Apple Configurator 2 使用憑證建立 Mac 描述檔

  1. 在您已透過安全 LDAP 服務手動設定 macOS 驗證的裝置上安裝 Apple Configurator 2
  2. 開啟 Apple Configurator 2,建立新的描述檔,然後在「憑證」部分按一下 [設定],匯入先前產生的 .p12 檔案。

    注意:請確認匯入的 .p12 檔案設有密碼。在憑證的「密碼」部分輸入該檔案的密碼。

  3. 儲存這個設定檔。
  4. (如果裝置使用 M1 或 M2 處理器,請略過這個步驟,直接前往步驟 5。在文字編輯器中開啟描述檔,然後在第一個 <dict> 標記的位置加入下列指令列:

    <key>PayloadScope</key>
    <string>System</string>


    由於 Apple Configurator 尚不支援 macOS 的描述檔,所以必須新增上述指令列。
  5. 在第二個 <dict> 標記與憑證資料並排的位置加入下列指令列:

    <key>AllowAllAppsAccess</key>
    <true/>


    這可以確保所有應用程式都能存取這個憑證。

步驟 2:將目錄設定檔 (plist) 轉換為 XML 格式

在這個步驟中,您必須擷取在準備階段步驟 3 完成的所有手動設定,然後將其轉換為 XML 檔案。您可以使用這個檔案或是先前在步驟 1 建立的 Mac 描述檔來自動設定其他 macOS 裝置。

  1. 將 /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist 複製到桌面或其他位置。
  2. 將這個檔案轉換為 XML 格式,以便透過文字編輯器進行檢查。在終端機執行下列指令:

    sudo plutil -convert xml1 <path>/ldap.google.com.plist

    您可以前往下列位置存取這個檔案:<path>/ldap.google.com.plist
  3. 變更上述檔案的權限,以便開啟 XML 檔案。請確認檔案內容並非空白。

步驟 3:建立 Python 指令碼,以便自動設定所有使用者的裝置

複製下方的 Python 指令碼,然後將其儲存為 Python 檔案 (.py 檔案)。

注意:這個範例指令碼與 Python 3.10.x 版本相容,我們僅按原樣提供這個指令碼。Google 支援團隊不會針對指令碼範例提供相關支援。

Ldap_python_config.py

#!/usr/bin/python
from OpenDirectory import ODNode, ODSession, kODNodeTypeConfigure
from Foundation import NSMutableData, NSData

import os
import sys

# Reading plist
GOOGLELDAPCONFIGFILE = open(sys.argv[1], "r")
CONFIG = GOOGLELDAPCONFIGFILE.read()
GOOGLELDAPCONFIGFILE.close()

# Write the plist
od_session = ODSession.defaultSession()
od_conf_node, err = ODNode.nodeWithSession_type_error_(od_session, kODNodeTypeConfigure, None)
request = NSMutableData.dataWithBytes_length_(b' '*32, 32)
request.appendData_(NSData.dataWithBytes_length_(str.encode(CONFIG), len(CONFIG)))
response, err = od_conf_node.customCall_sendData_error_(99991, request, None)

# Edit the default search path and append the new node to allow for login
os.system("dscl -q localhost -append /Search CSPSearchPath /LDAPv3/ldap.google.com")
os.system("bash -c 'echo -e \"TLS_IDENTITY\tLDAP Client\" >> /etc/openldap/ldap.conf' ")

步驟 4:自動設定使用者的裝置

找到您要設定的其他 macOS 裝置,然後按照下列步驟操作:

  1. 將步驟 1 產生的 Mac 描述檔、步驟 2 產生的 XML 設定檔,以及步驟 3 的 Python 指令碼都複製到裝置上。
  2. 如要安裝指令碼的必要依附元件,請執行下列指令:
    python3 -m pip install pyobjc-framework-opendirectory
  3. 執行下列指令:
    sudo python </path/to/saved_python_script> </path/to/ldap.google.com.plist generated in step 2>
  4. 如要將憑證匯入 macOS 系統鑰匙圈,請在步驟 1 產生的 Mac 描述檔上按兩下,然後在系統出現提示時,提供您的 macOS 本機管理員憑證。接著,系統會提示您輸入在準備階段設定的 .p12 密碼。
  5. 重新啟動 macOS 電腦。
  6. 按照準備階段步驟 4 的說明建立行動帳號。如有需要,也可配置準備階段步驟 5 中所列的其他偏好設定。

限制和規範

  • 如果使用者透過 Google 憑證登入 macOS,其 Workspace 帳戶使用者名稱必須與 macOS 使用者個人資料使用者 ID 不同,否則系統會封鎖登入作業。
  • 使用者透過 Google 憑證登入 macOS 後,Google 網站 (例如 myaccount.google.com 或 Google 管理控制台) 就會開始執行使用者密碼管理作業 (重設或復原)。如果您選擇使用第三方解決方案管理密碼,請務必將最新的密碼同步到 Google。
  • 如果管理員建立新使用者或是重設現有使用者的密碼時,開啟了「要求在下次登入變更密碼」設定,使用者便無法透過管理員設定的臨時密碼登入 Mac。
    解決方法:使用者必須透過其他裝置 (例如行動裝置或其他電腦) 登入 Google 設定永久密碼,然後再使用新密碼登入 macOS。
  • 完成上述設定後,Mac 必須連上可正常運作的網際網路,使用者才能在首次登入時存取 ldap.google.com。如果您選擇設定行動帳號,之後即使沒有網路連線也一樣可以登入。
  • Google 安全 LDAP 與 macOS 的整合作業已在 macOS Catalina、Big Sur 和 Monterey 上測試。

疑難排解

如果您無法連上安全 LDAP 服務,請按照下列操作說明進行。

步驟 1:確認連線狀況。

使用 odutil 確認連線狀況。
在終端機執行 odutil show nodenames 指令。
確認 /LDAPv3/ldap.google.com 狀態為「online」。如果不是,請嘗試改用 telnet 選項。

使用 nc 確認連線狀況。
在終端機執行下列指令:nc -zv ldap.google.com 636
如果使用這個方法無法連線至 Google,請改用 IPv4 嘗試連線。

使用 IPv4 確認連線狀況。
您可以將裝置變更為使用 IPv4,步驟如下:

  1. 依序前往 [系統偏好設定] > [網路] > [Wi-Fi] > [進階]。
  2. 在 [進階] 選單中點選 [TCP/IP] 分頁標籤。
  3. 將下拉式選單中的選項從「設定 IPv6」變更為「僅本地連接」
  4. 依序按一下「確定」與「套用」,即可儲存變更。
  5. 透過 ldapsearch 連線執行有效搜尋,檢查服務驗證。

步驟 2:確認是否能查看目錄物件。

  1. 開啟「目錄工具程式」,然後開啟「目錄編輯器」分頁。
  2. 在下拉式清單中選取「/LDAPv3/ldap.google.com」節點。
  3. 確認是否能透過您的 Google 網域查看使用者和群組。

Java 應用程式的設定操作說明

在應用程式 KeyStore 中安裝用戶端憑證,即可將大部分提供 LDAP 功能的 Java 應用程式設定為以用戶端憑證進行驗證。確切的設定檔會依應用程式而異,但是程序大致相似:如要進行設定,則必須安裝 OpenSSL 和 Java 執行階段環境。

  1. 將憑證和金鑰轉換為 Java KeyStore 格式。系統在此過程中會提示您輸入密碼。請選擇一個安全的密碼,並針對所有提示使用相同的密碼。假設您的用戶端金鑰檔案名為 ldap-client.key

    如果您使用的是 macOS 或 Linux,請輸入以下指令:

    $  openssl pkcs12 -export -out java-application-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key
    

    如果您使用的是 Windows,請輸入以下指令:

    $  certutil -mergepfx ldap-client.crt java-application-ldap.pkcs12
    

    重要事項:「<憑證檔案>.crt」和「<憑證檔案>.key」這兩個檔案必須位於相同的目錄中。此外,請確認「key」和「crt」檔案的名稱相同 (只有副檔名不同)。以下範例使用的名稱為「ldap-client.crt」和「ldap-client.key」

  2. 將憑證匯入 KeyStore:

    $  keytool -v -importkeystore -srckeystore java-application-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore java-application-ldap.jks -deststoretype JKS
    
  3. Java 屬性的設定方式會因應用程式而不同,但通常都可以在用於啟動應用程式的「java」命令列上使用 -D 選項設定屬性。針對應用程式設定 Java 屬性:

    javax.net.ssl.keyStore = /<path-to>/java-application-ldap.jks
    javax.net.ssl.keyStorePassword = <password selected above>
    
  4. 按照基本設定操作說明一節的內容,設定應用程式的 LDAP 連線。

選用:將 stunnel 當做 Proxy 使用

如果用戶端並未提供以用戶端憑證向 LDAP 進行驗證的任何方法,您可以將 stunnel 當做 Proxy 使用。

換句話說,您可以將 stunnel 設定為向 LDAP 伺服器提供用戶端憑證,並將用戶端設定為連接至 stunnel。在理想情況下,您執行 stunnel 的伺服器會和應用程式相同,而且僅限於本機接聽,這樣就不會將 LDAP 目錄暴露於伺服器以外的範圍。

步驟如下:

  1. 安裝 stunnel。例如,在 Ubuntu 上:

    $  sudo apt-get install stunnel4
    
  2. 建立設定檔 /etc/stunnel/google-ldap.conf,其中應包含下列內容 (假設 ldap-client.crt 是憑證,而 ldap-client.key 是金鑰):

    [ldap]
    client = yes
    accept = 127.0.0.1:1636
    connect = ldap.google.com:636
    cert = ldap-client.crt
    key =
    ldap-client.key

  3. 編輯 /etc/default/stunnel4 並設定 ENABLED=1,即可啟用 stunnel。

  4. 重新啟動 stunnel。

    $  sudo /etc/init.d/stunnel4 restart
    
  5. 將應用程式設為指向 ldap://127.0.0.1:1636

    您可以將「1636」替換成任何未使用的通訊埠,但同時也要變更上述設定檔中的「accept」指令列。如要這樣做,則必須在用戶端和 stunnel 之間使用明文 LDAP;不過您無須啟用 StartTLS/SSL/TLS,因為這兩者是在本機進行通訊。

注意:如果您選擇在其他伺服器上執行 stunnel,則必須設定防火牆,限制只有必要的應用程式才可以存取您的 stunnel 伺服器。您也可以將 stunnel 設定為使用 TLS 接聽,藉此為應用程式和 stunnel 伺服器之間的資料加密。兩者的設定細節會依您的環境而異。

後續步驟

將 LDAP 用戶端連線至安全 LDAP 服務後,您必須將 LDAP 用戶端的服務狀態切換為「開啟」

如需後續步驟資訊,請參閱 5. 將 LDAP 用戶端切換成「開啟」

注意:如果您嘗試將 LDAP 用戶端連線至服務時發生錯誤,可以視需要使用 ldapsearchADSIldp.exe 等簡易工具排解問題。如需操作說明,請參閱「連線測試與疑難排解」。