Azure Communication Services は、開発者がリアルタイムの通信機能をアプリケーションに組み込む、フル マネージドの通信プラットフォームです。 Azure Communication Services でマネージド ID を使用することで、アプリケーションの認証プロセスを簡素化しながら、セキュリティを強化できます。 このドキュメントでは、Azure Communication Services でマネージド ID を使用する方法について説明します。
Azure Communication Services でのマネージド ID の使用
Azure Communication Services では、マネージド ID を使用したサービスでの認証がサポートされています。 マネージド ID を使用することで、独自のアクセス トークンと資格情報を管理する必要がなくなります。
Azure Communication Services リソースには、次の 2 種類の ID を割り当てることができます。
- システム割り当て ID は、リソースに関連付けられ、リソースが削除されると削除されます。 リソースでは、システム割り当て ID を 1 つだけ設定できます。
- ユーザー割り当て ID は、Azure Communication Services リソースに割り当てることができる Azure リソースです。 リソースを削除しても、この ID は削除されません。 リソースには、複数のユーザー割り当て ID を設定できます。
Azure Communication Services でマネージド ID を使用するには、次の手順に従います。
- Communication Services リソースへのアクセス権をマネージド ID に付与します。 この割り当ては、Azure portal、Azure CLI、Azure Communication Management SDK を使用して行うことができます。
- マネージド ID を使用して、Azure Communication Services で認証します。 認証は、マネージド ID をサポートする Azure SDK または REST API を使用して行うことができます。
システム割り当て ID を追加する
ユーザー割り当て ID を追加する
ユーザー割り当て ID を Azure Communication Services リソースに割り当てるには、まず ID を作成してから、そのリソース識別子を Communication Service リソースに追加する必要があります。
まず、ユーザー割り当てマネージド ID リソースを作成する必要があります。
次の手順に従って、ユーザー割り当てマネージド ID リソースを作成します。
アプリのページの左側のナビゲーションで、[設定] グループまで下にスクロールします。
アイデンティティ を選択します。
を選択して、>にユーザーを割り当て、を追加します。
Azure Communication Services 管理 SDK を使用したマネージド ID
Azure Communication Management SDK を使用して、Azure Communication Services リソースにマネージド ID を割り当てることもできます。
この割り当てを実現するには、作成時またはリソースの更新時に、リソース定義に ID プロパティを導入します。
Identity
で CommunicationServiceResourceData
プロパティを設定することで、Azure Communication Management SDK for .NET を使用して、マネージド ID を Azure Communication Services リソースに割り当てることができます。
例えば次が挙げられます。
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 Management SDK の使用方法の詳細については、「.NET 用 Azure Communication Management SDK」を参照してください。
リソース インスタンスの管理に固有の詳細については、「 Communication Service リソース インスタンスの管理」を参照してください。
注
リソースは、システム割り当て ID とユーザー割り当て ID の両方を同時に持つことができます。 この場合、 type
プロパティは SystemAssigned,UserAssigned
。
type
プロパティをNone
として指定することで、リソースからすべてのマネージド ID 割り当てを削除することもできます。