Konfigurace role Azure RBAC pomocí Azure CLI a rozhraní REST API

V tomto článku se dozvíte, jak klientským aplikacím (a uživatelům) udělit oprávnění pro přístup ke službě Azure Health Data Services pomocí rozhraní Azure Command-Line Interface (CLI) a rozhraní REST API. Tento krok se označuje jako přiřazení role nebo řízení přístupu na základě role v Azure (role Azure RBAC). Další informace o rolích aplikací definovaných pro Azure Health Data Services najdete v tématu Konfigurace role Azure RBAC.

Skripty rozhraní příkazového řádku a skripty rozhraní REST API můžete zobrazit a stáhnout z ukázek služby Azure Health Data Services.

Poznámka

Aby bylo možné provést operaci přiřazení role, musí být uživateli (nebo klientské aplikaci) udělena oprávnění RBAC. Požádejte o pomoc správce předplatného Azure.

Přiřazení rolí pomocí rozhraní příkazového řádku

K výpisu aplikačních rolí můžete použít názvy rolí nebo ID GUID. Pokud jsou v něm mezery, zahrňte název role do dvojitých uvozovek. Další informace najdete v tématu Seznam definic rolí Azure.

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

Přiřazení role Azure Health Data Services

Přiřazení rolí pro Azure Health Data Services vyžadují následující hodnoty.

  • Název role aplikace nebo ID GUID.
  • ID instančního objektu uživatele nebo klientské aplikace.
  • Obor přiřazení role, to znamená instance služby Azure Health Data Services. Zahrnuje předplatné, skupinu prostředků, název pracovního prostoru a název služby FHIR nebo DICOM. Pro obor můžete použít absolutní nebo relativní adresu URL. Všimněte si, že na začátek relativní adresy URL se nepřidává "/".
#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

Stav přiřazení role můžete ověřit z odpovědi příkazového řádku nebo v Azure Portal.

Přiřazení role Azure API for FHIR

Přiřazení rolí pro rozhraní Azure API for FHIR fungují podobně. Rozdíl je v tom, že obor obsahuje jenom službu FHIR a název pracovního prostoru není povinný.

#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

Přiřazení rolí pomocí rozhraní REST API

Případně můžete odeslat požadavek Put přímo do rozhraní REST API pro přiřazení role. Další informace najdete v tématu Přiřazení rolí Azure pomocí rozhraní REST API.

Poznámka

Skripty rozhraní REST API v tomto článku jsou založené na rozšíření klienta REST . Pokud se nacházíte v jiném prostředí, budete muset proměnné upravit.

Rozhraní API vyžaduje následující hodnoty:

  • ID přiřazení, což je hodnota GUID, která jednoznačně identifikuje transakci. K získání hodnoty GUID můžete použít nástroje, jako je visual Studio nebo rozšíření Editoru Visual Studio Code. Můžete ho také získat pomocí online nástrojů, jako je generátor UUID .
  • Verze rozhraní API podporovaná rozhraním API
  • Obor pro službu Azure Health Data Services, ke které udělujete přístupová oprávnění. Obsahuje ID předplatného, název skupiny prostředků a název instance služby FHIR nebo DICOM.
  • ID definice role pro role, jako je "Přispěvatel dat FHIR" nebo "Vlastník dat DICOM". Slouží az role definition list --name "<role name>" k výpisu ID definic rolí.
  • ID instančního objektu uživatele nebo klientské aplikace.
  • Azure AD přístupového tokenu ke službě , nikoli ke službě https://management.azure.com/Azure Health Data Services. Přístupový token můžete získat pomocí existujícího nástroje nebo pomocí příkazu Azure CLI. az account get-access-token --resource "https://management.azure.com/"
  • V případě služby Azure Health Data Services rozsah zahrnuje název pracovního prostoru a název instance služby 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}}"
  }
}

V případě rozhraní Azure API for FHIR se obor definuje trochu jinak, protože podporuje pouze službu FHIR a nevyžaduje se žádný název pracovního prostoru.

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

Výpis instancí služby Azure Health Data Services

Volitelně můžete získat seznam služeb Azure Health Data Services nebo Azure API for FHIR. Všimněte si, že verze rozhraní API je založená na službě Azure Health Data Services, nikoli na verzi pro rozhraní REST API pro přiřazení role.

V případě služby Azure Health Data Services zadejte ID předplatného, název skupiny prostředků, název pracovního prostoru, služby FHIR nebo DICOM a verzi rozhraní 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

Pro Azure API for FHIR zadejte ID předplatného a verzi rozhraní 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

Teď, když jste klientské aplikaci udělili správná oprávnění, máte ve svých aplikacích přístup ke službě Azure Health Data Services.

Další kroky

V tomto článku jste se dozvěděli, jak udělit oprávnění klientským aplikacím pomocí Azure CLI a rozhraní REST API. Informace o tom, jak získat přístup ke službě Azure Health Data Services pomocí klientského rozšíření REST v editoru Visual Studio Code, najdete v tématu

FHIR® je registrovaná ochranná známka hl7 a používá se se svolením HL7.