Проверка подлинности и авторизация для служб Azure для работы с медицинскими данными
Проверка подлинности
Службы данных работоспособности Azure — это коллекция защищенных управляемых служб с помощью идентификатора Microsoft Entra, глобального поставщика удостоверений, поддерживающего OAuth 2.0.
Чтобы службы работоспособности Azure могли получить доступ к ресурсам Azure, таким как учетные записи хранения и центры событий, необходимо включить управляемое удостоверение системы и предоставить соответствующие разрешения управляемому удостоверению. Дополнительные сведения см. в статье об управляемых удостоверениях Azure.
Клиентские приложения регистрируются в идентификаторе Microsoft Entra и могут использоваться для доступа к службам данных работоспособности Azure. Элементы управления доступом к данным пользователей выполняются в приложениях или службах, реализующих бизнес-логику.
Роли приложений
Прошедшие проверку подлинности пользователи и клиентские приложения служб данных Azure Health должны быть назначены соответствующей роли приложения.
Служба FHIR® в Службах данных Работоспособности Azure предоставляет следующие роли:
- Средство чтения данных FHIR: чтение и поиск данных FHIR.
- Модуль записи данных FHIR: чтение, запись и обратимое удаление данных FHIR.
- FHIR Data Export: чтение и экспорт (оператор $export) данных.
- FHIR Data Import: чтение и импорт данных (оператор $import).
- Участник данных FHIR: выполнение всех операций плоскости данных.
- FHIR Data Converter: используйте преобразователь для преобразования данных.
- FHIR SMART User: позволяет пользователю считывать и записывать данные FHIR в соответствии со спецификациями SMART IG V1.0.0.
Служба DICOM® в Службах данных Работоспособности Azure предоставляет следующие роли:
- Владелец данных DICOM: чтение, запись и удаление данных DICOM.
- Чтение данных DICOM: чтение данных DICOM.
Служба MedTech не требует ролей приложения, но она полагается на Центры событий Azure приемника данных для получения данных, хранящихся в концентраторе событий подписки вашей организации.
Авторизация
После предоставления соответствующих ролей приложения прошедшие проверку подлинности пользователи и клиентские приложения могут получить доступ к Службам данных Работоспособности Azure, получив действительный маркер доступа, выданный идентификатором Microsoft Entra, и выполнить определенные операции, определенные ролями приложения.
- Для службы FHIR маркер доступа зависит от службы или ресурса.
- Для службы DICOM маркер доступа предоставляется
dicom.healthcareapis.azure.com
ресурсу, а не определенной службе. - Для службы MedTech маркер доступа не требуется, так как он не предоставляется пользователям или клиентским приложениям.
Действия по авторизации
Существует два распространенных способа получения маркера доступа, подробно описанного документацией Майкрософт по коду авторизации и потоку учетных данных клиента.
Ниже показано, как получить маркер доступа для служб azure Health Data Services с помощью потока кода авторизации:
Клиент отправляет запрос в конечную точку авторизации Microsoft Entra. Идентификатор Microsoft Entra перенаправляет клиента на страницу входа, на которой пользователь проходит проверку подлинности с помощью соответствующих учетных данных (например, имени пользователя и пароля или двухфакторной проверки подлинности). После успешной проверки подлинности код авторизации возвращается клиенту. Microsoft Entra позволяет вернуть этот код авторизации на зарегистрированный URL-адрес ответа, настроенный в регистрации клиентского приложения.
Клиентское приложение обменивается кодом авторизации для маркера доступа в конечной точке токена Microsoft Entra. Когда клиентское приложение запрашивает маркер, приложению может потребоваться предоставить секрет клиента (который можно добавить во время регистрации приложения).
Клиент отправляет запрос службам данных Azure Health Data Services, например
GET
запрос на поиск всех пациентов в службе FHIR. Запрос включает маркер доступа вHTTP
заголовок запроса, напримерAuthorization: Bearer xxx
.Службы данных работоспособности Azure проверяют, содержит ли маркер соответствующие утверждения (свойства в маркере). Если это допустимо, он завершает запрос и возвращает данные клиенту.
В потоке учетных данных клиента разрешения предоставляются непосредственно самому приложению. Когда приложение представляет маркер ресурсу, ресурс принудительно применяет, что приложение имеет авторизацию для выполнения действия, так как пользователь не участвует в проверке подлинности. Поэтому поток кода авторизации отличается от потока кода авторизации следующим образом:
- Пользователю или клиенту не нужно выполнять интерактивный вход.
- Код авторизации не требуется.
- Маркер доступа получается непосредственно через разрешения приложения.
Маркер доступа
Маркер доступа — это подписанная коллекция свойств (утверждений), закодированная в кодировке Base64, которая передает сведения о удостоверении, ролях и привилегиях клиента, предоставленных пользователю или клиенту.
Службы данных работоспособности Azure обычно ожидают веб-маркера JSON. Она состоит из трех частей:
- Верхний колонтитул
- Полезные данные (утверждения)
- Подпись, как показано на изображении. Дополнительные сведения см. в разделе "Маркеры доступа Azure".
Используйте онлайн-инструменты, такие как https://jwt.ms просмотр содержимого маркера. Например, можно просмотреть сведения о утверждениях.
Тип утверждения | Value | Примечания |
---|---|---|
aud | https://xxx.fhir.azurehealthcareapis.com | Определяет целевого получателя маркера. Аудитория — это идентификатор вашего приложения в id_tokens , назначенный приложению на портале Azure. Приложение должно проверить это значение и отклонить маркер, если значение не соответствует. |
iss | https://sts.windows.net/{tenantid}/ | Определяет службу маркеров безопасности (STS), которая создает и возвращает маркер, и клиент Microsoft Entra, в котором пользователь прошел проверку подлинности. Если маркер был выдан конечной точкой версии 2.0, URI заканчивается /v2.0 . GUID, который указывает, что пользователь является потребителем с учетной записью Майкрософт: 9188040d-6c67-4c5b-b112-36a304b66dad . Приложение должно использовать часть GUID утверждения, чтобы ограничить набор клиентов, которые могут войти в приложение, если это применимо. |
iat | (метка времени) | Значение Issued At (Выпущено в) показывает, когда произошла проверка подлинности этого маркера. |
nbf | (метка времени) | Утверждение "nbf" (не ранее) определяет время, до которого маркер JWT НЕ ДОЛЖЕН приниматься в обработку. |
exp | (метка времени) | Утверждение "exp" (время окончания срока действия) указывает время окончания срока действия или время, после которого маркер JWT НЕ ДОЛЖЕН приниматься в обработку. Ресурс может отклонить маркер до этого времени, например, если требуется изменение проверки подлинности или обнаружен отзыв маркера. |
aio | E2ZgYxxx | Внутреннее утверждение, используемое идентификатором Microsoft Entra для записи данных для повторного использования маркера. Можно пропустить. |
appid | e97e1b8c-xxx | Идентификатор приложения клиента, использующего маркер. Приложение может действовать самостоятельно или от имени пользователя. Идентификатор приложения обычно представляет объект приложения, но он также может представлять объект субъекта-службы в идентификаторе Microsoft Entra ID. |
appidacr | 1 | Указывает на способ проверки подлинности клиента. Для общедоступного клиента значение равно 0. При использовании идентификатора и секрета клиента значение равно 1. Если для аутентификации использовался сертификат клиента, то значение равно 2. |
idp | https://sts.windows.net/{tenantid}/ | Фиксирует поставщика удостоверений, который проверил подлинность субъекта маркера. Это значение идентично значению утверждения издателя, если учетная запись пользователя не находится в том же клиенте, что и издатель — гости, например. Если утверждение отсутствует, это означает, что значение iss можно использовать вместо этого. Для личная учетная запись, используемых в контексте организации (например, личная учетная запись приглашенного в клиент Microsoft Entra), утверждение поставщика удостоверений может быть "live.com" или URI STS, содержащий клиент учетной записи Майкрософт 9188040d-6c67-4c5b-b112-36a304b66dad. |
oid | Например, tenantid | Неизменяемый идентификатор объекта в системе идентификации Майкрософт. В данном случае это учетная запись пользователя. Этот идентификатор однозначно идентифицирует пользователя в разных приложениях— два разных приложения, входя в одно и то же приложение, получает то же значение в утверждении oid. Microsoft Graph возвращает этот идентификатор в качестве свойства идентификатора для данной учетной записи пользователя. Так как oid позволяет нескольким приложениям сопоставлять пользователей, для получения этого утверждения требуется область профиля. Примечание. Если один пользователь существует в нескольких клиентах, пользователь содержит другой идентификатор объекта в каждом клиенте. Они считаются разными учетными записями, даже если пользователь входит в каждую учетную запись с одинаковыми учетными данными. |
rh | 0.ARoxx | Внутреннее утверждение, используемое Azure для повторной проверки маркеров. Его следует игнорировать. |
дочерний объект | Например, tenantid | Субъект, в отношении которого маркер утверждает сведения, например данные о пользователе приложения. Это значение неизменяемо и не может быть переназначен или повторно использован. Тема является попарным идентификатором — это уникально для определенного идентификатора приложения. Таким образом, если один пользователь входит в два разных приложения с помощью двух разных идентификаторов клиента, эти приложения получают два разных значения для утверждения субъекта. Этот результат может не потребоваться в зависимости от требований к архитектуре и конфиденциальности. |
tid | Например, tenantid | ИДЕНТИФИКАТОР GUID, представляющий клиент Microsoft Entra, из которому находится пользователь. Для рабочих и учебных учетных записей значением GUID является неизменяемый идентификатор клиента организации, к которой принадлежит пользователь. Для личная учетная запись значение равно 9188040d-6c67-4c5b-b112-36a304b66dad. Для получения этого утверждения требуется область профиля. |
uti | bY5glsxxxx | Внутреннее утверждение, используемое Azure для повторной проверки маркеров. Его следует игнорировать. |
ver | 1 | Указывает версию маркера. |
Маркер доступа действителен в течение одного часа по умолчанию. Вы можете получить новый маркер или продлить его с помощью маркера обновления до истечения срока его действия.
Чтобы получить маркер доступа, можно использовать такие средства, как Postman, расширение REST Client в Visual Studio Code, PowerShell, CLI, curl и библиотеки проверки подлинности Microsoft Entra.
Шифрование
При создании новой службы служб данных Работоспособности Azure данные шифруются с помощью ключей , управляемых Корпорацией Майкрософт, по умолчанию.
- Служба FHIR обеспечивает шифрование неактивных данных при сохранении данных в хранилище данных.
- Служба DICOM обеспечивает шифрование неактивных данных при сохранении данных изображений, включая внедренные метаданные, в хранилище данных. При извлечении и сохранении метаданных в службе FHIR он шифруется автоматически.
- Служба MedTech после сопоставления данных и нормализации сохраняет сообщения устройства в службу FHIR, которая шифруется автоматически. В случаях, когда сообщения устройства отправляются в Центры событий Azure, которые используют служба хранилища Azure для хранения данных, данные автоматически шифруются с помощью шифрования службы служба хранилища Azure (Azure SSE).
Следующие шаги
Развертывание рабочей области Служб данных Работоспособности Azure с помощью портал Azure
Предоставление доступа к службе FHIR с помощью Azure Active Directory B2C
Примечание.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .
DICOM® является зарегистрированным товарным знаком Национальной ассоциации производителей электрических технологий для публикаций по стандартам, касающихся цифровых коммуникаций медицинской информации.