在本文中,您將學習如何安全驗證應用程式,並利用 Microsoft Entra PowerShell 模組自動化任務。 它涵蓋基於憑證的驗證、用戶端秘密憑證以及受管理身份。
這些知識使得在不手動管理敏感憑證的情況下,有效且安全地存取 Microsoft Entra 與 Azure 資源。 這對於維持穩健的安全實務及簡化雲端環境中的存取管理至關重要。
Important
僅 App 存取直接授予應用程式權限,並要求管理員同意所需的權限範圍。 欲了解更多僅應用程式存取的資訊,請參閱 Microsoft 身分識別平台 及 OAuth 2.0 用戶端憑證流程。
先決條件
若要使用 Microsoft Entra PowerShell 模組的應用程式存取,您需要:
- 一個 Microsoft Entra ID 帳戶。 若尚未有帳戶,可以免費建立帳戶。
- 下列其中一個角色:
- Microsoft Entra PowerShell 模組已安裝。 請依照安裝 Microsoft Entra PowerShell 模組指南安裝模組。
- 可供應用程式作為認證之用的憑證。 該證書可以是自簽證書,也可以是由權威機構發出的證書。 欲了解更多如何建立自簽憑證的資訊,請參閱 建立自簽公開憑證。 不建議在生產環境中使用自簽憑證。 向認證機構取得生產場景的證書。
使用憑證式認證
你應該有這些資訊可以用憑證來驗證。
- 已上傳至您的 Microsoft Entra 應用程式註冊之憑證主體或該憑證的指紋。
- 申請註冊的應用程式編號。 如果你還沒有應用程式註冊,請參閱 「建立自訂應用程式」。
- 您的租用戶識別碼。
在本節中,您將學習如何使用憑證與 Microsoft Entra PowerShell 模組進行認證。 你可以使用憑證指紋、憑證名稱或憑證本身來認證。 要使用上述範例進行認證,你需要至少以一個 特權角色管理員(Privileged Role Administrator )角色登入。
使用憑證指紋
$params = @{
ClientId = 'YOUR_APP_ID'
TenantId = 'YOUR_TENANT_ID'
CertificateThumbprint = 'YOUR_CERT_THUMBPRINT'
}
Connect-Entra @params
若要在 Microsoft Entra 系統管理中心 中找到憑證指紋,請瀏覽至 身分識別>應用程式註冊>憑證與密碼>憑證。 選擇證書並複製其指紋。
或者,您也可以使用以下 PowerShell 指令取得自簽憑證:
Get-ChildItem Cert:\CurrentUser\My
使用憑證名稱
$params = @{
ClientId = 'YOUR_APP_ID'
TenantId = 'YOUR_TENANT_ID'
CertificateName = 'YOUR_CERT_SUBJECT'
}
Connect-Entra @params
你可以透過執行以下指令找到該憑證主題:
Get-ChildItem Cert:\CurrentUser\My\$CertThumbprint | Select Subject
使用憑證
$cert = Get-ChildItem Cert:\CurrentUser\My\$CertThumbprint
Connect-Entra -ClientId 'YOUR_APP_ID' -TenantId 'YOUR_TENANT_ID' -Certificate $cert
若要使用儲存在您電腦憑證儲存區或其他地點的憑證,並在連接 Microsoft Entra PowerShell 時指定該憑證的位置。
如果認證成功,你會看到訊息 Welcome To Microsoft Graph!。 執行 Get-EntraContext 來驗證你是否用 app-only 方法認證。 輸出應該看起來如下所示。
ClientId : YOUR_APP_ID
TenantId : YOUR_TENANT_ID
CertificateThumbprint :
Scopes : {Group.Read.All, User.Read.All}
AuthType : AppOnly
CertificateName : YOUR_CERT_SUBJECT
Account :
AppName : {Your Awesome Application Name Here}
ContextScope : Process
Environment : Global
使用用戶端秘密憑證
用戶端憑證授權用於驗證並授權應用程式自行存取資源。 透過在 Connect-Entra 中加入 -ClientSecretCredential 參數,支援用戶端秘密憑證。
# Define the Application (Client) ID and Secret
$applicationClientId = '<application(client)ID>' # Application (Client) ID
$applicationClientSecret = '<secret.value>' # Application Secret Value
$tenantId = 'Tenant_Id' # Tenant ID
# Convert the Client Secret to a Secure String
$secureClientSecret = ConvertTo-SecureString -String $applicationClientSecret -AsPlainText -Force
# Create a PSCredential Object Using the Client ID and Secure Client Secret
$clientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $applicationClientId, $secureClientSecret
# Connect to Microsoft Graph Using the Tenant ID and Client Secret Credential
Connect-Entra -TenantId $tenantId -ClientSecretCredential $clientSecretCredential
要建立或新增用戶端秘密,請使用指令 New-EntraServicePrincipalPasswordCredential,或參見:在 Microsoft Entra 系統管理中心 新增用戶端秘密。
Note
建議使用用戶端秘密憑證認證方法時,使用 PowerShell 7 或更高版本。
使用受控識別
撰寫自動化腳本時,常見的挑戰之一是管理用於保護服務間通訊的秘密、憑證、憑證與金鑰。 透過允許模組取得受 Microsoft Entra ID 保護的 Azure 資源存取權杖,消除管理憑證的需求。 Azure 平台負責管理身份,且不需要你建立或輪換任何秘密。
系統指派的管理身份 - 在服務實例上使用自動管理身份。 身份與服務實例的生命週期相關。
Connect-Entra -Identity使用者指派的管理身份 - 使用使用者建立的管理身份作為獨立的 Azure 資源。
Connect-Entra -Identity -ClientId 'User_Assigned_Managed_identity_Client_Id'