建立可存取資源的 Azure Active Directory 應用程式和服務主體
在本文中,您將瞭解如何建立 Azure Active Directory (Azure AD) 應用程式和服務主體,以搭配角色型存取控制使用。 當您在 Azure AD 中註冊新的應用程式時,系統會自動為應用程式註冊建立服務主體。 服務主體是 Azure AD 租使用者中的應用程式身分識別。 資源存取受限於指派給服務主體的角色,以便您控制哪些資源可供存取,以及在哪個層級上存取。 基於安全性考慮,建議一律使用服務主體搭配自動化工具,而不是允許他們以使用者身分識別登入。
在本文中,您將在Azure 入口網站中建立單一租使用者應用程式。 此範例適用于一個組織內所使用的企業營運應用程式。 您也可以使用 Azure PowerShell 或 Azure CLI建立服務主體。
重要
若不要建立服務主體,可考慮使用 Azure 資源的受控識別作為應用程式識別碼。 若程式碼執行的服務支援受控識別,且存取的資源支援 Azure AD 驗證,則受控識別會是更好的選擇。 若要深入了解 Azure 資源的受控識別,包含目前哪些服務支援該功能,請參閱什麼是適用於 Azure 資源的受控識別?。
如需應用程式註冊、應用程式物件與服務主體之間的關係詳細資訊,請參閱 Azure Active Directory 中的應用程式和服務主體物件。
必要條件
若要在 Azure AD 租使用者中註冊應用程式,您需要:
- Azure AD 使用者帳戶。 若您還沒有帳戶,可以免費建立帳戶。
註冊應用程式所需的權限
您必須有足夠權限向 Azure AD 租用戶註冊應用程式,並為應用程式指派 Azure 訂閱中的角色。 若要完成這些工作,您需要 Application.ReadWrite.All
許可權。
向 Azure AD 註冊應用程式並建立服務主體
登入 Azure 入口網站。
搜尋並選取 [Azure Active Directory]。
選取[應用程式註冊],然後選取 [新增註冊]。
舉例來說,將應用程式命名為 "example-app"。
選取支援的帳戶類型,以決定可以使用此應用程式的人員。
針對您想要建立的應用程式類型,選取 [重新導向 URI] 下方的 [Web]。 輸入要傳送存取權杖的目標 URI。
選取 [註冊]。
您已建立 Azure AD 應用程式和服務主體。
將角色指派給應用程式
若要存取訂閱中的資源,您必須為應用程式指派角色。 決定哪個角色可提供應用程式的適當權限。 若要深入瞭解可用的角色,請參閱 Azure 內建角色。
您可以針對訂用帳戶、資源群組或資源的層級設定範圍。 較低的範圍層級會繼承較高層級的權限。
登入 Azure 入口網站。
選取您想要指派應用程式的範圍層級。 例如,若要在訂用帳戶範圍指派角色,請搜尋並選取 [ 訂用帳戶]。 如果您未看見所尋找的訂用帳戶,請選取 [全域訂閱篩選]。 請確定已針對租使用者選取您想要的訂用帳戶。
選取 [存取控制 (IAM)]。
選取 [新增],然後選取 [新增角色指派]。
在 [角色] 索引標籤中,選取您想要指派給清單中應用程式的角色。 例如,若要允許應用程式執行重新開機、啟動和停止實例等動作,請選取 參與者 角色。
選取 [ 下一步]。
在 [ 成員] 索引 標籤上。選取 [指派存取權],然後選取 [使用者、群組或服務主體]
選取 [選取成員]。 根據預設,Azure AD 應用程式不會顯示在可用選項中。 若要尋找您的應用程式,請依其名稱搜尋它。
選取 [ 選取] 按鈕,然後選取 [ 檢閱 + 指派]。
您的服務主體已設定。 您可以開始使用它來執行指令碼或應用程式。 若要管理您的服務主體 (權限、使用者同意權限、查看哪些使用者已同意、檢閱權限、查看登入資訊等),請移至 [企業應用程式]。
下節說明如何取得以程式設計方式登入時所需的值。
登入應用程式
以程式設計方式登入時,請在驗證要求中傳遞租使用者識別碼和應用程式識別碼。 您也需要憑證或驗證金鑰。 若要取得 (租使用者) 識別碼和應用程式識別碼的目錄:
- 搜尋選取 [Azure Active Directory]。
- 在 Azure AD 中,從 [應用程式註冊] 選取您的應用程式。
- 在應用程式的概觀頁面上,複製目錄 (租使用者) 識別碼值,並將其儲存在您的應用程式程式碼中。
- 複製應用程式 (用戶端) 識別碼值,並將其儲存在您的應用程式程式碼中。
設定驗證
有兩種驗證類型可用於服務主體:密碼式驗證 (應用程式密碼) 和憑證式驗證。 我們建議使用憑證,但您也可以建立應用程式祕密。
選項 1 (建議) :建立和上傳自我簽署憑證
如果您有現有的憑證,可以使用現有的憑證。 (選擇性) 您可以建立自我簽署憑證以「僅供測試之用」。 若要建立自我簽署憑證,請開啟 Windows PowerShell 並使用下列參數執行New-SelfSignedCertificate,以在您的電腦上的使用者憑證存放區中建立憑證:
$cert=New-SelfSignedCertificate -Subject "CN=DaemonConsoleCert" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature
使用可從 Windows 控制台存取的管理使用者憑證 MMC 嵌入式管理單元,將此憑證匯出至檔案。
- 從 [開始] 功能表選取 [執行],然後輸入 certmgr.msc。 隨即出現目前使用者的憑證管理員工具。
- 若要查看您的憑證,請在左窗格的 [憑證 - 目前的使用者] 下方,展開 [個人] 目錄。
- 以滑鼠右鍵按一下您建立的憑證,選取 [所有工作][ > 匯出]。
- 遵循「憑證匯出精靈」的步驟。
若要上傳憑證:
- 搜尋並選取 [Azure Active Directory] 。
- 在 Azure AD 中,從 [應用程式註冊] 選取您的應用程式。
- 選取 [憑證]& 祕密。
- 選取 [ 憑證],然後選取 [ 上傳憑證 ],然後選取 (現有憑證或您匯出) 的自我簽署憑證。
- 選取 [新增]。
在應用程式註冊入口網站中註冊應用程式的憑證之後,請啟用用戶端應用程式的程式碼以使用憑證。
選項 2:建立新的應用程式祕密
如果您選擇不使用憑證,您可以建立新的應用程式祕密。
- 搜尋並選取 [Azure Active Directory] 。
- 選取[應用程式註冊],然後從清單中選取您的應用程式。
- 選取 [憑證]& 祕密。
- 選取 [用戶端密碼],然後選取 [新增用戶端密碼]。
- 提供秘密的描述及持續時間。
- 選取 [新增]。
儲存用戶端密碼之後,就會顯示用戶端密碼的值。 請複製此值,因為您之後將無法擷取金鑰, 您將提供金鑰值與應用程式識別碼,以應用程式身分登入。 將金鑰值儲存在應用程式可擷取的地方。
設定資源的存取原則
您可能需要針對應用程式需要存取的資源設定額外的許可權。 例如,您也必須更新金鑰保存庫的存取原則,讓應用程式能夠存取金鑰、祕密或憑證。
若要設定存取原則:
登入 Azure 入口網站。
選取您的金鑰保存庫,然後選取 [ 存取原則]。
選取 [新增存取原則],然後選取您想要授與應用程式的金鑰、祕密和憑證權限。 選取您先前建立的服務主體。
選取 [新增 ] 以新增存取原則。
[儲存]。
後續步驟
- 了解如何使用 Azure PowerShell 或 Azure CLI建立服務主體。
- 若要了解如何指定安全性原則,請參閱 Azure 角色型存取控制 (Azure RBAC)。
- 如需可授與或拒絕使用者的可用動作清單,請參閱 Azure Resource Manager 資源提供者作業。
- 如需使用 Microsoft Graph 來處理應用程式註冊的詳細資訊,請參閱應用程式 API 參考。