Настройка ролей 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 в приложениях.
Следующие шаги
Примечание.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .
DICOM® является зарегистрированным товарным знаком Национальной ассоциации производителей электрических технологий для публикаций по стандартам, касающихся цифровых коммуникаций медицинской информации.