[GCP] 如何於 GCP 上設置外部身份認證 (External IDP)

Jason Peng
google-cloud-apac
Published in
6 min readJun 1, 2020

在以下文章,我將展示如何設定一個外部 IDP 搭配 Active Directory (AD) 給 Cloud Identity 作為 GCP 主控台身份認證使用。

在使用 Google Cloud Platform 時,當要登入至 GCP主控台 ,預設的身分驗證來源為 Google Cloud Identity。所以擁有 Google 帳號的使用者,例如 gmail 或是 GSuite 帳號等,都可以利用這樣子的驗證機制的登入使用 GCP。

然而,對於大多數的企業 IT 來說,既有公司的環境內早已有公司內定的身份認證服務,例如 Microsoft 的 Active Directory(AD) 就是一個知名的例子。為了滿足企業用戶的需要,Google Cloud Identity 支援與外部第三方身份認證服務 (IDP) 做整合。

整個配置 Demo 將從頭開始,當作一間剛創立的公司從頭建起整個環境。而在這邊外部 IDP 的選擇,將採用 Active Directory Federation Service (ADFS) 作為公司內認證服務。按實際需要,外部IDP亦可能為其他方案,如:Okta, Keycloak 等。

GCP 搭配Cloud Identity 與 ADFS /AD 進行整合流程架構圖

此篇文章是參考 Google Cloud混合雲解決方案教程 ,更多的資訊你可以在該連結內找到。

準備開始

在按照步驟執行下面操作之前,請先確認已準備好所有預先準備

  • 可以在 Internet 上被有效解析的域名。
  • 準備一個有效網域憑證 (之後將用在ADFS設定上)。
  • 註冊 Google Cloud Identity。
  • 註冊將用於託管 AD 和 ADFS 的 Google Cloud Platform 帳戶。

之後的安裝過程,簡略來說將包括:

  1. 安裝和配置 Active Directory (AD) 服務。
  2. 安裝 Google Cloud Directory Sync,並將其配置為將 AD 身份同步到Google Cloud Identity。
  3. 安裝並配置 Active Directory Federation Servicer(ADFS) 服務器。
  4. 將 Cloud Identity 配置為使用 ADFS 進行用戶身份驗證。
  5. 對整體方案進行測試。

A. 安裝與配置Active Directory (AD) 伺服器.

安裝與配置Active Directory (AD)
  • 在GCP主控台上,創建一台 Window Server 2016 的運行伺服器。
  • 安裝AD並註冊一個自定義域名。
  • 當配置創建 Windows 2016 伺服器時,為了之後 ADFS 使用,記得先勾選允許 HTTPS 流量
  • 安裝 Microsoft Remote Desktop 用戶端程式 (For Windows、For Mac),以協助在遠端桌面中複製/貼上命令,並支持與本機作分享資料夾。

B. 於 Cloud Identity 上創建帳號用於 Directory 同步

  • 點選使用者 ->新增使用者,然後新增一個給Directory Sync使用的帳號。
  • 找到新建立的使用者並點擊打開。
  • 管理員角色與權限下,點擊已指派角色
  • 指派超級管理員角色給該帳號。

C. 安裝 Google Cloud Directory Sync 並配置它,作AD 身份同步至 Google Cloud Identity

安裝/配置Google Cloud Directory Sync
  • 產生一個 Google Identity 帳戶,專門用作AD同步
  • 產生一個 AD 帳戶,專門用作 AD 同步。
  • 安裝並配置 Google Cloud Directory Sync。
  • 產生一個一般 AD 帳戶用於測試同步功能。

資源:

  • 下載 Directory Sync 連結在此
  • PowerShell 命令,用於產生 Windows 內環境資料夾(c:\ProgramData\gcds),之後將用於儲存 GCDS 配置檔。

提示:

  • 在配置 GCDS 的 Authorized User (在 LDAP Configuration 頁籤下),兩種帳號格式皆可:domain\username 或是 username@[FQDN]
  • 預設的 query rule 將搜尋出所有 email 欄位有值的帳號。

(&(objectCategory=person)(objectClass=user)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

  • 當產生 AD 帳號用來測試同步功能時,email 欄位必須設置,該欄位之後將被配置成為 Cloud Identity 用戶 ID。

D. 安裝與配置 Active Directory Federation Services(ADFS)

安裝/配置Active Directory Federation Services
  • 安裝與配置 ADFS,使其能夠被用戶訪問。
  • 配置將 AD email 欄位映射到 SAML NameID。
  • 配置 Cloud Identity 以採用 ADFS 作為其外部 IDP。

提示:

E. 情境測試

驗證部署
  • 使用 AD 帳戶登入 GCP 主控台。

F. 排程 AD 同步

排程AD Sync
  • 為 GCDS 產生一份 PowerShell 運行腳本(ps1)。
  • 為 ps1 腳本,設置排程工作。
  • 手動觸發排程做驗證。

資源:

  • PowerShell 運行腳本範例
  • 從你個人 Profile 複製 GCDS 所需之金鑰至NT AUTHORITY\LOCAL SERVICE的Profile:
  • 排程配置範例

延伸筆記

  • 用命令列手動執行 GCDS
// Simulate
C:\Program Files\Google Cloud Directory Sync> .\sync-cmd.exe -c c:\ProgramData\gcds\config.xml
// Commit
C:\Program Files\Google Cloud Directory Sync> .\sync-cmd.exe -c c:\ProgramData\gcds\config.xml

--

--

Jason Peng
google-cloud-apac

A cloud engineer who love creative ideas. All views and opinions are my own. 所有文章是我的個人觀點,並不代表任何公司組織