Azure Digital Twins'de rol atamaları oluşturma ve yönetme
Önemli
Azure Digital Twins hizmetinin yeni bir sürümü yayınlandı. Yeni hizmetin genişletilmiş özellikleri ışığında özgün Azure Digital Twins hizmeti (bu belge kümesinde açıklanmıştır) kullanımdan kaldırılmıştır.
Yeni hizmetin belgelerini görüntülemek için etkin Azure Digital Twins Belgeleri'ni ziyaret edin.
Azure Digital Twins, kaynaklara erişimi yönetmek için rol tabanlı erişim denetimi (RBAC) kullanır.
Rol atamalarına genel bakış
Her rol ataması aşağıdaki tanıma uygundur:
{
"roleId": "00e00ad7-00d4-4007-853b-b9968ad000d1",
"objectId": "be2c6daa-a3a0-0c0a-b0da-c000000fbc5f",
"objectIdType": "ServicePrincipalId",
"path": "/",
"tenantId": "00f000bf-86f1-00aa-91ab-2d7cd000db47"
}
Aşağıdaki tabloda her öznitelik açıklanmaktadır:
Öznitelik | Name | Gerekli | Tür | Açıklama |
---|---|---|---|---|
Roleıd | Rol tanımı tanımlayıcısı | Evet | Dize | İstenen rol atamasının benzersiz kimliği. Sistem API'sini sorgulayarak veya aşağıdaki tabloyu gözden geçirerek rol tanımlarını ve tanımlayıcılarını bulun. |
objectId | Nesne tanımlayıcısı | Evet | Dize | Azure Active Directory kimliği, hizmet sorumlusu nesne kimliği veya etki alanı adı. Rol atamasının atandığı veya atandığı kişi. Rol ataması ilişkili türüne göre biçimlendirilmelidir. DomainName objectIdType için objectId karakteriyle “@” başlamalıdır. |
objectIdType | Nesne tanımlayıcı türü | Evet | Dize | Kullanılan Nesne Tanımlayıcısı türü. Aşağıdaki Desteklenen ObjectIdTypes bölümüne bakın. |
path | Ara çubuğu yolu | Evet | Dize | Nesnenin Space tam erişim yolu. /{Guid}/{Guid} bunun bir örneğidir. Bir tanımlayıcının grafın tamamı için rol ataması gerekiyorsa belirtin "/" . Bu karakter kökü gösterir, ancak kullanımı önerilmez. Her zaman En Az Ayrıcalık İlkesi'ni izleyin. |
tenantId | Kiracı tanımlayıcısı | Değişir | Dize | Çoğu durumda Azure Active Directory kiracı kimliği. ve TenantId ObjectIdTypes için DeviceId izin verilmiyor. ve ServicePrincipalId ObjectIdTypes için UserId gereklidir. DomainName ObjectIdType için isteğe bağlı. |
Desteklenen rol tanımı tanımlayıcıları
Her rol ataması bir rol tanımını Azure Digital Twins ortamınızdaki bir varlıkla ilişkilendirir.
Aşağıdaki tabloda Azure Digital Twins'de kullanılabilen roller açıklanmaktadır:
Role | Açıklama | Tanımlayıcı |
---|---|---|
Alan Yöneticisi | Belirtilen alan ve altındaki tüm düğümler için CREATE, READ, UPDATE ve DELETE izni. Genel izin. | 98e44ad7-28d4-4007-853b-b9968ad132d1 |
Kullanıcı Yöneticisi | Kullanıcılar ve kullanıcıyla ilgili nesneler için CREATE, READ, UPDATE ve DELETE izni. Boşluklar için READ izni. | dfaac54c-f583-4dd2-b45d-8d4bbc0aa1ac |
Cihaz Yöneticisi | Cihazlar ve cihazla ilgili nesneler için CREATE, READ, UPDATE ve DELETE izni. Boşluklar için READ izni. | 3cdfde07-bc16-40d9-bed3-66d49a8f52ae |
Anahtar Yöneticisi | Erişim anahtarları için CREATE, READ, UPDATE ve DELETE izinleri. Boşluklar için READ izni. | 5a0b1afc-e118-4068-969f-b50efb8e5da6 |
Belirteç Yöneticisi | Erişim anahtarları için READ ve UPDATE izni. Boşluklar için READ izni. | 38a3bb21-5424-43b4-b0bf-78ee228840c3 |
Kullanıcı | İlgili nesneleri içeren boşluklar, algılayıcılar ve kullanıcılar için READ izni. | b1ffdb77-c635-4e7e-ad25-948237d85b30 |
Destek Uzmanı | Erişim anahtarları dışında her şey için READ izni. | 6e46958b-dc62-4e7c-990c-c3da2e030969 |
Cihaz Yükleyicisi | Cihazlar ve algılayıcılar için ilgili nesneleri içeren READ ve UPDATE izni. Boşluklar için READ izni. | b16dd9fe-4efe-467b-8c8c-720e2ff8817c |
Ağ Geçidi Cihazı | Algılayıcılar için CREATE izni. İlgili nesneleri içeren cihazlar ve algılayıcılar için OKUMA izni. | d4c69766-e9bd-4e61-bfc1-d8b6e686c7a8 |
Desteklenen nesne tanımlayıcı türleri
Daha önce objectIdType özniteliği tanıtılmıştı.
objectIdType
(veya nesne tanımlayıcı türü), bir role verilen kimliğin türünü ifade eder. ve UserDefinedFunctionId
türleri dışındaDeviceId
, nesne tanımlayıcı türleri Azure Active Directory nesnelerinin özelliklerine karşılık gelir.
Aşağıdaki tabloda Azure Digital Twins'de desteklenen nesne tanımlayıcı türleri yer alır:
Tür | Açıklama |
---|---|
UserId | Kullanıcıya rol atar. |
DeviceId | Bir cihaza rol atar. |
DomainName | Etki alanı adına rol atar. Belirtilen etki alanı adına sahip her kullanıcının ilgili rolün erişim hakları vardır. |
TenantId | Kiracıya rol atar. Belirtilen Azure AD kiracı kimliğine ait her kullanıcının ilgili rolün erişim hakları vardır. |
ServicePrincipalId | Hizmet sorumlusu nesne kimliğine rol atar. |
UserDefinedFunctionId | Kullanıcı tanımlı işleve (UDF) rol atar. |
Rol atama işlemleri
Azure Digital Twins, rol atamaları için tam CREATE, READ ve DELETE işlemlerini destekler. UPDATE işlemleri rol atamaları eklenerek, rol atamaları kaldırılarak veya rol atamalarının erişim verdiği Uzamsal Zeka Grafı düğümlerini değiştirerek işlenir.
Sağlanan Swagger başvuru belgeleri tüm kullanılabilir API uç noktaları, istek işlemleri ve tanımlar hakkında daha fazla bilgi içerir.
İpucu
API özellik kümesini göstermek için bir Swagger sneak önizlemesi sağlanır. docs.westcentralus.azuresmartspaces.net/management/swagger'da barındırlenmektedir.
Kendi oluşturduğunuz Yönetim API'si Swagger belgelerine şu konumdan erişebilirsiniz:
https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/swagger
Name | Şununla değiştir |
---|---|
YOUR_INSTANCE_NAME | Azure Digital Twins örneğinizin adı |
YOUR_LOCATION | Örneğinizin barındırıldığı sunucu bölgesi |
Aşağıdaki örneklerde Digital YOUR_MANAGEMENT_API_URL
Twins API'lerinin URI'sini ifade eder:
https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Name | Şununla değiştir |
---|---|
YOUR_INSTANCE_NAME | Azure Digital Twins örneğinizin adı |
YOUR_LOCATION | Örneğinizin barındırılıyor olduğu bölge |
Hizmet sorumlunuza izin verme
Hizmet sorumlunuza izin vermek genellikle Azure Digital Twins ile çalışırken atabileceğiniz ilk adımlardan biridir. Bu, şu işlemleri kapsar:
- Azure CLI veya PowerShell aracılığıyla Azure örneğinizde oturum açın.
- Hizmet sorumlusu bilgilerinizi alma.
- İstenen rolü hizmet sorumlunuza atama.
Uygulama kimliğiniz Size Azure Active Directory'de sağlanır. Active Directory'de Azure Digital Twins yapılandırma ve sağlama hakkında daha fazla bilgi edinmek için Hızlı Başlangıç'ı okuyun.
Uygulama kimliğine sahip olduktan sonra aşağıdaki komutlardan birini yürütebilirsiniz. Azure CLI'da:
az login
az ad sp show --id <ApplicationId>
PowerShell'de:
Login-AzAccount
Get-AzADServicePrincipal -ApplicationId <ApplicationId>
Yönetici rolüne sahip bir kullanıcı, URL'ye kimliği doğrulanmış bir HTTP POST isteği yaparak kullanıcıya Alan Yöneticisi rolünü atayabilir:
YOUR_MANAGEMENT_API_URL/roleassignments
Aşağıdaki JSON gövdesiyle:
{
"roleId": "98e44ad7-28d4-4007-853b-b9968ad132d1",
"objectId": "YOUR_SERVICE_PRINCIPLE_OBJECT_ID",
"objectIdType": "ServicePrincipalId",
"path": "YOUR_PATH",
"tenantId": "YOUR_TENANT_ID"
}
Tüm rolleri alma
Tüm kullanılabilir rolleri (rol tanımları) listelemek için, kimliği doğrulanmış bir HTTP GET isteği oluşturun:
YOUR_MANAGEMENT_API_URL/system/roles
Başarılı bir istek, atanabilecek her rol için girişleri olan bir JSON dizisi döndürür:
[
{
"id": "3cdfde07-bc16-40d9-bed3-66d49a8f52ae",
"name": "DeviceAdministrator",
"permissions": [
{
"notActions": [],
"actions": [
"Read",
"Create",
"Update",
"Delete"
],
"condition": "@Resource.Type Any_of {'Device', 'DeviceBlobMetadata', 'DeviceExtendedProperty', 'Sensor', 'SensorBlobMetadata', 'SensorExtendedProperty'} || ( @Resource.Type == 'ExtendedType' && (!Exists @Resource.Category || @Resource.Category Any_of { 'DeviceSubtype', 'DeviceType', 'DeviceBlobType', 'DeviceBlobSubtype', 'SensorBlobSubtype', 'SensorBlobType', 'SensorDataSubtype', 'SensorDataType', 'SensorDataUnitType', 'SensorPortType', 'SensorType' } ) )"
},
{
"notActions": [],
"actions": [
"Read"
],
"condition": "@Resource.Type == 'Space' && @Resource.Category == 'WithoutSpecifiedRbacResourceTypes' || @Resource.Type Any_of {'ExtendedPropertyKey', 'SpaceExtendedProperty', 'SpaceBlobMetadata', 'SpaceResource', 'Matcher'}"
}
],
"accessControlPath": "/system",
"friendlyPath": "/system",
"accessControlType": "System"
}
]
Belirli bir rol atamayı denetleme
Belirli bir rol atamasını denetlemek için, kimliği doğrulanmış bir HTTP GET isteği oluşturun:
YOUR_MANAGEMENT_API_URL/roleassignments/check?userId=YOUR_USER_ID&path=YOUR_PATH&accessType=YOUR_ACCESS_TYPE&resourceType=YOUR_RESOURCE_TYPE
Parametre değeri | Gerekli | Tür | Açıklama |
---|---|---|---|
YOUR_USER_ID | Doğru | Dize | UserId objectIdType için objectId. |
YOUR_PATH | Doğru | Dize | Erişimi denetlemek için seçilen yol. |
YOUR_ACCESS_TYPE | Doğru | Dize | Okuma, Oluşturma, Güncelleştirme veya Silme |
YOUR_RESOURCE_TYPE | Doğru | Dize | Device, DeviceBlobMetadata, DeviceExtendedProperty, ExtendedPropertyKey, ExtendedType, Endpoint, KeyStore, Matcher, Ontology, Report, RoleDefinition, Sensor, SensorExtendedProperty, Space, SpaceBlobMetadata, SpaceExtendedProperty, SpaceResource, SpaceRoleAssignment, System, UerDefinedFunction, User, UserBlobMetadata veya UserExtendedProperty |
Başarılı bir istek bir boole true
değeri döndürür veya false
erişim türünün kullanıcıya verilen yol ve kaynak için atanıp atanmadığını belirtir.
Yola göre rol atamaları alma
Bir yol için tüm rol atamalarını almak için, kimliği doğrulanmış bir HTTP GET isteği oluşturun:
YOUR_MANAGEMENT_API_URL/roleassignments?path=YOUR_PATH
Değer | Şununla değiştir |
---|---|
YOUR_PATH | Boşluğun tam yolu |
Başarılı bir istek, seçilen yol parametresiyle ilişkilendirilmiş her rol atamasıyla birlikte bir JSON dizisi döndürür:
[
{
"id": "0000c484-698e-46fd-a3fd-c12aa11e53a1",
"roleId": "98e44ad7-28d4-4007-853b-b9968ad132d1",
"objectId": "0de38846-1aa5-000c-a46d-ea3d8ca8ee5e",
"objectIdType": "UserId",
"path": "/"
}
]
İzni iptal etme
Alıcıdan gelen izni iptal etmek için kimliği doğrulanmış HTTP DELETE isteğinde bulunarak rol atamasını silin:
YOUR_MANAGEMENT_API_URL/roleassignments/YOUR_ROLE_ASSIGNMENT_ID
Parametre | Şununla değiştir |
---|---|
YOUR_ROLE_ASSIGNMENT_ID | Kaldırılacak rol atamasının kimliği |
Başarılı bir DELETE isteği 204 yanıt durumu döndürür. Rol atamasının hala geçerli olup olmadığını denetleyerek rol atamasının kaldırılıp kaldırılmadığını doğrulayın.
Rol ataması oluşturma
Rol ataması oluşturmak için URL'ye kimliği doğrulanmış bir HTTP POST isteği gönderin:
YOUR_MANAGEMENT_API_URL/roleassignments
JSON gövdesinin aşağıdaki şemaya uygun olduğunu doğrulayın:
{
"roleId": "YOUR_ROLE_ID",
"objectId": "YOUR_OBJECT_ID",
"objectIdType": "YOUR_OBJECT_ID_TYPE",
"path": "YOUR_PATH",
"tenantId": "YOUR_TENANT_ID"
}
Başarılı bir istek, yeni oluşturulan rol atamasının kimliğiyle birlikte bir 201 yanıt durumu döndürür:
"d92c7823-6e65-41d4-aaaa-f5b32e3f01b9"
Yapılandırma örnekleri
Aşağıdaki örneklerde, sık karşılaşılan birkaç rol atama senaryosunda JSON gövdenizi yapılandırma adımları gösterilmektedir.
Örnek: Kullanıcının kiracı alanının bir katı için yönetici erişimine ihtiyacı vardır.
{ "roleId": "98e44ad7-28d4-4007-853b-b9968ad132d1", "objectId" : " 0fc863aa-eb51-4704-a312-7d635d70e000", "objectIdType" : "UserId", "tenantId": " a0c20ae6-e830-4c60-993d-a00ce6032724", "path": "/ 000e349c-c0ea-43d4-93cf-6b00abd23a44/ d84e82e6-84d5-45a4-bd9d-006a000e3bab" }
Örnek: Bir uygulama, sahte cihazları ve algılayıcıları test senaryoları çalıştırır.
{ "roleId": "98e44ad7-28d4-0007-853b-b9968ad132d1", "objectId" : "cabf7aaa-af0b-41c5-000a-ce2f4c20000b", "objectIdType" : "ServicePrincipalId", "tenantId": " a0c20ae6-e000-4c60-993d-a91ce6000724", "path": "/" }
Örnek: Bir etki alanının parçası olan tüm kullanıcılar alanlar, algılayıcılar ve kullanıcılar için okuma erişimi alır. Bu erişim, bunlara karşılık gelen ilgili nesneleri içerir.
{ "roleId": " b1ffdb77-c635-4e7e-ad25-948237d85b30", "objectId" : "@microsoft.com", "objectIdType" : "DomainName", "path": "/000e349c-c0ea-43d4-93cf-6b00abd23a00" }
Sonraki adımlar
Azure Digital Twins rol tabanlı erişim denetimini gözden geçirmek için Role-base-access-control makalesini okuyun.
Azure Digital Twins API kimlik doğrulaması hakkında bilgi edinmek için BKZ. API kimlik doğrulaması.