建立可存取資源的 Azure Active Directory 應用程式和服務主體

在本文中,您將瞭解如何建立 Azure Active Directory (Azure AD) 應用程式和服務主體,以搭配角色型存取控制使用。 當您在 Azure AD 中註冊新的應用程式時,系統會自動為應用程式註冊建立服務主體。 服務主體是 Azure AD 租使用者中的應用程式身分識別。 資源存取受限於指派給服務主體的角色,以便您控制哪些資源可供存取,以及在哪個層級上存取。 基於安全性考慮,建議一律使用服務主體搭配自動化工具,而不是允許他們以使用者身分識別登入。

在本文中,您將在Azure 入口網站中建立單一租使用者應用程式。 此範例適用于一個組織內所使用的企業營運應用程式。 您也可以使用 Azure PowerShellAzure CLI建立服務主體。

重要

若不要建立服務主體,可考慮使用 Azure 資源的受控識別作為應用程式識別碼。 若程式碼執行的服務支援受控識別,且存取的資源支援 Azure AD 驗證,則受控識別會是更好的選擇。 若要深入了解 Azure 資源的受控識別,包含目前哪些服務支援該功能,請參閱什麼是適用於 Azure 資源的受控識別?

如需應用程式註冊、應用程式物件與服務主體之間的關係詳細資訊,請參閱 Azure Active Directory 中的應用程式和服務主體物件

必要條件

若要在 Azure AD 租使用者中註冊應用程式,您需要:

註冊應用程式所需的權限

您必須有足夠權限向 Azure AD 租用戶註冊應用程式,並為應用程式指派 Azure 訂閱中的角色。 若要完成這些工作,您需要 Application.ReadWrite.All 許可權。

向 Azure AD 註冊應用程式並建立服務主體

  1. 登入 Azure 入口網站

  2. 搜尋並選取 [Azure Active Directory]。

  3. 選取[應用程式註冊],然後選取 [新增註冊]。

  4. 舉例來說,將應用程式命名為 "example-app"。

  5. 選取支援的帳戶類型,以決定可以使用此應用程式的人員。

  6. 針對您想要建立的應用程式類型,選取 [重新導向 URI] 下方的 [Web]。 輸入要傳送存取權杖的目標 URI。

  7. 選取 [註冊]。

    鍵入應用程式的名稱。

您已建立 Azure AD 應用程式和服務主體。

將角色指派給應用程式

若要存取訂閱中的資源,您必須為應用程式指派角色。 決定哪個角色可提供應用程式的適當權限。 若要深入瞭解可用的角色,請參閱 Azure 內建角色

您可以針對訂用帳戶、資源群組或資源的層級設定範圍。 較低的範圍層級會繼承較高層級的權限。

  1. 登入 Azure 入口網站

  2. 選取您想要指派應用程式的範圍層級。 例如,若要在訂用帳戶範圍指派角色,請搜尋並選取 [ 訂用帳戶]。 如果您未看見所尋找的訂用帳戶,請選取 [全域訂閱篩選]。 請確定已針對租使用者選取您想要的訂用帳戶。

  3. 選取 [存取控制 (IAM)]。

  4. 選取 [新增],然後選取 [新增角色指派]。

  5. 在 [角色] 索引標籤中,選取您想要指派給清單中應用程式的角色。 例如,若要允許應用程式執行重新開機、啟動和停止實例等動作,請選取 參與者 角色。

  6. 選取 [ 下一步]。

  7. 在 [ 成員] 索引 標籤上。選取 [指派存取權],然後選取 [使用者、群組或服務主體]

  8. 選取 [選取成員]。 根據預設,Azure AD 應用程式不會顯示在可用選項中。 若要尋找您的應用程式,請依其名稱搜尋它。

  9. 選取 [ 選取] 按鈕,然後選取 [ 檢閱 + 指派]。

    角色指派的螢幕擷取畫面。

您的服務主體已設定。 您可以開始使用它來執行指令碼或應用程式。 若要管理您的服務主體 (權限、使用者同意權限、查看哪些使用者已同意、檢閱權限、查看登入資訊等),請移至 [企業應用程式]。

