Konfigurieren von Azure RBAC-Rollen mithilfe der Azure CLI und der REST-API
In diesem Artikel erfahren Sie, wie Sie Clientanwendungen und Benutzern Berechtigungen für den Zugriff auf Azure Health Data Services mithilfe der Azure-Befehlszeilenschnittstelle (Command-Line Interface, CLI) und der REST-API erteilen. Dieser Schritt wird als Rollenzuweisung oder rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) in Azure bezeichnet. Weitere Informationen finden Sie unter Konfigurieren von Azure RBAC-Rollen.
Sie können die CLI-Skripts und REST-API-Skripts unter Azure Health Data Services-Beispiele anzeigen und herunterladen.
Hinweis
Um den Rollenzuweisungsvorgang auszuführen, müssen dem Benutzer (oder der Clientanwendung) RBAC-Berechtigungen erteilt werden. Wenden Sie sich an den Administrator des Azure-Abonnements, um Unterstützung zu erhalten.
Rollenzuweisungen mit der CLI
Sie können Anwendungsrollen mithilfe von Rollennamen oder GUID-IDs auflisten. Setzen Sie den Rollennamen in doppelte Anführungszeichen, wenn er Leerzeichen enthält. Weitere Informationen finden Sie unter Auflisten von Azure-Rollendefinitionen.
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-Rollenzuweisung
Für die Rollenzuweisungen für Azure Health Data Services sind die folgenden Werte erforderlich:
- Anwendungsrollenname oder GUID-ID
- Dienstprinzipal-ID für den Benutzer oder die Clientanwendung
- Bereich für die Rollenzuweisung, d. h. die Azure Health Data Services-Dienstinstanz. Dazu gehören Abonnement, Ressourcengruppe, Arbeitsbereichsname und FHIR- oder DICOM-Dienstname. Sie können die absolute oder relative URL für den Bereich verwenden. Beachten Sie, dass „/“ am Anfang der relativen URL nicht hinzugefügt wird.
#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
Sie können den Rollenzuweisungsstatus über die Befehlszeilenantwort oder im Azure-Portal überprüfen.
Azure-API for FHIR-Rollenzuweisung
Rollenzuweisungen für Azure API for FHIR funktionieren ähnlich. Der Unterschied besteht darin, dass der Bereich nur den FHIR-Dienst enthält und der Arbeitsbereichsname nicht erforderlich ist.
#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
Rollenzuweisungen mit der REST-API
Alternativ können Sie eine Put-Anforderung direkt an die REST-API für die Rollenzuweisung senden. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen mithilfe der REST-API.
Hinweis
Die REST-API-Skripts in diesem Artikel basieren auf der Erweiterung für den REST-Client. Sie müssen die Variablen überarbeiten, wenn Sie sich in einer anderen Umgebung befinden.
Die API erfordert die folgenden Werte:
- Zuweisungs-ID. Hierbei handelt es sich um einen GUID-Wert, der die Transaktion eindeutig identifiziert. Sie können Tools wie Visual Studio oder die Visual Studio Code-Erweiterung verwenden, um einen GUID-Wert abzurufen. Außerdem können Sie Onlinetools wie UUID-Generator zum Abrufen verwenden.
- Von der API unterstützte API-Version.
- Bereich für Azure Health Data Services, für den Sie Zugriffsberechtigungen erteilen. Dazu gehören Abonnement-ID, Ressourcengruppenname, Arbeitsbereichsname und Name der FHIR- oder DICOM-Dienstinstanz.
- Rollendefinitions-ID für Rollen wie Mitwirkender für FHIR-Daten oder DICOM-Datenbesitzer. Verwenden Sie
az role definition list --name "<role name>"
, um die Rollendefinitions-IDs aufzulisten. - Dienstprinzipal-ID für den Benutzer oder die Clientanwendung
- Microsoft Entra-Zugriffstoken für
https://management.azure.com/
, nicht Azure Health Data Services. Sie können das Zugriffstoken mit einem vorhandenen Tool oder mit dem Azure CLI-Befehlaz account get-access-token --resource "https://management.azure.com/"
abrufen. - Für Azure Health Data Services umfasst der Bereich den Arbeitsbereichsnamen und den Namen der FHIR-/DICOM-Dienstinstanz.
### 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}}"
}
}
Für Azure API for FHIR wird der Bereich anders definiert, da er nur den FHIR-Dienst unterstützt, und es ist kein Arbeitsbereichsname erforderlich.
### 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}}"
}
}
Auflisten von Dienstinstanzen von Azure Health Data Services
Optional können Sie eine Liste der Azure Health Data Services-Dienste oder Azure API for FHIR-Instanzen abrufen. Die API-Version basiert auf Azure Health Data Services, nicht auf der Version für die Rollenzuweisungs-REST-API.
Geben Sie für Azure Health Data Services die Abonnement-ID, den Ressourcengruppennamen, den Arbeitsbereichsnamen, die FHIR- oder DICOM-Dienste und die API-Version an.
### 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
Geben Sie für Azure API for FHIR die Abonnement-ID und die API-Version an.
### 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
Nachdem Sie der Clientanwendung die richtigen Berechtigungen erteilt haben, können Sie in Ihren Anwendungen auf Azure Health Data Services zugreifen.