Поделиться через


Настройка ролей Azure RBAC с помощью Azure CLI и REST API

В этой статье вы узнаете, как предоставить разрешения клиентским приложениям и пользователям для доступа к Службам данных Работоспособности Azure с помощью интерфейс командной строки Azure (CLI) и REST API. Этот шаг называется назначением ролей или управлением доступом на основе ролей Azure (RBAC). Дополнительные сведения см. в статье "Настройка роли Azure RBAC".

Просмотр и скачивание скриптов CLI и скриптов REST API из примеров служб данных Azure Health Data Services.

Примечание.

Чтобы выполнить операцию назначения ролей, пользователю (или клиентскому приложению) необходимо предоставить разрешения RBAC. Обратитесь за помощью к администраторам подписок Azure.

Назначения ролей с помощью ИНТЕРФЕЙСА командной строки

Вы можете перечислить роли приложения с помощью имен ролей или идентификаторов GUID. Включите имя роли в двойные кавычки, если в нем есть пробелы. Дополнительные сведения см. в разделе Вывод списка всех ролей.

az role definition list --name "FHIR Data Contributor"
az role definition list --name 5a1fc7df-4bf1-4951-a576-89034ee01acd
az role definition list --name "DICOM Data Owner"
az role definition list --name 58a3b984-7adf-4c20-983a-32417c86fbc8

Назначение ролей служб azure Health Data Services

Для назначений ролей для служб данных Работоспособности Azure требуются следующие значения:

  • Имя роли приложения или идентификатор GUID.
  • Идентификатор субъекта-службы для пользователя или клиентского приложения.
  • Область назначения роли, то есть экземпляр службы Служб данных Azure Health. Она включает подписку, группу ресурсов, имя рабочей области и имя службы FHIR или DICOM. Для области можно использовать абсолютный или относительный URL-адрес. Обратите внимание, что "/" не добавляется в начале относительного URL-адреса.
#Azure Health Data Services role assignment
fhirrole="FHIR Data Contributor"
dicomrole="DICOM Data Owner"
clientid=xxx
subscriptionid=xxx
resourcegroupname=xxx
workspacename=xxx
fhirservicename=xxx
dicomservicename=xxx
fhirrolescope="subscriptions/$subscriptionid/resourceGroups/$resourcegroupname/providers/Microsoft.HealthcareApis/workspaces/$workspacename/fhirservices/$fhirservicename"
dicomrolescope="subscriptions/$subscriptionid/resourceGroups/$resourcegroupname/providers/Microsoft.HealthcareApis/workspaces/$workspacename/dicomservices/$dicomservicename"

#find client app service principal id
spid=$(az ad sp show --id $clientid --query objectId --output tsv)

#assign the specified role
az role assignment create --assignee-object-id $spid --assignee-principal-type ServicePrincipal --role "$fhirrole" --scope $fhirrolescope
az role assignment create --assignee-object-id $spid --assignee-principal-type ServicePrincipal --role "$dicomrole" --scope $dicomrolescope

Вы можете проверить состояние назначения роли из ответа командной строки или в портал Azure.

Назначение ролей Azure API для FHIR

Назначения ролей для Azure API для FHIR работают аналогично. Разница заключается в том, что область содержит только службу FHIR, а имя рабочей области не требуется.

#azure api for fhir role assignment
fhirrole="FHIR Data Contributor"
clientid=xxx
subscriptionid=xxx
resourcegroupname=xxx
fhirservicename=xxx
fhirrolescope="subscriptions/$subscriptionid/resourceGroups/$resourcegroupname/providers/Microsoft.HealthcareApis/services/$fhirservicename"

#find client app service principal id
spid=$(az ad sp show --id $clientid --query objectId --output tsv)

#assign the specified role
az role assignment create --assignee-object-id $spid --assignee-principal-type ServicePrincipal --role "$fhirrole" --scope $fhirrolescope

Назначения ролей с помощью REST API

Кроме того, можно отправить запрос Put в REST API назначения ролей напрямую. Дополнительные сведения см. в статье "Назначение ролей Azure с помощью REST API".

Примечание.

Скрипты REST API в этой статье основаны на расширении клиента REST. Если вы находитесь в другой среде, необходимо пересмотреть переменные.

ДЛЯ API требуются следующие значения:

  • Идентификатор назначения, который является значением GUID, которое однозначно идентифицирует транзакцию. Для получения значения GUID можно использовать такие средства, как Visual Studio или расширение Visual Studio Code. Кроме того, вы можете использовать онлайн-инструменты, такие как генератор UUID, чтобы получить его.
  • Версия API, поддерживаемая API.
  • Область для служб данных Работоспособности Azure, которым предоставляются разрешения на доступ. Он включает идентификатор подписки, имя группы ресурсов и имя экземпляра службы FHIR или DICOM.
  • Идентификатор определения роли для ролей, таких как участник данных FHIR или владелец данных DICOM. Используйте az role definition list --name "<role name>" для перечисления идентификаторов определений ролей.
  • Идентификатор субъекта-службы для пользователя или клиентского приложения.
  • Маркер доступа Microsoft Entra к службам https://management.azure.com/данных Azure, а не к службам данных Работоспособности Azure. Маркер доступа можно получить с помощью существующего средства или с помощью команды Azure CLI. az account get-access-token --resource "https://management.azure.com/"
  • Для служб данных Работоспособности Azure область включает имя рабочей области и имя экземпляра службы FHIR/DICOM.
### Create a role assignment - Azure Health Data Services (DICOM)
@roleassignmentid=xxx
@roleapiversion=2021-04-01
@roledefinitionid=58a3b984-7adf-4c20-983a-32417c86fbc8
dicomservicename-xxx
@scope=/subscriptions/{{subscriptionid}}/resourceGroups/{{resourcegroupname}}/providers/Microsoft.HealthcareApis/workspaces/{{workspacename}}/dicomservices/{{dicomservicename}}
#get service principal id
@spid=xxx
#get access token
@token=xxx

PUT https://management.azure.com/{{scope}}/providers/Microsoft.Authorization/roleAssignments/{{roleassignmentid}}?api-version={{roleapiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

{
  "properties": {
    "roleDefinitionId": "/subscriptions/{{subscriptionid}}/providers/Microsoft.Authorization/roleDefinitions/{{roledefinitionid}}",
    "principalId": "{{spid}}"
  }
}

Для Azure API для FHIR область определяется иначе, так как она поддерживает только службу FHIR, и имя рабочей области не требуется.

### Create a role assignment - Azure API for FHIR
@roleassignmentid=xxx
@roleapiversion=2021-04-01
@roledefinitionid=5a1fc7df-4bf1-4951-a576-89034ee01acd
fhirservicename-xxx
@scope=/subscriptions/{{subscriptionid}}/resourceGroups/{{resourcegroupname}}/providers/Microsoft.HealthcareApis/services/{{fhirservicename}}
#get service principal id
@spid=xxx
#get access token
@token=xxx

PUT https://management.azure.com/{{scope}}/providers/Microsoft.Authorization/roleAssignments/{{roleassignmentid}}?api-version={{roleapiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

{
  "properties": {
    "roleDefinitionId": "/subscriptions/{{subscriptionid}}/providers/Microsoft.Authorization/roleDefinitions/{{roledefinitionid}}",
    "principalId": "{{spid}}"
  }
}

Вывод списка экземпляров служб данных Azure Health

При необходимости можно получить список служб Azure Health Data Services или Azure API для FHIR. Версия API основана на службах данных Работоспособности Azure, а не на версии REST API назначения ролей.

Для служб данных Работоспособности Azure укажите идентификатор подписки, имя группы ресурсов, имя рабочей области, службы FHIR или DICOM и версию API.

### Get Azure Health Data Services DICOM services
@apiversion=2021-06-01
@subscriptionid=xxx
@resourcegroupname=xxx
@workspacename=xxx

GET  https://management.azure.com/subscriptions/{{subscriptionid}}/resourceGroups/{{resourcegroupname}}/providers/Microsoft.HealthcareApis/workspaces/{{workspacename}}/dicomservices?api-version={{apiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

Для Azure API для FHIR укажите идентификатор подписки и версию API.

### Get a list of Azure API for FHIR services
@apiversion=2021-06-01
@subscriptionid=xxx

GET  https://management.azure.com/subscriptions/{{subscriptionid}}/providers/Microsoft.HealthcareApis/services?api-version={{apiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

После предоставления соответствующих разрешений клиентскому приложению вы можете получить доступ к Службам данных Работоспособности Azure в приложениях.

Следующие шаги

Доступ с помощью клиента REST

Примечание.

FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .

DICOM® является зарегистрированным товарным знаком Национальной ассоциации производителей электрических технологий для публикаций по стандартам, касающихся цифровых коммуникаций медицинской информации.