Freigeben über


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-Befehl az 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.

Nächste Schritte

Zugriff mithilfe des REST-Clients

Hinweis

FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.

DICOM® ist die eingetragene Marke der National Electrical Manufacturers Association für ihre Veröffentlichungen von Standards über die digitale Kommunikation medizinischer Informationen.