如何使用受控識別搭配 Azure 通訊服務

Azure 通訊服務 是完全受控的通訊平臺,可讓開發人員在其應用程式中建置即時通訊功能。 透過搭配 Azure 通訊服務 使用受控識別,您可以簡化應用程式的驗證程式,同時提高其安全性。 本文件涵蓋如何使用受控識別搭配 Azure 通訊服務。

搭配使用受控識別搭配 Azure 通訊服務

Azure 通訊服務 支援使用受控識別向服務進行驗證。 藉由使用受控識別,您就不需要管理自己的存取令牌和認證。

您的 Azure 通訊服務 資源可以指派兩種類型的身分識別:

  1. 系統 指派的身 分識別,系結至您的資源,並在刪除資源時刪除。 您的資源只能有一個系統指派的身分識別。
  2. 使用者指派的身分識別,這是可指派給 Azure 通訊服務 資源的 Azure 資源。 刪除資源時,不會刪除此身分識別。 您的資源可以有多個使用者指派的身分識別。

若要搭配 Azure 通訊服務 使用受控識別,請遵循下列步驟:

  1. 將您的受控識別存取權授與通訊服務資源。 此指派可以透過 Azure 入口網站、Azure CLI 和 Azure 通訊管理 SDK。
  2. 使用受控識別向 Azure 通訊服務 進行驗證。 您可以透過支援受控識別的 Azure SDK 或 REST API 來完成驗證。

新增系統指派的身分識別

  1. 在應用程式頁面的左側瀏覽中,向下捲動至 [設定] 群組。

  2. 選取 [身分識別]。

  3. 在 [系統指派] 索引標籤內,將 [狀態] 切換為 [開啟]。 選取 [儲存]。 顯示如何啟用系統指派受控識別的螢幕快照。

新增使用者指派的身分識別

將使用者指派的身分識別指派給 Azure 通訊服務 資源時,必須先建立身分識別,然後將其資源標識符新增至您的通訊服務資源。

首先,您必須建立使用者指派的受控識別資源。

  1. 根據這些指示建立使用者指派的受控識別資源。

  2. 在應用程式頁面的左側瀏覽中,向下捲動至 [設定] 群組。

  3. 選取 [身分識別]。

  4. 選取 [使用者指派]>[新增]

  5. 搜尋並選取您之前建立的身分識別,然後選取 [新增]顯示如何啟用使用者指派受控識別的螢幕快照。

使用 Azure 通訊服務 管理 SDK 的受控識別

您也可以使用 Azure 通訊管理 SDK,將受控識別指派給 Azure 通訊服務 資源。 藉由在建立資源時或更新資源時,引進資源定義中的身分識別屬性,即可達成此指派。

您可以使用適用於 .NET 的 Azure 通訊管理 SDK,在 上CommunicationServiceResourceData 設定 Identity 屬性,將受控識別指派給 Azure 通訊服務 資源。

例如:

public async Task CreateResourceWithSystemAssignedManagedIdentity()
{
    ArmClient armClient = new ArmClient(new DefaultAzureCredential());
    SubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();

    //Create Resource group
    ResourceGroupCollection rgCollection = subscription.GetResourceGroups();
    // With the collection, we can create a new resource group with an specific name
    string rgName = "myRgName";
    AzureLocation location = AzureLocation.WestUS2;
    ArmOperation<ResourceGroupResource> lro = await rgCollection.CreateOrUpdateAsync(WaitUntil.Completed, rgName, new ResourceGroupData(location));
    ResourceGroupResource resourceGroup = lro.Value;

    // get resource group collection
    CommunicationServiceResourceCollection collection = resourceGroup.GetCommunicationServiceResources();
    string communicationServiceName = "myCommunicationService";
    
    // Create Communication Service Resource
    var identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned);
    CommunicationServiceResourceData data = new CommunicationServiceResourceData("global")
    {
        DataLocation = "UnitedStates",
        Identity = identity
    };
    var communicationServiceLro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, communicationServiceName, data);
    var resource = communicationServiceLro.Value;
}

如需使用 .NET 管理 SDK 的詳細資訊,請參閱 適用於 .NET 的 Azure 通訊管理 SDK。

如需管理資源實例的特定詳細資訊,請參閱 管理您的通訊服務資源實例

注意

資源可以同時擁有系統指派和使用者指派的身分識別。 在此情況下,type 屬性將會是 SystemAssigned,UserAssigned

您也可以將 屬性指定 typeNone來達成從資源移除所有受控識別指派。

下一步

現在您已瞭解如何使用 Azure 通訊服務 啟用受控識別。 請考慮在自己的應用程式中實作這項功能,以簡化驗證程式並改善安全性。