簡體   English   中英

無需全域委派即可訪問 Google Workspace 管理員 SDK?

[英]Access the Google Workspace Admin SDK with out domain-wide delegation?

我正在嘗試使用 NodeJS 編寫一個服務器應用程序,該應用程序可以訪問我們的 Google Workspaces (G-Suite) 帳戶的 Admin-SDK。 到目前為止,我發現的所有教程都描述了以下過程:

  1. 在控制台中設置項目並啟用所需的 API,例如 Admin SDK API。
  2. 在 GCP 項目中創建服務帳號。
  3. 為服務帳號啟用 G Suite 域范圍委派
  4. 創建一個 G-Suite 管理員帳戶。 我們稱之為admin@mycompany.com
  5. 向 API 發出請求時,使用服務帳戶模擬管理員帳戶。

所以訪問目錄 API 可能看起來像這樣:

const serviceAccountEmail = "gcp-service-account@gcp-project.iam.gserviceaccount.com";
const privateKey = "-----BEGIN PRIVATE KEY-----....";
const scopes = ['https://www.googleapis.com/auth/admin.directory.group'];
const adminEmail = "admin@mycompany.com";

const auth = new google.auth.JWT(
    serviceAccountEmail,
    null,
    privateKey,
    scopes,
    adminEmail,
    );

const admin = await google.admin({
        version: 'directory_v1',
        auth,
    });

以下注釋顯示在服務帳戶上的Enable G Suite Domain-wide Delegation復選框旁邊:

允許此服務帳號被授權訪問 G Suite 域中所有用戶的數據,而無需對其部分進行手動授權。 學到更多

也許我沒有正確理解這一點,但這不是令人難以置信的寬容和嚴重違反最小特權原則嗎? 我了解我的應用程序需要以admin@mycompany.com管理員帳戶身份進行身份驗證,但是有沒有辦法將其限制為僅此帳戶而不是“G Suite 域上的所有用戶數據”

根據 Delegating domain-wide authority to the service account,服務帳戶只能訪問與該帳戶共享的任何內容:

G Suite 域的管理員可以授權應用代表 G Suite 域中的用戶訪問用戶數據。

這意味着服務帳戶只能訪問應用程序模擬的帳戶中的數據。

您應對您的安全帳戶負責

例如,您可以實施檢查以允許模擬特定組織單位的帳戶,但所有這些檢查都必須在應用程序級別完成。

例如,使用您的服務帳戶,您可以檢查模擬帳戶所屬的組織單位。 如果檢查成功,您可以繼續使用域范圍的委派服務帳戶模擬此帳戶並執行所需的操作。

單獨而言,全域委派確實是一項非常強大的功能,它允許應用程序訪問您組織的整個 G Suite 帳戶中的用戶數據。 作為超級管理員帳戶,您有責任正確、安全地管理它。

參考

委派全域權限

控制域范圍的委派

當超級管理員單獨啟用范圍時,最小權限原則會部分執行。

但正如您猜到的那樣,這對用戶數據無效,因為應用程序可以訪問並且可以模擬任何用戶。 所以答案是否定的,您不能將其限制為單個 email。

對我來說似乎有點矯枉過正,因為有些電子郵件非常敏感,你不應該冒充它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM