Skip to main content

Azure Digital Twins入门 - 创建实例以及服务认证说明

分类:  Azure物联网 标签:  #Azure #Digitial Twin # 发布于: 2023-06-15 20:12:53

我们之前两节都是对Azure Digital Twins的介绍,从本节开始通过边动手边讲解的形式来介绍Azure Digital Twins

我们先创建一个Azure Digital Twins的实例,在创建这个实例之前,你需要有一个Azure账号,如果你还没有账号,可以申请一个免费的,请参考链接:https://www.azuredeveloper.cn/article/how-to-get-free-azure-account

有了账户之后,使用该账户通过Azure Portal登录账户:https://portal.azure.com/

使用Azure Portal创建Azure Digital Twins实例

通过Azure Portal登录到Azure之后,使用搜索,搜索Azure Digital Twins, 如下图点击Create:


选择Create之后出现如下的界面:


需要注意的是图上所示的位置, 必须勾选上,否则的话,您登录的用户虽然创建了实例,但是你可能没有管理的权限,后期需要管理员给你重新赋予权限,当然如果你自己的账号就是管理员,那也就没什么问题。

按照图上的要求,填充好资源组,名称,选择好区域,其他的就下一步就ok了,唯一需要注意的地方是这里:


如上图所示是否需要给新创建的实例一个System Managed Identity, 选择On的话,Azure会帮助你创建一个由Azure管理的标识,后期可以通过这个标识从其他的Azure服务向你创建的Azure Digital Twins授权访问。

提交之后,等待Azure平台完成创建即可,Azure Digital Twins创建还是非常容易的。

Azure Digital Twins服务使用认证说明

在实例创建好了之后,有一点尤其需要注意,我们在创建很多其他的服务的时候,都提供了基于SAS Key认证的形式来访问服务,但是Azure Digital Twins服务没有提供类似的SAS Key, 如下图:


从菜单上可以看到,ADT没有提供任何功能供用户认证,Azure Digital Twins的认证方式完全是基于Azure Activity Directory, 即AAD

基于AAD的认证和授权系统均使用基于角色来进行的,即Azure RBAC(Azure role-base access control), 用户可以通过它向一个security principal进行授权,这个Security Principal可以是一个用户,一个用户组,或者是一个Application Service Principal, 这个取决于用户自己。

另外Azure RBAC实际上是两个步骤,一个是认证,另外一个是授权,同时它也是基于Qauth 2.0协议来授权的。因此在使用Security Principal进行认证的时候第一步是返回一个QAuth 2.0Token, 然后每次请求都会带上这个Token

另外如果使用工具或者SDK来访问该服务,是需要借助Azure的认证包, 例如基于.NetSDK需要包:Azure.Identity, 这个包。我们下一节来演示如何在各种Security Principal的情况下使用该包来认证和使用。

基于Azure RBAC需要赋予的角色说明

Azure Digital Twins向用户提供了两类API

  • 一类是管理API, 例如创建实例,删除实例等等,是关于服务本身的管理的,称为Control panel API, 这类API的授权实际上是基于Azure ARM的授权。
  • 另外一类是用于操作服务实例数据的API, 例如上传模型,创建twins, 关系等等,这类API称为为Data Plane API, 关于这类API提供了内置的角色:
内置角色名角色描述ID
Azure Digital Twins Data OwnerGives full access over Azure Digital Twins resourcescd981a7-7f74-457b-83e1-cceb9e632ffe
Azure Digital Twins Data ReaderGives read-only access to Azure Digital Twins resourcesd57506d4-4c8d-48b1-8587-93c323f6a5a3

注意
这个表格描述的是Azure Global的情况,针对于其他的云,虽然角色的名称和描述是一样的,但是ID可能是会不一样的。

到目前为止,我们创建了一个Azure Digital Twins的实例了,我们下一节来使用它。