Dela via


Konfigurera Azure RBAC-roller med hjälp av Azure CLI och REST API

I den här artikeln får du lära dig hur du beviljar behörigheter till klientprogram och användare för åtkomst till Azure Health Data Services med hjälp av Azures kommandoradsgränssnitt (CLI) och REST API. Det här steget kallas rolltilldelning eller rollbaserad åtkomstkontroll i Azure (RBAC). Mer information finns i Konfigurera Azure RBAC-roll.

Visa och ladda ned CLI-skript och REST API-skript från Azure Health Data Services-exempel.

Kommentar

För att utföra rolltilldelningsåtgärden måste användaren (eller klientprogrammet) beviljas med RBAC-behörigheter. Kontakta dina Azure-prenumerationsadministratörer om du vill ha hjälp.

Rolltilldelningar med CLI

Du kan lista programroller med hjälp av rollnamn eller GUID-ID:er. Inkludera rollnamnet inom dubbla citattecken när det finns blanksteg i det. Mer information finns i Lista Azure-rolldefinitioner.

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

Rolltilldelning för Azure Health Data Services

Rolltilldelningarna för Azure Health Data Services kräver följande värden:

  • Programrollnamn eller GUID-ID.
  • Tjänstens huvudnamns-ID för användaren eller klientprogrammet.
  • Omfång för rolltilldelningen, dvs. Azure Health Data Services-tjänstinstansen. Den innehåller prenumeration, resursgrupp, arbetsytenamn och FHIR- eller DICOM-tjänstnamn. Du kan använda den absoluta eller relativa URL:en för omfånget. Observera att "/" inte läggs till i början av den relativa URL:en.
#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

Du kan verifiera rolltilldelningsstatusen från kommandoradssvaret eller i Azure-portalen.

Azure API för FHIR-rolltilldelning

Rolltilldelningar för Azure API för FHIR fungerar på samma sätt. Skillnaden är att omfånget endast innehåller FHIR-tjänsten och att arbetsytans namn inte krävs.

#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

Rolltilldelningar med REST API

Du kan också skicka en Put-begäran till rolltilldelningens REST API direkt. Mer information finns i Tilldela Azure-roller med hjälp av REST-API:et.

Kommentar

REST API-skripten i den här artikeln baseras på REST-klienttillägget . Du måste ändra variablerna om du befinner dig i en annan miljö.

API:et kräver följande värden:

  • Tilldelnings-ID, som är ett GUID-värde som unikt identifierar transaktionen. Du kan använda verktyg som Visual Studio eller Visual Studio Code-tillägget för att hämta ett GUID-värde. Du kan också använda onlineverktyg som UUID Generator för att hämta den.
  • API-version som stöds av API:et.
  • Omfång för Azure Health Data Services som du beviljar åtkomstbehörigheter till. Den innehåller prenumerations-ID, resursgruppsnamn och namnet på FHIR- eller DICOM-tjänstinstansen.
  • Rolldefinitions-ID för roller som FHIR-datadeltagare eller DICOM-dataägare. Använd az role definition list --name "<role name>" för att lista rolldefinitions-ID:t.
  • Tjänstens huvudnamns-ID för användaren eller klientprogrammet.
  • Microsoft Entra-åtkomsttoken till https://management.azure.com/, inte Azure Health Data Services. Du kan hämta åtkomsttoken med hjälp av ett befintligt verktyg eller med hjälp av Azure CLI-kommandot, az account get-access-token --resource "https://management.azure.com/"
  • För Azure Health Data Services innehåller omfånget arbetsytenamn och FHIR/DICOM-tjänstinstansnamn.
### 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 för FHIR definieras omfånget på olika sätt eftersom det endast stöder FHIR-tjänsten och inget namn på arbetsytan krävs.

### 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}}"
  }
}

Visa en lista över tjänstinstanser av Azure Health Data Services

Du kan också hämta en lista över Azure Health Data Services-tjänster eller Azure API för FHIR. API-versionen baseras på Azure Health Data Services, inte versionen för rolltilldelningens REST API.

För Azure Health Data Services anger du prenumerations-ID, resursgruppsnamn, arbetsytenamn, FHIR- eller DICOM-tjänster och API-versionen.

### 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

För Azure API för FHIR anger du prenumerations-ID:t och API-versionen.

### 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

När du har beviljat rätt behörigheter till klientprogrammet kan du komma åt Azure Health Data Services i dina program.

Nästa steg

Åtkomst med hjälp av REST-klienten

Kommentar

FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.

DICOM® är ett registrerat varumärke som tillhör National Electrical Manufacturers Association för dess standarder publikationer som rör digital kommunikation av medicinsk information.