下節說明如何取得以程式設計方式登入時所需的值。

登入應用程式

以程式設計方式登入時,請在驗證要求中傳遞租使用者識別碼和應用程式識別碼。 您也需要憑證或驗證金鑰。 若要取得 (租使用者) 識別碼和應用程式識別碼的目錄:

  1. 搜尋選取 [Azure Active Directory]。
  2. 在 Azure AD 中,從 [應用程式註冊] 選取您的應用程式。
  3. 在應用程式的概觀頁面上,複製目錄 (租使用者) 識別碼值,並將其儲存在您的應用程式程式碼中。
  4. 複製應用程式 (用戶端) 識別碼值,並將其儲存在您的應用程式程式碼中。

設定驗證

有兩種驗證類型可用於服務主體:密碼式驗證 (應用程式密碼) 和憑證式驗證。 我們建議使用憑證,但您也可以建立應用程式祕密。

如果您有現有的憑證,可以使用現有的憑證。 (選擇性) 您可以建立自我簽署憑證以「僅供測試之用」。 若要建立自我簽署憑證,請開啟 Windows PowerShell 並使用下列參數執行New-SelfSignedCertificate,以在您的電腦上的使用者憑證存放區中建立憑證:

$cert=New-SelfSignedCertificate -Subject "CN=DaemonConsoleCert" -CertStoreLocation "Cert:\CurrentUser\My"  -KeyExportPolicy Exportable -KeySpec Signature

使用可從 Windows 控制台存取的管理使用者憑證 MMC 嵌入式管理單元,將此憑證匯出至檔案。

  1. 從 [開始] 功能表選取 [執行],然後輸入 certmgr.msc。 隨即出現目前使用者的憑證管理員工具。
  2. 若要查看您的憑證,請在左窗格的 [憑證 - 目前的使用者] 下方,展開 [個人] 目錄。
  3. 以滑鼠右鍵按一下您建立的憑證,選取 [所有工作][ > 匯出]。
  4. 遵循「憑證匯出精靈」的步驟。

若要上傳憑證:

  1. 搜尋並選取 [Azure Active Directory] 。
  2. 在 Azure AD 中,從 [應用程式註冊] 選取您的應用程式。
  3. 選取 [憑證]& 祕密
  4. 選取 [ 憑證],然後選取 [ 上傳憑證 ],然後選取 (現有憑證或您匯出) 的自我簽署憑證。
  5. 選取 [新增]。

在應用程式註冊入口網站中註冊應用程式的憑證之後,請啟用用戶端應用程式的程式碼以使用憑證。

選項 2:建立新的應用程式祕密

如果您選擇不使用憑證,您可以建立新的應用程式祕密。

  1. 搜尋並選取 [Azure Active Directory] 。
  2. 選取[應用程式註冊],然後從清單中選取您的應用程式。
  3. 選取 [憑證]& 祕密
  4. 選取 [用戶端密碼],然後選取 [新增用戶端密碼]。
  5. 提供秘密的描述及持續時間。
  6. 選取 [新增]。

儲存用戶端密碼之後,就會顯示用戶端密碼的值。 請複製此值,因為您之後將無法擷取金鑰, 您將提供金鑰值與應用程式識別碼,以應用程式身分登入。 將金鑰值儲存在應用程式可擷取的地方。

顯示用戶端密碼的螢幕擷取畫面。

設定資源的存取原則

您可能需要針對應用程式需要存取的資源設定額外的許可權。 例如,您也必須更新金鑰保存庫的存取原則,讓應用程式能夠存取金鑰、祕密或憑證。

若要設定存取原則:

  1. 登入 Azure 入口網站

  2. 選取您的金鑰保存庫,然後選取 [ 存取原則]。

  3. 選取 [新增存取原則],然後選取您想要授與應用程式的金鑰、祕密和憑證權限。 選取您先前建立的服務主體。

  4. 選取 [新增 ] 以新增存取原則。

  5. [儲存]。

    新增存取原則

後續步驟